blob: 6cf74ee2b55de7fd7a577da0b1010d2b76c876ef [file] [log] [blame]
Dave Chapmanc6be8182008-10-04 08:46:03 +00001
Thomas Martitzff2f8392009-07-05 10:35:47 +00002#change for releases
Dave Chapman747b9ca2009-10-11 09:47:15 +00003ifndef APPVERSION
Thomas Martitzff2f8392009-07-05 10:35:47 +00004APPVERSION=`../../tools/version.sh`
Dave Chapman747b9ca2009-10-11 09:47:15 +00005endif
Thomas Martitzff2f8392009-07-05 10:35:47 +00006
Dominik Riebelingea617802009-11-04 20:58:40 +00007# We use the UCL code available in the Rockbox tools/ directory
8CFLAGS=-I../../tools/ucl/include -Wall -DVERSION=\"$(APPVERSION)\"
9CC = gcc
10
Dominik Riebelingac77c082009-08-15 14:26:08 +000011ifndef V
12SILENT = @
13endif
14
Rafaël Carré96165ab2009-05-28 18:27:08 +000015ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN)
16OUTPUT=mkamsboot.exe
17CFLAGS+=-mno-cygwin
18else
19ifeq ($(findstring MINGW,$(shell uname)),MINGW)
20OUTPUT=mkamsboot.exe
21else
22ifeq ($(findstring mingw,$(CC)),mingw)
23OUTPUT=mkamsboot.exe
24else
25OUTPUT=mkamsboot
26endif
27endif
28endif
Dave Chapmanc6be8182008-10-04 08:46:03 +000029
Dominik Wengerf4e2d832009-08-15 13:54:13 +000030ifdef RBARCH
31CFLAGS += -arch $(RBARCH)
32endif
33
Dominik Wenger4d868612009-09-04 21:31:17 +000034OUT = $(TARGET_DIR)build$(RBARCH)
Dominik Wengerf4e2d832009-08-15 13:54:13 +000035
Rafaël Carré96165ab2009-05-28 18:27:08 +000036all: $(OUTPUT)
Dave Chapmandcb0e432008-11-14 22:16:22 +000037
Dominik Riebelingea617802009-11-04 20:58:40 +000038# additional link dependencies for the standalone executable
Tomer Shalev15ea6e62009-10-31 17:18:17 +000039LIBUCL=../../tools/ucl/src/libucl$(RBARCH).a
40
Dave Chapman1c4bcfa2008-10-11 11:35:59 +000041$(LIBUCL):
Rafaël Carré30ea0b62009-10-09 08:49:41 +000042 make -C ../../tools/ucl/src $(TARGET_DIR)libucl$(RBARCH).a
Dave Chapman1c4bcfa2008-10-11 11:35:59 +000043
Dominik Riebelingea617802009-11-04 20:58:40 +000044# inputs
45LIBSOURCES := dualboot.c md5.c mkamsboot.c
46SOURCES := $(LIBSOURCES) main.c
47OBJS := $(patsubst %.c,%.o,$(addprefix $(OUT)/,$(SOURCES)))
48LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OUT)/,$(LIBSOURCES)))
49EXTRADEPS := $(LIBUCL)
Rafaël Carré96165ab2009-05-28 18:27:08 +000050
Dominik Riebelingea617802009-11-04 20:58:40 +000051$(OUT)/%.o: %.c $(OUT)
52 @echo CC $< $
53 $(SILENT)$(CC) $(CFLAGS) -c -o $@ $<
Dave Chapmanc91d7872008-10-30 00:13:29 +000054
Dominik Riebelingea617802009-11-04 20:58:40 +000055# building the library archive
Tomer Shalev15ea6e62009-10-31 17:18:17 +000056$(OUT)/libmkamsboot.o: $(OUT)/mkamsboot.o
Dominik Riebeling24170232009-09-05 08:54:52 +000057 @echo CC $<
58 $(SILENT)$(CC) $(CFLAGS) -DLIB -c -o $(OUT)/libmkamsboot.o -W -Wall mkamsboot.c
Dave Chapmanc6be8182008-10-04 08:46:03 +000059
Dominik Riebelingea617802009-11-04 20:58:40 +000060libmkamsboot$(RBARCH).a: $(LIBOBJS)
Dominik Riebeling24170232009-09-05 08:54:52 +000061 @echo AR $@
Dominik Riebelingea617802009-11-04 20:58:40 +000062 $(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^
63
64# building the standalone executable
65$(OUTPUT): $(OBJS) $(EXTRADEPS)
66 @echo LD $@
67 $(SILENT)$(CC) $(CFLAGS) -o$(OUTPUT) $(OBJS) $(EXTRADEPS)
Dave Chapmanc6be8182008-10-04 08:46:03 +000068
Dominik Wengerf4e2d832009-08-15 13:54:13 +000069# some trickery to build ppc and i386 from a single call
70ifeq ($(RBARCH),)
71libmkamsbooti386.a:
Dominik Wenger4d868612009-09-04 21:31:17 +000072 make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) libmkamsbooti386.a
Dominik Wengerf4e2d832009-08-15 13:54:13 +000073
74libmkamsbootppc.a:
Dominik Wenger4d868612009-09-04 21:31:17 +000075 make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libmkamsbootppc.a
Dominik Wengerf4e2d832009-08-15 13:54:13 +000076endif
77
78libmkamsboot-universal: libmkamsbooti386.a libmkamsbootppc.a
Dominik Wenger4d868612009-09-04 21:31:17 +000079 @echo lipo $(TARGET_DIR)libmkamsboot.a
80 $(SILENT) rm -f $(TARGET_DIR)libmkamsboot.a
Dominik Riebeling24170232009-09-05 08:54:52 +000081 lipo -create $(TARGET_DIR)libmkamsbootppc.a $(TARGET_DIR)libmkamsbooti386.a -output $(TARGET_DIR)libmkamsboot.a
Dominik Wengerf4e2d832009-08-15 13:54:13 +000082
Dave Chapmanc6be8182008-10-04 08:46:03 +000083clean:
Tomer Shalev15ea6e62009-10-31 17:18:17 +000084 rm -f $(OUTPUT) libmkamsboot.o $(TARGET_DIR)libmkamsboot*.a mkamsboot.dmg $(DEPENDANT_OBJS)
Rafaël Carré30ea0b62009-10-09 08:49:41 +000085 rm -rf build* mkamsboot-*
86
87mkamsboot-i386:
88 $(MAKE) RBARCH=i386
89 mv mkamsboot mkamsboot-i386
90
91mkamsboot-ppc:
92 make RBARCH=ppc
93 mv mkamsboot mkamsboot-ppc
94
95mkamsboot-mac: mkamsboot-i386 mkamsboot-ppc
96 lipo -create mkamsboot-ppc mkamsboot-i386 -output mkamsboot-mac
97
98mkamsboot.dmg: mkamsboot-mac
99 mkdir -p mkamsboot-dmg
100 cp -p mkamsboot-mac mkamsboot-dmg
101 hdiutil create -srcfolder mkamsboot-dmg mkamsboot.dmg
Dominik Wengerf4e2d832009-08-15 13:54:13 +0000102
Dominik Wenger4d868612009-09-04 21:31:17 +0000103$(OUT):
104 @echo MKDIR $(OUT)
105 $(SILENT)mkdir $(OUT)
Dominik Riebelingac77c082009-08-15 14:26:08 +0000106