Handle TARGET_DIR in universal library building.
[kugel-rb.git] / rbutil / mktccboot / Makefile
blob14c184321c9d275a797a933245e2deb36b80f861
1 # __________ __ ___.
2 # Open \______ \ ____ ____ | | _\_ |__ _______ ___
3 # Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4 # Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5 # Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6 # \/ \/ \/ \/ \/
7 # $Id$
10 # We use the Telechips code available in the Rockbox tools/ directory
11 TOOLSDIR=../../tools
12 CFLAGS := -O -g -W -Wall -Wshadow -pedantic -I$(TOOLSDIR)
14 CC = gcc
16 ifndef V
17 SILENT = @
18 endif
20 ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN)
21 OUTPUT=mktccboot.exe
22 CFLAGS+=-mno-cygwin
23 else
24 ifeq ($(findstring MINGW,$(shell uname)),MINGW)
25 OUTPUT=mktccboot.exe
26 else
27 ifeq ($(findstring mingw,$(CC)),mingw)
28 OUTPUT=mktccboot.exe
29 else
30 OUTPUT=mktccboot
31 endif
32 endif
33 endif
35 ifdef RBARCH
36 CFLAGS += -arch $(RBARCH)
37 endif
39 OUT = $(TARGET_DIR)build$(RBARCH)
41 all: $(OUTPUT)
43 # inputs
44 LIBSOURCES := mktccboot.c $(TOOLSDIR)/telechips.o
45 SOURCES := $(LIBSOURCES) main.c
46 OBJS := $(patsubst %.c,%.o,$(addprefix $(OUT)/,$(notdir $(SOURCES))))
47 LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OUT)/,$(notdir $(LIBSOURCES))))
48 EXTRADEPS :=
50 # rule for sources from tools dir
51 $(OUT)/%.o: $(TOOLSDIR)/%.c $(OUT)
52 @echo CC $<
53 $(SILENT)$(CC) $(CFLAGS) -c -o $@ $<
55 $(OUT)/%.o: %.c $(OUT)
56 @echo CC $<
57 $(SILENT)$(CC) $(CFLAGS) -c -o $@ $<
59 # building the library archive
60 $(OUT)/libmktccboot.o: $(OUT)/mktccboot.o
61 @echo CC $<
62 $(SILENT)$(CC) $(CFLAGS) -DLIB -c -o $(OUT)/libmktccboot.o -W -Wall mktccboot.c
64 libmktccboot$(RBARCH).a: $(LIBOBJS)
65 @echo AR $@
66 $(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^
68 # building the standalone executable
69 $(OUTPUT): $(OBJS) $(EXTRADEPS)
70 @echo LD $@
71 $(SILENT)$(CC) $(CFLAGS) -o$(OUTPUT) $(OBJS) $(EXTRADEPS)
73 # some trickery to build ppc and i386 from a single call
74 ifeq ($(RBARCH),)
75 $(TARGET_DIR)libmktccbooti386.a:
76 make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) libmktccbooti386.a
78 $(TARGET_DIR)libmktccbootppc.a:
79 make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libmktccbootppc.a
80 endif
82 libmktccboot-universal: $(TARGET_DIR)libmktccbooti386.a $(TARGET_DIR)libmktccbootppc.a
83 @echo lipo $(TARGET_DIR)libmktccboot.a
84 $(SILENT) rm -f $(TARGET_DIR)libmktccboot.a
85 lipo -create $(TARGET_DIR)libmktccbootppc.a $(TARGET_DIR)libmktccbooti386.a -output $(TARGET_DIR)libmktccboot.a
87 clean:
88 rm -f $(OUTPUT) $(TARGET_DIR)libmktccboot*.a mktccboot.dmg
89 rm -rf $(OUT)
91 mktccboot-i386:
92 $(MAKE) RBARCH=i386
93 mv mktccboot mktccboot-i386
95 mktccboot-ppc:
96 make RBARCH=ppc
97 mv mktccboot mktccboot-ppc
99 mktccboot-mac: mktccboot-i386 mktccboot-ppc
100 lipo -create mktccboot-ppc mktccboot-i386 -output mktccboot-mac
102 mktccboot.dmg: mktccboot-mac
103 mkdir -p mktccboot-dmg
104 cp -p mktccboot-mac mktccboot-dmg
105 hdiutil create -srcfolder mktccboot-dmg mktccboot.dmg
107 $(OUT):
108 @echo MKDIR $(OUT)
109 $(SILENT)mkdir $(OUT)