CC ?= avr-gcc OBJCOPY ?= avr-objcopy AVRDUDE ?= avrdude QEMU_AVR ?= qemu-system-avr MCU ?= atmega32u4 SIM_MCU ?= atmega2560 COMMON_CFLAGS += -Wall -Wextra -DF_CPU=16000000UL CFLAGS += $(COMMON_CFLAGS) -mmcu=$(MCU) -O3 SIM_CFLAGS += $(COMMON_CFLAGS) -mmcu=$(SIM_MCU) -g3 -gdwarf-2 -DWDT_DISABLE COMMON_LDFLAGS += -Wl,-u,vfprintf -lprintf_flt LDFLAGS += $(COMMON_LDFLAGS) -mmcu=$(MCU) SIM_LDFLAGS += $(COMMON_LDFLAGS) -mmcu=$(SIM_MCU) $(shell mkdir -p build/{real,sim}) all: build/altimeter_sim.elf build/altimeter.hex emu: build/altimeter_sim.elf $(QEMU_AVR) -s -S -nographic -machine mega2560 -bios $< flash: build/altimeter.hex $(AVRDUDE) -F -V -c avr109 -p $(MCU) -P $(PORT) -b 115200 -U flash:w:$< clean: rm -rf build/ build/altimeter.elf: \ build/real/barometer_sim.o \ build/real/display_sim.o \ build/real/altimeter.o \ build/real/util.o $(CC) -o $@ $^ $(LDFLAGS) build/altimeter_sim.elf: \ build/sim/barometer_sim.o \ build/sim/display_sim.o \ build/sim/altimeter.o \ build/sim/util.o $(CC) -o $@ $^ $(SIM_LDFLAGS) include config.mk build/sim/%.o: %.c $(CC) -c -o $@ $^ $(SIM_CFLAGS) build/real/%.o: %.c $(CC) -c -o $@ $^ $(CFLAGS) build/%.hex: build/%.elf $(OBJCOPY) -O ihex -R .eeprom $< $@ build/%.elf: $(CC) -o $@ $^ $(CFLAGS) .PHONY: all emu flash clean