1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Rafaël Carré 2009-05-28 18:27:08 +00:00
parent bebc8587cf
commit 96165abec2
14 changed files with 1054 additions and 685 deletions

View file

@ -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)
$(OUTPUT): mkamsboot.o md5.o dualboot.o $(LIBUCL)
$(CC) $(CFLAGS) -o $(OUTPUT) mkamsboot.o md5.o dualboot.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
libmkamsboot.o: mkamsboot.c dualboot.h md5.h
$(CC) $(CFLAGS) -DLIB -c -o libmkamsboot.o -W -Wall mkamsboot.c
%.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 $@ $<
# Cancel the implicit .S -> .o rule
%.o: %.S
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