mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-11-10 21:52:28 -05:00
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
|
||||||
endif
|
endif
|
||||||
|
|
||||||
NATIVECC = gcc
|
NATIVECC ?= gcc
|
||||||
CC ?= gcc
|
CC ?= gcc
|
||||||
|
# OS X specifics. Needs to consider cross compiling for Windows.
|
||||||
ifeq ($(findstring Darwin,$(shell uname)),Darwin)
|
ifeq ($(findstring Darwin,$(shell uname)),Darwin)
|
||||||
ifneq ($(findstring mingw,$(CROSS)$(CC)),mingw)
|
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)
|
# building against SDK 10.4 is not compatible with gcc-4.2 (default on newer Xcode)
|
||||||
# might need adjustment for older Xcode.
|
# might need adjustment for older Xcode.
|
||||||
CC ?= gcc-4.0
|
CC ?= gcc-4.0
|
||||||
|
|
@ -105,27 +110,11 @@ $(TARGET_DIR)$(OUTPUT).dll: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
|
||||||
$(SILENT)$(CROSS)$(CC) $(CFLAGS) -shared -o $@ $^ \
|
$(SILENT)$(CROSS)$(CC) $(CFLAGS) -shared -o $@ $^ \
|
||||||
-Wl,--output-def,$(TARGET_DIR)$(OUTPUT).def
|
-Wl,--output-def,$(TARGET_DIR)$(OUTPUT).def
|
||||||
|
|
||||||
|
# create lib file from objects
|
||||||
$(TARGET_DIR)lib$(OUTPUT)$(RBARCH).a: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
|
$(TARGET_DIR)lib$(OUTPUT)$(RBARCH).a: $(LIBOBJS) $(addprefix $(OBJDIR),$(EXTRALIBOBJS))
|
||||||
@echo AR $(notdir $@)
|
@echo AR $(notdir $@)
|
||||||
$(SILENT)mkdir -p $(dir $@)
|
$(SILENT)mkdir -p $(dir $@)
|
||||||
$(SILENT)$(AR) rucs $@ $^
|
$(SILENT)$(AR) rcs $@ $^
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OBJS) $(OUTPUT) $(TARGET_DIR)lib$(OUTPUT)*.a $(OUTPUT).dmg
|
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)
|
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
|
# 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,
|
# found. Newer versions of speex are split up into libspeex and libspeexdsp,
|
||||||
# and some distributions package them separately. Check for both and fall back
|
# and some distributions package them separately. Check for both and fall back
|
||||||
|
|
@ -83,54 +76,54 @@ librbspeex.commands = $$ADDENV \
|
||||||
TARGET_DIR=$$MYLIBBUILDDIR \
|
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||||
SYS_SPEEX=\"$$LIBSPEEX\" \
|
SYS_SPEEX=\"$$LIBSPEEX\" \
|
||||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
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 \
|
libucl.commands = $$ADDENV \
|
||||||
BUILD_DIR=$$MYLIBBUILDDIR/ucl/ \
|
BUILD_DIR=$$MYLIBBUILDDIR/ucl/ \
|
||||||
TARGET_DIR=$$MYLIBBUILDDIR \
|
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
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 \
|
libipodpatcher.commands = $$ADDENV \
|
||||||
BUILD_DIR=$$MYLIBBUILDDIR/ipodpatcher/ \
|
BUILD_DIR=$$MYLIBBUILDDIR/ipodpatcher/ \
|
||||||
TARGET_DIR=$$MYLIBBUILDDIR \
|
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||||
APPVERSION=\"rbutil\" \
|
APPVERSION=\"rbutil\" \
|
||||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
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 \
|
libsansapatcher.commands = $$ADDENV \
|
||||||
BUILD_DIR=$$MYLIBBUILDDIR/sansapatcher/ \
|
BUILD_DIR=$$MYLIBBUILDDIR/sansapatcher/ \
|
||||||
TARGET_DIR=$$MYLIBBUILDDIR \
|
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||||
APPVERSION=\"rbutil\" \
|
APPVERSION=\"rbutil\" \
|
||||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
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 \
|
libmkamsboot.commands = $$ADDENV \
|
||||||
BUILD_DIR=$$MYLIBBUILDDIR/mkamsboot/ \
|
BUILD_DIR=$$MYLIBBUILDDIR/mkamsboot/ \
|
||||||
TARGET_DIR=$$MYLIBBUILDDIR \
|
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||||
APPVERSION=\"rbutil\" \
|
APPVERSION=\"rbutil\" \
|
||||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
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 \
|
libmktccboot.commands = $$ADDENV \
|
||||||
BUILD_DIR=$$MYLIBBUILDDIR/mktccboot/ \
|
BUILD_DIR=$$MYLIBBUILDDIR/mktccboot/ \
|
||||||
TARGET_DIR=$$MYLIBBUILDDIR \
|
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||||
APPVERSION=\"rbutil\" \
|
APPVERSION=\"rbutil\" \
|
||||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
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 \
|
libmkmpioboot.commands = $$ADDENV \
|
||||||
BUILD_DIR=$$MYLIBBUILDDIR/mkmpioboot/ \
|
BUILD_DIR=$$MYLIBBUILDDIR/mkmpioboot/ \
|
||||||
TARGET_DIR=$$MYLIBBUILDDIR \
|
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||||
APPVERSION=\"rbutil\" \
|
APPVERSION=\"rbutil\" \
|
||||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
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 \
|
libchinachippatcher.commands = $$ADDENV \
|
||||||
BUILD_DIR=$$MYLIBBUILDDIR/chinachippatcher/ \
|
BUILD_DIR=$$MYLIBBUILDDIR/chinachippatcher/ \
|
||||||
TARGET_DIR=$$MYLIBBUILDDIR \
|
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||||
APPVERSION=\"rbutil\" \
|
APPVERSION=\"rbutil\" \
|
||||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
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 \
|
libmkimxboot.commands = $$ADDENV \
|
||||||
BUILD_DIR=$$MYLIBBUILDDIR/mkimxboot/ \
|
BUILD_DIR=$$MYLIBBUILDDIR/mkimxboot/ \
|
||||||
TARGET_DIR=$$MYLIBBUILDDIR \
|
TARGET_DIR=$$MYLIBBUILDDIR \
|
||||||
APPVERSION=\"rbutil\" \
|
APPVERSION=\"rbutil\" \
|
||||||
CC=\"$$QMAKE_CC\" CFLAGS=\"$$MACHINEFLAGS\" AR=\"$$MYAR\" \
|
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
|
# Note: order is important for RBLIBS! The libs are appended to the linker
|
||||||
# flags in this order, put libucl at the end.
|
# flags in this order, put libucl at the end.
|
||||||
RBLIBS = librbspeex libipodpatcher libsansapatcher libmkamsboot libmktccboot \
|
RBLIBS = librbspeex libipodpatcher libsansapatcher libmkamsboot libmktccboot \
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue