diff --git a/src/atmega/Makefile b/src/atmega/Makefile index 34660b8..7461fbe 100644 --- a/src/atmega/Makefile +++ b/src/atmega/Makefile @@ -3,86 +3,40 @@ PROJECT = vase-control MCU = atmega328p F_CPU = 16000000UL -ARDUINO_INSTALL_PATH = /usr/share/arduino -ARDUINO_CORE_PATH = $(ARDUINO_INSTALL_PATH)/hardware/arduino/avr/cores/arduino -ARDUINO_VARIANT_PATH = $(ARDUINO_INSTALL_PATH)/hardware/arduino/avr/variants/standard - CC = avr-gcc -CXX = avr-g++ -LD = $(CXX) +LD = $(CC) OC = avr-objcopy -AR = avr-ar RM = rm -f -AVRDUDE = avrdude -AVRDUDE_FLAGS = -v -p m328p -c usbasp - BUILD_DIR = build OBJ_DIR = $(BUILD_DIR)/obj -CORE_DIR = $(BUILD_DIR)/core - -CFLAGS = -Wall -Os -DF_CPU=$(F_CPU) -mmcu=$(MCU) -I$(ARDUINO_CORE_PATH) -I$(ARDUINO_VARIANT_PATH) -I. -CXXFLAGS = $(CFLAGS) -fno-exceptions -fpermissive -std=gnu++11 - -LDFLAGS = -Wall -Os -mmcu=$(MCU) -Wl,--gc-sections -LIBS = -lm SRCS_C = adc.c moisture.c main.c -#SRCS_CPP = main.cpp -HDRS = moisture.h config.h adc.h -OBJS = $(addprefix $(OBJ_DIR)/, $(SRCS_CPP:.cpp=.o) $(SRCS_C:.c=.o)) +OBJS = $(addprefix $(OBJ_DIR)/, $(SRCS_C:.c=.o)) -CORE_C_SRCS = \ - wiring.c \ - wiring_analog.c \ - wiring_digital.c \ - hooks.c +CFLAGS = -Wall -Os -DF_CPU=$(F_CPU) -mmcu=$(MCU) -I. +LDFLAGS = -Wall -Os -mmcu=$(MCU) +LIBS = -lm -CORE_CPP_SRCS = \ - abi.cpp \ - new.cpp \ - Print.cpp \ - Stream.cpp \ - HardwareSerial.cpp \ - HardwareSerial0.cpp \ - -CORE_SRCS = $(addprefix $(ARDUINO_CORE_PATH)/, $(CORE_C_SRCS) $(CORE_CPP_SRCS)) -CORE_OBJS = $(patsubst $(ARDUINO_CORE_PATH)/%.c,$(CORE_DIR)/%.o,$(filter %.c,$(CORE_SRCS))) \ - $(patsubst $(ARDUINO_CORE_PATH)/%.cpp,$(CORE_DIR)/%.o,$(filter %.cpp,$(CORE_SRCS))) - -CORE_LIB = $(BUILD_DIR)/libcore.a - -EXEC = moisture +EXEC = atmega ELF_TARGET = $(BUILD_DIR)/$(EXEC).elf TARGET = $(BUILD_DIR)/$(EXEC).hex all: $(TARGET) -$(shell mkdir -p $(OBJ_DIR) $(CORE_DIR)) +$(shell mkdir -p $(OBJ_DIR)) -$(ELF_TARGET): $(OBJS) $(CORE_LIB) - $(LD) $(LDFLAGS) $(OBJS) -L$(BUILD_DIR) -lcore $(LIBS) -o $@ +$(ELF_TARGET): $(OBJS) + $(LD) $(LDFLAGS) $(OBJS) -o $@ $(LIBS) -$(CORE_LIB): $(CORE_OBJS) - $(AR) rcs $@ $^ - -$(OBJ_DIR)/%.o: %.c $(HDRS) Makefile +$(OBJ_DIR)/%.o: %.c $(CC) $(CFLAGS) -c $< -o $@ -$(OBJ_DIR)/%.o: %.cpp $(HDRS) Makefile - $(CXX) $(CXXFLAGS) -c $< -o $@ - -$(CORE_DIR)/%.o: $(ARDUINO_CORE_PATH)/%.c Makefile - $(CC) $(CFLAGS) -c $< -o $@ - -$(CORE_DIR)/%.o: $(ARDUINO_CORE_PATH)/%.cpp Makefile - $(CXX) $(CXXFLAGS) -c $< -o $@ - $(TARGET): $(ELF_TARGET) $(OC) -O ihex -R .eeprom $< $@ clean: - $(RM) $(TARGET) $(ELF_TARGET) $(OBJS) $(CORE_OBJS) $(CORE_LIB) + $(RM) $(TARGET) $(ELF_TARGET) $(OBJS) $(RM) -r $(BUILD_DIR) .PHONY: all clean diff --git a/src/atmega/build-atmega.sh b/src/atmega/build-atmega.sh index e929996..385662f 100755 --- a/src/atmega/build-atmega.sh +++ b/src/atmega/build-atmega.sh @@ -6,7 +6,7 @@ SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) IMAGE_NAME="vase-control-builder" DOCKERFILE="$SCRIPT_DIR/Dockerfile" BUILD_CTX="$SCRIPT_DIR" -DEST_HEX="$SCRIPT_DIR/build/moisture.hex" +DEST_HEX="$SCRIPT_DIR/build/atmega.hex" MCU="atmega328p"; PRG="usbasp"; AVR_FLAGS="-B 10" docker build -t "$IMAGE_NAME" -f "$DOCKERFILE" "$BUILD_CTX" @@ -14,7 +14,7 @@ docker build -t "$IMAGE_NAME" -f "$DOCKERFILE" "$BUILD_CTX" mkdir -p "$(dirname "$DEST_HEX")" docker run --rm "$IMAGE_NAME" \ - cat /usr/src/build/moisture.hex > "$DEST_HEX" + cat /usr/src/build/atmega.hex > "$DEST_HEX" command -v avrdude >/dev/null || { echo "Install avrdude"; exit 1; } -avrdude -v -p m328p -c usbasp -U flash:w:build/moisture.hex:i +avrdude -v -p m328p -c usbasp -U flash:w:build/atmega.hex:i