Dominik Riebeling | 7de4f64 | 2011-12-03 09:44:21 +0000 | [diff] [blame^] | 1 | # __________ __ ___. |
| 2 | # Open \______ \ ____ ____ | | _\_ |__ _______ ___ |
| 3 | # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / |
| 4 | # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
| 5 | # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
| 6 | # \/ \/ \/ \/ \/ |
Maurus Cuelenaere | e8c71aa | 2009-08-16 20:39:00 +0000 | [diff] [blame] | 7 | |
Dominik Riebeling | 7de4f64 | 2011-12-03 09:44:21 +0000 | [diff] [blame^] | 8 | #change for releases |
| 9 | TARGET_DIR ?= $(shell pwd)/ |
| 10 | CFLAGS=-Wall -g |
Maurus Cuelenaere | e8c71aa | 2009-08-16 20:39:00 +0000 | [diff] [blame] | 11 | |
Dominik Riebeling | 7de4f64 | 2011-12-03 09:44:21 +0000 | [diff] [blame^] | 12 | ifndef V |
| 13 | SILENT = @ |
| 14 | endif |
| 15 | |
| 16 | ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN) |
| 17 | OUTPUT=chinachip.exe |
| 18 | CFLAGS+=-mno-cygwin |
| 19 | else |
| 20 | ifeq ($(findstring MINGW,$(shell uname)),MINGW) |
| 21 | OUTPUT=chinachip.exe |
| 22 | else |
| 23 | ifeq ($(findstring mingw,$(CC)),mingw) |
| 24 | OUTPUT=chinachip.exe |
| 25 | else |
| 26 | OUTPUT=chinachip |
| 27 | endif |
| 28 | endif |
| 29 | endif |
| 30 | |
| 31 | ifdef RBARCH |
| 32 | CFLAGS += -arch $(RBARCH) |
| 33 | OBJDIR = $(TARGET_DIR)build/$(RBARCH)/ |
| 34 | else |
| 35 | OBJDIR = $(TARGET_DIR)build/ |
| 36 | endif |
| 37 | |
| 38 | |
| 39 | all: $(OUTPUT) |
| 40 | |
| 41 | # inputs |
| 42 | LIBSOURCES := chinachip.c |
| 43 | SOURCES := $(LIBSOURCES) main.c |
| 44 | OBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(SOURCES))) |
| 45 | LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(LIBSOURCES))) |
| 46 | EXTRADEPS := |
| 47 | |
| 48 | $(OBJDIR)%.o: %.c |
| 49 | @echo CC $< |
| 50 | $(SILENT)mkdir -p $(dir $@) |
| 51 | $(SILENT)$(CC) $(CFLAGS) -c -o $@ $< |
| 52 | |
| 53 | libchinachip$(RBARCH).a: $(TARGET_DIR)libchinachip$(RBARCH).a |
| 54 | |
| 55 | $(TARGET_DIR)libchinachip$(RBARCH).a: $(LIBOBJS) |
| 56 | @echo AR $(notdir $@) |
| 57 | $(SILENT)$(AR) rucs $@ $^ |
| 58 | |
| 59 | # building the standalone executable |
| 60 | $(OUTPUT): $(OBJS) $(EXTRADEPS) |
| 61 | @echo LD $@ |
| 62 | $(SILENT)$(CC) $(CFLAGS) -o $(OUTPUT) $(OBJS) $(EXTRADEPS) |
| 63 | |
| 64 | # some trickery to build ppc and i386 from a single call |
| 65 | ifeq ($(RBARCH),) |
| 66 | $(TARGET_DIR)libchinachipi386.a: |
| 67 | make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) libchinachipi386.a |
| 68 | |
| 69 | $(TARGET_DIR)libchinachipppc.a: |
| 70 | make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libchinachipppc.a |
| 71 | endif |
| 72 | |
| 73 | libchinachip-universal: $(TARGET_DIR)libchinachipi386.a $(TARGET_DIR)libchinachipppc.a |
| 74 | @echo lipo $(TARGET_DIR)libchinachip.a |
| 75 | $(SILENT) rm -f $(TARGET_DIR)libchinachip.a |
| 76 | $(SILENT)lipo -create $(TARGET_DIR)libchinachipppc.a $(TARGET_DIR)libchinachipi386.a -output $(TARGET_DIR)libchinachip.a |
Maurus Cuelenaere | e8c71aa | 2009-08-16 20:39:00 +0000 | [diff] [blame] | 77 | |
| 78 | clean: |
Dominik Riebeling | 7de4f64 | 2011-12-03 09:44:21 +0000 | [diff] [blame^] | 79 | rm -f $(OBJS) $(OUTPUT) libchinachip.o $(TARGET_DIR)libchinachip*.a chinachip.dmg |
| 80 | rm -rf chinachip-* i386 ppc $(OBJDIR) |
| 81 | |
| 82 | chinachip-i386: |
| 83 | $(MAKE) RBARCH=i386 |
| 84 | mv chinachip chinachip-i386 |
| 85 | |
| 86 | chinachip-ppc: |
| 87 | $(MAKE) RBARCH=ppc |
| 88 | mv chinachip chinachip-ppc |
| 89 | |
| 90 | chinachip-mac: chinachip-i386 chinachip-ppc |
| 91 | $(SILENT)lipo -create chinachip-ppc chinachip-i386 -output chinachip-mac |
| 92 | |
| 93 | chinachip.dmg: chinachip-mac |
| 94 | mkdir -p chinachip-dmg |
| 95 | cp -p chinachip-mac chinachip-dmg |
| 96 | hdiutil create -srcfolder chinachip-dmg chinachip.dmg |