diff --git a/Makefile b/Makefile index c4fbeb7..2043f9a 100644 --- a/Makefile +++ b/Makefile @@ -53,6 +53,8 @@ INCLUDE+=$(wildcard $(ARCH_DIR)/include/arch/*.h) $(ARCH_DIR)/arch.mk CFLAGS+=-I$(ARCH_DIR)/include -D__ARCH__=$(ARCH) include $(ARCH_DIR)/arch.mk +include $(ARCH_DIR)/toolchain.mk + # The architecture defines build targets, no more is required endif diff --git a/src/arch/8051/arch.mk b/src/arch/8051/arch.mk index d88a86d..e69de29 100644 --- a/src/arch/8051/arch.mk +++ b/src/arch/8051/arch.mk @@ -1,27 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-only - -CC=sdcc -mmcs51 --model-large --code-size $(CODE_SIZE) --xram-size $(SRAM_SIZE) --Werror -OBJ=$(sort $(patsubst src/%.c,$(BUILD)/%.rel,$(SRC))) - -# Run EC rom in simulator -sim: $(BUILD)/ec.rom - cargo run \ - --release \ - --manifest-path ecsim/Cargo.toml \ - --no-default-features \ - -- $< - -# Convert from Intel Hex file to binary file -$(BUILD)/ec.rom: $(BUILD)/ec.ihx - @mkdir -p $(@D) - objcopy -I ihex -O binary --gap-fill=0xFF $< $@ - -# Link object files into Intel Hex file -$(BUILD)/ec.ihx: $(OBJ) - @mkdir -p $(@D) - $(CC) $(LDFLAGS) -o $@ $^ - -# Compile C files into object files -$(OBJ): $(BUILD)/%.rel: src/%.c $(INCLUDE) - @mkdir -p $(@D) - $(CC) $(CFLAGS) -o $@ -c $< diff --git a/src/arch/8051/toolchain.mk b/src/arch/8051/toolchain.mk new file mode 100644 index 0000000..d88a86d --- /dev/null +++ b/src/arch/8051/toolchain.mk @@ -0,0 +1,27 @@ +# SPDX-License-Identifier: GPL-3.0-only + +CC=sdcc -mmcs51 --model-large --code-size $(CODE_SIZE) --xram-size $(SRAM_SIZE) --Werror +OBJ=$(sort $(patsubst src/%.c,$(BUILD)/%.rel,$(SRC))) + +# Run EC rom in simulator +sim: $(BUILD)/ec.rom + cargo run \ + --release \ + --manifest-path ecsim/Cargo.toml \ + --no-default-features \ + -- $< + +# Convert from Intel Hex file to binary file +$(BUILD)/ec.rom: $(BUILD)/ec.ihx + @mkdir -p $(@D) + objcopy -I ihex -O binary --gap-fill=0xFF $< $@ + +# Link object files into Intel Hex file +$(BUILD)/ec.ihx: $(OBJ) + @mkdir -p $(@D) + $(CC) $(LDFLAGS) -o $@ $^ + +# Compile C files into object files +$(OBJ): $(BUILD)/%.rel: src/%.c $(INCLUDE) + @mkdir -p $(@D) + $(CC) $(CFLAGS) -o $@ -c $< diff --git a/src/arch/avr/arch.mk b/src/arch/avr/arch.mk index 506822e..e69de29 100644 --- a/src/arch/avr/arch.mk +++ b/src/arch/avr/arch.mk @@ -1,30 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-only - -CC=avr-gcc -mmcu=$(EC_VARIANT) -CFLAGS+=-Os -fstack-usage -Wall -Werror -Wl,--gc-sections -Wl,-u,vfprintf -lprintf_flt -OBJCOPY = avr-objcopy -OBJ=$(sort $(patsubst src/%.c,$(BUILD)/%.o,$(SRC))) - -# Run EC rom in simulator -sim: $(BUILD)/ec.elf - simavr $< --mcu $(EC_VARIANT) - -# Convert from Intel Hex file to binary file -$(BUILD)/ec.rom: $(BUILD)/ec.ihx - @mkdir -p $(@D) - $(OBJCOPY) -I ihex -O binary --gap-fill 0xFF $< $@ - -# Convert from ELF file to Intel Hex file -$(BUILD)/ec.ihx: $(BUILD)/ec.elf - @mkdir -p $(@D) - $(OBJCOPY) -j .text -j .data -O ihex $< $@ - -# Link object files into ELF file -$(BUILD)/ec.elf: $(OBJ) - @mkdir -p $(@D) - $(CC) -o $@ $^ - -# Compile C files into object files -$(BUILD)/%.o: src/%.c $(INCLUDE) - @mkdir -p $(@D) - $(CC) $(CFLAGS) -o $@ -c $< diff --git a/src/arch/avr/toolchain.mk b/src/arch/avr/toolchain.mk new file mode 100644 index 0000000..506822e --- /dev/null +++ b/src/arch/avr/toolchain.mk @@ -0,0 +1,30 @@ +# SPDX-License-Identifier: GPL-3.0-only + +CC=avr-gcc -mmcu=$(EC_VARIANT) +CFLAGS+=-Os -fstack-usage -Wall -Werror -Wl,--gc-sections -Wl,-u,vfprintf -lprintf_flt +OBJCOPY = avr-objcopy +OBJ=$(sort $(patsubst src/%.c,$(BUILD)/%.o,$(SRC))) + +# Run EC rom in simulator +sim: $(BUILD)/ec.elf + simavr $< --mcu $(EC_VARIANT) + +# Convert from Intel Hex file to binary file +$(BUILD)/ec.rom: $(BUILD)/ec.ihx + @mkdir -p $(@D) + $(OBJCOPY) -I ihex -O binary --gap-fill 0xFF $< $@ + +# Convert from ELF file to Intel Hex file +$(BUILD)/ec.ihx: $(BUILD)/ec.elf + @mkdir -p $(@D) + $(OBJCOPY) -j .text -j .data -O ihex $< $@ + +# Link object files into ELF file +$(BUILD)/ec.elf: $(OBJ) + @mkdir -p $(@D) + $(CC) -o $@ $^ + +# Compile C files into object files +$(BUILD)/%.o: src/%.c $(INCLUDE) + @mkdir -p $(@D) + $(CC) $(CFLAGS) -o $@ -c $<