Clean up the Makefile a little - no functional changes.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19106 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dave Chapman 2008-11-14 22:16:22 +00:00
parent 11b5d5a37e
commit dcb0e43148
2 changed files with 70 additions and 124 deletions

View file

@ -1,137 +1,83 @@
CC=gcc
# We use the UCL code available in the Rockbox tools/ directory # We use the UCL code available in the Rockbox tools/ directory
CFLAGS=-I../../tools/ucl/include CFLAGS=-I../../tools/ucl/include
LIBUCL=../../tools/ucl/src/libucl.a LIBUCL=../../tools/ucl/src/libucl.a
# Edit the following variables (plus copy/paste another set of rules) when # 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 # adding a new target. mkamsboot.c also needs to be edited to refer to these
# new images. # new images.
#
# If anyone reading this wants to improve this makefile, please do!
BOOTIMAGES = bootimg_clip.o bootimg_e200v2.o bootimg_m200v4.o bootimg_fuze.o BOOTIMAGES = dualboot_clip.o dualboot_e200v2.o dualboot_m200v4.o dualboot_fuze.o
BOOTHEADERS = bootimg_clip.h bootimg_e200v2.h bootimg_m200v4.h bootimg_fuze.h BOOTHEADERS = dualboot_clip.h dualboot_e200v2.h dualboot_m200v4.h dualboot_fuze.h
CLIPFILES = dualboot-clip.o dualboot-clip.elf dualboot-clip.o \ CLIPFILES = dualboot_clip.arm-o dualboot_clip.o dualboot_clip.c dualboot_clip.h
dualboot-clip.bin bootimg_clip.c bootimg_clip.h
E200V2FILES = dualboot-e200v2.o dualboot-e200v2.elf dualboot-e200v2.o \ E200V2FILES = dualboot_e200v2.arm-o dualboot_e200v2.o dualboot_e200v2.c \
dualboot-e200v2.bin bootimg_e200v2.c bootimg_e200v2.h dualboot_e200v2.h
M200V4FILES = dualboot-m200v4.o dualboot-m200v4.elf dualboot-m200v4.o \ M200V4FILES = dualboot_m200v4.arm-o dualboot_m200v4.o dualboot_m200v4.arm-bin \
dualboot-m200v4.bin bootimg_m200v4.c bootimg_m200v4.h dualboot_m200v4.c dualboot_m200v4.h
FUZEFILES = dualboot-fuze.o dualboot-fuze.elf dualboot-fuze.o \ FUZEFILES = dualboot_fuze.arm-o dualboot_fuze.o dualboot_fuze.c dualboot_fuze.h
dualboot-fuze.bin bootimg_fuze.c bootimg_fuze.h
all: mkamsboot 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
# 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
$(LIBUCL): $(LIBUCL):
make -C ../../tools/ucl/src libucl.a make -C ../../tools/ucl/src libucl.a
md5.o: md5.c md5.h md5.o: md5.c md5.h
gcc $(CFLAGS) -c -o md5.o -W -Wall md5.c $(CC) $(CFLAGS) -c -o md5.o -W -Wall md5.c
mkamsboot.o: mkamsboot.c $(BOOTHEADERS) uclimg.h md5.h mkamsboot.o: mkamsboot.c $(BOOTHEADERS) nrv2e_d8.h md5.h
gcc $(CFLAGS) -c -o mkamsboot.o -W -Wall mkamsboot.c $(CC) $(CFLAGS) -c -o mkamsboot.o -W -Wall mkamsboot.c
mkamsboot: mkamsboot.o $(BOOTIMAGES) uclimg.o md5.o $(LIBUCL) mkamsboot: mkamsboot.o $(BOOTIMAGES) nrv2e_d8.o md5.o $(LIBUCL)
gcc -o mkamsboot mkamsboot.o $(BOOTIMAGES) uclimg.o md5.o $(LIBUCL) $(CC) -o mkamsboot mkamsboot.o $(BOOTIMAGES) nrv2e_d8.o md5.o $(LIBUCL)
# Rules for our test ARM application - assemble, link, then extract # Rules for the ARM code embedded in mkamsboot - assemble, link, then extract
# the binary code # the binary code and finally convert to .c/.h for linking with mkamsboot
# CLIP %.arm-elf: %.arm-o
arm-elf-ld -e 0 -Ttext=0 -o $@ $<
dualboot-clip.o: dualboot.S %.arm-bin: %.arm-elf
arm-elf-gcc -DSANSA_CLIP -c -o dualboot-clip.o dualboot.S arm-elf-objcopy -O binary $< $@
dualboot-clip.elf: dualboot-clip.o %.c %.h: %.arm-bin bin2c
arm-elf-ld -e 0 -Ttext=0 -o dualboot-clip.elf dualboot-clip.o ./bin2c $< $*
dualboot-clip.bin: dualboot-clip.elf # Generic host rule.
arm-elf-objcopy -O binary dualboot-clip.elf dualboot-clip.bin %.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
bootimg_clip.c bootimg_clip.h: dualboot-clip.bin bin2c # Cancel the implicit .S -> .o rule
./bin2c dualboot-clip.bin bootimg_clip %.o: %.S
bootimg_clip.o: bootimg_clip.c
gcc -c -o bootimg_clip.o bootimg_clip.c
# FUZE
dualboot-fuze.o: dualboot.S
arm-elf-gcc -DSANSA_FUZE -c -o dualboot-fuze.o dualboot.S
dualboot-fuze.elf: dualboot-fuze.o
arm-elf-ld -e 0 -Ttext=0 -o dualboot-fuze.elf dualboot-fuze.o
dualboot-fuze.bin: dualboot-fuze.elf
arm-elf-objcopy -O binary dualboot-fuze.elf dualboot-fuze.bin
bootimg_fuze.c bootimg_fuze.h: dualboot-fuze.bin bin2c
./bin2c dualboot-fuze.bin bootimg_fuze
bootimg_fuze.o: bootimg_fuze.c
gcc -c -o bootimg_fuze.o bootimg_fuze.c
# E200V2
dualboot-e200v2.o: dualboot.S
arm-elf-gcc -DSANSA_E200V2 -c -o dualboot-e200v2.o dualboot.S
dualboot-e200v2.elf: dualboot-e200v2.o
arm-elf-ld -e 0 -Ttext=0 -o dualboot-e200v2.elf dualboot-e200v2.o
dualboot-e200v2.bin: dualboot-e200v2.elf
arm-elf-objcopy -O binary dualboot-e200v2.elf dualboot-e200v2.bin
bootimg_e200v2.c bootimg_e200v2.h: dualboot-e200v2.bin bin2c
./bin2c dualboot-e200v2.bin bootimg_e200v2
bootimg_e200v2.o: bootimg_e200v2.c
gcc -c -o bootimg_e200v2.o bootimg_e200v2.c
# M200V4
dualboot-m200v4.o: dualboot.S
arm-elf-gcc -DSANSA_M200V4 -c -o dualboot-m200v4.o dualboot.S
dualboot-m200v4.elf: dualboot-m200v4.o
arm-elf-ld -e 0 -Ttext=0 -o dualboot-m200v4.elf dualboot-m200v4.o
dualboot-m200v4.bin: dualboot-m200v4.elf
arm-elf-objcopy -O binary dualboot-m200v4.elf dualboot-m200v4.bin
bootimg_m200v4.c bootimg_m200v4.h: dualboot-m200v4.bin bin2c
./bin2c dualboot-m200v4.bin bootimg_m200v4
bootimg_m200v4.o: bootimg_m200v4.c
gcc -c -o bootimg_m200v4.o bootimg_m200v4.c
# Rules for the ucl unpack function
nrv2e_d8.o: nrv2e_d8.S
arm-elf-gcc -DPURE_THUMB -c -o nrv2e_d8.o nrv2e_d8.S
# NOTE: this function has no absolute references, so the link address (-e)
# is irrelevant. We just link at address 0, but it can run from anywhere.
nrv2e_d8.elf: nrv2e_d8.o
arm-elf-ld -e 0 -Ttext=0 -o nrv2e_d8.elf nrv2e_d8.o
nrv2e_d8.bin: nrv2e_d8.elf
arm-elf-objcopy -O binary nrv2e_d8.elf nrv2e_d8.bin
uclimg.c uclimg.h: nrv2e_d8.bin bin2c
./bin2c nrv2e_d8.bin uclimg
uclimg.o: uclimg.c
gcc -c -o uclimg.o uclimg.c
bin2c: bin2c.c bin2c: bin2c.c
gcc -o bin2c bin2c.c $(CC) -o bin2c bin2c.c
clean: clean:
rm -f mkamsboot mkamsboot.o nrv2e_d8.o nrv2e_d8.elf nrv2e_d8.bin *~ \ rm -f mkamsboot mkamsboot.o nrv2e_d8.arm-o nrv2e_d8.arm-elf \
bin2c uclimg.c uclimg.h uclimg.o md5.o \ nrv2e_d8.arm-bin *~ bin2c nrv2e_d8.c nrv2e_d8.h nrv2e_d8.o md5.o \
$(BOOTIMAGES) $(CLIPFILES) $(E200V2FILES) $(M200V4FILES) $(FUZEFILES) $(BOOTIMAGES) $(CLIPFILES) $(E200V2FILES) $(M200V4FILES) $(FUZEFILES)

