summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2012-01-05 22:26:08 +0000
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2012-01-05 22:26:08 +0000
commitc6dcec4e0d9af18a3e45d557e9e072c5640d85cd (patch)
tree651b46161f449d647df3033620dd6f48f41e5662
parent1ef25cd7e0ca653f87b3d9143248c0246a01271f (diff)
downloadrockbox-c6dcec4e0d9af18a3e45d557e9e072c5640d85cd.zip
rockbox-c6dcec4e0d9af18a3e45d557e9e072c5640d85cd.tar.gz
rockbox-c6dcec4e0d9af18a3e45d557e9e072c5640d85cd.tar.bz2
rockbox-c6dcec4e0d9af18a3e45d557e9e072c5640d85cd.tar.xz
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
-rw-r--r--rbutil/libtools.make27
-rw-r--r--rbutil/rbutilqt/rbutilqt.pro25
2 files changed, 17 insertions, 35 deletions
diff --git a/rbutil/libtools.make b/rbutil/libtools.make
index 4e66161..0d028e0 100644
--- a/rbutil/libtools.make
+++ b/rbutil/libtools.make
@@ -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
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro
index 270e47b..1f281cb 100644
--- a/rbutil/rbutilqt/rbutilqt.pro
+++ b/rbutil/rbutilqt/rbutilqt.pro
@@ -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 \