Dave Chapman | c6be818 | 2008-10-04 08:46:03 +0000 | [diff] [blame] | 1 | |
Thomas Martitz | ff2f839 | 2009-07-05 10:35:47 +0000 | [diff] [blame] | 2 | #change for releases |
Dave Chapman | 747b9ca | 2009-10-11 09:47:15 +0000 | [diff] [blame] | 3 | ifndef APPVERSION |
Thomas Martitz | ff2f839 | 2009-07-05 10:35:47 +0000 | [diff] [blame] | 4 | APPVERSION=`../../tools/version.sh` |
Dave Chapman | 747b9ca | 2009-10-11 09:47:15 +0000 | [diff] [blame] | 5 | endif |
Thomas Martitz | ff2f839 | 2009-07-05 10:35:47 +0000 | [diff] [blame] | 6 | |
Dominik Riebeling | ea61780 | 2009-11-04 20:58:40 +0000 | [diff] [blame^] | 7 | # We use the UCL code available in the Rockbox tools/ directory |
| 8 | CFLAGS=-I../../tools/ucl/include -Wall -DVERSION=\"$(APPVERSION)\" |
| 9 | CC = gcc |
| 10 | |
Dominik Riebeling | ac77c08 | 2009-08-15 14:26:08 +0000 | [diff] [blame] | 11 | ifndef V |
| 12 | SILENT = @ |
| 13 | endif |
| 14 | |
Rafaël Carré | 96165ab | 2009-05-28 18:27:08 +0000 | [diff] [blame] | 15 | ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN) |
| 16 | OUTPUT=mkamsboot.exe |
| 17 | CFLAGS+=-mno-cygwin |
| 18 | else |
| 19 | ifeq ($(findstring MINGW,$(shell uname)),MINGW) |
| 20 | OUTPUT=mkamsboot.exe |
| 21 | else |
| 22 | ifeq ($(findstring mingw,$(CC)),mingw) |
| 23 | OUTPUT=mkamsboot.exe |
| 24 | else |
| 25 | OUTPUT=mkamsboot |
| 26 | endif |
| 27 | endif |
| 28 | endif |
Dave Chapman | c6be818 | 2008-10-04 08:46:03 +0000 | [diff] [blame] | 29 | |
Dominik Wenger | f4e2d83 | 2009-08-15 13:54:13 +0000 | [diff] [blame] | 30 | ifdef RBARCH |
| 31 | CFLAGS += -arch $(RBARCH) |
| 32 | endif |
| 33 | |
Dominik Wenger | 4d86861 | 2009-09-04 21:31:17 +0000 | [diff] [blame] | 34 | OUT = $(TARGET_DIR)build$(RBARCH) |
Dominik Wenger | f4e2d83 | 2009-08-15 13:54:13 +0000 | [diff] [blame] | 35 | |
Rafaël Carré | 96165ab | 2009-05-28 18:27:08 +0000 | [diff] [blame] | 36 | all: $(OUTPUT) |
Dave Chapman | dcb0e43 | 2008-11-14 22:16:22 +0000 | [diff] [blame] | 37 | |
Dominik Riebeling | ea61780 | 2009-11-04 20:58:40 +0000 | [diff] [blame^] | 38 | # additional link dependencies for the standalone executable |
Tomer Shalev | 15ea6e6 | 2009-10-31 17:18:17 +0000 | [diff] [blame] | 39 | LIBUCL=../../tools/ucl/src/libucl$(RBARCH).a |
| 40 | |
Dave Chapman | 1c4bcfa | 2008-10-11 11:35:59 +0000 | [diff] [blame] | 41 | $(LIBUCL): |
Rafaël Carré | 30ea0b6 | 2009-10-09 08:49:41 +0000 | [diff] [blame] | 42 | make -C ../../tools/ucl/src $(TARGET_DIR)libucl$(RBARCH).a |
Dave Chapman | 1c4bcfa | 2008-10-11 11:35:59 +0000 | [diff] [blame] | 43 | |
Dominik Riebeling | ea61780 | 2009-11-04 20:58:40 +0000 | [diff] [blame^] | 44 | # inputs |
| 45 | LIBSOURCES := dualboot.c md5.c mkamsboot.c |
| 46 | SOURCES := $(LIBSOURCES) main.c |
| 47 | OBJS := $(patsubst %.c,%.o,$(addprefix $(OUT)/,$(SOURCES))) |
| 48 | LIBOBJS := $(patsubst %.c,%.o,$(addprefix $(OUT)/,$(LIBSOURCES))) |
| 49 | EXTRADEPS := $(LIBUCL) |
Rafaël Carré | 96165ab | 2009-05-28 18:27:08 +0000 | [diff] [blame] | 50 | |
Dominik Riebeling | ea61780 | 2009-11-04 20:58:40 +0000 | [diff] [blame^] | 51 | $(OUT)/%.o: %.c $(OUT) |
| 52 | @echo CC $< $ |
| 53 | $(SILENT)$(CC) $(CFLAGS) -c -o $@ $< |
Dave Chapman | c91d787 | 2008-10-30 00:13:29 +0000 | [diff] [blame] | 54 | |
Dominik Riebeling | ea61780 | 2009-11-04 20:58:40 +0000 | [diff] [blame^] | 55 | # building the library archive |
Tomer Shalev | 15ea6e6 | 2009-10-31 17:18:17 +0000 | [diff] [blame] | 56 | $(OUT)/libmkamsboot.o: $(OUT)/mkamsboot.o |
Dominik Riebeling | 2417023 | 2009-09-05 08:54:52 +0000 | [diff] [blame] | 57 | @echo CC $< |
| 58 | $(SILENT)$(CC) $(CFLAGS) -DLIB -c -o $(OUT)/libmkamsboot.o -W -Wall mkamsboot.c |
Dave Chapman | c6be818 | 2008-10-04 08:46:03 +0000 | [diff] [blame] | 59 | |
Dominik Riebeling | ea61780 | 2009-11-04 20:58:40 +0000 | [diff] [blame^] | 60 | libmkamsboot$(RBARCH).a: $(LIBOBJS) |
Dominik Riebeling | 2417023 | 2009-09-05 08:54:52 +0000 | [diff] [blame] | 61 | @echo AR $@ |
Dominik Riebeling | ea61780 | 2009-11-04 20:58:40 +0000 | [diff] [blame^] | 62 | $(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 Chapman | c6be818 | 2008-10-04 08:46:03 +0000 | [diff] [blame] | 68 | |
Dominik Wenger | f4e2d83 | 2009-08-15 13:54:13 +0000 | [diff] [blame] | 69 | # some trickery to build ppc and i386 from a single call |
| 70 | ifeq ($(RBARCH),) |
| 71 | libmkamsbooti386.a: |
Dominik Wenger | 4d86861 | 2009-09-04 21:31:17 +0000 | [diff] [blame] | 72 | make RBARCH=i386 TARGET_DIR=$(TARGET_DIR) libmkamsbooti386.a |
Dominik Wenger | f4e2d83 | 2009-08-15 13:54:13 +0000 | [diff] [blame] | 73 | |
| 74 | libmkamsbootppc.a: |
Dominik Wenger | 4d86861 | 2009-09-04 21:31:17 +0000 | [diff] [blame] | 75 | make RBARCH=ppc TARGET_DIR=$(TARGET_DIR) libmkamsbootppc.a |
Dominik Wenger | f4e2d83 | 2009-08-15 13:54:13 +0000 | [diff] [blame] | 76 | endif |
| 77 | |
| 78 | libmkamsboot-universal: libmkamsbooti386.a libmkamsbootppc.a |
Dominik Wenger | 4d86861 | 2009-09-04 21:31:17 +0000 | [diff] [blame] | 79 | @echo lipo $(TARGET_DIR)libmkamsboot.a |
| 80 | $(SILENT) rm -f $(TARGET_DIR)libmkamsboot.a |
Dominik Riebeling | 2417023 | 2009-09-05 08:54:52 +0000 | [diff] [blame] | 81 | lipo -create $(TARGET_DIR)libmkamsbootppc.a $(TARGET_DIR)libmkamsbooti386.a -output $(TARGET_DIR)libmkamsboot.a |
Dominik Wenger | f4e2d83 | 2009-08-15 13:54:13 +0000 | [diff] [blame] | 82 | |
Dave Chapman | c6be818 | 2008-10-04 08:46:03 +0000 | [diff] [blame] | 83 | clean: |
Tomer Shalev | 15ea6e6 | 2009-10-31 17:18:17 +0000 | [diff] [blame] | 84 | rm -f $(OUTPUT) libmkamsboot.o $(TARGET_DIR)libmkamsboot*.a mkamsboot.dmg $(DEPENDANT_OBJS) |
Rafaël Carré | 30ea0b6 | 2009-10-09 08:49:41 +0000 | [diff] [blame] | 85 | rm -rf build* mkamsboot-* |
| 86 | |
| 87 | mkamsboot-i386: |
| 88 | $(MAKE) RBARCH=i386 |
| 89 | mv mkamsboot mkamsboot-i386 |
| 90 | |
| 91 | mkamsboot-ppc: |
| 92 | make RBARCH=ppc |
| 93 | mv mkamsboot mkamsboot-ppc |
| 94 | |
| 95 | mkamsboot-mac: mkamsboot-i386 mkamsboot-ppc |
| 96 | lipo -create mkamsboot-ppc mkamsboot-i386 -output mkamsboot-mac |
| 97 | |
| 98 | mkamsboot.dmg: mkamsboot-mac |
| 99 | mkdir -p mkamsboot-dmg |
| 100 | cp -p mkamsboot-mac mkamsboot-dmg |
| 101 | hdiutil create -srcfolder mkamsboot-dmg mkamsboot.dmg |
Dominik Wenger | f4e2d83 | 2009-08-15 13:54:13 +0000 | [diff] [blame] | 102 | |
Dominik Wenger | 4d86861 | 2009-09-04 21:31:17 +0000 | [diff] [blame] | 103 | $(OUT): |
| 104 | @echo MKDIR $(OUT) |
| 105 | $(SILENT)mkdir $(OUT) |
Dominik Riebeling | ac77c08 | 2009-08-15 14:26:08 +0000 | [diff] [blame] | 106 | |