blob: 287ea9b72f5aba407554af5b7291dd5b8f116093 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
# We use the UCL code available in the Rockbox tools/ directory
CFLAGS=-I../../tools/ucl/include
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.
#
# If anyone reading this wants to improve this makefile, please do!
BOOTIMAGES = bootimg_clip.o bootimg_e200v2.o bootimg_m200v4.o bootimg_fuze.o
BOOTHEADERS = bootimg_clip.h bootimg_e200v2.h bootimg_m200v4.h bootimg_fuze.h
CLIPFILES = dualboot-clip.o dualboot-clip.elf dualboot-clip.o \
dualboot-clip.bin bootimg_clip.c bootimg_clip.h
E200V2FILES = dualboot-e200v2.o dualboot-e200v2.elf dualboot-e200v2.o \
dualboot-e200v2.bin bootimg_e200v2.c bootimg_e200v2.h
M200V4FILES = dualboot-m200v4.o dualboot-m200v4.elf dualboot-m200v4.o \
dualboot-m200v4.bin bootimg_m200v4.c bootimg_m200v4.h
FUZEFILES = dualboot-fuze.o dualboot-fuze.elf dualboot-fuze.o \
dualboot-fuze.bin bootimg_fuze.c bootimg_fuze.h
all: mkamsboot
$(LIBUCL):
make -C ../../tools/ucl/src libucl.a
md5.o: md5.c md5.h
gcc $(CFLAGS) -c -o md5.o -W -Wall md5.c
mkamsboot.o: mkamsboot.c $(BOOTHEADERS) uclimg.h md5.h
gcc $(CFLAGS) -c -o mkamsboot.o -W -Wall mkamsboot.c
mkamsboot: mkamsboot.o $(BOOTIMAGES) uclimg.o md5.o $(LIBUCL)
gcc -o mkamsboot mkamsboot.o $(BOOTIMAGES) uclimg.o md5.o $(LIBUCL)
# Rules for our test ARM application - assemble, link, then extract
# the binary code
# CLIP
dualboot-clip.o: dualboot.S
arm-elf-gcc -DSANSA_CLIP -c -o dualboot-clip.o dualboot.S
dualboot-clip.elf: dualboot-clip.o
arm-elf-ld -e 0 -Ttext=0 -o dualboot-clip.elf dualboot-clip.o
dualboot-clip.bin: dualboot-clip.elf
arm-elf-objcopy -O binary dualboot-clip.elf dualboot-clip.bin
bootimg_clip.c bootimg_clip.h: dualboot-clip.bin bin2c
./bin2c dualboot-clip.bin bootimg_clip
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
gcc -o bin2c bin2c.c
clean:
rm -f mkamsboot mkamsboot.o nrv2e_d8.o nrv2e_d8.elf nrv2e_d8.bin *~ \
bin2c uclimg.c uclimg.h uclimg.o md5.o \
$(BOOTIMAGES) $(CLIPFILES) $(E200V2FILES) $(M200V4FILES) $(FUZEFILES)
|