1
0
Fork 0
forked from len0rd/rockbox

Move building libraries to separate Makefile.

Previously several additional rules were added by qmake to build the required
libraries. This has a couple of problems on Windows, requiring the use of a
msys shell.

Additional variables are passed as environment variables. Windows doesn't
understand this. Passing the variables via make command line argument works but
make won't be able to change those variables anymore, breaking things. Use
intermediate variables passed via make command line that are then exported by
the called Makefile. This doesn't work in the generated Makefile since the
export lines must not be part of a rule.

Also cleans up the project file a bit.

Change-Id: Iaffb059ce8bafe17a35bd1e0a74ae7acd966c138
This commit is contained in:
Dominik Riebeling 2013-05-04 00:15:18 +02:00
parent d964199cc7
commit 8a1cd81b3a
2 changed files with 68 additions and 56 deletions

View file

@ -0,0 +1,54 @@
# __________ __ ___.
# Open \______ \ ____ ____ | | _\_ |__ _______ ___
# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
# \/ \/ \/ \/ \/
#
ifndef V
SILENT = @
endif
TARGET_DIR ?= $(abspath .)/build/
BUILD_DIR ?= $(abspath .)/build/
# re-export variables that might have been set via command line.
# If set via command line sub-makefiles cannot override them, so use different
# variable names in the calling makefile.
export SYS_SPEEX
export TARGET_DIR
export CFLAGS=$(EXTRALIB_CFLAGS)
export CC=$(EXTRALIBS_CC)
export AR=$(EXTRALIB_AR)
libs: librbspeex libucl libipodpatcher libsansapatcher libmkamsboot libmktccboot libmkmpioboot libchinachippatcher libmkimxboot
librbspeex:
$(SILENT) $(MAKE) -C $(RBBASE_DIR)/tools/rbspeex BUILD_DIR=$(BUILD_DIR)/libspeex librbspeex.a
libucl:
$(SILENT)$(MAKE) -C $(RBBASE_DIR)/tools/ucl/src BUILD_DIR=$(BUILD_DIR)/ucl libucl.a
libipodpatcher:
$(SILENT)$(MAKE) -C $(RBBASE_DIR)/rbutil/ipodpatcher BUILD_DIR=$(BUILD_DIR)/ipodpatcher APPVERSION="rbutil" libipodpatcher.a
libsansapatcher:
$(SILENT)$(MAKE) -C $(RBBASE_DIR)/rbutil/sansapatcher BUILD_DIR=$(BUILD_DIR)/sansapatcher APPVERSION="rbutil" libsansapatcher.a
libmkamsboot:
$(SILENT)$(MAKE) -C $(RBBASE_DIR)/rbutil/mkamsboot BUILD_DIR=$(BUILD_DIR)/mkamsboot APPVERSION="rbutil" libmkamsboot.a
libmktccboot:
$(SILENT)$(MAKE) -C $(RBBASE_DIR)/rbutil/mktccboot BUILD_DIR=$(BUILD_DIR)/mktccboot APPVERSION="rbutil" libmktccboot.a
libmkmpioboot:
$(SILENT)$(MAKE) -C $(RBBASE_DIR)/rbutil/mkmpioboot BUILD_DIR=$(BUILD_DIR)/mkmpioboot APPVERSION="rbutil" libmkmpioboot.a
libchinachippatcher:
$(SILENT)$(MAKE) -C $(RBBASE_DIR)/rbutil/chinachippatcher BUILD_DIR=$(BUILD_DIR)/chinachippatcher APPVERSION="rbutil" libchinachippatcher.a
libmkimxboot:
$(SILENT)$(MAKE) -C $(RBBASE_DIR)/rbutil/mkimxboot BUILD_DIR=$(BUILD_DIR)/mkimxboot APPVERSION="rbutil" libmkimxboot.a

View file

