Хорошо. Топик закрываю. Жаль, что нет сворачивающихся спойлеров. Буду тогда отдельными сообщениями дописывать FAQ, а в шапке давать ссылки на них, чтобы шапка не перегружалась сильно.
Статические библиотеки для STM32Fx. Пример создания и использования. Существенно экономит время при частом запуске build.
CODE
##########################
# прописывается в makefile
##########################
AR = arm-none-eabi-ar
# STM32F10x_StdPeriph_Driver
DEFS += -DUSE_STDPERIPH_DRIVER #uncomment to use this library
STDPERIPHLIB = StdPeriphLib
STDPERIPH_LIB = $(LIBDIR)/lib$(STDPERIPHLIB).a # need as path/name to create static library
STDPERIPH_DRIVER_DIR := ./STM32F10x_StdPeriph_Driver
STDPERIPH_DRIVER := $(STDPERIPH_DRIVER_DIR)
STDPERIPH_DRIVER += $(STDPERIPH_DRIVER_DIR)/inc
STDPERIPH_DRIVER += $(STDPERIPH_DRIVER_DIR)/src
# static library compiling paths & objects
STDPERIPH_LIB_DIR := $(STDPERIPH_DRIVER)
STDPERIPH_LIB_DIR += ./CMSIS
LIB_INCS := $(patsubst %, -I "%", $(STDPERIPH_LIB_DIR))
STDPERIPH_OBJS += $(wildcard $(addsuffix /*.c, $(STDPERIPH_DRIVER)))
STDPERIPH_SRC_FILES := $(STDPERIPH_OBJS)
STDPERIPH_OBJS := $(notdir $(STDPERIPH_OBJS))
STDPERIPH_OBJS := $(STDPERIPH_OBJS:.c=.o)
STDPERIPH_OBJS := $(patsubst %, $(OBJDIR)/%, $(STDPERIPH_OBJS))
CPU_FLAGS := -mcpu=$(MCU)
CPU_FLAGS += -mthumb
CPU_FLAGS += $(FPU)
# общие ключи для бинутилит AS, CC, CXX, AR
FLAGS = $(CPU_FLAGS)
FLAGS += $(DEFS)
FLAGS += -Wa,-adhlns=$(addprefix $(LSTDIR)/, $(notdir $(addsuffix .lst, $(basename $<))))
# общие ключи для сборки как проекта, так и статических библиотек
COMMON_CFLAGS = $(OPTIMIZE)
ifneq (,$(filter-out discovery defines,$(MAKECMDGOALS)))
COMMON_CFLAGS += -MD
endif
COMMON_CFLAGS += -std=gnu99
COMMON_CFLAGS += -g
COMMON_CFLAGS += -pipe
COMMON_CFLAGS += -fstack-usage
COMMON_CFLAGS += -ffunction-sections -fdata-sections
COMMON_CFLAGS += -Wall -Wextra
COMMON_CFLAGS += -Wimplicit -Wcast-align -Wpointer-arith -Wredundant-decls
COMMON_CFLAGS += -Wshadow -Wcast-qual -Wcast-align -Wnested-externs
#COMMON_CFLAGS += -pedantic # CMSIS core uses GCC extensions
# флаги для сборки библиотеки STM32Fx_StdPeriphLib
LIB_CFLAGS = $(FLAGS)
LIB_CFLAGS += $(LIB_INCS)
LIB_CFLAGS += $(COMMON_CFLAGS)
LDFLAGS += -L$(LIBDIR) # where LD need to search libraries
LDFLAGS += -l$(STDPERIPHLIB)
$(STDPERIPH_LIB):
@echo --- need to create $@...
$(MAKE) buildSTDPeriphLib
buildSTDPeriphLib: $(STDPERIPH_OBJS)
@echo --- creating static library $(STDPERIPH_LIB)...
$(AR) rcs $(STDPERIPH_LIB) $(STDPERIPH_OBJS)
@echo ...ok
all: $(STDPERIPH_LIB)
$(MAKE) start
$(MAKE) $(ELF)
$(MAKE) $(BIN)
$(MAKE) $(LSS)