OSDN Git Service

Add ecrobot/. Add LEGAL as it seems ecrobot/syscalls.c is licensed under non MPL1.0.
[nxt-jsp/etrobo-atk.git] / nxtOSEK / ecrobot / bios / Makefile
diff --git a/nxtOSEK/ecrobot/bios/Makefile b/nxtOSEK/ecrobot/bios/Makefile
new file mode 100644 (file)
index 0000000..f77efd3
--- /dev/null
@@ -0,0 +1,185 @@
+# Makefile for NXT BIOS
+
+TARGET = nxt_bios
+
+TARGET_SOURCES := \
+       bios_display.c \
+       bios.c
+
+O_PATH ?= build
+
+#
+## ROOT path configurations
+#
+ROOT := $(dir $(lastword $(MAKEFILE_LIST)))../..
+
+ECROBOT_ROOT = $(ROOT)/ecrobot
+LEJOSNXJSRC_ROOT = $(ROOT)/lejos_nxj/src/
+CXX_ROOT=$(ROOT)/c++
+
+vpath %.c $(LEJOSNXJSRC_ROOT) $(ECROBOT_ROOT)/bios
+vpath %.S $(LEJOSNXJSRC_ROOT)
+vpath %.s $(LEJOSNXJSRC_ROOT) $(ECROBOT_ROOT)/bios
+
+#
+## LEJOS NXJ include path
+#
+LEJOS_PLATFORM_SOURCES_PATH = nxtvm/platform/nxt
+LEJOS_VM_SOURCES_PATH = nxtvm/javavm
+
+#
+## LEJOS NXJ platform source
+#
+ifndef LEJOS_PLATFORM_SOURCES 
+LEJOS_PLATFORM_SOURCES := $(addprefix $(LEJOS_PLATFORM_SOURCES_PATH)/, \
+       uart.c \
+       systick.c \
+       byte_fifo.c \
+       aic.c \
+       udp.c \
+       twi.c \
+       nxt_spi.c \
+       nxt_motors.c \
+       data_abort.c \
+       display.c \
+       i2c.c \
+       sound.c \
+       bt.c )
+endif
+
+ifndef LEJOS_HOOK_SOURCES
+LEJOS_HOOK_SOURCES := $(addprefix $(LEJOS_PLATFORM_SOURCES_PATH)/, \
+       nxt_avr.c \
+       sensors.c \
+       nxt_lcd.c )
+endif
+
+C_SOURCES := \
+       $(TARGET_SOURCES)
+
+C_RAMSOURCES := \
+       $(LEJOS_PLATFORM_SOURCES) \
+       $(LEJOS_HOOK_SOURCES) \
+       $(LEJOS_PLATFORM_SOURCES_PATH)/flashprog.c \
+       flash_loader.c
+
+S_SOURCES := \
+       $(LEJOS_PLATFORM_SOURCES_PATH)/vectors.s \
+       init.s
+
+S_RAMSOURCES := \
+       $(LEJOS_PLATFORM_SOURCES_PATH)/interrupts.s \
+       $(LEJOS_PLATFORM_SOURCES_PATH)/irq.s
+
+# using the new linker script
+LDSCRIPT_SOURCE := ./sam7_bios.lds
+
+C_OPTIMISATION_FLAGS = -Os
+include $(ECROBOT_ROOT)/tool_gcc.mak
+
+INC_PATH := \
+       $(LEJOSNXJSRC_ROOT)/$(LEJOS_PLATFORM_SOURCES_PATH) \
+       $(LEJOSNXJSRC_ROOT)/$(LEJOS_VM_SOURCES_PATH)
+
+PHONY: EnvironmentMessage
+EnvironmentMessage:
+       @echo " CC      $(CC)"
+       @echo " CPP     $(CPP)"
+       @echo " AS      $(AS)"
+       @echo " AR      $(AR)"
+       @echo " LD      $(LD)"
+       @echo " OBJCOPY $(OBJCOPY)"
+
+RAM_TARGET   := $(TARGET)_ram.elf
+ROM_TARGET   := $(TARGET)_rom.elf
+SAMBA_TARGET := $(TARGET)_samba_ram.bin
+ROMBIN_TARGET := $(TARGET)_rom.bin
+
+RAM_LDSCRIPT   := $(O_PATH)/$(TARGET)_ram.ld
+ROM_LDSCRIPT   := $(O_PATH)/$(TARGET)_rom.ld
+SAMBA_LDSCRIPT := $(O_PATH)/$(TARGET)_samba.ld
+
+S_OBJECTS := $(addprefix $(O_PATH)/,$(S_SOURCES:.s=.o) $(S_RAMSOURCES:.s=.oram))
+C_OBJECTS := $(addprefix $(O_PATH)/,$(C_SOURCES:.c=.o) $(C_RAMSOURCES:.c=.oram))
+
+dependencies = $(subst .o,.d,$(C_OBJECTS) $(S_OBJECTS) )
+
+def_target: all
+
+
+ALL_TARGETS := $(RAM_TARGET) $(ROM_TARGET) $(ROMBIN_TARGET) $(SAMBA_TARGET)
+
+
+.PHONY:  all
+#all:  BuildMessage $(ALL_TARGETS)
+all:  $(ALL_TARGETS)
+
+PHONY: TargetMessage
+TargetMessage:
+       @echo ""
+       @echo "Building: $(ALL_TARGETS)"
+       @echo ""
+       @echo "C sources: $(C_SOURCES) to $(C_OBJECTS)"
+       @echo ""
+       @echo "C++ sources: $(CC_SOURCES) to $(CC_OBJECTS)"
+       @echo ""
+       @echo "Assembler sources: $(S_SOURCES) to $(S_OBJECTS)"
+       @echo ""
+       @echo "LD source: $(LDSCRIPT_SOURCE)"
+       @echo ""
+
+.PHONY: BuildMessage
+BuildMessage: TargetMessage EnvironmentMessage
+
+$(SAMBA_LDSCRIPT): $(LDSCRIPT_SOURCE)
+       sed -e 's/^SAMBA_ONLY//' -e '/^RAM_ONLY/d' -e'/^ROM_ONLY/d' $< >$@
+
+$(RAM_LDSCRIPT): $(LDSCRIPT_SOURCE)
+       sed -e 's/^RAM_ONLY//' -e'/^ROM_ONLY/d' -e'/^SAMBA_ONLY/d' $< >$@
+
+$(ROM_LDSCRIPT): $(LDSCRIPT_SOURCE)
+       sed -e 's/^ROM_ONLY//' -e'/^RAM_ONLY/d' -e'/^SAMBA_ONLY/d' $< >$@
+
+$(SAMBA_TARGET)_elf: $(C_OBJECTS) $(S_OBJECTS) $(SAMBA_LDSCRIPT)
+       @echo "Linking $@"
+       $(LINK_ELF)
+
+$(RAM_TARGET): $(C_OBJECTS) $(S_OBJECTS) $(RAM_LDSCRIPT)
+       @echo "Linking $@"
+       $(LINK_ELF)
+
+$(ROM_TARGET): $(C_OBJECTS) $(S_OBJECTS) $(ROM_LDSCRIPT)
+       @echo "Linking $@"
+       $(LINK_ELF)
+
+$(ROMBIN_TARGET): $(ROM_TARGET)
+       @echo "Generating binary file $@"
+       $(OBJCOPY) -O binary $< $@
+
+$(SAMBA_TARGET): $(SAMBA_TARGET)_elf
+       @echo "Generating binary file $@"
+       $(OBJCOPY) -O binary $< $@
+
+.PHONY: release
+release:  
+       @rm -rf $(O_PATH)
+       @echo "Removing unnecessity targets"
+       @rm -f $(RAM_TARGET) $(ROM_TARGET) $(SAMBA_TARGET)
+       @echo "Removing map files"
+       @rm -f *map
+       @rm -f *.bin_elf
+
+.PHONY: clean
+clean:  
+       @echo "Removing All Objects"
+       @rm -rf $(O_PATH)
+       @echo "Removing target"
+       @rm -f $(ALL_TARGETS)
+       @echo "Removing map files"
+       @rm -f *map
+       @rm -f *.bin_elf
+
+ifneq "$(MAKECMDGOALS)" "clean"
+  -include $(dependencies)
+endif
+