View file

@ -86,13 +86,13 @@ execution to the uncompressed firmware.
#include <ucl/ucl.h> #include <ucl/ucl.h>
/* Headers for ARM code binaries */ /* Headers for ARM code binaries */
#include "uclimg.h" #include "nrv2e_d8.h"
#include "md5.h" #include "md5.h"
#include "bootimg_clip.h" #include "dualboot_clip.h"
#include "bootimg_e200v2.h" #include "dualboot_e200v2.h"
#include "bootimg_fuze.h" #include "dualboot_fuze.h"
#include "bootimg_m200v4.h" #include "dualboot_m200v4.h"
/* Win32 compatibility */ /* Win32 compatibility */
#ifndef O_BINARY #ifndef O_BINARY
@ -126,21 +126,21 @@ static const char* model_names[] =
static const unsigned char* bootloaders[] = static const unsigned char* bootloaders[] =
{ {
bootimg_fuze, dualboot_fuze,
bootimg_clip, dualboot_clip,
NULL, NULL,
bootimg_e200v2, dualboot_e200v2,
bootimg_m200v4, dualboot_m200v4,
NULL NULL
}; };
static const int bootloader_sizes[] = static const int bootloader_sizes[] =
{ {
sizeof(bootimg_fuze), sizeof(dualboot_fuze),
sizeof(bootimg_clip), sizeof(dualboot_clip),
0, 0,
sizeof(bootimg_e200v2), sizeof(dualboot_e200v2),
sizeof(bootimg_m200v4), sizeof(dualboot_m200v4),
0 0
}; };
@ -540,9 +540,9 @@ int main(int argc, char* argv[])
fprintf(stderr,"[INFO] Bootloader size: %d bytes\n",(int)bootloader_size); fprintf(stderr,"[INFO] Bootloader size: %d bytes\n",(int)bootloader_size);
fprintf(stderr,"[INFO] Packed bootloader size: %d bytes\n",rb_packedsize); fprintf(stderr,"[INFO] Packed bootloader size: %d bytes\n",rb_packedsize);
fprintf(stderr,"[INFO] Dual-boot function size: %d bytes\n",bootloader_sizes[model]); fprintf(stderr,"[INFO] Dual-boot function size: %d bytes\n",bootloader_sizes[model]);
fprintf(stderr,"[INFO] UCL unpack function size: %d bytes\n",sizeof(uclimg)); fprintf(stderr,"[INFO] UCL unpack function size: %d bytes\n",sizeof(nrv2e_d8));
totalsize = bootloader_sizes[model] + sizeof(uclimg) + of_packedsize + totalsize = bootloader_sizes[model] + sizeof(nrv2e_d8) + of_packedsize +
rb_packedsize; rb_packedsize;
fprintf(stderr,"[INFO] Total size of new image: %d bytes\n",totalsize); fprintf(stderr,"[INFO] Total size of new image: %d bytes\n",totalsize);
@ -566,8 +566,8 @@ int main(int argc, char* argv[])
p = buf + 0x400 + firmware_size; p = buf + 0x400 + firmware_size;
/* 1 - UCL unpack function */ /* 1 - UCL unpack function */
p -= sizeof(uclimg); p -= sizeof(nrv2e_d8);
memcpy(p, uclimg, sizeof(uclimg)); memcpy(p, nrv2e_d8, sizeof(nrv2e_d8));
/* 2 - Compressed copy of original firmware */ /* 2 - Compressed copy of original firmware */
p -= of_packedsize; p -= of_packedsize;
@ -583,14 +583,14 @@ int main(int argc, char* argv[])
/* UCL unpack function */ /* UCL unpack function */
put_uint32le(&buf[0x420], firmware_size - 1); put_uint32le(&buf[0x420], firmware_size - 1);
put_uint32le(&buf[0x424], sizeof(uclimg)); put_uint32le(&buf[0x424], sizeof(nrv2e_d8));
/* Compressed original firmware image */ /* Compressed original firmware image */
put_uint32le(&buf[0x428], firmware_size - sizeof(uclimg) - 1); put_uint32le(&buf[0x428], firmware_size - sizeof(nrv2e_d8) - 1);
put_uint32le(&buf[0x42c], of_packedsize); put_uint32le(&buf[0x42c], of_packedsize);
/* Compressed Rockbox image */ /* Compressed Rockbox image */
put_uint32le(&buf[0x430], firmware_size - sizeof(uclimg) - of_packedsize - 1); put_uint32le(&buf[0x430], firmware_size - sizeof(nrv2e_d8) - of_packedsize - 1);
put_uint32le(&buf[0x434], rb_packedsize); put_uint32le(&buf[0x434], rb_packedsize);