Tweak Makefiles a bit to allow cross compiling Rockbox Utility.

- pass AR to the lib Makefiles to make sure the correct one gets used.
- create an archive index for archives.
- simplify ucl Makefile a bit.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28883 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dominik Riebeling 2010-12-23 18:59:58 +00:00
parent 7f6c271bad
commit e1b1183f40
6 changed files with 24 additions and 24 deletions

View File

@ -60,7 +60,7 @@ $(OBJDIR)%.o: %.c
libmkamsboot$(RBARCH).a: $(LIBOBJS)
@echo AR $@
$(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^
$(SILENT)$(AR) rucs $(TARGET_DIR)$@ $^
# building the standalone executable
$(OUTPUT): $(OBJS) $(EXTRADEPS)

View File

@ -54,7 +54,7 @@ $(OBJDIR)%.o: %.c
libmkmpioboot$(RBARCH).a: $(LIBOBJS)
@echo AR $@
$(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^
$(SILENT)$(AR) rucs $(TARGET_DIR)$@ $^
# building the standalone executable
$(OUTPUT): $(OBJS) $(EXTRADEPS)

View File

@ -56,7 +56,7 @@ $(OUT)/%.o: %.c $(OUT)
libmktccboot$(RBARCH).a: $(LIBOBJS)
@echo AR $@
$(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^
$(SILENT)$(AR) rucs $(TARGET_DIR)$@ $^
# building the standalone executable
$(OUTPUT): $(OBJS) $(EXTRADEPS)

View File

@ -64,30 +64,35 @@ mac {
!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)
rbspeex.commands = @$(MAKE) \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/tools/rbspeex \
librbspeex$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC\" \
SYS_SPEEX=\"$$LIBSPEEX\"
SYS_SPEEX=\"$$LIBSPEEX\" \
CC=\"$$QMAKE_CC\" AR=\"$$MYAR\"
libucl.commands = @$(MAKE) \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/tools/ucl/src \
libucl$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC\"
CC=\"$$QMAKE_CC\" AR=\"$$MYAR\"
libmkamsboot.commands = @$(MAKE) \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mkamsboot \
APPVERSION=\"rbutil\" \
libmkamsboot$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC\"
CC=\"$$QMAKE_CC\" AR=\"$$MYAR\"
libmktccboot.commands = @$(MAKE) \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mktccboot \
libmktccboot$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC\"
CC=\"$$QMAKE_CC\" AR=\"$$MYAR\"
libmkmpioboot.commands = @$(MAKE) \
TARGET_DIR=$$MYBUILDDIR -C $$RBBASE_DIR/rbutil/mkmpioboot \
APPVERSION=\"rbutil\" \
libmkmpioboot$$RBLIBPOSTFIX \
CC=\"$$QMAKE_CC\"
CC=\"$$QMAKE_CC\" AR=\"$$MYAR\"
QMAKE_EXTRA_TARGETS += rbspeex libucl libmkamsboot libmktccboot libmkmpioboot
PRE_TARGETDEPS += rbspeex libucl libmkamsboot libmktccboot libmkmpioboot
@ -111,7 +116,7 @@ INCLUDEPATH += $$RBBASE_DIR/rbutil/ipodpatcher $$RBBASE_DIR/rbutil/sansapatcher
DEPENDPATH = $$INCLUDEPATH
LIBS += -L$$OUT_PWD -L$$MYBUILDDIR -lrbspeex -lmkamsboot -lmktccboot -lmkmpioboot -lucl
LIBS += -L$$OUT_PWD -L$$MYBUILDDIR -lrbspeex -lmkamsboot -lmktccboot -lmkmpioboot -lucl -lz
# Add a (possibly found) libspeex now, don't do this before -lrbspeex!
!static:!isEmpty(LIBSPEEX) {
@ -152,10 +157,6 @@ unix:!static:libusb1:!macx {
DEFINES += LIBUSB1
LIBS += -lusb-1.0
}
unix {
# explicitly link zlib, we do need it. Don't rely on implicit linking via Qt.
LIBS += -lz
}
unix:!macx:static {
# force statically linking of libusb. Libraries that are appended
@ -177,7 +178,7 @@ macx:intel {
}
macx {
CONFIG += x86
LIBS += -L/usr/local/lib -lz \
LIBS += -L/usr/local/lib \
-framework IOKit -framework CoreFoundation -framework Carbon \
-framework SystemConfiguration -framework CoreServices
INCLUDEPATH += /usr/local/include

View File

@ -72,7 +72,7 @@ $(DEPFILE): $(SOURCES)
$(OUT)/librbspeex.a: $(OBJS) $(DEPFILE) $(OUT)/rbspeex.o
@echo AR $(OUT)/librbspeex$(RBARCH).a
$(SILENT)$(AR) ruv $@ $+ > /dev/null 2>&1
$(SILENT)$(AR) rucs $@ $+ > /dev/null 2>&1
librbspeex$(RBARCH).a: $(OUT)/librbspeex.a
$(SILENT)cp $(OUT)/librbspeex.a $(TARGET_DIR)librbspeex$(RBARCH).a

View File

@ -21,17 +21,16 @@ OUT = $(TARGET_DIR)build$(RBARCH)
SOURCES = alloc.c io.c n2b_99.c n2b_d.c n2b_ds.c n2b_to.c n2d_99.c \
n2d_d.c n2d_ds.c n2d_to.c n2e_99.c n2e_d.c n2e_ds.c n2e_to.c ucl_crc.c \
ucl_dll.c ucl_init.c ucl_ptr.c ucl_str.c ucl_util.c
ucl_init.c ucl_ptr.c ucl_str.c ucl_util.c #ucl_dll.c
OBJS = $(OUT)/alloc.o $(OUT)/io.o $(OUT)/n2b_99.o $(OUT)/n2b_d.o $(OUT)/n2b_ds.o $(OUT)/n2b_to.o $(OUT)/n2d_99.o \
$(OUT)/n2d_d.o $(OUT)/n2d_ds.o $(OUT)/n2d_to.o $(OUT)/n2e_99.o $(OUT)/n2e_d.o $(OUT)/n2e_ds.o $(OUT)/n2e_to.o $(OUT)/ucl_crc.o \
$(OUT)/ucl_dll.o $(OUT)/ucl_init.o $(OUT)/ucl_ptr.o $(OUT)/ucl_str.o $(OUT)/ucl_util.o
OBJS = $(addprefix $(OUT)/,$(SOURCES:%.c=%.o))
# This Makefile is _not_ used to build uclpack for Rockbox builds anymore (they
# use tools.make), so we can use $(CC) and $(AR) here.
# we don't use $(AR) and $(RANLIB) below since we want the _native_ tools
# not the cross-compiler tools
libucl$(RBARCH).a: $(OUT) $(OBJS)
$(SILENT)ar ruv $(TARGET_DIR)$@ $(OBJS) >/dev/null 2>&1
$(SILENT)ranlib $(TARGET_DIR)$@
@echo AR $@
$(SILENT)$(AR) rucs $(TARGET_DIR)$@ $(OBJS) >/dev/null 2>&1
$(OUT)/%.o: %.c
@echo CC $<