blob: 8ee44cd389511532ab175e694afc7150d4cf7d58 [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
Rafaël Carréc36a6442010-02-22 05:41:09 +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)\"
Dominik Riebelingea617802009-11-04 20:58:40 +00009
Dominik Riebelingac77c082009-08-15 14:26:08 +000010ifndef V
11SILENT = @
12endif
13
Rafaël Carré96165ab2009-05-28 18:27:08 +000014ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN)
15OUTPUT=mkamsboot.exe
16CFLAGS+=-mno-cygwin
17else
18ifeq ($(findstring MINGW,$(shell uname)),MINGW)
19OUTPUT=mkamsboot.exe
20else
21ifeq ($(findstring mingw,$(CC)),mingw)
22OUTPUT=mkamsboot.exe
23else
24OUTPUT=mkamsboot
25endif
26endif
27endif
Dave Chapmanc6be8182008-10-04 08:46:03 +000028
Dominik Wengerf4e2d832009-08-15 13:54:13 +000029ifdef RBARCH
30CFLAGS += -arch $(RBARCH)
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000031OBJDIR = $(RBARCH)/
Dominik Wengerf4e2d832009-08-15 13:54:13 +000032endif
33
Dominik Wengerf4e2d832009-08-15 13:54:13 +000034
Rafaël Carré96165ab2009-05-28 18:27:08 +000035all: $(OUTPUT)
Dave Chapmandcb0e432008-11-14 22:16:22 +000036
Dominik Riebelingea617802009-11-04 20:58:40 +000037# additional link dependencies for the standalone executable
Tomer Shalev15ea6e62009-10-31 17:18:17 +000038LIBUCL=../../tools/ucl/src/libucl$(RBARCH).a
39
Dave Chapman1c4bcfa2008-10-11 11:35:59 +000040$(LIBUCL):
Rafaël Carré30ea0b62009-10-09 08:49:41 +000041 make -C ../../tools/ucl/src $(TARGET_DIR)libucl$(RBARCH).a
Dave Chapman1c4bcfa2008-10-11 11:35:59 +000042
Dominik Riebelingea617802009-11-04 20:58:40 +000043# inputs
44LIBSOURCES := dualboot.c md5.c mkamsboot.c
45SOURCES := $(LIBSOURCES) main.c
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000046OBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(SOURCES)))
47LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(LIBSOURCES)))
Dominik Riebelingea617802009-11-04 20:58:40 +000048EXTRADEPS := $(LIBUCL)
Rafaël Carré96165ab2009-05-28 18:27:08 +000049
Rafaël Carré3b53fe02010-02-25 18:08:16 +000050# explicit dependencies on dualboot.{c,h}
51$(OBJDIR)mkamsboot.o: dualboot.h dualboot.c mkamsboot.c
52$(OBJDIR)main.o: dualboot.h dualboot.c main.c
53
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000054$(OBJDIR)%.o: %.c
Dominik Riebelingea617802009-11-04 20:58:40 +000055 @echo CC $< $
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000056 $(SILENT)mkdir -p $(dir $@)
Dominik Riebelingea617802009-11-04 20:58:40 +000057 $(SILENT)$(CC) $(CFLAGS) -c -o $@ $<
Dave Chapmanc91d7872008-10-30 00:13:29 +000058
Dominik Riebelingea617802009-11-04 20:58:40 +000059libmkamsboot$(RBARCH).a: $(LIBOBJS)
Dominik Riebeling24170232009-09-05 08:54:52 +000060 @echo AR $@
Dominik Riebelingea617802009-11-04 20:58:40 +000061 $(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^
62
63# building the standalone executable
Rafaël Carré75919d52010-02-19 07:16:51 +000064$(OUTPUT): $(OBJS) $(EXTRADEPS)
Dominik Riebelingea617802009-11-04 20:58:40 +000065 @echo LD $@
Rafaël Carréa7210072009-11-08 21:00:55 +000066 $(SILENT)$(CC) $(CFLAGS) -o $(OUTPUT) $(OBJS) $(EXTRADEPS)
Dave Chapmanc6be8182008-10-04 08:46:03 +000067
Dominik Wengerf4e2d832009-08-15 13:54:13 +000068# some trickery to build ppc and i386 from a single call
69ifeq ($(RBARCH),)
Dominik Riebelingcca6f742009-11-28 22:39:00 +000070$(TARGET_DIR)libmkamsbooti386.a:
Dominik Wenger4d868612009-09-04 21:31:17 +000071 make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) libmkamsbooti386.a
Dominik Wengerf4e2d832009-08-15 13:54:13 +000072
Dominik Riebelingcca6f742009-11-28 22:39:00 +000073$(TARGET_DIR)libmkamsbootppc.a:
Dominik Wenger4d868612009-09-04 21:31:17 +000074 make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libmkamsbootppc.a
Dominik Wengerf4e2d832009-08-15 13:54:13 +000075endif
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000076
Dominik Riebelingcca6f742009-11-28 22:39:00 +000077libmkamsboot-universal: $(TARGET_DIR)libmkamsbooti386.a $(TARGET_DIR)libmkamsbootppc.a
Dominik Wenger4d868612009-09-04 21:31:17 +000078 @echo lipo $(TARGET_DIR)libmkamsboot.a
79 $(SILENT) rm -f $(TARGET_DIR)libmkamsboot.a
Dominik Riebeling69a5ff72009-12-13 21:30:28 +000080 $(SILENT)lipo -create $(TARGET_DIR)libmkamsbootppc.a $(TARGET_DIR)libmkamsbooti386.a -output $(TARGET_DIR)libmkamsboot.a
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000081
Dave Chapmanc6be8182008-10-04 08:46:03 +000082clean:
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000083 rm -f $(OBJS) $(OUTPUT) libmkamsboot.o $(TARGET_DIR)libmkamsboot*.a mkamsboot.dmg
84 rm -rf mkamsboot-* i386 ppc $(OBJDIR)
Rafaël Carré30ea0b62009-10-09 08:49:41 +000085
86mkamsboot-i386:
87 $(MAKE) RBARCH=i386
88 mv mkamsboot mkamsboot-i386
89
90mkamsboot-ppc:
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000091 $(MAKE) RBARCH=ppc
Rafaël Carré30ea0b62009-10-09 08:49:41 +000092 mv mkamsboot mkamsboot-ppc
93
94mkamsboot-mac: mkamsboot-i386 mkamsboot-ppc
Dominik Riebeling69a5ff72009-12-13 21:30:28 +000095 $(SILENT)lipo -create mkamsboot-ppc mkamsboot-i386 -output mkamsboot-mac
Rafaël Carré30ea0b62009-10-09 08:49:41 +000096
97mkamsboot.dmg: mkamsboot-mac
98 mkdir -p mkamsboot-dmg
99 cp -p mkamsboot-mac mkamsboot-dmg
100 hdiutil create -srcfolder mkamsboot-dmg mkamsboot.dmg