3 # Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
9 # All files in this archive are subject to the GNU General Public License.
10 # See the file COPYING in the source tree root for full license agreement.
12 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
13 # KIND, either express or implied.
18 CCACHE
= $$
system(which ccache
)
20 message("using ccache")
21 QMAKE_CXX
= ccache $$QMAKE_CXX
22 QMAKE_CC
= ccache $$QMAKE_CC
26 MYBUILDDIR
= $$OUT_PWD
/build
/
27 MYLIBBUILDDIR
= $$MYBUILDDIR
/libs
/
28 OBJECTS_DIR
= $$MYBUILDDIR
/o
29 UI_DIR
= $$MYBUILDDIR
/ui
30 MOC_DIR
= $$MYBUILDDIR
/moc
31 RCC_DIR
= $$MYBUILDDIR
/rcc
39 # check version of Qt installation
40 !contains(QT_MAJOR_VERSION
, 5) {
41 VER
= $$
find(QT_VERSION
, ^
4\\.[5-9]+.*)
43 message("Qt >= 4.5 required!")
44 !isEmpty(QT_VERSION
) error("Qt found:" $$
[QT_VERSION
])
46 message("Qt version used:" $$VER
)
49 MACHINEFLAGS
= $$
find(QMAKE_CFLAGS
, -m
[63][42])
51 RBBASE_DIR
= $$_PRO_FILE_PWD_
52 RBBASE_DIR
= $$
replace(RBBASE_DIR
,/rbutil
/rbutilqt
,)
54 message("Rockbox Base dir: "$$RBBASE_DIR
)
56 # check for system speex. Add a custom rule for pre-building librbspeex if not
57 # found. Newer versions of speex are split up into libspeex and libspeexdsp,
58 # and some distributions package them separately. Check for both and fall back
59 # to librbspeex if not found.
60 # NOTE: keep adding the linker option after -lrbspeex, otherwise linker errors
61 # occur if the linker defaults to --as-needed
62 # (see http://www.gentoo.org/proj/en/qa/asneeded.xml)
64 # Always use our own copy when building statically. Don't search for libspeex
65 # on Mac, since we don't deploy statically there.
67 LIBSPEEX
= $$
system(pkg
-config
--silence
-errors
--libs speex speexdsp
)
69 # The external Makefiles use ar to create libs. To allow cross-compiling pass
70 # the ar that matches the current gcc. Since qmake doesn't provide a variable
71 # holding the correct ar without any additions we need to figure it ourselves
72 # here. This assumes that QMAKE_CC will always be "gcc", maybe with a postfix.
73 MYAR = $$replace(QMAKE_CC,gcc.*,ar)
75 librbspeex.commands = $$ADDENV \
76 BUILD_DIR=$$MYLIBBUILDDIR/rbspeex/ \
77 TARGET_DIR=$$MYLIBBUILDDIR \
78 SYS_SPEEX=\"$$LIBSPEEX\" \
79 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
80 $(MAKE) -C $$RBBASE_DIR/tools/rbspeex librbspeex.a
81 libucl.commands = $$ADDENV \
82 BUILD_DIR=$$MYLIBBUILDDIR/ucl/ \
83 TARGET_DIR=$$MYLIBBUILDDIR \
84 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
85 $(MAKE) -C $$RBBASE_DIR/tools/ucl/src libucl.a
86 libipodpatcher.commands = $$ADDENV \
87 BUILD_DIR=$$MYLIBBUILDDIR/ipodpatcher/ \
88 TARGET_DIR=$$MYLIBBUILDDIR \
89 APPVERSION=\"rbutil\" \
90 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
91 $(MAKE) -C $$RBBASE_DIR/rbutil/ipodpatcher libipodpatcher.a
92 libsansapatcher.commands = $$ADDENV \
93 BUILD_DIR=$$MYLIBBUILDDIR/sansapatcher/ \
94 TARGET_DIR=$$MYLIBBUILDDIR \
95 APPVERSION=\"rbutil\" \
96 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
97 $(MAKE) -C $$RBBASE_DIR/rbutil/sansapatcher libsansapatcher.a
98 libmkamsboot.commands = $$ADDENV \
99 BUILD_DIR=$$MYLIBBUILDDIR/mkamsboot/ \
100 TARGET_DIR=$$MYLIBBUILDDIR \
101 APPVERSION=\"rbutil\" \
102 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
103 $(MAKE) -C $$RBBASE_DIR/rbutil/mkamsboot libmkamsboot.a
104 libmktccboot.commands = $$ADDENV \
105 BUILD_DIR=$$MYLIBBUILDDIR/mktccboot/ \
106 TARGET_DIR=$$MYLIBBUILDDIR \
107 APPVERSION=\"rbutil\" \
108 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
109 $(MAKE) -C $$RBBASE_DIR/rbutil/mktccboot libmktccboot.a
110 libmkmpioboot.commands = $$ADDENV \
111 BUILD_DIR=$$MYLIBBUILDDIR/mkmpioboot/ \
112 TARGET_DIR=$$MYLIBBUILDDIR \
113 APPVERSION=\"rbutil\" \
114 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
115 $(MAKE) -C $$RBBASE_DIR/rbutil/mkmpioboot libmkmpioboot.a
116 libchinachippatcher.commands = $$ADDENV \
117 BUILD_DIR=$$MYLIBBUILDDIR/chinachippatcher/ \
118 TARGET_DIR=$$MYLIBBUILDDIR \
119 APPVERSION=\"rbutil\" \
120 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
121 $(MAKE) -C $$RBBASE_DIR/rbutil/chinachippatcher libchinachippatcher.a
122 libmkimxboot.commands = $$ADDENV \
123 BUILD_DIR=$$MYLIBBUILDDIR/mkimxboot/ \
124 TARGET_DIR=$$MYLIBBUILDDIR \
125 APPVERSION=\"rbutil\" \
126 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
127 $(MAKE) -C $$RBBASE_DIR/rbutil/mkimxboot libmkimxboot.a
128 # Note: order is important for RBLIBS! The libs are appended to the linker
129 # flags in this order, put libucl at the end.
130 RBLIBS = librbspeex libipodpatcher libsansapatcher libmkamsboot libmktccboot \
131 libmkmpioboot libchinachippatcher libmkimxboot libucl
132 QMAKE_EXTRA_TARGETS += $$RBLIBS
133 PRE_TARGETDEPS += $$RBLIBS
135 # rule for creating ctags file
136 tags.commands = ctags -R --c++-kinds=+p --fields=+iaS --extra=+q $(SOURCES)
137 tags.depends = $(SOURCES)
138 QMAKE_EXTRA_TARGETS += tags
140 # add a custom rule for making the translations
141 lrelease.commands = $$[QT_INSTALL_BINS]/lrelease -silent $$_PRO_FILE_
142 QMAKE_EXTRA_TARGETS += lrelease
144 PRE_TARGETDEPS += lrelease
147 # Needed by QT on Win
148 INCLUDEPATH = $$_PRO_FILE_PWD_ $$_PRO_FILE_PWD_/irivertools \
149 $$_PRO_FILE_PWD_/zlib $$_PRO_FILE_PWD_/base \
150 $$_PRO_FILE_PWD_/zlib $$_PRO_FILE_PWD_/gui
151 INCLUDEPATH += $$RBBASE_DIR/rbutil/ipodpatcher $$RBBASE_DIR/rbutil/sansapatcher \
152 $$RBBASE_DIR/tools/rbspeex $$RBBASE_DIR/tools
154 DEPENDPATH = $$INCLUDEPATH
156 LIBS += -L$$OUT_PWD -L$$MYLIBBUILDDIR
157 # append all RBLIBS to LIBS
159 LIBS += -l$$replace(rblib, lib,)
162 # on win32 libz is linked implicitly.
167 # Add a (possibly found) libspeex now, don't do this before -lrbspeex!
168 !static
:!isEmpty(LIBSPEEX
) {
173 TARGET
= RockboxUtility
176 contains(QT_MAJOR_VERSION
, 5) {
182 CONFIG
+= debug thread qt warn_on
183 DEFINES
-= QT_NO_DEBUG_OUTPUT
188 CONFIG
+= release thread qt
189 DEFINES
-= QT_NO_DEBUG_OUTPUT
194 DEFINES
+= RBUTIL _LARGEFILE64_SOURCE
198 # use MinGW's implementation of stdio functions for extended format string
200 DEFINES += __USE_MINGW_ANSI_STDIO=1
201 DEFINES += _CRT_SECURE_NO_WARNINGS
203 LIBS += -lsetupapi -lnetapi32
206 QMAKE_LFLAGS += -static-libgcc -static-libstdc++
208 unix:!static:!libusb0:!macx {
212 unix:!static:libusb0:!macx {
217 # force statically linking of libusb. Libraries that are appended
218 # later will get linked dynamically again.
219 LIBS += -Wl,-Bstatic -lusb -Wl,-Bdynamic
222 # if -config intel is specified use 10.5 SDK and don't build for PPC
225 QMAKE_LFLAGS_PPC
=-mmacosx
-version
-min
=10.4 -arch ppc
226 QMAKE_LFLAGS_X86
=-mmacosx
-version
-min
=10.4 -arch i386
227 QMAKE_MAC_SDK
=/Developer
/SDKs
/MacOSX10
.4u
.sdk
230 QMAKE_LFLAGS_X86
=-mmacosx
-version
-min
=10.5 -arch i386
231 QMAKE_MAC_SDK
=/Developer
/SDKs
/MacOSX10
.5
.sdk
232 QMAKE_MACOSX_DEPLOYMENT_TARGET
= 10.5
236 LIBS
+= -L
/usr
/local
/lib \
237 -framework IOKit
-framework CoreFoundation
-framework Carbon \
238 -framework SystemConfiguration
-framework CoreServices
239 INCLUDEPATH
+= /usr
/local
/include
241 # rule for creating a dmg file
242 dmg
.commands
= hdiutil create
-ov
-srcfolder rbutilqt
.app
/ rbutil
.dmg
243 QMAKE_EXTRA_TARGETS
+= dmg
247 QTPLUGIN
+= qtaccessiblewidgets
248 LIBS
+= -L$$
(QT_BUILD_TREE
)/plugins
/accessible
-lqtaccessiblewidgets
251 message("using static plugin")
255 target
.path
= /usr
/local
/bin
259 # source files are separate.
260 include(rbutilqt
.pri
)