From e464128c546748edc9b54355a7cc45ab1b71f6eb Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Tue, 6 Jul 2010 21:08:16 +0000 Subject: [PATCH] Rework libskin_parser Makefile for OS X support. - add similar trickery that is used for the libraries used by Rockbox Utility to allow building as universal binary. - don't overwrite CC, we need to set this from outside for building OS X 10.4 compatible binaries. - extend Theme Editor project file to build 10.4 compatible binaries on OS X. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27323 a1c6a512-1295-4272-9138-f99709370657 --- lib/skin_parser/Makefile | 61 ++++++++++++++++++++++++------- utils/themeeditor/themeeditor.pro | 18 ++++++--- 2 files changed, 61 insertions(+), 18 deletions(-) diff --git a/lib/skin_parser/Makefile b/lib/skin_parser/Makefile index cdce7bb0c4..ac933f77de 100644 --- a/lib/skin_parser/Makefile +++ b/lib/skin_parser/Makefile @@ -7,27 +7,62 @@ # $Id$ # -BUILDDIR ?= . ifndef V SILENT = @ endif -SRC = skin_buffer.c skin_parser.c skin_debug.c skin_scan.c tag_table.c -OBJ := $(patsubst %.c,$(BUILDDIR)/%.o,$(SRC)) -OUT = $(BUILDDIR)/libskin_parser.a -CC = gcc +CC ?= gcc AR = ar -INCLUDES = -I. +OUTPUT=libskin_parser +TARGET_DIR ?= ./ -default: $(OUT) +# construct build directory if BUILDDIR is not set. +BUILDDIR ?= $(TARGET_DIR)build -$(BUILDDIR)/%.o: %.c +ifdef RBARCH +CFLAGS += -arch $(RBARCH) +OBJDIR = $(BUILDDIR)/$(RBARCH)/ +else +OBJDIR = $(BUILDDIR)/ +endif + +# input files +SOURCES := skin_buffer.c skin_debug.c skin_parser.c skin_scan.c tag_table.c +OBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(SOURCES))) + +all: $(OUTPUT).a + +$(OBJDIR)%.o: %.c @echo CC $< - $(SILENT)$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@ + $(SILENT)mkdir -p $(dir $@) + $(SILENT)$(CC) $(CFLAGS) -c -o $@ $< -$(OUT): $(OBJ) - @echo AR $(notdir $(OUT)) - $(SILENT)$(AR) rcs $(OUT) $(OBJ) +ifeq ($(findstring Darwin,$(shell uname)),Darwin) +# some trickery to build ppc and i386 from a single call +$(OUTPUT).a: $(TARGET_DIR)$(OUTPUT)i386.a $(TARGET_DIR)$(OUTPUT)ppc.a + @echo lipo $(TARGET_DIR)$@ + $(SILENT) rm -f $(TARGET_DIR)$(OUTPUT) + $(SILENT)lipo -create $(TARGET_DIR)$(OUTPUT)ppc.a $(TARGET_DIR)$(OUTPUT)i386.a -output $(TARGET_DIR)$(OUTPUT).a + +ifneq ($(RBARCH),) +$(OUTPUT)$(RBARCH).a: $(OBJS) + @echo AR $@ + $(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^ +else +$(TARGET_DIR)$(OUTPUT)i386.a: + make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) $(OUTPUT)i386.a + +$(TARGET_DIR)$(OUTPUT)ppc.a: + make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) $(OUTPUT)ppc.a +endif +else +$(OUTPUT).a: $(OBJS) + @echo AR $@ + $(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^ +endif clean: - rm -f $(OBJ) $(OUT) + rm -f $(OBJS) $(OUTPUT) $(TARGET_DIR)$(OUTPUT)*.a +ifeq ($(findstring Darwin,$(shell uname)),Darwin) +endif + diff --git a/utils/themeeditor/themeeditor.pro b/utils/themeeditor/themeeditor.pro index 8a16fa926a..19c01fa082 100644 --- a/utils/themeeditor/themeeditor.pro +++ b/utils/themeeditor/themeeditor.pro @@ -14,15 +14,15 @@ INCLUDEPATH += graphics # Stuff for the parse lib libskin_parser.commands = @$(MAKE) \ + TARGET_DIR=$$MYBUILDDIR CC=\"$$QMAKE_CC\" \ BUILDDIR=$$OBJECTS_DIR \ - -C \ - $$RBBASE_DIR/lib/skin_parser \ - CC=\"$$QMAKE_CC\" + -C $$RBBASE_DIR/lib/skin_parser \ + libskin_parser.a + QMAKE_EXTRA_TARGETS += libskin_parser PRE_TARGETDEPS += libskin_parser INCLUDEPATH += $$RBBASE_DIR/lib/skin_parser -LIBS += -L$$OBJECTS_DIR \ - -lskin_parser +LIBS += -L$$MYBUILDDIR -lskin_parser DEPENDPATH = $$INCLUDEPATH HEADERS += models/parsetreemodel.h \ models/parsetreenode.h \ @@ -82,3 +82,11 @@ FORMS += gui/editorwindow.ui \ gui/skinviewer.ui \ gui/findreplacedialog.ui RESOURCES += resources.qrc + +macx { + QMAKE_MAC_SDK=/Developer/SDKs/MacOSX10.4u.sdk + QMAKE_LFLAGS_PPC=-mmacosx-version-min=10.4 -arch ppc + QMAKE_LFLAGS_X86=-mmacosx-version-min=10.4 -arch i386 + CONFIG+=x86 ppc +} +