C++ refactoring, plus low-power support, plus software-based SPI CS
I'm backlogged.
This commit is contained in:
40
Makefile
40
Makefile
@@ -24,13 +24,13 @@
|
||||
# Tools
|
||||
#
|
||||
|
||||
TOOL_PREFIX ?= arm-none-eabi-
|
||||
TOOL_PREFIX ?= arm-eabi-
|
||||
CC = $(TOOL_PREFIX)gcc
|
||||
CXX = $(TOOL_PREFIX)g++
|
||||
CPP = $(TOOL_PREFIX)cpp
|
||||
AS = $(TOOL_PREFIX)as
|
||||
LD = $(TOOL_PREFIX)gcc
|
||||
OBJCOPY = $(TOOL_PREFIX)objcopy
|
||||
STM32FLASH ?= stm32flash
|
||||
|
||||
#
|
||||
# Device Variables
|
||||
@@ -40,24 +40,30 @@ DEVICE_TYPE ?= stm32l031k6
|
||||
DEVICE_FAMILY = stm32l031xx
|
||||
DEVICE_LINE = stm32l0xx
|
||||
|
||||
|
||||
#
|
||||
# Filenames and paths
|
||||
#
|
||||
|
||||
C_SOURCES := $(shell find $(SOURCEDIR) -name '*.c')
|
||||
S_SOURCES := $(shell find $(SOURCEDIR) -name '*.s')
|
||||
# Ignores dotfiles and other garbage some tools leave behind
|
||||
define find_important
|
||||
$(shell find $(1) -type f -and -name $(2) -and -not -iname "*~" -and -not -iname "*#*" -and -not \( -path "*.cquery_cached_index*" \) )
|
||||
endef
|
||||
|
||||
C_SOURCES := $(call find_important, $(SOURCEDIR), '*.c')
|
||||
CXX_SOURCES := $(call find_important, $(SOURCEDIR), '*.cpp')
|
||||
S_SOURCES := $(call find_important, $(SOURCEDIR), '*.s')
|
||||
SPP_SOURCES := $(DEVICE_TYPE).S
|
||||
SOURCES = $(C_SOURCES) $(S_SOURCES) $(SPP_SOURCES)
|
||||
SOURCES = $(C_SOURCES) $(S_SOURCES) $(SPP_SOURCES) $(CPP_SOURCES)
|
||||
|
||||
C_OBJS := $(patsubst %.c,%.o,$(C_SOURCES))
|
||||
CXX_OBJS := $(patsubst %.cpp,%.o,$(CXX_SOURCES))
|
||||
S_OBJS := $(patsubst %.s,%.o,$(S_SOURCES))
|
||||
SPP_OBJS := $(patsubst %.S,%.o,$(SPP_SOURCES))
|
||||
OBJS = $(C_OBJS) $(S_OBJS) $(SPP_OBJS)
|
||||
OBJS = $(C_OBJS) $(S_OBJS) $(SPP_OBJS) $(CXX_OBJS)
|
||||
|
||||
LINKER_SCRIPT ?= $(DEVICE_TYPE).ld
|
||||
|
||||
OUTPUT_NAME ?= test
|
||||
OUTPUT_NAME ?= watch
|
||||
OUTPUT_BIN ?= $(OUTPUT_NAME).bin
|
||||
OUTPUT_ELF ?= $(OUTPUT_NAME).elf
|
||||
|
||||
@@ -70,7 +76,8 @@ DEVICE_DEFINE = $(subst XX,xx,$(shell echo $(DEVICE_FAMILY) | tr '[:lower:]' '[:
|
||||
# C pedantism
|
||||
CFLAGS = -Wall -Wextra -Wpedantic
|
||||
# Debug/optimization
|
||||
CFLAGS += -Og -ggdb
|
||||
CFLAGS += -ggdb -g3
|
||||
CFLAGS += -fdata-sections -ffunction-sections
|
||||
# Architecture
|
||||
CFLAGS += -mthumb -mcpu=cortex-m0plus
|
||||
CFLAGS += -ffreestanding
|
||||
@@ -81,11 +88,15 @@ CFLAGS += -I./lib/stm32/$(DEVICE_LINE)/Include
|
||||
CFLAGS += -I./lib/CMSIS/Core/Include
|
||||
CFLAGS += -I./lib/fonts/
|
||||
|
||||
CXX_FLAGS = -std=c++14 -fno-exceptions -fno-rtti
|
||||
|
||||
# Startup Definitions
|
||||
ASFLAGS += -D__STARTUP_CLEAR_BSS
|
||||
ASFLAGS += -D__HEAP_SIZE=0 # No heap- let the linker decide it all
|
||||
|
||||
LDFLAGS += -nostdinc -lc -lnosys -Wl,--gc-sections -Wl,--print-memory-usage
|
||||
LDFLAGS += -lc -lstdc++ -nostdinc -lnosys -Wl,--gc-sections -Wl,--build-id=None
|
||||
LDFLAGS += -Wl,--wrap=malloc -Wl,--wrap=free # Fail to compile if dynamic allocation is sneaking through
|
||||
LDFLAGS += -mthumb -mcpu=cortex-m0plus
|
||||
|
||||
#
|
||||
# Default Target
|
||||
@@ -105,13 +116,17 @@ build: $(OUTPUT_BIN)
|
||||
@echo "AS $@"
|
||||
@$(CC) $(ASFLAGS) -c $< -o $@
|
||||
|
||||
%.o: %.cpp
|
||||
@echo "CXX $@"
|
||||
@$(CXX) $(CXX_FLAGS) $(CFLAGS) -c $< -o $@
|
||||
|
||||
$(OUTPUT_BIN): $(OUTPUT_ELF)
|
||||
@echo "OBJCOPY $@"
|
||||
@$(OBJCOPY) -O binary $(OUTPUT_ELF) $(OUTPUT_BIN)
|
||||
|
||||
$(OUTPUT_ELF): $(LINKER_SCRIPT) $(OBJS)
|
||||
@echo "LD $@"
|
||||
$(LD) $(LDFLAGS) -T $(LINKER_SCRIPT) -o $(OUTPUT_ELF) $(OBJS)
|
||||
@$(LD) $(LDFLAGS) -T $(LINKER_SCRIPT) -o $(OUTPUT_ELF) $(OBJS)
|
||||
|
||||
#
|
||||
# Utilities
|
||||
@@ -122,8 +137,7 @@ STM32FLASH_DEVICE = /dev/ttyUSB0
|
||||
.PHONY: flash
|
||||
flash: $(OUTPUT_BIN)
|
||||
@echo "FLASH $(OUTPUT_BIN)"
|
||||
@st-flash write $(OUTPUT_BIN) 0x8000000 2> /dev/null
|
||||
# stm32flash -w $(OUTPUT_BIN) $(STM32FLASH_DEVICE)
|
||||
@st-flash write $(OUTPUT_BIN) 0x8000000
|
||||
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
Reference in New Issue
Block a user