blob: d80b141e0cdac093ad9b2be1b759182e8f74626c (
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
|
###############################################################
#####
##### Makefile for boop - OpenSource firmware for Betty
##### Created at 30.8.2007 02:26 am
#####
##### boop V0.1 by netguy - ck@mamalala.net
##### Makefile V0.1 by alterego - alteregon@gmx.net
##### Makefile v0.2 by Tobias - tobias-betty@23.gs
#####
###############################################################
###############################################################
#####
##### PATHS (default installation)
#####
##### You can put your path-config into Makefile.local
##### to override these defaults
#####
###############################################################
ARMBASE = /opt/armtool/4.1.1
INCLUDEPATH = $(ARMBASE)/include
LIBPATH = $(ARMBASE)/lib/gcc/arm-elf/4.1.1/interwork
ARMPATH = $(ARMBASE)/bin
TOOLPREFIX = arm-elf-
LPCTOOL = lpctool
###############################################################
#####
##### Compiler, Linker and Tools
#####
###############################################################
CC = $(ARMPATH)/$(TOOLPREFIX)gcc
AS = $(ARMPATH)/$(TOOLPREFIX)as
LD = $(ARMPATH)/$(TOOLPREFIX)ld
OC = $(ARMPATH)/$(TOOLPREFIX)objcopy
OD = $(ARMPATH)/$(TOOLPREFIX)objdump
CPUFLAGS = -mcpu=arm7tdmi-s
OPTFLAGS = -Os
CFLAGS = -Wall -mthumb-interwork -msoft-float
INC = -I$(INCLUDEPATH) -I. -Iinterrupt -Idisplay -Ikeyboard -Iaudio -Iinfrared -Iserial -Iflash -Icc1100 -Igui -Itimer -Igames -Iadc -Irtc -Itools
ASFLAGS = -D --gstabs -mthumb-interwork -mfpu=softfpa
LDFLAGS = -Tlpc2220_rom.ld -Map boop.map
LIBS = -lgcc
THUMBFLAGS = -mthumb
COMPILE = $(CC) $(CPUFLAGS) $(CFLAGS) $(INC)
ifeq ($(MAKECMDGOALS),debug)
COMPILE += -D DEBUGMODE
endif
-include Makefile.local
###############################################################
#####
##### Do the boop
#####
###############################################################
# Recursive expansion of Makefile rules.
define expand_dir
# Reset vars for subdir for the case that Make.conf does not exist
SUBDIRS :=
SRCS :=
THUMBSRCS :=
THUMBSRCSUNOPT :=
-include $(1)Make.conf
ALLSRCS += $$(SRCS:%=$(1)%)
ALLTHUMBSRCS += $$(THUMBSRCS:%=$(1)%)
ALLTHUMBSRCSUNOPT += $$(THUMBSRCSUNOPT:%=$(1)%)
DEPS += $(1).deps
$$(foreach adir,$$(SUBDIRS),$$(eval $$(call expand_dir,$(1)$$(adir)/)))
endef
ALLSRCS :=
ALLTHUMBSRCS :=
ALLTHUMBSRCSUNOPT :=
$(eval $(call expand_dir,))
OBJS := $(patsubst %.s,%.o,$(ALLSRCS:.c=.o)) $(ALLTHUMBSRCS:.c=.thumb.o) $(ALLTHUMBSRCSUNOPT:.c=.thumbunopt.o)
all: $(DEPS) boop_rom.bin boop_rom.hex
debug: $(DEPS) boop_rom.bin boop_rom.hex
test: boop_rom.elf
$(OD) -h $<
%.bin: %.elf
$(OC) -O binary $< $@
%.hex: %.elf
$(OC) -O ihex $< $@
boop_rom.elf: $(OBJS)
$(LD) $(LDFLAGS) -L$(LIBPATH) -o $@ $^ $(LIBS)
%.o: %.s
$(AS) $(CPUFLAGS) $(ASFLAGS) -o $@ $<
%.o: %.c
$(COMPILE) $(OPTFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $<
%.thumb.o: %.c
$(COMPILE) $(THUMBFLAGS) $(OPTFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $<
%.thumbunopt.o: %.c
$(COMPILE) $(THUMBFLAGS) -c -MMD -MF $(dir $<).deps/$(notdir $@) -o $@ $<
$(DEPS):
mkdir -p $@
uresident: resident
resident: boop_rom.bin
$(LPCTOOL) -i -v -e -a $<
clean:
-rm -Rf $(DEPS)
-rm -f $(OBJS) *.elf *.bin *.hex *~
-include $(DEPS:=/*)
|