# Build Examples

# Run on PC (g++ host compiler)
.PHONY: host_examples
host_examples:
	g++ -std=c++17 -o build/example_enum_sm examples/example_enum_sm.cpp
	g++ -std=c++17 -o build/example_template_pid examples/example_template_pid.cpp
	./build/example_enum_sm
	./build/example_template_pid

# Cross-compile for STM32F407
# Requires: arm-none-eabi-g++ + STM32 HAL + CMSIS + Linker script
.PHONY: stm32_example
stm32_example:
	arm-none-eabi-g++ -mcpu=cortex-m4 -mthumb \
		-mfloat-abi=hard -mfpu=fpv4-sp-d16 \
		-fno-exceptions -fno-rtti -fno-threadsafe-statics \
		-fno-use-cxa-atexit \
		-Os -flto -std=c++17 \
		-I. \
		-Idrivers \
		-DSTM32F407xx \
		examples/example_blink.cpp \
		-T stm32f407_flash.ld \
		-o build/blink.elf

# Clean
clean:
	rm -rf build/*.out build/*.elf build/*.o

.PHONY: all clean host_examples stm32_example
