rockbox/rbutil/rbutilqt/rbutilqt.pro
Dominik Riebeling c8752b428d Rearrange libraries linking order to work with --as-needed linker option.
If the linker uses the --as-needed option linking failed due to the order of
the libraries on the command line. Arch Linux seems to default to this option,
and the Gentoo documentation mentiones it as experimental feature.  Changing
the library order fixes the link issue.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25124 a1c6a512-1295-4272-9138-f99709370657
2010-03-11 19:14:33 +00:00

308 lines
7.8 KiB
Prolog

# ccache
unix:!mac:!noccache {
CCACHE = $$system(which ccache)
!isEmpty(CCACHE) {
message("using ccache")
QMAKE_CXX = ccache g++
QMAKE_CC = ccache gcc
}
}
MYBUILDDIR = $$OUT_PWD/build/
OBJECTS_DIR = $$MYBUILDDIR/o
UI_DIR = $$MYBUILDDIR/ui
MOC_DIR = $$MYBUILDDIR/moc
RCC_DIR = $$MYBUILDDIR/rcc
# check version of Qt installation
VER = $$find(QT_VERSION, ^4\.[3-9]+.*)
isEmpty(VER) {
!isEmpty(QT_VERSION) error("Qt found:" $$[QT_VERSION])
error("Qt >= 4.3 required!")
}
message("Qt version used:" $$VER)
RBBASE_DIR = $$_PRO_FILE_PWD_
RBBASE_DIR = $$replace(RBBASE_DIR,/rbutil/rbutilqt,)
message("Rockbox Base dir: "$$RBBASE_DIR)
# custom rules for rockbox-specific libs
!mac {
RBLIBPOSTFIX = .a
}
mac {
RBLIBPOSTFIX = -universal
}
rbspeex.commands = @$(MAKE) TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/tools/rbspeex librbspeex$$RBLIBPOSTFIX CC=\"$$QMAKE_CC\"
libucl.commands = @$(MAKE) TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/tools/ucl/src libucl$$RBLIBPOSTFIX CC=\"$$QMAKE_CC\"
libmkamsboot.commands = @$(MAKE) TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mkamsboot libmkamsboot$$RBLIBPOSTFIX CC=\"$$QMAKE_CC\"
libmktccboot.commands = @$(MAKE) TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mktccboot libmktccboot$$RBLIBPOSTFIX CC=\"$$QMAKE_CC\"
QMAKE_EXTRA_TARGETS += rbspeex libucl libmkamsboot libmktccboot
PRE_TARGETDEPS += rbspeex libucl libmkamsboot libmktccboot
# rule for creating ctags file
tags.commands = ctags -R --c++-kinds=+p --fields=+iaS --extra=+q $(SOURCES)
tags.depends = $(SOURCES)
QMAKE_EXTRA_TARGETS += tags
# add a custom rule for making the translations
lrelease.commands = $$[QT_INSTALL_BINS]/lrelease -silent $$_PRO_FILE_
QMAKE_EXTRA_TARGETS += lrelease
!dbg {
PRE_TARGETDEPS += lrelease
}
SOURCES += rbutilqt.cpp \
main.cpp \
installwindow.cpp \
base/httpget.cpp \
configure.cpp \
zip/zip.cpp \
zip/unzip.cpp \
base/zipinstaller.cpp \
progressloggergui.cpp \
installtalkwindow.cpp \
base/talkfile.cpp \
base/talkgenerator.cpp \
base/autodetection.cpp \
../ipodpatcher/ipodpatcher.c \
../sansapatcher/sansapatcher.c \
../chinachippatcher/chinachip.c \
browsedirtree.cpp \
themesinstallwindow.cpp \
base/uninstall.cpp \
uninstallwindow.cpp \
base/utils.cpp \
preview.cpp \
base/encoders.cpp \
encttscfggui.cpp \
base/encttssettings.cpp \
base/ttsbase.cpp \
base/ttsexes.cpp \
base/ttssapi.cpp \
base/ttsfestival.cpp \
../../tools/wavtrim.c \
../../tools/voicefont.c \
base/voicefile.cpp \
createvoicewindow.cpp \
base/rbsettings.cpp \
base/serverinfo.cpp \
base/systeminfo.cpp \
base/rbunzip.cpp \
base/rbzip.cpp \
base/system.cpp \
sysinfo.cpp \
systrace.cpp \
base/bootloaderinstallbase.cpp \
base/bootloaderinstallmi4.cpp \
base/bootloaderinstallhex.cpp \
base/bootloaderinstallipod.cpp \
base/bootloaderinstallsansa.cpp \
base/bootloaderinstallfile.cpp \
base/bootloaderinstallchinachip.cpp \
base/bootloaderinstallams.cpp \
base/bootloaderinstalltcc.cpp \
../../tools/mkboot.c \
../../tools/iriver.c \
HEADERS += rbutilqt.h \
installwindow.h \
base/httpget.h \
configure.h \
zip/zip.h \
zip/unzip.h \
zip/zipentry_p.h \
zip/unzip_p.h \
zip/zip_p.h \
version.h \
base/zipinstaller.h \
installtalkwindow.h \
base/talkfile.h \
base/talkgenerator.h \
base/autodetection.h \
base/progressloggerinterface.h \
progressloggergui.h \
../ipodpatcher/ipodpatcher.h \
../ipodpatcher/ipodio.h \
../ipodpatcher/parttypes.h \
../sansapatcher/sansapatcher.h \
../sansapatcher/sansaio.h \
../chinachippatcher/chinachip.h \
irivertools/h100sums.h \
irivertools/h120sums.h \
irivertools/h300sums.h \
browsedirtree.h \
themesinstallwindow.h \
base/uninstall.h \
uninstallwindow.h \
base/utils.h \
preview.h \
base/encoders.h \
encttscfggui.h \
base/encttssettings.h \
base/ttsbase.h \
base/ttsexes.h \
base/ttsfestival.h \
base/ttssapi.h \
../../tools/wavtrim.h \
../../tools/voicefont.h \
base/voicefile.h \
createvoicewindow.h \
base/rbsettings.h \
base/serverinfo.h \
base/systeminfo.h \
base/rbunzip.h \
base/rbzip.h \
sysinfo.h \
base/system.h \
systrace.h \
base/bootloaderinstallbase.h \
base/bootloaderinstallmi4.h \
base/bootloaderinstallhex.h \
base/bootloaderinstallipod.h \
base/bootloaderinstallsansa.h \
base/bootloaderinstallfile.h \
base/bootloaderinstallchinachip.h \
base/bootloaderinstallams.h \
base/bootloaderinstalltcc.h \
../../tools/mkboot.h \
../../tools/iriver.h \
# Needed by QT on Win
INCLUDEPATH = $$_PRO_FILE_PWD_ $$_PRO_FILE_PWD_/irivertools $$_PRO_FILE_PWD_/zip $$_PRO_FILE_PWD_/zlib $$_PRO_FILE_PWD_/base
INCLUDEPATH += $$RBBASE_DIR/rbutil/ipodpatcher $$RBBASE_DIR/rbutil/sansapatcher $$RBBASE_DIR/tools/rbspeex $$RBBASE_DIR/tools
DEPENDPATH = $$INCLUDEPATH
LIBS += -L$$OUT_PWD -L$$MYBUILDDIR -lrbspeex -lmkamsboot -lmktccboot -lucl
# check for system speex. Add a custom rule for pre-building librbspeex if not
# found. Newer versions of speex are split up into libspeex and libspeexdsp,
# and some distributions package them separately. Check for both and fall back
# to librbspeex if not found.
# NOTE: keep this after -lrbspeex, otherwise linker errors occur if the linker
# defaults to --as-needed (see http://www.gentoo.org/proj/en/qa/asneeded.xml)
LIBSPEEX = $$system(pkg-config --silence-errors --libs speex speexdsp)
!static:!isEmpty(LIBSPEEX) {
LIBS += $$LIBSPEEX
}
TEMPLATE = app
dbg {
CONFIG += debug thread qt warn_on
DEFINES -= QT_NO_DEBUG_OUTPUT
message("debug")
}
!dbg {
CONFIG += release thread qt
DEFINES -= QT_NO_DEBUG_OUTPUT
DEFINES += NODEBUG
message("release")
}
TARGET = RockboxUtility
FORMS += rbutilqtfrm.ui \
aboutbox.ui \
installwindowfrm.ui \
progressloggerfrm.ui \
configurefrm.ui \
browsedirtreefrm.ui \
installtalkfrm.ui \
themesinstallfrm.ui \
uninstallfrm.ui \
previewfrm.ui \
createvoicefrm.ui \
sysinfofrm.ui \
systracefrm.ui
RESOURCES += $$_PRO_FILE_PWD_/rbutilqt.qrc
win32 {
RESOURCES += $$_PRO_FILE_PWD_/rbutilqt-win.qrc
}
!dbg {
RESOURCES += $$_PRO_FILE_PWD_/rbutilqt-lang.qrc
}
TRANSLATIONS += lang/rbutil_cs.ts \
lang/rbutil_de.ts \
lang/rbutil_fi.ts \
lang/rbutil_fr.ts \
lang/rbutil_gr.ts \
lang/rbutil_he.ts \
lang/rbutil_it.ts \
lang/rbutil_ja.ts \
lang/rbutil_nl.ts \
lang/rbutil_pl.ts \
lang/rbutil_pt.ts \
lang/rbutil_pt_BR.ts \
lang/rbutil_ru.ts \
lang/rbutil_tr.ts \
lang/rbutil_zh_CN.ts \
lang/rbutil_zh_TW.ts \
QT += network
DEFINES += RBUTIL _LARGEFILE64_SOURCE
win32 {
SOURCES += ../ipodpatcher/ipodio-win32.c
SOURCES += ../ipodpatcher/ipodio-win32-scsi.c
SOURCES += ../sansapatcher/sansaio-win32.c
RC_FILE = rbutilqt.rc
LIBS += -lsetupapi -lnetapi32
}
unix {
SOURCES += ../ipodpatcher/ipodio-posix.c
SOURCES += ../sansapatcher/sansaio-posix.c
}
unix:!static:!libusb1 {
LIBS += -lusb
}
unix:!static:libusb1 {
DEFINES += LIBUSB1
LIBS += -lusb-1.0
}
unix:static {
# force statically linking of libusb. Libraries that are appended
# later will get linked dynamically again.
LIBS += -Wl,-Bstatic -lusb -Wl,-Bdynamic
}
macx {
SOURCES += base/ttscarbon.cpp
HEADERS += base/ttscarbon.h
QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk
QMAKE_LFLAGS_PPC=-mmacosx-version-min=10.4 -arch ppc
QMAKE_LFLAGS_X86=-mmacosx-version-min=10.4 -arch i386
CONFIG+=x86 ppc
LIBS += -L/usr/local/lib -framework IOKit -framework CoreFoundation -framework Carbon -lz
INCLUDEPATH += /usr/local/include
QMAKE_INFO_PLIST = Info.plist
RC_FILE = icons/rbutilqt.icns
# rule for creating a dmg file
dmg.commands = hdiutil create -ov -srcfolder rbutilqt.app/ rbutil.dmg
QMAKE_EXTRA_TARGETS += dmg
}
static {
QTPLUGIN += qtaccessiblewidgets
LIBS += -L$$(QT_BUILD_TREE)/plugins/accessible -lqtaccessiblewidgets
LIBS += -L.
DEFINES += STATIC
message("using static plugin")
}
unix {
target.path = /usr/local/bin
INSTALLS += target
}