summaryrefslogtreecommitdiffstats
path: root/source/Concept/Framework/default/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'source/Concept/Framework/default/Makefile')
-rw-r--r--source/Concept/Framework/default/Makefile103
1 files changed, 103 insertions, 0 deletions
diff --git a/source/Concept/Framework/default/Makefile b/source/Concept/Framework/default/Makefile
new file mode 100644
index 0000000..ca32983
--- /dev/null
+++ b/source/Concept/Framework/default/Makefile
@@ -0,0 +1,103 @@
+###############################################################################
+# Makefile for the project RoboCode
+###############################################################################
+
+## General Flags
+PROJECT = RoboCode
+MCU = atmega128
+TARGET = RoboCode.elf
+CC = avr-gcc.exe
+
+## Options common to compile, link and assembly rules
+COMMON = -mmcu=$(MCU)
+
+## Compile options common for all C compilation units.
+CFLAGS = $(COMMON)
+CFLAGS += -Wall -gdwarf-2 -O0
+CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
+
+## Assembly specific flags
+ASMFLAGS = $(COMMON)
+ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
+
+## Linker flags
+LDFLAGS = $(COMMON)
+LDFLAGS +=
+
+
+## Intel Hex file production flags
+HEX_FLASH_FLAGS = -R .eeprom
+
+HEX_EEPROM_FLAGS = -j .eeprom
+HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
+HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0
+
+
+## Objects that must be built in order to link
+OBJECTS = main.o sensor.o tools.o atmega128io.o distance_sensor.o engine.o io_module.o ir_sensor.o kicker.o led.o robot.o
+
+## Objects explicitly added by the user
+LINKONLYOBJECTS =
+
+## Build
+all: $(TARGET) RoboCode.hex RoboCode.eep size
+
+## Compile
+main.o: ../main.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+tools.o: ../tools.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+io_module.o: ../io_module.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+robot.o: ../robot.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+sensor.o: ../sensor.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+engine.o: ../engine.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+led.o: ../led.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+ir_sensor.o: ../ir_sensor.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+distance_sensor.o: ../distance_sensor.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+kicker.o: ../kicker.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+atmega128io.o: ../atmega128io.cpp
+ $(CC) $(INCLUDES) $(CFLAGS) -c $<
+
+##Link
+$(TARGET): $(OBJECTS)
+ $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
+
+%.hex: $(TARGET)
+ avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@
+
+%.eep: $(TARGET)
+ avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@
+
+%.lss: $(TARGET)
+ avr-objdump -h -S $< > $@
+
+size: ${TARGET}
+ @echo
+ @avr-size -C --mcu=${MCU} ${TARGET}
+
+## Clean target
+.PHONY: clean
+clean:
+ -rm -rf $(OBJECTS) RoboCode.elf dep/* RoboCode.hex RoboCode.eep
+
+## Other dependencies
+-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
+