forked from len0rd/rockbox
Update OS X library building.
- As done with libucl and librbspeex, create universal libraries using ar instead of building twice and using lipo. This notably simplifies things. - Allow overwriting the compiler via command line. This is required for building on OS X. - Update Rockbox Utility to the changed library rules. Fixes building which was broken by the previous Makefile changes. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31588 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
1ef25cd7e0
commit
c6dcec4e0d
2 changed files with 17 additions and 35 deletions
|
@ -42,10 +42,15 @@ endif
|
|||
endif
|
||||
endif
|
||||
|
||||
NATIVECC = gcc
|
||||
NATIVECC ?= gcc
|
||||
CC ?= gcc
|
||||
# OS X specifics. Needs to consider cross compiling for Windows.
|
||||
ifeq ($(findstring Darwin,$(shell uname)),Darwin)
|
||||
ifneq ($(findstring mingw,$(CROSS)$(CC)),mingw)
|
||||
# when building libs for OS X build for both i386 and ppc at the same time.
|
||||
# This creates fat objects, and ar can only create the archive but not operate
|
||||
# on it. As a result the ar call must NOT use the u (update) flag.
|
||||
CFLAGS += -arch ppc -arch i386
|
||||
# building against SDK 10.4 is not compatible with gcc-4.2 (default on newer Xcode)
|
||||
# might need adjustment for older Xcode.
|
||||
CC ?= gcc-4.0
|
||||
|
@ -105,27 +110,11 @@ $(TARGET_DIR)$(OUTPUT).dll: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
|
|||
$(SILENT)$(CROSS)$(CC) $(CFLAGS) -shared -o $@ $^ \
|
||||
-Wl,--output-def,$(TARGET_DIR)$(OUTPUT).def
|
||||
|
||||
# create lib file from objects
|
||||
$(TARGET_DIR)lib$(OUTPUT)$(RBARCH).a: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
|
||||
@echo AR $(notdir $@)
|
||||
$(SILENT)mkdir -p $(dir $@)
|
||||
$(SILENT)$(AR) rucs $@ $^
|
||||
|
||||
# some trickery to build ppc and i386 from a single call
|
||||
ifeq ($(RBARCH),)
|
||||
$(TARGET_DIR)lib$(OUTPUT)i386.a:
|
||||
make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) lib$(OUTPUT)i386.a
|
||||
|
||||
$(TARGET_DIR)lib$(OUTPUT)ppc.a:
|
||||
make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) lib$(OUTPUT)ppc.a
|
||||
endif
|
||||
|
||||
lib$(OUTPUT)-universal: $(TARGET_DIR)lib$(OUTPUT)i386.a \
|
||||
$(TARGET_DIR)lib$(OUTPUT)ppc.a
|
||||
@echo LIPO $(notdir $(TARGET_DIR)lib$(OUTPUT).a)
|
||||
$(SILENT) rm -f $(TARGET_DIR)lib$(OUTPUT).a
|
||||
$(SILENT)lipo -create $(TARGET_DIR)lib$(OUTPUT)i386.a \
|
||||
$(TARGET_DIR)lib$(OUTPUT)ppc.a \
|
||||
-output $(TARGET_DIR)lib$(OUTPUT).a
|
||||
$(SILENT)$(AR) rcs $@ $^
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS) $(OUTPUT) $(TARGET_DIR)lib$(OUTPUT)*.a $(OUTPUT).dmg
|
||||
|
|
|
@ -52,13 +52,6 @@ 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
|
||||
|
@ -83,54 +76,54 @@ librbspeex.commands = $$ADDENV \
|
|||
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||
SYS_SPEEX=\"$$LIBSPEEX\" \
|
||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
||||
$(MAKE) -C $$RBBASE_DIR/tools/rbspeex librbspeex$$RBLIBPOSTFIX
|
||||
$(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$$RBLIBPOSTFIX
|
||||
$(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$$RBLIBPOSTFIX
|
||||
$(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$$RBLIBPOSTFIX
|
||||
$(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$$RBLIBPOSTFIX
|
||||
$(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$$RBLIBPOSTFIX
|
||||
$(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$$RBLIBPOSTFIX
|
||||
$(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$$RBLIBPOSTFIX
|
||||
$(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$$RBLIBPOSTFIX
|
||||
$(MAKE) -C $$RBBASE_DIR/rbutil/mkimxboot libmkimxboot.a
|
||||
# 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 \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue