--- /dev/null
+# 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
+