# __________ __ ___. # Open \______ \ ____ ____ | | _\_ |__ _______ ___ # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ # \/ \/ \/ \/ \/ # ifndef V SILENT = @ endif CC ?= gcc AR ?= ar OUTPUT=libskin_parser TARGET_DIR ?= ./ ifeq ($(OS),Windows_NT) mkdir = if not exist $(subst /,\,$(1)) mkdir $(subst /,\,$(1)) rm = if exist $(subst /,\,$(1)) del /q /s $(subst /,\,$(1)) else mkdir = mkdir -p $(1) rm = rm -rf $(1) endif CPPDEFINES := $(shell echo foo | $(CC) -dM -E -) # construct build directory if BUILDDIR is not set. BUILDDIR ?= $(TARGET_DIR)build CFLAGS += -D__PCTOOL__ 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 $(info CC $<) $(SILENT)$(call mkdir,$(dir $@)) $(SILENT)$(CC) $(CFLAGS) -c -o $@ $< ifeq ($(findstring Darwin,$(TARGETPLATFORM)),Darwin) # some trickery to build ppc and i386 from a single call $(OUTPUT).a: $(TARGET_DIR)$(OUTPUT)i386.a $(TARGET_DIR)$(OUTPUT)ppc.a $(info lipo $(TARGET_DIR)$@) $(SILENT)$(call rm,$(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) $(info 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) $(info AR $@) $(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^ endif clean: $(call rm,$(OBJS) $(OUTPUT) $(TARGET_DIR)$(OUTPUT)*.a)