blob: 0a9ab3b4e7dfd13b9774e60caa8f31c386510f0f [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)
Dominik Riebeling0dcf93e2010-05-27 17:36:39 +000031OBJDIR = $(TARGET_DIR)build/$(RBARCH)/
32else
33OBJDIR = $(TARGET_DIR)build/
Dominik Wengerf4e2d832009-08-15 13:54:13 +000034endif
35
Dominik Wengerf4e2d832009-08-15 13:54:13 +000036
Rafaël Carré96165ab2009-05-28 18:27:08 +000037all: $(OUTPUT)
Dave Chapmandcb0e432008-11-14 22:16:22 +000038
Dominik Riebelingea617802009-11-04 20:58:40 +000039# additional link dependencies for the standalone executable
Tomer Shalev15ea6e62009-10-31 17:18:17 +000040LIBUCL=../../tools/ucl/src/libucl$(RBARCH).a
41
Dave Chapman1c4bcfa2008-10-11 11:35:59 +000042$(LIBUCL):
Marcoen Hirschberg268f7c42010-05-05 10:56:19 +000043 $(MAKE) -C ../../tools/ucl/src $(TARGET_DIR)libucl$(RBARCH).a
Dave Chapman1c4bcfa2008-10-11 11:35:59 +000044
Dominik Riebelingea617802009-11-04 20:58:40 +000045# inputs
46LIBSOURCES := dualboot.c md5.c mkamsboot.c
47SOURCES := $(LIBSOURCES) main.c
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000048OBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(SOURCES)))
49LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OBJDIR),$(LIBSOURCES)))
Dominik Riebelingea617802009-11-04 20:58:40 +000050EXTRADEPS := $(LIBUCL)
Rafaël Carré96165ab2009-05-28 18:27:08 +000051
Rafaël Carréff6b0422010-05-24 10:06:52 +000052# explicit dependencies on dualboot.{c,h} and mkamsboot.h
53$(OBJDIR)mkamsboot.o: dualboot.h dualboot.c mkamsboot.c mkamsboot.h
54$(OBJDIR)main.o: dualboot.h dualboot.c main.c mkamsboot.h
Rafaël Carré3b53fe02010-02-25 18:08:16 +000055
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000056$(OBJDIR)%.o: %.c
Dominik Riebeling0dcf93e2010-05-27 17:36:39 +000057 @echo CC $<
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000058 $(SILENT)mkdir -p $(dir $@)
Dominik Riebelingea617802009-11-04 20:58:40 +000059 $(SILENT)$(CC) $(CFLAGS) -c -o $@ $<
Dave Chapmanc91d7872008-10-30 00:13:29 +000060
Dominik Riebelingea617802009-11-04 20:58:40 +000061libmkamsboot$(RBARCH).a: $(LIBOBJS)
Dominik Riebeling24170232009-09-05 08:54:52 +000062 @echo AR $@
Dominik Riebelingea617802009-11-04 20:58:40 +000063 $(SILENT)$(AR) ruc $(TARGET_DIR)$@ $^
64
65# building the standalone executable
Rafaël Carré75919d52010-02-19 07:16:51 +000066$(OUTPUT): $(OBJS) $(EXTRADEPS)
Dominik Riebelingea617802009-11-04 20:58:40 +000067 @echo LD $@
Rafaël Carréa7210072009-11-08 21:00:55 +000068 $(SILENT)$(CC) $(CFLAGS) -o $(OUTPUT) $(OBJS) $(EXTRADEPS)
Dave Chapmanc6be8182008-10-04 08:46:03 +000069
Dominik Wengerf4e2d832009-08-15 13:54:13 +000070# some trickery to build ppc and i386 from a single call
71ifeq ($(RBARCH),)
Dominik Riebelingcca6f742009-11-28 22:39:00 +000072$(TARGET_DIR)libmkamsbooti386.a:
Dominik Wenger4d868612009-09-04 21:31:17 +000073 make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) libmkamsbooti386.a
Dominik Wengerf4e2d832009-08-15 13:54:13 +000074
Dominik Riebelingcca6f742009-11-28 22:39:00 +000075$(TARGET_DIR)libmkamsbootppc.a:
Dominik Wenger4d868612009-09-04 21:31:17 +000076 make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libmkamsbootppc.a
Dominik Wengerf4e2d832009-08-15 13:54:13 +000077endif
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000078
Dominik Riebelingcca6f742009-11-28 22:39:00 +000079libmkamsboot-universal: $(TARGET_DIR)libmkamsbooti386.a $(TARGET_DIR)libmkamsbootppc.a
Dominik Wenger4d868612009-09-04 21:31:17 +000080 @echo lipo $(TARGET_DIR)libmkamsboot.a
81 $(SILENT) rm -f $(TARGET_DIR)libmkamsboot.a
Dominik Riebeling69a5ff72009-12-13 21:30:28 +000082 $(SILENT)lipo -create $(TARGET_DIR)libmkamsbootppc.a $(TARGET_DIR)libmkamsbooti386.a -output $(TARGET_DIR)libmkamsboot.a
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000083
Dave Chapmanc6be8182008-10-04 08:46:03 +000084clean:
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000085 rm -f $(OBJS) $(OUTPUT) libmkamsboot.o $(TARGET_DIR)libmkamsboot*.a mkamsboot.dmg
86 rm -rf mkamsboot-* i386 ppc $(OBJDIR)
Rafaël Carré30ea0b62009-10-09 08:49:41 +000087
88mkamsboot-i386:
89 $(MAKE) RBARCH=i386
90 mv mkamsboot mkamsboot-i386
91
92mkamsboot-ppc:
Björn Stenbergb4f6c6f2010-02-19 08:09:41 +000093 $(MAKE) RBARCH=ppc
Rafaël Carré30ea0b62009-10-09 08:49:41 +000094 mv mkamsboot mkamsboot-ppc
95
96mkamsboot-mac: mkamsboot-i386 mkamsboot-ppc
Dominik Riebeling69a5ff72009-12-13 21:30:28 +000097 $(SILENT)lipo -create mkamsboot-ppc mkamsboot-i386 -output mkamsboot-mac
Rafaël Carré30ea0b62009-10-09 08:49:41 +000098
99mkamsboot.dmg: mkamsboot-mac
100 mkdir -p mkamsboot-dmg
101 cp -p mkamsboot-mac mkamsboot-dmg
102 hdiutil create -srcfolder mkamsboot-dmg mkamsboot.dmg