@ -31,9 +31,9 @@ MOC_DIR = $$MYBUILDDIR/moc
RCC_DIR = $$MYBUILDDIR/rcc
!silent {
ADDENV = "V=1"
VERBOSE = "V=1"
} else {
ADDENV = "@"
VERBOSE =
}
# check version of Qt installation
@ -72,65 +72,23 @@ message("Rockbox Base dir: "$$RBBASE_DIR)
# here. This assumes that QMAKE_CC will always be "gcc", maybe with a postfix.
MYAR = $$replace(QMAKE_CC,gcc.*,ar)
librbspeex.commands = $$ADDENV \
BUILD_DIR=$$MYLIBBUILDDIR/rbspeex/ \
extralibs.commands = $$SILENT \
$(MAKE) -f $$RBBASE_DIR/rbutil/rbutilqt/Makefile.libs \
$$VERBOSE \
SYS_SPEEX=$$LIBSPEEX \
BUILD_DIR=$$MYLIBBUILDDIR/ \
TARGET_DIR=$$MYLIBBUILDDIR \
SYS_SPEEX=\"$$LIBSPEEX\" \
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
$(MAKE) -C $$RBBASE_DIR/tools/rbspeex librbspeex.a
libucl.commands = $$ADDENV \
BUILD_DIR=$$MYLIBBUILDDIR/ucl/ \
TARGET_DIR=$$MYLIBBUILDDIR \
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
$(MAKE) -C $$RBBASE_DIR/tools/ucl/src libucl.a
libipodpatcher.commands = $$ADDENV \
BUILD_DIR=$$MYLIBBUILDDIR/ipodpatcher/ \
TARGET_DIR=$$MYLIBBUILDDIR \
APPVERSION=\"rbutil\" \
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
$(MAKE) -C $$RBBASE_DIR/rbutil/ipodpatcher libipodpatcher.a
libsansapatcher.commands = $$ADDENV \
BUILD_DIR=$$MYLIBBUILDDIR/sansapatcher/ \
TARGET_DIR=$$MYLIBBUILDDIR \
APPVERSION=\"rbutil\" \
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
$(MAKE) -C $$RBBASE_DIR/rbutil/sansapatcher libsansapatcher.a
libmkamsboot.commands = $$ADDENV \
BUILD_DIR=$$MYLIBBUILDDIR/mkamsboot/ \
TARGET_DIR=$$MYLIBBUILDDIR \
APPVERSION=\"rbutil\" \
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
$(MAKE) -C $$RBBASE_DIR/rbutil/mkamsboot libmkamsboot.a
libmktccboot.commands = $$ADDENV \
BUILD_DIR=$$MYLIBBUILDDIR/mktccboot/ \
TARGET_DIR=$$MYLIBBUILDDIR \
APPVERSION=\"rbutil\" \
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
$(MAKE) -C $$RBBASE_DIR/rbutil/mktccboot libmktccboot.a
libmkmpioboot.commands = $$ADDENV \
BUILD_DIR=$$MYLIBBUILDDIR/mkmpioboot/ \
TARGET_DIR=$$MYLIBBUILDDIR \
APPVERSION=\"rbutil\" \
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
$(MAKE) -C $$RBBASE_DIR/rbutil/mkmpioboot libmkmpioboot.a
libchinachippatcher.commands = $$ADDENV \
BUILD_DIR=$$MYLIBBUILDDIR/chinachippatcher/ \
TARGET_DIR=$$MYLIBBUILDDIR \
APPVERSION=\"rbutil\" \
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
$(MAKE) -C $$RBBASE_DIR/rbutil/chinachippatcher libchinachippatcher.a
libmkimxboot.commands = $$ADDENV \
BUILD_DIR=$$MYLIBBUILDDIR/mkimxboot/ \
TARGET_DIR=$$MYLIBBUILDDIR \
APPVERSION=\"rbutil\" \
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
$(MAKE) -C $$RBBASE_DIR/rbutil/mkimxboot libmkimxboot.a
RBBASE_DIR=$$RBBASE_DIR \
EXTRALIBS_CC=\"$$QMAKE_CC\" \
EXTRALIB_CFLAGS=\"$$MACHINEFLAGS\" \
EXTRALIBS_AR=\"$$MYAR\" \
libs
# Note: order is important for RBLIBS! The libs are appended to the linker
# flags in this order, put libucl at the end.
RBLIBS = librbspeex libipodpatcher libsansapatcher libmkamsboot libmktccboot \
libmkmpioboot libchinachippatcher libmkimxboot libucl
QMAKE_EXTRA_TARGETS += $$RBLIBS
PRE_TARGETDEPS += $$RBLIBS
QMAKE_EXTRA_TARGETS += extralibs
PRE_TARGETDEPS += extralibs
# rule for creating ctags file
tags.commands = ctags -R --c++-kinds=+p --fields=+iaS --extra=+q $(SOURCES)