Rockbox Utility: add support for mkimxboot bootloader.
[maemo-rb.git] / rbutil / rbutilqt / rbutilqt.pro
blob270e47b1f7c18baab5509e2f7b6444ad7ff873aa
2 # __________ __ ___.
3 # Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 # \/ \/ \/ \/ \/
8 # $Id$
10 # All files in this archive are subject to the GNU General Public License.
11 # See the file COPYING in the source tree root for full license agreement.
13 # This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
14 # KIND, either express or implied.
17 # ccache
18 unix:!mac:!noccache {
19 CCACHE = $$system(which ccache)
20 !isEmpty(CCACHE) {
21 message("using ccache")
22 QMAKE_CXX = ccache g++
23 QMAKE_CC = ccache gcc
27 MYBUILDDIR = $$OUT_PWD/build/
28 MYLIBBUILDDIR = $$MYBUILDDIR/libs/
29 OBJECTS_DIR = $$MYBUILDDIR/o
30 UI_DIR = $$MYBUILDDIR/ui
31 MOC_DIR = $$MYBUILDDIR/moc
32 RCC_DIR = $$MYBUILDDIR/rcc
34 !silent {
35 ADDENV = "V=1"
36 } else {
37 ADDENV = "@"
40 # check version of Qt installation
41 VER = $$find(QT_VERSION, ^4\\.[5-9]+.*)
42 isEmpty(VER) {
43 message("Qt >= 4.5 required!")
44 !isEmpty(QT_VERSION) error("Qt found:" $$[QT_VERSION])
46 message("Qt version used:" $$VER)
48 MACHINEFLAGS = $$find(QMAKE_CFLAGS, -m[63][42])
50 RBBASE_DIR = $$_PRO_FILE_PWD_
51 RBBASE_DIR = $$replace(RBBASE_DIR,/rbutil/rbutilqt,)
53 message("Rockbox Base dir: "$$RBBASE_DIR)
55 # custom rules for rockbox-specific libs
56 !mac {
57 RBLIBPOSTFIX = .a
59 mac {
60 RBLIBPOSTFIX = -universal
62 # check for system speex. Add a custom rule for pre-building librbspeex if not
63 # found. Newer versions of speex are split up into libspeex and libspeexdsp,
64 # and some distributions package them separately. Check for both and fall back
65 # to librbspeex if not found.
66 # NOTE: keep adding the linker option after -lrbspeex, otherwise linker errors
67 # occur if the linker defaults to --as-needed
68 # (see http://www.gentoo.org/proj/en/qa/asneeded.xml)
70 # Always use our own copy when building statically. Don't search for libspeex
71 # on Mac, since we don't deploy statically there.
72 !static:unix:!mac {
73 LIBSPEEX = $$system(pkg-config --silence-errors --libs speex speexdsp)
75 # The external Makefiles use ar to create libs. To allow cross-compiling pass
76 # the ar that matches the current gcc. Since qmake doesn't provide a variable
77 # holding the correct ar without any additions we need to figure it ourselves
78 # here. This assumes that QMAKE_CC will always be "gcc", maybe with a postfix.
79 MYAR = $$replace(QMAKE_CC,gcc.*,ar)
81 librbspeex.commands = $$ADDENV \
82 BUILD_DIR=$$MYLIBBUILDDIR/rbspeex/ \
83 TARGET_DIR=$$MYLIBBUILDDIR \
84 SYS_SPEEX=\"$$LIBSPEEX\" \
85 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
86 $(MAKE) -C $$RBBASE_DIR/tools/rbspeex librbspeex$$RBLIBPOSTFIX
87 libucl.commands = $$ADDENV \
88 BUILD_DIR=$$MYLIBBUILDDIR/ucl/ \
89 TARGET_DIR=$$MYLIBBUILDDIR \
90 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
91 $(MAKE) -C $$RBBASE_DIR/tools/ucl/src libucl$$RBLIBPOSTFIX
92 libipodpatcher.commands = $$ADDENV \
93 BUILD_DIR=$$MYLIBBUILDDIR/ipodpatcher/ \
94 TARGET_DIR=$$MYLIBBUILDDIR \
95 APPVERSION=\"rbutil\" \
96 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
97 $(MAKE) -C $$RBBASE_DIR/rbutil/ipodpatcher libipodpatcher$$RBLIBPOSTFIX
98 libsansapatcher.commands = $$ADDENV \
99 BUILD_DIR=$$MYLIBBUILDDIR/sansapatcher/ \
100 TARGET_DIR=$$MYLIBBUILDDIR \
101 APPVERSION=\"rbutil\" \
102 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
103 $(MAKE) -C $$RBBASE_DIR/rbutil/sansapatcher libsansapatcher$$RBLIBPOSTFIX
104 libmkamsboot.commands = $$ADDENV \
105 BUILD_DIR=$$MYLIBBUILDDIR/mkamsboot/ \
106 TARGET_DIR=$$MYLIBBUILDDIR \
107 APPVERSION=\"rbutil\" \
108 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
109 $(MAKE) -C $$RBBASE_DIR/rbutil/mkamsboot libmkamsboot$$RBLIBPOSTFIX
110 libmktccboot.commands = $$ADDENV \
111 BUILD_DIR=$$MYLIBBUILDDIR/mktccboot/ \
112 TARGET_DIR=$$MYLIBBUILDDIR \
113 APPVERSION=\"rbutil\" \
114 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
115 $(MAKE) -C $$RBBASE_DIR/rbutil/mktccboot libmktccboot$$RBLIBPOSTFIX
116 libmkmpioboot.commands = $$ADDENV \
117 BUILD_DIR=$$MYLIBBUILDDIR/mkmpioboot/ \
118 TARGET_DIR=$$MYLIBBUILDDIR \
119 APPVERSION=\"rbutil\" \
120 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
121 $(MAKE) -C $$RBBASE_DIR/rbutil/mkmpioboot libmkmpioboot$$RBLIBPOSTFIX
122 libchinachippatcher.commands = $$ADDENV \
123 BUILD_DIR=$$MYLIBBUILDDIR/chinachippatcher/ \
124 TARGET_DIR=$$MYLIBBUILDDIR \
125 APPVERSION=\"rbutil\" \
126 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
127 $(MAKE) -C $$RBBASE_DIR/rbutil/chinachippatcher libchinachippatcher$$RBLIBPOSTFIX
128 libmkimxboot.commands = $$ADDENV \
129 BUILD_DIR=$$MYLIBBUILDDIR/mkimxboot/ \
130 TARGET_DIR=$$MYLIBBUILDDIR \
131 APPVERSION=\"rbutil\" \
132 CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
133 $(MAKE) -C $$RBBASE_DIR/rbutil/mkimxboot libmkimxboot$$RBLIBPOSTFIX
134 # Note: order is important for RBLIBS! The libs are appended to the linker
135 # flags in this order, put libucl at the end.
136 RBLIBS = librbspeex libipodpatcher libsansapatcher libmkamsboot libmktccboot \
137 libmkmpioboot libchinachippatcher libmkimxboot libucl
138 QMAKE_EXTRA_TARGETS += $$RBLIBS
139 PRE_TARGETDEPS += $$RBLIBS
141 # rule for creating ctags file
142 tags.commands = ctags -R --c++-kinds=+p --fields=+iaS --extra=+q $(SOURCES)
143 tags.depends = $(SOURCES)
144 QMAKE_EXTRA_TARGETS += tags
146 # add a custom rule for making the translations
147 lrelease.commands = $$[QT_INSTALL_BINS]/lrelease -silent $$_PRO_FILE_
148 QMAKE_EXTRA_TARGETS += lrelease
149 !dbg {
150 PRE_TARGETDEPS += lrelease
153 # Needed by QT on Win
154 INCLUDEPATH = $$_PRO_FILE_PWD_ $$_PRO_FILE_PWD_/irivertools \
155 $$_PRO_FILE_PWD_/quazip $$_PRO_FILE_PWD_/zlib $$_PRO_FILE_PWD_/base
156 INCLUDEPATH += $$RBBASE_DIR/rbutil/ipodpatcher $$RBBASE_DIR/rbutil/sansapatcher \
157 $$RBBASE_DIR/tools/rbspeex $$RBBASE_DIR/tools
159 DEPENDPATH = $$INCLUDEPATH
161 LIBS += -L$$OUT_PWD -L$$MYLIBBUILDDIR
162 # append all RBLIBS to LIBS
163 for(rblib, RBLIBS) {
164 LIBS += -l$$replace(rblib, lib,)
167 # on win32 libz is linked implicitly.
168 !win32 {
169 LIBS += -lz
172 # Add a (possibly found) libspeex now, don't do this before -lrbspeex!
173 !static:!isEmpty(LIBSPEEX) {
174 LIBS += $$LIBSPEEX
177 TEMPLATE = app
178 TARGET = RockboxUtility
179 QT += network
180 dbg {
181 CONFIG += debug thread qt warn_on
182 DEFINES -= QT_NO_DEBUG_OUTPUT
183 DEFINES += DBG
184 message("debug")
186 !dbg {
187 CONFIG += release thread qt
188 DEFINES -= QT_NO_DEBUG_OUTPUT
189 DEFINES += NODEBUG
190 message("release")
193 DEFINES += RBUTIL _LARGEFILE64_SOURCE
195 # platform specific
196 win32 {
197 # use MinGW's implementation of stdio functions for extended format string
198 # support.
199 DEFINES += __USE_MINGW_ANSI_STDIO=1
200 DEFINES += _CRT_SECURE_NO_WARNINGS
201 LIBS += -lsetupapi -lnetapi32
203 win32:static {
204 QMAKE_LFLAGS += -static-libgcc -static-libstdc++
206 unix:!static:!libusb0:!macx {
207 DEFINES += LIBUSB1
208 LIBS += -lusb-1.0
210 unix:!static:libusb0:!macx {
211 LIBS += -lusb
214 unix:!macx:static {
215 # force statically linking of libusb. Libraries that are appended
216 # later will get linked dynamically again.
217 LIBS += -Wl,-Bstatic -lusb -Wl,-Bdynamic
220 # if -config intel is specified use 10.5 SDK and don't build for PPC
221 macx:!intel {
222 CONFIG += ppc
223 QMAKE_LFLAGS_PPC=-mmacosx-version-min=10.4 -arch ppc
224 QMAKE_LFLAGS_X86=-mmacosx-version-min=10.4 -arch i386
225 QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk
227 macx:intel {
228 QMAKE_LFLAGS_X86=-mmacosx-version-min=10.5 -arch i386
229 QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.5.sdk
230 QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.5
232 macx {
233 CONFIG += x86
234 LIBS += -L/usr/local/lib \
235 -framework IOKit -framework CoreFoundation -framework Carbon \
236 -framework SystemConfiguration -framework CoreServices
237 INCLUDEPATH += /usr/local/include
239 # rule for creating a dmg file
240 dmg.commands = hdiutil create -ov -srcfolder rbutilqt.app/ rbutil.dmg
241 QMAKE_EXTRA_TARGETS += dmg
244 static {
245 QTPLUGIN += qtaccessiblewidgets
246 LIBS += -L$$(QT_BUILD_TREE)/plugins/accessible -lqtaccessiblewidgets
247 LIBS += -L.
248 DEFINES += STATIC
249 message("using static plugin")
252 unix {
253 target.path = /usr/local/bin
254 INSTALLS += target
257 # source files are separate.
258 include(rbutilqt.pri)