OSDN Git Service

f77efd3fe3b64d7b31765dbb0a69651f804e4426
[nxt-jsp/etrobo-atk.git] / nxtOSEK / ecrobot / bios / Makefile
1 # Makefile for NXT BIOS
2
3 TARGET = nxt_bios
4
5 TARGET_SOURCES := \
6         bios_display.c \
7         bios.c
8
9 O_PATH ?= build
10
11 #
12 ## ROOT path configurations
13 #
14 ROOT := $(dir $(lastword $(MAKEFILE_LIST)))../..
15
16 ECROBOT_ROOT = $(ROOT)/ecrobot
17 LEJOSNXJSRC_ROOT = $(ROOT)/lejos_nxj/src/
18 CXX_ROOT=$(ROOT)/c++
19
20 vpath %.c $(LEJOSNXJSRC_ROOT) $(ECROBOT_ROOT)/bios
21 vpath %.S $(LEJOSNXJSRC_ROOT)
22 vpath %.s $(LEJOSNXJSRC_ROOT) $(ECROBOT_ROOT)/bios
23
24 #
25 ## LEJOS NXJ include path
26 #
27 LEJOS_PLATFORM_SOURCES_PATH = nxtvm/platform/nxt
28 LEJOS_VM_SOURCES_PATH = nxtvm/javavm
29
30 #
31 ## LEJOS NXJ platform source
32 #
33 ifndef LEJOS_PLATFORM_SOURCES 
34 LEJOS_PLATFORM_SOURCES := $(addprefix $(LEJOS_PLATFORM_SOURCES_PATH)/, \
35         uart.c \
36         systick.c \
37         byte_fifo.c \
38         aic.c \
39         udp.c \
40         twi.c \
41         nxt_spi.c \
42         nxt_motors.c \
43         data_abort.c \
44         display.c \
45         i2c.c \
46         sound.c \
47         bt.c )
48 endif
49
50 ifndef LEJOS_HOOK_SOURCES
51 LEJOS_HOOK_SOURCES := $(addprefix $(LEJOS_PLATFORM_SOURCES_PATH)/, \
52         nxt_avr.c \
53         sensors.c \
54         nxt_lcd.c )
55 endif
56
57 C_SOURCES := \
58         $(TARGET_SOURCES)
59
60 C_RAMSOURCES := \
61         $(LEJOS_PLATFORM_SOURCES) \
62         $(LEJOS_HOOK_SOURCES) \
63         $(LEJOS_PLATFORM_SOURCES_PATH)/flashprog.c \
64         flash_loader.c
65
66 S_SOURCES := \
67         $(LEJOS_PLATFORM_SOURCES_PATH)/vectors.s \
68         init.s
69
70 S_RAMSOURCES := \
71         $(LEJOS_PLATFORM_SOURCES_PATH)/interrupts.s \
72         $(LEJOS_PLATFORM_SOURCES_PATH)/irq.s
73
74 # using the new linker script
75 LDSCRIPT_SOURCE := ./sam7_bios.lds
76
77 C_OPTIMISATION_FLAGS = -Os
78 include $(ECROBOT_ROOT)/tool_gcc.mak
79
80 INC_PATH := \
81         $(LEJOSNXJSRC_ROOT)/$(LEJOS_PLATFORM_SOURCES_PATH) \
82         $(LEJOSNXJSRC_ROOT)/$(LEJOS_VM_SOURCES_PATH)
83
84 PHONY: EnvironmentMessage
85 EnvironmentMessage:
86         @echo " CC      $(CC)"
87         @echo " CPP     $(CPP)"
88         @echo " AS      $(AS)"
89         @echo " AR      $(AR)"
90         @echo " LD      $(LD)"
91         @echo " OBJCOPY $(OBJCOPY)"
92
93 RAM_TARGET   := $(TARGET)_ram.elf
94 ROM_TARGET   := $(TARGET)_rom.elf
95 SAMBA_TARGET := $(TARGET)_samba_ram.bin
96 ROMBIN_TARGET := $(TARGET)_rom.bin
97
98 RAM_LDSCRIPT   := $(O_PATH)/$(TARGET)_ram.ld
99 ROM_LDSCRIPT   := $(O_PATH)/$(TARGET)_rom.ld
100 SAMBA_LDSCRIPT := $(O_PATH)/$(TARGET)_samba.ld
101
102 S_OBJECTS := $(addprefix $(O_PATH)/,$(S_SOURCES:.s=.o) $(S_RAMSOURCES:.s=.oram))
103 C_OBJECTS := $(addprefix $(O_PATH)/,$(C_SOURCES:.c=.o) $(C_RAMSOURCES:.c=.oram))
104
105 dependencies = $(subst .o,.d,$(C_OBJECTS) $(S_OBJECTS) )
106
107 def_target: all
108
109
110 ALL_TARGETS := $(RAM_TARGET) $(ROM_TARGET) $(ROMBIN_TARGET) $(SAMBA_TARGET)
111
112
113 .PHONY:  all
114 #all:  BuildMessage $(ALL_TARGETS)
115 all:  $(ALL_TARGETS)
116
117 PHONY: TargetMessage
118 TargetMessage:
119         @echo ""
120         @echo "Building: $(ALL_TARGETS)"
121         @echo ""
122         @echo "C sources: $(C_SOURCES) to $(C_OBJECTS)"
123         @echo ""
124         @echo "C++ sources: $(CC_SOURCES) to $(CC_OBJECTS)"
125         @echo ""
126         @echo "Assembler sources: $(S_SOURCES) to $(S_OBJECTS)"
127         @echo ""
128         @echo "LD source: $(LDSCRIPT_SOURCE)"
129         @echo ""
130
131 .PHONY: BuildMessage
132 BuildMessage: TargetMessage EnvironmentMessage
133
134 $(SAMBA_LDSCRIPT): $(LDSCRIPT_SOURCE)
135         sed -e 's/^SAMBA_ONLY//' -e '/^RAM_ONLY/d' -e'/^ROM_ONLY/d' $< >$@
136
137 $(RAM_LDSCRIPT): $(LDSCRIPT_SOURCE)
138         sed -e 's/^RAM_ONLY//' -e'/^ROM_ONLY/d' -e'/^SAMBA_ONLY/d' $< >$@
139
140 $(ROM_LDSCRIPT): $(LDSCRIPT_SOURCE)
141         sed -e 's/^ROM_ONLY//' -e'/^RAM_ONLY/d' -e'/^SAMBA_ONLY/d' $< >$@
142
143 $(SAMBA_TARGET)_elf: $(C_OBJECTS) $(S_OBJECTS) $(SAMBA_LDSCRIPT)
144         @echo "Linking $@"
145         $(LINK_ELF)
146
147 $(RAM_TARGET): $(C_OBJECTS) $(S_OBJECTS) $(RAM_LDSCRIPT)
148         @echo "Linking $@"
149         $(LINK_ELF)
150
151 $(ROM_TARGET): $(C_OBJECTS) $(S_OBJECTS) $(ROM_LDSCRIPT)
152         @echo "Linking $@"
153         $(LINK_ELF)
154
155 $(ROMBIN_TARGET): $(ROM_TARGET)
156         @echo "Generating binary file $@"
157         $(OBJCOPY) -O binary $< $@
158
159 $(SAMBA_TARGET): $(SAMBA_TARGET)_elf
160         @echo "Generating binary file $@"
161         $(OBJCOPY) -O binary $< $@
162
163 .PHONY: release
164 release:  
165         @rm -rf $(O_PATH)
166         @echo "Removing unnecessity targets"
167         @rm -f $(RAM_TARGET) $(ROM_TARGET) $(SAMBA_TARGET)
168         @echo "Removing map files"
169         @rm -f *map
170         @rm -f *.bin_elf
171
172 .PHONY: clean
173 clean:  
174         @echo "Removing All Objects"
175         @rm -rf $(O_PATH)
176         @echo "Removing target"
177         @rm -f $(ALL_TARGETS)
178         @echo "Removing map files"
179         @rm -f *map
180         @rm -f *.bin_elf
181
182 ifneq "$(MAKECMDGOALS)" "clean"
183   -include $(dependencies)
184 endif
185