From 96165abec2da60c466659fa0e68e06d97587d51a Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Thu, 28 May 2009 18:27:08 +0000 Subject: FS#10253 : mkamsboot v1.0 - Bump version to 1.0 - Add Clipv2 target - Make mkamsboot work as a library (work by domonoky : FS#10185, with a few modifications by me) . Use a macro with variadic arguments for error cases in functions which might error. . Add detailed descriptions to functions exported by the library (in the header file) - modify bin2c.c to produce only one pair of .c/.h files with several files embedded in it - move files needing to be built by an ARM cross compiler into dualboot/ - commit produced .c/.h files (containing nrv2e_d8.S and dualboot.S built for Clip, Fuze, e200v2, c200v2, m200v4, Clipv2) - Write a real README file - cosmetics: indent dualboot.S properly, remove trailing spaces, limit lines to 80 characters - comments: add/correct comments in dualboot.S and mkamsboot.c - move back extract_fw.c to utils/AMS/hacking git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21118 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/mkamsboot/Makefile | 106 ++++++++++++++-------------------------------- 1 file changed, 32 insertions(+), 74 deletions(-) (limited to 'rbutil/mkamsboot/Makefile') diff --git a/rbutil/mkamsboot/Makefile b/rbutil/mkamsboot/Makefile index 5a62650904..1a5ffd09f3 100644 --- a/rbutil/mkamsboot/Makefile +++ b/rbutil/mkamsboot/Makefile @@ -1,90 +1,48 @@ -CC=gcc - # We use the UCL code available in the Rockbox tools/ directory -CFLAGS=-I../../tools/ucl/include +CFLAGS=-I../../tools/ucl/include -Wall LIBUCL=../../tools/ucl/src/libucl.a -# Edit the following variables (plus copy/paste another set of rules) when -# adding a new target. mkamsboot.c also needs to be edited to refer to these -# new images. - -BOOTIMAGES = dualboot_clip.o dualboot_e200v2.o dualboot_c200v2.o dualboot_m200v4.o dualboot_fuze.o -BOOTHEADERS = dualboot_clip.h dualboot_e200v2.h dualboot_c200v2.h dualboot_m200v4.h dualboot_fuze.h - -CLIPFILES = dualboot_clip.arm-o dualboot_clip.o dualboot_clip.c dualboot_clip.h - -E200V2FILES = dualboot_e200v2.arm-o dualboot_e200v2.o dualboot_e200v2.c \ - dualboot_e200v2.h - -M200V4FILES = dualboot_m200v4.arm-o dualboot_m200v4.o dualboot_m200v4.arm-bin \ - dualboot_m200v4.c dualboot_m200v4.h - -C200V2FILES = dualboot_c200v2.arm-o dualboot_c200v2.o dualboot_c200v2.c \ - dualboot_c200v2.h - -FUZEFILES = dualboot_fuze.arm-o dualboot_fuze.o dualboot_fuze.c dualboot_fuze.h - -all: mkamsboot - -# Dualboot bootloaders - -dualboot_clip.arm-o: dualboot.S - arm-elf-gcc -DSANSA_CLIP -c -o dualboot_clip.arm-o dualboot.S - -dualboot_fuze.arm-o: dualboot.S - arm-elf-gcc -DSANSA_FUZE -c -o dualboot_fuze.arm-o dualboot.S - -dualboot_e200v2.arm-o: dualboot.S - arm-elf-gcc -DSANSA_E200V2 -c -o dualboot_e200v2.arm-o dualboot.S - -dualboot_m200v4.arm-o: dualboot.S - arm-elf-gcc -DSANSA_M200V4 -c -o dualboot_m200v4.arm-o dualboot.S - -dualboot_c200v2.arm-o: dualboot.S - arm-elf-gcc -DSANSA_C200V2 -c -o dualboot_c200v2.arm-o dualboot.S - -# Rules for the ucl unpack function -nrv2e_d8.arm-o: nrv2e_d8.S - arm-elf-gcc -DPURE_THUMB -c -o nrv2e_d8.arm-o nrv2e_d8.S - - +ifeq ($(findstring CYGWIN,$(shell uname)),CYGWIN) +OUTPUT=mkamsboot.exe +CFLAGS+=-mno-cygwin +else +ifeq ($(findstring MINGW,$(shell uname)),MINGW) +OUTPUT=mkamsboot.exe +else +ifeq ($(findstring mingw,$(CC)),mingw) +OUTPUT=mkamsboot.exe +else +OUTPUT=mkamsboot +endif +endif +endif + +CC?= gcc + +all: $(OUTPUT) $(LIBUCL): make -C ../../tools/ucl/src libucl.a +# This file can be generated in the dualboot/ directory +dualboot.o: dualboot.c + $(CC) $(CFLAGS) -c -o dualboot.o dualboot.c + md5.o: md5.c md5.h $(CC) $(CFLAGS) -c -o md5.o -W -Wall md5.c -mkamsboot.o: mkamsboot.c $(BOOTHEADERS) nrv2e_d8.h md5.h +mkamsboot.o: mkamsboot.c dualboot.h md5.h $(CC) $(CFLAGS) -c -o mkamsboot.o -W -Wall mkamsboot.c -mkamsboot: mkamsboot.o $(BOOTIMAGES) nrv2e_d8.o md5.o $(LIBUCL) - $(CC) -o mkamsboot mkamsboot.o $(BOOTIMAGES) nrv2e_d8.o md5.o $(LIBUCL) - -# Rules for the ARM code embedded in mkamsboot - assemble, link, then extract -# the binary code and finally convert to .c/.h for linking with mkamsboot - -%.arm-elf: %.arm-o - arm-elf-ld -e 0 -Ttext=0 -o $@ $< - -%.arm-bin: %.arm-elf - arm-elf-objcopy -O binary $< $@ - -%.c %.h: %.arm-bin bin2c - ./bin2c $< $* - -# Generic host rule. -%.o: %.c - $(CC) $(CFLAGS) -c -o $@ $< +$(OUTPUT): mkamsboot.o md5.o dualboot.o $(LIBUCL) + $(CC) $(CFLAGS) -o $(OUTPUT) mkamsboot.o md5.o dualboot.o $(LIBUCL) -# Cancel the implicit .S -> .o rule -%.o: %.S +libmkamsboot.o: mkamsboot.c dualboot.h md5.h + $(CC) $(CFLAGS) -DLIB -c -o libmkamsboot.o -W -Wall mkamsboot.c -bin2c: bin2c.c - $(CC) -o bin2c bin2c.c +libmkamsboot.a: libmkamsboot.o md5.o dualboot.o + $(AR) ruv libmkamsboot.a libmkamsboot.o md5.o dualboot.o clean: - rm -f mkamsboot mkamsboot.o nrv2e_d8.arm-o nrv2e_d8.arm-elf \ - nrv2e_d8.arm-bin *~ bin2c nrv2e_d8.c nrv2e_d8.h nrv2e_d8.o md5.o \ - $(BOOTIMAGES) $(CLIPFILES) $(E200V2FILES) $(M200V4FILES) $(FUZEFILES) \ - $(C200V2FILES) + rm -f $(OUTPUT) mkamsboot.o *~ md5.o dualboot.o \ + libmkamsboot.o libmkamsboot.a -- cgit v1.2.3