From 8d979a706aeb125be1dc2c7864b75d5711ff09de Mon Sep 17 00:00:00 2001 From: connor rigby Date: Thu, 31 May 2018 16:37:57 -0700 Subject: [PATCH] Add makefile to project. --- .gitignore | 5 +- Makefile | 71 ++++++++++++++++++++ lib/.holder | 0 lib/EEPROM.Makefile | 40 ++++++++++++ lib/SPI.Makefile | 42 ++++++++++++ lib/Servo.Makefile | 42 ++++++++++++ lib/core.Makefile | 100 +++++++++++++++++++++++++++++ lib/targets/farmduino_k14.Makefile | 25 ++++++++ lib/targets/farmduino_v10.Makefile | 25 ++++++++ lib/targets/ramps_v14.Makefile | 25 ++++++++ lib/template.Makefile | 45 +++++++++++++ src/Board.h | 24 ++++++- 12 files changed, 440 insertions(+), 4 deletions(-) create mode 100644 Makefile delete mode 100644 lib/.holder create mode 100644 lib/EEPROM.Makefile create mode 100644 lib/SPI.Makefile create mode 100644 lib/Servo.Makefile create mode 100644 lib/core.Makefile create mode 100644 lib/targets/farmduino_k14.Makefile create mode 100644 lib/targets/farmduino_v10.Makefile create mode 100644 lib/targets/ramps_v14.Makefile create mode 100644 lib/template.Makefile diff --git a/.gitignore b/.gitignore index 5352665..e0ed02d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.lo *.o *.obj +*.d # Compiled Dynamic libraries *.so @@ -31,4 +32,6 @@ /src/__vm # Setting files -Debug.h \ No newline at end of file +Debug.h +_build +bin diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..147847d --- /dev/null +++ b/Makefile @@ -0,0 +1,71 @@ +rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2)$(filter $(subst *,%,$2),$d)) + +BUILD_DIR ?= $(shell pwd)/_build +BIN_DIR ?= $(shell pwd)/bin +FBARDUINO_FIRMWARE_SRC_DIR ?= src +FBARDUINO_FIRMWARE_BUILD_DIR ?= $(BUILD_DIR)/sketch +FBARDUINO_FIRMWARE_LIB_BUILD_DIR ?= $(BUILD_DIR)/libraries + +ARDUINO_INSTALL_DIR ?= $(HOME)/arduino-1.8.5 + +# Files to be tracked for make to know to rebuild. +CXX_SRC := $(wildcard $(FBARDUINO_FIRMWARE_SRC_DIR)/*.cpp) +SRC := $(CXX_SRC) +SRC_DEPS := $(SRC) $(wildcard $(FBARDUINO_FIRMWARE_SRC_DIR)/*.h) + +# Object files and Dependency files That will eventually be built. +CXX_OBJ := $(CXX_SRC:.cpp=.o) + +## Commands needed to compile and whatnot. +CXX := $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/bin/avr-g++ +CC := $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/bin/avr-gcc +AR := $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/bin/avr-gcc-ar +OBJ_COPY := $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/bin/avr-objcopy +MKDIR_P := mkdir -p + +CXX_FLAGS := -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10600 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR +CFLAGS := -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections,--relax -mmcu=atmega2560 + +.DEFAULT_GOAL := all + +## Dependencies +include lib/core.Makefile +include lib/SPI.Makefile +include lib/Servo.Makefile +include lib/EEPROM.Makefile + +# Targets +include lib/targets/ramps_v14.Makefile +include lib/targets/farmduino_v10.Makefile +include lib/targets/farmduino_k14.Makefile + +.PHONY: all clean \ + dep_core dep_core_clean \ + dep_Servo dep_Servo_clean \ + dep_SPI dep_SPI_clean \ + dep_EEPROM dep_EEPROM_clean \ + target_ramps_v14 target_ramps_v14_clean \ + target_farmduino_v10 target_farmduino_v10_clean \ + target_farmduino_k14 target_farmduino_k14_clean + +DEPS := $(DEP_CORE) $(DEP_SPI) $(DEP_Servo) $(DEP_EEPROM) +DEPS_OBJ := $(DEP_SPI_OBJ) $(DEP_Servo_OBJ) $(DEP_EEPROM_OBJ) +DEPS_CFLAGS := $(DEP_CORE_CFLAGS) $(DEP_SPI_CFLAGS) $(DEP_Servo_CFLAGS) $(DEP_EEPROM_CFLAGS) + +all: $(BIN_DIR) $(DEPS) target_ramps_v14 target_farmduino_v10 target_farmduino_k14 + +clean: target_ramps_v14_clean target_farmduino_v10_clean target_farmduino_k14_clean + +strings_test: all + $(OBJ_COPY) -I ihex $(TARGET_ramps_v14_HEX) -O binary $(TARGET_ramps_v14_HEX).bin + $(OBJ_COPY) -I ihex $(TARGET_farmduino_v10_HEX) -O binary $(TARGET_farmduino_v10_HEX).bin + $(OBJ_COPY) -I ihex $(TARGET_farmduino_k14_HEX) -O binary $(TARGET_farmduino_k14_HEX).bin + @strings $(TARGET_ramps_v14_HEX).bin | grep -q "6.4.0.R" + @strings $(TARGET_farmduino_v10_HEX).bin | grep -q "6.4.0.F" + @strings $(TARGET_farmduino_k14_HEX).bin | grep -q "6.4.0.G" + +force_clean: + $(RM) -r $(BUILD_DIR) $(BIN_DIR) + +$(BIN_DIR): + $(MKDIR_P) $(BIN_DIR) diff --git a/lib/.holder b/lib/.holder deleted file mode 100644 index e69de29..0000000 diff --git a/lib/EEPROM.Makefile b/lib/EEPROM.Makefile new file mode 100644 index 0000000..c000fab --- /dev/null +++ b/lib/EEPROM.Makefile @@ -0,0 +1,40 @@ +DEP_EEPROM_BUILD_DIR := $(FBARDUINO_FIRMWARE_LIB_BUILD_DIR)/EEPROM +DEP_EEPROM := $(DEP_EEPROM_BUILD_DIR)/EEPROM.a +DEP_EEPROM_SRC_DIR := $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/EEPROM/src + +DEP_EEPROM_CFLAGS := \ + -I$(DEP_EEPROM_SRC_DIR) + +DEP_EEPROM_CFLAGS := -I$(DEP_EEPROM_SRC_DIR) +DEP_EEPROM_LDFLAGS := $(DEP_EEPROM_BUILD_DIR)/EEPROM.a -L$(DEP_EEPROM_BUILD_DIR) -lm + +DEP_EEPROM_ASM_SRC := $(call rwildcard, $(DEP_EEPROM_SRC_DIR), *.S) +DEP_EEPROM_ASM_OBJ := $(DEP_EEPROM_ASM_SRC:.S=.o) + +DEP_EEPROM_C_SRC := $(call rwildcard, $(DEP_EEPROM_SRC_DIR), *.c) +DEP_EEPROM_C_OBJ := $(DEP_EEPROM_C_SRC:.c=.o) + +DEP_EEPROM_CXX_SRC := $(call rwildcard, $(DEP_EEPROM_SRC_DIR), *.cpp) +DEP_EEPROM_CXX_OBJ := $(DEP_EEPROM_CXX_SRC:.cpp=.o) + +DEP_EEPROM_ALL_OBJ := $(DEP_EEPROM_ASM_OBJ) $(DEP_EEPROM_C_SRC) $(DEP_EEPROM_CXX_OBJ) + +DEP_EEPROM_SRC := $(DEP_SERVO_ASM_SRC) $(DEP_SERVO_C_SRC) $(CXX_SRC) +DEP_EEPROM_OBJ := $(patsubst $(DEP_EEPROM_SRC_DIR)/%,$(DEP_EEPROM_BUILD_DIR)/%,$(DEP_EEPROM_ALL_OBJ)) + +ARDUINO_DEP_EEPROM_CXX_FLAGS_P := $(DEP_CORE_CXX_FLAGS_P) $(DEP_EEPROM_CFLAGS) + +$(DEP_EEPROM): $(DEP_CORE) $(DEP_EEPROM_BUILD_DIR) $(DEP_EEPROM_OBJ) + $(AR) rcs $(DEP_EEPROM) $(DEP_EEPROM_OBJ) + +$(DEP_EEPROM_BUILD_DIR)/%.o: $(DEP_EEPROM_SRC_DIR)/%.cpp + $(CXX) $(ARDUINO_DEP_EEPROM_CXX_FLAGS_P) $< -o $@ + +$(DEP_EEPROM_BUILD_DIR): + $(MKDIR_P) $(DEP_EEPROM_BUILD_DIR) + +dep_EEPROM: $(DEP_EEPROM) + +dep_EEPROM_clean: + $(RM) $(DEP_EEPROM_OBJ) + $(RM) $(DEP_EEPROM) diff --git a/lib/SPI.Makefile b/lib/SPI.Makefile new file mode 100644 index 0000000..173fbd3 --- /dev/null +++ b/lib/SPI.Makefile @@ -0,0 +1,42 @@ +DEP_SPI_BUILD_DIR := $(FBARDUINO_FIRMWARE_LIB_BUILD_DIR)/SPI +DEP_SPI := $(DEP_SPI_BUILD_DIR)/SPI.a +DEP_SPI_SRC_DIR := $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI/src + +DEP_SPI_CFLAGS := \ + -I$(DEP_SPI_SRC_DIR) + +DEP_SPI_CFLAGS := -I$(DEP_SPI_SRC_DIR) +DEP_SPI_LDFLAGS := $(DEP_SPI_BUILD_DIR)/SPI.a -L$(DEP_SPI_BUILD_DIR) -lm + +DEP_SPI_ASM_SRC := $(call rwildcard, $(DEP_SPI_SRC_DIR), *.S) +DEP_SPI_ASM_OBJ := $(DEP_SPI_ASM_SRC:.S=.o) + +DEP_SPI_C_SRC := $(call rwildcard, $(DEP_SPI_SRC_DIR), *.c) +DEP_SPI_C_OBJ := $(DEP_SPI_C_SRC:.c=.o) + +DEP_SPI_CXX_SRC := $(call rwildcard, $(DEP_SPI_SRC_DIR), *.cpp) +DEP_SPI_CXX_OBJ := $(DEP_SPI_CXX_SRC:.cpp=.o) + +DEP_SPI_ALL_OBJ := $(DEP_SPI_ASM_OBJ) $(DEP_SPI_C_SRC) $(DEP_SPI_CXX_OBJ) + +DEP_SPI_SRC := $(DEP_SERVO_ASM_SRC) $(DEP_SERVO_C_SRC) $(CXX_SRC) +DEP_SPI_OBJ := $(patsubst $(DEP_SPI_SRC_DIR)/%,$(DEP_SPI_BUILD_DIR)/%,$(DEP_SPI_ALL_OBJ)) + +DEP_SPI_DIRS := $(sort $(dir $(DEP_SPI_OBJ))) + +ARDUINO_DEP_SPI_CXX_FLAGS_P := $(DEP_CORE_CXX_FLAGS_P) $(DEP_SPI_CFLAGS) + +$(DEP_SPI): $(DEP_CORE) $(DEP_SPI_BUILD_DIR) $(DEP_SPI_OBJ) + $(AR) rcs $(DEP_SPI) $(DEP_SPI_OBJ) + +$(DEP_SPI_BUILD_DIR)/%.o: $(DEP_SPI_SRC_DIR)/%.cpp + $(CXX) $(ARDUINO_DEP_SPI_CXX_FLAGS_P) $< -o $@ + +$(DEP_SPI_BUILD_DIR): + $(MKDIR_P) $(DEP_SPI_DIRS) + +dep_SPI: $(DEP_SPI) + +dep_SPI_clean: + $(RM) $(DEP_SPI_OBJ) + $(RM) $(DEP_SPI) diff --git a/lib/Servo.Makefile b/lib/Servo.Makefile new file mode 100644 index 0000000..f27d2bd --- /dev/null +++ b/lib/Servo.Makefile @@ -0,0 +1,42 @@ +DEP_Servo_BUILD_DIR := $(FBARDUINO_FIRMWARE_LIB_BUILD_DIR)/Servo +DEP_Servo := $(DEP_Servo_BUILD_DIR)/Servo.a +DEP_Servo_SRC_DIR := $(ARDUINO_INSTALL_DIR)/libraries/Servo/src + +DEP_Servo_CFLAGS := \ + -I$(DEP_Servo_SRC_DIR) + +DEP_Servo_CFLAGS := -I$(DEP_Servo_SRC_DIR) +DEP_Servo_LDFLAGS := $(DEP_Servo_BUILD_DIR)/Servo.a -L$(DEP_Servo_BUILD_DIR) -lm + +DEP_Servo_ASM_SRC := $(call rwildcard, $(DEP_Servo_SRC_DIR), *.S) +DEP_Servo_ASM_OBJ := $(DEP_Servo_ASM_SRC:.S=.o) + +DEP_Servo_C_SRC := $(call rwildcard, $(DEP_Servo_SRC_DIR), *.c) +DEP_Servo_C_OBJ := $(DEP_Servo_C_SRC:.c=.o) + +DEP_Servo_CXX_SRC := $(call rwildcard, $(DEP_Servo_SRC_DIR), *.cpp) +DEP_Servo_CXX_OBJ := $(DEP_Servo_CXX_SRC:.cpp=.o) + +DEP_Servo_ALL_OBJ := $(DEP_Servo_ASM_OBJ) $(DEP_Servo_C_SRC) $(DEP_Servo_CXX_OBJ) + +DEP_Servo_SRC := $(DEP_SERVO_ASM_SRC) $(DEP_SERVO_C_SRC) $(CXX_SRC) +DEP_Servo_OBJ := $(patsubst $(DEP_Servo_SRC_DIR)/%,$(DEP_Servo_BUILD_DIR)/%,$(DEP_Servo_ALL_OBJ)) + +DEP_Servo_DIRS := $(sort $(dir $(DEP_Servo_OBJ))) + +ARDUINO_DEP_Servo_CXX_FLAGS_P := $(DEP_CORE_CXX_FLAGS_P) $(DEP_Servo_CFLAGS) + +$(DEP_Servo): $(DEP_CORE) $(DEP_Servo_BUILD_DIR) $(DEP_Servo_OBJ) + $(AR) rcs $(DEP_Servo) $(DEP_Servo_OBJ) + +$(DEP_Servo_BUILD_DIR)/%.o: $(DEP_Servo_SRC_DIR)/%.cpp + $(CXX) $(ARDUINO_DEP_Servo_CXX_FLAGS_P) $< -o $@ + +$(DEP_Servo_BUILD_DIR): + $(MKDIR_P) $(DEP_Servo_DIRS) + +dep_Servo: $(DEP_Servo) + +dep_Servo_clean: + $(RM) $(DEP_Servo_OBJ) + $(RM) $(DEP_Servo) diff --git a/lib/core.Makefile b/lib/core.Makefile new file mode 100644 index 0000000..42d9829 --- /dev/null +++ b/lib/core.Makefile @@ -0,0 +1,100 @@ +DEP_CORE_BUILD_DIR := $(BUILD_DIR)/core +DEP_CORE := $(DEP_CORE_BUILD_DIR)/core.a + +DEP_CORE_CFLAGS := \ + -I$(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino \ + -I$(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/variants/mega \ + +DEP_CORE_LDFLAGS := \ + $(DEP_CORE_BUILD_DIR)/core.a -L$(DEP_CORE_BUILD_DIR) -lm + +DEP_CORE_ASM_SRC := $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/wiring_pulse.S + +DEP_CORE_C_SRC := \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/WInterrupts.c \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/hooks.c \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/wiring.c \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/wiring_analog.c \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/wiring_digital.c \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/wiring_pulse.c \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/wiring_shift.c + +DEP_CORE_CXX_SRC := \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/CDC.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/HardwareSerial1.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/HardwareSerial2.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/HardwareSerial3.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/IPAddress.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/PluggableUSB.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/Print.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/Stream.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/Tone.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/USBCore.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/WMath.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/WString.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/abi.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/main.cpp \ + $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/new.cpp + +DEP_CORE_OBJ := \ + $(DEP_CORE_BUILD_DIR)/wiring_pulse.S.o \ + $(DEP_CORE_BUILD_DIR)/WInterrupts.c.o \ + $(DEP_CORE_BUILD_DIR)/hooks.c.o \ + $(DEP_CORE_BUILD_DIR)/wiring.c.o \ + $(DEP_CORE_BUILD_DIR)/wiring_analog.c.o \ + $(DEP_CORE_BUILD_DIR)/wiring_digital.c.o \ + $(DEP_CORE_BUILD_DIR)/wiring_pulse.c.o \ + $(DEP_CORE_BUILD_DIR)/wiring_shift.c.o \ + $(DEP_CORE_BUILD_DIR)/CDC.cpp.o \ + $(DEP_CORE_BUILD_DIR)/HardwareSerial.cpp.o \ + $(DEP_CORE_BUILD_DIR)/HardwareSerial0.cpp.o \ + $(DEP_CORE_BUILD_DIR)/HardwareSerial1.cpp.o \ + $(DEP_CORE_BUILD_DIR)/HardwareSerial2.cpp.o \ + $(DEP_CORE_BUILD_DIR)/HardwareSerial3.cpp.o \ + $(DEP_CORE_BUILD_DIR)/IPAddress.cpp.o \ + $(DEP_CORE_BUILD_DIR)/PluggableUSB.cpp.o \ + $(DEP_CORE_BUILD_DIR)/Print.cpp.o \ + $(DEP_CORE_BUILD_DIR)/Stream.cpp.o \ + $(DEP_CORE_BUILD_DIR)/Tone.cpp.o \ + $(DEP_CORE_BUILD_DIR)/USBCore.cpp.o \ + $(DEP_CORE_BUILD_DIR)/WMath.cpp.o \ + $(DEP_CORE_BUILD_DIR)/WString.cpp.o \ + $(DEP_CORE_BUILD_DIR)/abi.cpp.o \ + $(DEP_CORE_BUILD_DIR)/main.cpp.o \ + $(DEP_CORE_BUILD_DIR)/new.cpp.o + +DEP_CORE_D := $(DEP_CORE_OBJ:.cpp=.d) + +DEP_CORE_CFLAGS_P := -c -g -Os -w -std=gnu11 -ffunction-sections \ +-fdata-sections -MMD -flto -fno-fat-lto-objects -mmcu=atmega2560 \ +-DF_CPU=16000000L -DARDUINO=10600 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR \ +$(DEP_CORE_CFLAGS) + +DEP_CORE_CXX_FLAGS_P := -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections \ +-fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega2560 \ +-DF_CPU=16000000L -DARDUINO=10600 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AVR \ +$(DEP_CORE_CFLAGS) + +$(DEP_CORE): $(DEP_CORE_BUILD_DIR) $(DEP_CORE_OBJ) + $(AR) rcs $(DEP_CORE) $(DEP_CORE_OBJ) + +$(DEP_CORE_BUILD_DIR)/%.S.o: $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/%.S + $(CC) -c -g -x assembler-with-cpp -flto -MMD -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10600 -DARDUINO_AVR_MEGA2560 -DARDUINO_ARCH_AV \ + -I$(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino -I$(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/variants/mega \ + $< -o $@ + +$(DEP_CORE_BUILD_DIR)/%.c.o: $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/%.c + $(CC) $(DEP_CORE_CFLAGS_P) $< -o $@ + +$(DEP_CORE_BUILD_DIR)/%.cpp.o: $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino/%.cpp + $(CXX) $(DEP_CORE_CXX_FLAGS_P) $< -o $@ + +$(DEP_CORE_BUILD_DIR): + $(MKDIR_P) $(DEP_CORE_BUILD_DIR) + +dep_core_clean: + $(RM) $(DEP_CORE_OBJ) + $(RM) $(DEP_CORE_D) + $(RM) $(DEP_CORE) diff --git a/lib/targets/farmduino_k14.Makefile b/lib/targets/farmduino_k14.Makefile new file mode 100644 index 0000000..eab53b3 --- /dev/null +++ b/lib/targets/farmduino_k14.Makefile @@ -0,0 +1,25 @@ +TARGET_farmduino_k14_BUILD_DIR := $(BUILD_DIR)/farmduino_k14 +TARGET_farmduino_k14_HEX := $(BIN_DIR)/farmduino_k14.hex + +TARGET_farmduino_k14_OBJ := $(patsubst $(FBARDUINO_FIRMWARE_SRC_DIR)/%,$(TARGET_farmduino_k14_BUILD_DIR)/%,$(CXX_OBJ)) + +$(TARGET_farmduino_k14_HEX): $(TARGET_farmduino_k14_BUILD_DIR) $(TARGET_farmduino_k14_BUILD_DIR)/farmduino_k14.eep $(TARGET_farmduino_k14_BUILD_DIR)/farmduino_k14.elf + $(OBJ_COPY) -O ihex -R .eeprom $(TARGET_farmduino_k14_BUILD_DIR)/farmduino_k14.elf $@ + +$(TARGET_farmduino_k14_BUILD_DIR)/farmduino_k14.eep: $(TARGET_farmduino_k14_BUILD_DIR)/farmduino_k14.elf + $(OBJ_COPY) -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 $< $@ + +$(TARGET_farmduino_k14_BUILD_DIR)/farmduino_k14.elf: $(TARGET_farmduino_k14_OBJ) + $(CC) -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections,--relax -mmcu=atmega2560 -o $@ $(TARGET_farmduino_k14_OBJ) $(DEPS_OBJ) $(DEP_CORE_LDFLAGS) + +$(TARGET_farmduino_k14_BUILD_DIR)/%.o: $(FBARDUINO_FIRMWARE_SRC_DIR)/%.cpp + $(CXX) $(CXX_FLAGS) -DFARMBOT_BOARD_ID=2 $(DEPS_CFLAGS) $< -o $@ + +$(TARGET_farmduino_k14_BUILD_DIR): + $(MKDIR_P) $(TARGET_farmduino_k14_BUILD_DIR) + +target_farmduino_k14: $(TARGET_farmduino_k14_HEX) + +target_farmduino_k14_clean: + $(RM) -r $(TARGET_farmduino_k14_BUILD_DIR) + $(RM) $(TARGET_farmduino_k14_HEX) diff --git a/lib/targets/farmduino_v10.Makefile b/lib/targets/farmduino_v10.Makefile new file mode 100644 index 0000000..39c186f --- /dev/null +++ b/lib/targets/farmduino_v10.Makefile @@ -0,0 +1,25 @@ +TARGET_farmduino_v10_BUILD_DIR := $(BUILD_DIR)/farmduino_v10 +TARGET_farmduino_v10_HEX := $(BIN_DIR)/farmduino.hex + +TARGET_farmduino_v10_OBJ := $(patsubst $(FBARDUINO_FIRMWARE_SRC_DIR)/%,$(TARGET_farmduino_v10_BUILD_DIR)/%,$(CXX_OBJ)) + +$(TARGET_farmduino_v10_HEX): $(TARGET_farmduino_v10_BUILD_DIR) $(TARGET_farmduino_v10_BUILD_DIR)/farmduino_v10.eep $(TARGET_farmduino_v10_BUILD_DIR)/farmduino_v10.elf + $(OBJ_COPY) -O ihex -R .eeprom $(TARGET_farmduino_v10_BUILD_DIR)/farmduino_v10.elf $@ + +$(TARGET_farmduino_v10_BUILD_DIR)/farmduino_v10.eep: $(TARGET_farmduino_v10_BUILD_DIR)/farmduino_v10.elf + $(OBJ_COPY) -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 $< $@ + +$(TARGET_farmduino_v10_BUILD_DIR)/farmduino_v10.elf: $(TARGET_farmduino_v10_OBJ) + $(CC) -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections,--relax -mmcu=atmega2560 -o $@ $(TARGET_farmduino_v10_OBJ) $(DEPS_OBJ) $(DEP_CORE_LDFLAGS) + +$(TARGET_farmduino_v10_BUILD_DIR)/%.o: $(FBARDUINO_FIRMWARE_SRC_DIR)/%.cpp + $(CXX) $(CXX_FLAGS) -DFARMBOT_BOARD_ID=1 $(DEPS_CFLAGS) $< -o $@ + +$(TARGET_farmduino_v10_BUILD_DIR): + $(MKDIR_P) $(TARGET_farmduino_v10_BUILD_DIR) + +target_farmduino_v10: $(TARGET_farmduino_v10_HEX) + +target_farmduino_v10_clean: + $(RM) -r $(TARGET_farmduino_v10_OBJ) + $(RM) $(TARGET_farmduino_v10_HEX) diff --git a/lib/targets/ramps_v14.Makefile b/lib/targets/ramps_v14.Makefile new file mode 100644 index 0000000..1c5b43d --- /dev/null +++ b/lib/targets/ramps_v14.Makefile @@ -0,0 +1,25 @@ +TARGET_ramps_v14_BUILD_DIR := $(BUILD_DIR)/ramps_v14 +TARGET_ramps_v14_HEX := $(BIN_DIR)/arduino_firmware.hex + +TARGET_ramps_v14_OBJ := $(patsubst $(FBARDUINO_FIRMWARE_SRC_DIR)/%,$(TARGET_ramps_v14_BUILD_DIR)/%,$(CXX_OBJ)) + +$(TARGET_ramps_v14_HEX): $(TARGET_ramps_v14_BUILD_DIR) $(TARGET_ramps_v14_BUILD_DIR)/arduino_firmware.eep $(TARGET_ramps_v14_BUILD_DIR)/arduino_firmware.elf + $(OBJ_COPY) -O ihex -R .eeprom $(TARGET_ramps_v14_BUILD_DIR)/arduino_firmware.elf $@ + +$(TARGET_ramps_v14_BUILD_DIR)/arduino_firmware.eep: $(TARGET_ramps_v14_BUILD_DIR)/arduino_firmware.elf + $(OBJ_COPY) -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 $< $@ + +$(TARGET_ramps_v14_BUILD_DIR)/arduino_firmware.elf: $(TARGET_ramps_v14_OBJ) + $(CC) -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections,--relax -mmcu=atmega2560 -o $@ $(TARGET_ramps_v14_OBJ) $(DEPS_OBJ) $(DEP_CORE_LDFLAGS) + +$(TARGET_ramps_v14_BUILD_DIR)/%.o: $(FBARDUINO_FIRMWARE_SRC_DIR)/%.cpp + $(CXX) $(CXX_FLAGS) -DFARMBOT_BOARD_ID=0 $(DEPS_CFLAGS) $< -o $@ + +$(TARGET_ramps_v14_BUILD_DIR): + $(MKDIR_P) $(TARGET_ramps_v14_BUILD_DIR) + +target_ramps_v14: $(TARGET_ramps_v14_HEX) + +target_ramps_v14_clean: + $(RM) -r $(TARGET_ramps_v14_OBJ) + $(RM) $(TARGET_ramps_v14_HEX) diff --git a/lib/template.Makefile b/lib/template.Makefile new file mode 100644 index 0000000..8ec6755 --- /dev/null +++ b/lib/template.Makefile @@ -0,0 +1,45 @@ +# Someone will thank me later for this. +# Find and replace DEP_NAME with the name of your dependency. + +DEP_DEP_NAME_BUILD_DIR := $(FBARDUINO_FIRMWARE_LIB_BUILD_DIR)/DEP_NAME +DEP_DEP_NAME := $(DEP_DEP_NAME_BUILD_DIR)/DEP_NAME.a +DEP_DEP_NAME_SRC_DIR := $(ARDUINO_INSTALL_DIR)/libraries/DEP_NAME/src + +DEP_DEP_NAME_CFLAGS := \ + -I$(DEP_DEP_NAME_SRC_DIR) + +DEP_DEP_NAME_CFLAGS := -I$(DEP_DEP_NAME_SRC_DIR) +DEP_DEP_NAME_LDFLAGS := $(DEP_DEP_NAME_BUILD_DIR)/DEP_NAME.a -L$(DEP_DEP_NAME_BUILD_DIR) -lm + +DEP_DEP_NAME_ASM_SRC := $(call rwildcard, $(DEP_DEP_NAME_SRC_DIR), *.S) +DEP_DEP_NAME_ASM_OBJ := $(DEP_DEP_NAME_ASM_SRC:.S=.o) + +DEP_DEP_NAME_C_SRC := $(call rwildcard, $(DEP_DEP_NAME_SRC_DIR), *.c) +DEP_DEP_NAME_C_OBJ := $(DEP_DEP_NAME_C_SRC:.c=.o) + +DEP_DEP_NAME_CXX_SRC := $(call rwildcard, $(DEP_DEP_NAME_SRC_DIR), *.cpp) +DEP_DEP_NAME_CXX_OBJ := $(DEP_DEP_NAME_CXX_SRC:.cpp=.o) + +DEP_DEP_NAME_ALL_OBJ := $(DEP_DEP_NAME_ASM_OBJ) $(DEP_DEP_NAME_C_SRC) $(DEP_DEP_NAME_CXX_OBJ) + +DEP_DEP_NAME_SRC := $(DEP_SERVO_ASM_SRC) $(DEP_SERVO_C_SRC) $(CXX_SRC) +DEP_DEP_NAME_OBJ := $(patsubst $(DEP_DEP_NAME_SRC_DIR)/%,$(DEP_DEP_NAME_BUILD_DIR)/%,$(DEP_DEP_NAME_ALL_OBJ)) + +DEP_DEP_NAME_DIRS := $(sort $(dir $(DEP_DEP_NAME_OBJ))) + +ARDUINO_DEP_DEP_NAME_CXX_FLAGS_P := $(DEP_CORE_CXX_FLAGS_P) $(DEP_DEP_NAME_CFLAGS) + +$(DEP_DEP_NAME): $(DEP_CORE) $(DEP_DEP_NAME_BUILD_DIR) $(DEP_DEP_NAME_OBJ) + $(AR) rcs $(DEP_DEP_NAME) $(DEP_DEP_NAME_OBJ) + +$(DEP_DEP_NAME_BUILD_DIR)/%.o: $(DEP_DEP_NAME_SRC_DIR)/%.cpp + $(CXX) $(ARDUINO_DEP_DEP_NAME_CXX_FLAGS_P) $< -o $@ + +$(DEP_DEP_NAME_BUILD_DIR): + $(MKDIR_P) $(DEP_DEP_NAME_DIRS) + +dep_DEP_NAME: $(DEP_DEP_NAME) + +dep_DEP_NAME_clean: + $(RM) $(DEP_DEP_NAME_OBJ) + $(RM) $(DEP_DEP_NAME) diff --git a/src/Board.h b/src/Board.h index 878328c..7ef76df 100644 --- a/src/Board.h +++ b/src/Board.h @@ -1,3 +1,21 @@ -//#define RAMPS_V14 -//#define FARMDUINO_V10 -#define FARMDUINO_V14 +#ifndef FARMBOT_BOARD_ID + + //#define RAMPS_V14 + //#define FARMDUINO_V10 + #define FARMDUINO_V14 + +#else + + #undef RAMPS_V14 + #undef FARMDUINO_V10 + #undef FARMDUINO_V14 + + #if FARMBOT_BOARD_ID == 0 + #define RAMPS_V14 + #elif FARMBOT_BOARD_ID == 1 + #define FARMDUINO_V10 + #elif FARMBOT_BOARD_ID == 2 + #define FARMDUINO_V14 + #endif + +#endif