blob: af1e32ab4c888d5616b0818bf851858c688705b5 [file] [log] [blame]
Dominik Riebeling7de4f642011-12-03 09:44:21 +00001# __________ __ ___.
2# Open \______ \ ____ ____ | | _\_ |__ _______ ___
3# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/
Maurus Cuelenaeree8c71aa2009-08-16 20:39:00 +00007
Dominik Riebeling7de4f642011-12-03 09:44:21 +00008#change for releases
9TARGET_DIR ?= $(shell pwd)/
10CFLAGS=-Wall -g
Maurus Cuelenaeree8c71aa2009-08-16 20:39:00 +000011
Dominik Riebeling7de4f642011-12-03 09:44:21 +000012ifndef V
13SILENT = @
14endif
15
16ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN)
17OUTPUT=chinachip.exe
18CFLAGS+=-mno-cygwin
19else
20ifeq ($(findstring MINGW,$(shell uname)),MINGW)
21OUTPUT=chinachip.exe
22else
23ifeq ($(findstring mingw,$(CC)),mingw)
24OUTPUT=chinachip.exe
25else
26OUTPUT=chinachip
27endif
28endif
29endif
30
31ifdef RBARCH
32CFLAGS += -arch $(RBARCH)
33OBJDIR = $(TARGET_DIR)build/$(RBARCH)/
34else
35OBJDIR = $(TARGET_DIR)build/
36endif
37
38
39all: $(OUTPUT)
40
41# inputs
42LIBSOURCES := chinachip.c
43SOURCES := $(LIBSOURCES) main.c
44OBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(SOURCES)))
45LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(LIBSOURCES)))
46EXTRADEPS :=
47
48$(OBJDIR)%.o: %.c
49 @echo CC $<
50 $(SILENT)mkdir -p $(dir $@)
51 $(SILENT)$(CC) $(CFLAGS) -c -o $@ $<
52
53libchinachip$(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
65ifeq ($(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
71endif
72
73libchinachip-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 Cuelenaeree8c71aa2009-08-16 20:39:00 +000077
78clean:
Dominik Riebeling7de4f642011-12-03 09:44:21 +000079 rm -f $(OBJS) $(OUTPUT) libchinachip.o $(TARGET_DIR)libchinachip*.a chinachip.dmg
80 rm -rf chinachip-* i386 ppc $(OBJDIR)
81
82chinachip-i386:
83 $(MAKE) RBARCH=i386
84 mv chinachip chinachip-i386
85
86chinachip-ppc:
87 $(MAKE) RBARCH=ppc
88 mv chinachip chinachip-ppc
89
90chinachip-mac: chinachip-i386 chinachip-ppc
91 $(SILENT)lipo -create chinachip-ppc chinachip-i386 -output chinachip-mac
92
93chinachip.dmg: chinachip-mac
94 mkdir -p chinachip-dmg
95 cp -p chinachip-mac chinachip-dmg
96 hdiutil create -srcfolder chinachip-dmg chinachip.dmg