1 # Makefile for NXT BIOS
12 ## ROOT path configurations
14 ROOT := $(dir $(lastword $(MAKEFILE_LIST)))../..
16 ECROBOT_ROOT = $(ROOT)/ecrobot
17 LEJOSNXJSRC_ROOT = $(ROOT)/lejos_nxj/src/
20 vpath %.c $(LEJOSNXJSRC_ROOT) $(ECROBOT_ROOT)/bios
21 vpath %.S $(LEJOSNXJSRC_ROOT)
22 vpath %.s $(LEJOSNXJSRC_ROOT) $(ECROBOT_ROOT)/bios
25 ## LEJOS NXJ include path
27 LEJOS_PLATFORM_SOURCES_PATH = nxtvm/platform/nxt
28 LEJOS_VM_SOURCES_PATH = nxtvm/javavm
31 ## LEJOS NXJ platform source
33 ifndef LEJOS_PLATFORM_SOURCES
34 LEJOS_PLATFORM_SOURCES := $(addprefix $(LEJOS_PLATFORM_SOURCES_PATH)/, \
50 ifndef LEJOS_HOOK_SOURCES
51 LEJOS_HOOK_SOURCES := $(addprefix $(LEJOS_PLATFORM_SOURCES_PATH)/, \
61 $(LEJOS_PLATFORM_SOURCES) \
62 $(LEJOS_HOOK_SOURCES) \
63 $(LEJOS_PLATFORM_SOURCES_PATH)/flashprog.c \
67 $(LEJOS_PLATFORM_SOURCES_PATH)/vectors.s \
71 $(LEJOS_PLATFORM_SOURCES_PATH)/interrupts.s \
72 $(LEJOS_PLATFORM_SOURCES_PATH)/irq.s
74 # using the new linker script
75 LDSCRIPT_SOURCE := ./sam7_bios.lds
77 C_OPTIMISATION_FLAGS = -Os
78 include $(ECROBOT_ROOT)/tool_gcc.mak
81 $(LEJOSNXJSRC_ROOT)/$(LEJOS_PLATFORM_SOURCES_PATH) \
82 $(LEJOSNXJSRC_ROOT)/$(LEJOS_VM_SOURCES_PATH)
84 PHONY: EnvironmentMessage
91 @echo " OBJCOPY $(OBJCOPY)"
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
98 RAM_LDSCRIPT := $(O_PATH)/$(TARGET)_ram.ld
99 ROM_LDSCRIPT := $(O_PATH)/$(TARGET)_rom.ld
100 SAMBA_LDSCRIPT := $(O_PATH)/$(TARGET)_samba.ld
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))
105 dependencies = $(subst .o,.d,$(C_OBJECTS) $(S_OBJECTS) )
110 ALL_TARGETS := $(RAM_TARGET) $(ROM_TARGET) $(ROMBIN_TARGET) $(SAMBA_TARGET)
114 #all: BuildMessage $(ALL_TARGETS)
120 @echo "Building: $(ALL_TARGETS)"
122 @echo "C sources: $(C_SOURCES) to $(C_OBJECTS)"
124 @echo "C++ sources: $(CC_SOURCES) to $(CC_OBJECTS)"
126 @echo "Assembler sources: $(S_SOURCES) to $(S_OBJECTS)"
128 @echo "LD source: $(LDSCRIPT_SOURCE)"
132 BuildMessage: TargetMessage EnvironmentMessage
134 $(SAMBA_LDSCRIPT): $(LDSCRIPT_SOURCE)
135 sed -e 's/^SAMBA_ONLY//' -e '/^RAM_ONLY/d' -e'/^ROM_ONLY/d' $< >$@
137 $(RAM_LDSCRIPT): $(LDSCRIPT_SOURCE)
138 sed -e 's/^RAM_ONLY//' -e'/^ROM_ONLY/d' -e'/^SAMBA_ONLY/d' $< >$@
140 $(ROM_LDSCRIPT): $(LDSCRIPT_SOURCE)
141 sed -e 's/^ROM_ONLY//' -e'/^RAM_ONLY/d' -e'/^SAMBA_ONLY/d' $< >$@
143 $(SAMBA_TARGET)_elf: $(C_OBJECTS) $(S_OBJECTS) $(SAMBA_LDSCRIPT)
147 $(RAM_TARGET): $(C_OBJECTS) $(S_OBJECTS) $(RAM_LDSCRIPT)
151 $(ROM_TARGET): $(C_OBJECTS) $(S_OBJECTS) $(ROM_LDSCRIPT)
155 $(ROMBIN_TARGET): $(ROM_TARGET)
156 @echo "Generating binary file $@"
157 $(OBJCOPY) -O binary $< $@
159 $(SAMBA_TARGET): $(SAMBA_TARGET)_elf
160 @echo "Generating binary file $@"
161 $(OBJCOPY) -O binary $< $@
166 @echo "Removing unnecessity targets"
167 @rm -f $(RAM_TARGET) $(ROM_TARGET) $(SAMBA_TARGET)
168 @echo "Removing map files"
174 @echo "Removing All Objects"
176 @echo "Removing target"
177 @rm -f $(ALL_TARGETS)
178 @echo "Removing map files"
182 ifneq "$(MAKECMDGOALS)" "clean"
183 -include $(dependencies)