blob: e8e2ac9fe0fa49d8147d5596491f04f2bbdf9596 [file] [log] [blame]
#
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
# $Id$
#
# All files in this archive are subject to the GNU General Public License.
# See the file COPYING in the source tree root for full license agreement.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# 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\\.[5-9]+.*)
isEmpty(VER) {
message("Qt >= 4.5 required!")
!isEmpty(QT_VERSION) error("Qt found:" $$[QT_VERSION])
}
message("Qt version used:" $$VER)
MACHINEFLAGS = $$find(QMAKE_CFLAGS, -m[63][42])
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
}
# 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 adding the linker option after -lrbspeex, otherwise linker errors
# occur if the linker defaults to --as-needed
# (see http://www.gentoo.org/proj/en/qa/asneeded.xml)
#
# Always use our own copy when building statically. Don't search for libspeex
# on Mac, since we don't deploy statically there.
!static:unix:!mac {
LIBSPEEX = $$system(pkg-config --silence-errors --libs speex speexdsp)
}
# The external Makefiles use ar to create libs. To allow cross-compiling pass
# the ar that matches the current gcc. Since qmake doesn't provide a variable
# holding the correct ar without any additions we need to figure it ourselves
# here. This assumes that QMAKE_CC will always be "gcc", maybe with a postfix.
MYAR = $$replace(QMAKE_CC,gcc.*,ar)
librbspeex.commands = @$(MAKE) -s \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/tools/rbspeex \
librbspeex$$RBLIBPOSTFIX \
SYS_SPEEX=\"$$LIBSPEEX\" \
CC=\"$$QMAKE_CC $$MACHINEFLAGS\" AR=\"$$MYAR\"
libucl.commands = @$(MAKE) -s \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/tools/ucl/src \
libucl$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC $$MACHINEFLAGS\" AR=\"$$MYAR\"
libmkamsboot.commands = @$(MAKE) -s \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mkamsboot \
APPVERSION=\"rbutil\" \
libmkamsboot$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC $$MACHINEFLAGS\" AR=\"$$MYAR\"
libmktccboot.commands = @$(MAKE) -s \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mktccboot \
libmktccboot$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC $$MACHINEFLAGS\" AR=\"$$MYAR\"
libmkmpioboot.commands = @$(MAKE) -s \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mkmpioboot \
APPVERSION=\"rbutil\" \
libmkmpioboot$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC $$MACHINEFLAGS\" AR=\"$$MYAR\"
libchinachip.commands = @$(MAKE) -s \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/chinachippatcher \
APPVERSION=\"rbutil\" \
libchinachip$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC $$MACHINEFLAGS\" AR=\"$$MYAR\"
# Note: order is important for RBLIBS! The libs are appended to the linker
# flags in this order, put libucl at the end.
RBLIBS = librbspeex libmkamsboot libmktccboot libmkmpioboot libchinachip libucl
QMAKE_EXTRA_TARGETS += $$RBLIBS
PRE_TARGETDEPS += $$RBLIBS
# 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
}
# Needed by QT on Win
INCLUDEPATH = $$_PRO_FILE_PWD_ $$_PRO_FILE_PWD_/irivertools \
$$_PRO_FILE_PWD_/quazip $$_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
# append all RBLIBS to LIBS
for(rblib, RBLIBS) {
LIBS += -l$$replace(rblib, lib,)
}
# on win32 libz is linked implicitly.
!win32 {
LIBS += -lz
}
# Add a (possibly found) libspeex now, don't do this before -lrbspeex!
!static:!isEmpty(LIBSPEEX) {
LIBS += $$LIBSPEEX
}
TEMPLATE = app
TARGET = RockboxUtility
QT += network
dbg {
CONFIG += debug thread qt warn_on
DEFINES -= QT_NO_DEBUG_OUTPUT
DEFINES += DBG
message("debug")
}
!dbg {
CONFIG += release thread qt
DEFINES -= QT_NO_DEBUG_OUTPUT
DEFINES += NODEBUG
message("release")
}
DEFINES += RBUTIL _LARGEFILE64_SOURCE
# platform specific
win32 {
# use MinGW's implementation of stdio functions for extended format string
# support.
DEFINES += __USE_MINGW_ANSI_STDIO=1
LIBS += -lsetupapi -lnetapi32
}
win32:static {
QMAKE_LFLAGS += -static-libgcc -static-libstdc++
}
unix:!static:!libusb0:!macx {
DEFINES += LIBUSB1
LIBS += -lusb-1.0
}
unix:!static:libusb0:!macx {
LIBS += -lusb
}
unix:!macx:static {
# force statically linking of libusb. Libraries that are appended
# later will get linked dynamically again.
LIBS += -Wl,-Bstatic -lusb -Wl,-Bdynamic
}
# if -config intel is specified use 10.5 SDK and don't build for PPC
macx:!intel {
CONFIG += ppc
QMAKE_LFLAGS_PPC=-mmacosx-version-min=10.4 -arch ppc
QMAKE_LFLAGS_X86=-mmacosx-version-min=10.4 -arch i386
QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk
}
macx:intel {
QMAKE_LFLAGS_X86=-mmacosx-version-min=10.5 -arch i386
QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.5.sdk
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.5
}
macx {
CONFIG += x86
LIBS += -L/usr/local/lib \
-framework IOKit -framework CoreFoundation -framework Carbon \
-framework SystemConfiguration -framework CoreServices
INCLUDEPATH += /usr/local/include
# 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
}
# source files are separate.
include(rbutilqt.pri)