47 lines
1.1 KiB
Makefile
47 lines
1.1 KiB
Makefile
.PHONY: all build cmake clean format
|
|
|
|
# --- Configurable variables ---
|
|
BUILD_DIR := build
|
|
BUILD_TYPE ?= Debug
|
|
TOOLCHAIN := gcc-arm-none-eabi.cmake
|
|
|
|
CFLAGS_DEBUG ?= -g3 -O0
|
|
CXXFLAGS_DEBUG ?= -g3 -O0
|
|
|
|
# MCU target (override on command line: make build MCU_MODEL=STM32F051x8)
|
|
MCU_MODEL ?= STM32L432xx
|
|
MCU_FAMILY ?= STM32L4xx
|
|
|
|
# --- Default target ---
|
|
all: build
|
|
|
|
# --- Configure step (runs CMake if build dir missing or stale) ---
|
|
${BUILD_DIR}/build.ninja:
|
|
cmake \
|
|
-G Ninja \
|
|
-B ${BUILD_DIR} \
|
|
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
|
|
-DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN} \
|
|
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
|
|
-DCMAKE_C_FLAGS_DEBUG="${CFLAGS_DEBUG}" \
|
|
-DCMAKE_CXX_FLAGS_DEBUG="${CXXFLAGS_DEBUG}" \
|
|
-DMCU_MODEL=$(MCU_MODEL) \
|
|
-DMCU_FAMILY=$(MCU_FAMILY)
|
|
|
|
cmake: ${BUILD_DIR}/build.ninja
|
|
|
|
# --- Build step ---
|
|
build: cmake
|
|
cmake --build ${BUILD_DIR}
|
|
|
|
# --- Format all sources ---
|
|
SRCS := $(shell find . -type f \( -name '*.[ch]' -o -name '*.[ch]pp' \))
|
|
format: $(addsuffix .format,${SRCS})
|
|
|
|
%.format: %
|
|
clang-format -i $<
|
|
|
|
# --- Clean ---
|
|
clean:
|
|
rm -rf ${BUILD_DIR} compile_commands.json
|