115 lines
3.9 KiB
Makefile
115 lines
3.9 KiB
Makefile
PATH_COMPILER = D:\programs\gcc-arm
|
|
#PATH_COMPILER = C:\Users\$(USERNAME)\AppData\Local\Arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1
|
|
|
|
PATH_ROOT = ../../STM32/
|
|
PATH_PROJECT = $(PATH_ROOT)/libraries/$(PROJECT)
|
|
PATH_CORE = $(PATH_ROOT)/cores/arduino/
|
|
PATH_VARIANT = $(PATH_ROOT)variants/$(build.variant)/
|
|
PATH_BUILD_ROOT = build/$(VARIANT)/
|
|
PATH_BUILD_CORE = $(PATH_BUILD_ROOT)/core/
|
|
PATH_BUILD_PROJECT = $(PATH_BUILD_ROOT)/$(PROJECT)/
|
|
|
|
include makefiles/$(VARIANT)
|
|
|
|
### Included libraries
|
|
|
|
cat := $(if $(filter $(OS),Windows_NT),type,cat)
|
|
LIBRARIES = $(shell $(cat) $(subst /,\\,$(PATH_PROJECT)/build-include.txt))
|
|
|
|
#### Source files
|
|
|
|
PROJECT_SOURCES_C += $(wildcard $(PATH_PROJECT)*.c)
|
|
PROJECT_SOURCES_CPP += $(wildcard $(PATH_PROJECT)*.cpp)
|
|
PROJECT_SOURCES_INO += $(wildcard $(PATH_PROJECT)*.ino)
|
|
|
|
CORE_SOURCES_C = $(wildcard $(PATH_CORE)*.c)
|
|
CORE_SOURCES_C += $(wildcard $(PATH_CORE)stm32/*.c)
|
|
CORE_SOURCES_C += $(wildcard $(PATH_CORE)stm32_HAL/*.c)
|
|
CORE_SOURCES_C += $(wildcard $(PATH_CORE)usb/*.c)
|
|
CORE_SOURCES_CPP += $(wildcard $(PATH_CORE)*.cpp)
|
|
CORE_SOURCES_S += $(wildcard $(PATH_CORE)stm32_HAL/*.S)
|
|
|
|
VARIANT_SOURCES_C += $(wildcard $(PATH_VARIANT)*.c)
|
|
VARIANT_SOURCES_CPP += $(wildcard $(PATH_VARIANT)*.cpp)
|
|
|
|
#### Object files
|
|
|
|
OBJECTS = $(patsubst $(PATH_PROJECT)%,$(PATH_BUILD_PROJECT)%,$(PROJECT_SOURCES_C:.c=.c.o))
|
|
OBJECTS += $(patsubst $(PATH_PROJECT)%,$(PATH_BUILD_PROJECT)%,$(PROJECT_SOURCES_CPP:.cpp=.cpp.o))
|
|
OBJECTS += $(patsubst $(PATH_PROJECT)%,$(PATH_BUILD_PROJECT)%,$(PROJECT_SOURCES_INO:.ino=.ino.cpp.o))
|
|
|
|
OBJECTS += $(patsubst $(PATH_CORE)%,$(PATH_BUILD_CORE)%,$(CORE_SOURCES_C:.c=.c.o))
|
|
OBJECTS += $(patsubst $(PATH_CORE)%,$(PATH_BUILD_CORE)%,$(CORE_SOURCES_CPP:.cpp=.cpp.o))
|
|
OBJECTS += $(patsubst $(PATH_CORE)%,$(PATH_BUILD_CORE)%,$(CORE_SOURCES_S:.S=.s.o))
|
|
|
|
OBJECTS += $(patsubst $(PATH_VARIANT)%,$(PATH_BUILD_CORE)%,$(VARIANT_SOURCES_C:.c=.c.o))
|
|
OBJECTS += $(patsubst $(PATH_VARIANT)%,$(PATH_BUILD_CORE)%,$(VARIANT_SOURCES_CPP:.cpp=.cpp.o))
|
|
|
|
|
|
LIBRARY_OBJ_DIRS += $(patsubst $(PATH_ROOT)libraries%,$(PATH_BUILD_ROOT)%,$(LIBRARIES))
|
|
OBJECTS += $(foreach dir,$(LIBRARY_OBJ_DIRS),$(wildcard $(dir)/*.o))
|
|
|
|
ifneq ($(wildcard $(PATH_PROJECT)/*.ino),)
|
|
ELF = $(PATH_BUILD_CORE)build.elf
|
|
BIN = $(PATH_BUILD_CORE)build.bin
|
|
endif
|
|
|
|
INCLUDES = "-I$(PATH_ROOT)cores/arduino/"
|
|
INCLUDES += "-I$(PATH_ROOT)cores/arduino/stm32"
|
|
INCLUDES += "-I$(PATH_ROOT)cores/arduino/stm32_HAL"
|
|
INCLUDES += "-I$(PATH_ROOT)cores/arduino/usb"
|
|
INCLUDES += "-I$(PATH_ROOT)system/CMSIS"
|
|
INCLUDES += "-I$(PATH_ROOT)system/STM32F1/CMSIS_Inc"
|
|
INCLUDES += "-I$(PATH_ROOT)system/STM32F1/CMSIS_Src"
|
|
INCLUDES += "-I$(PATH_ROOT)system/STM32F1/HAL_Inc"
|
|
INCLUDES += "-I$(PATH_ROOT)system/STM32F1/HAL_Src"
|
|
INCLUDES += "-I$(PATH_ROOT)system/STM32F1/stm32_chip"
|
|
INCLUDES += "-I$(PATH_VARIANT)"
|
|
INCLUDES += $(LIBRARIES:%=-I%)
|
|
|
|
all: $(OBJECTS) $(BIN)
|
|
$(info BUILD SUCCESSFUL)
|
|
|
|
$(BIN): $(ELF)
|
|
$(recipe.objcopy.bin.pattern)
|
|
|
|
$(ELF):
|
|
$(recipe.c.combine.pattern)
|
|
|
|
$(PATH_BUILD_PROJECT)%.cpp.o: $(PATH_PROJECT)%.cpp
|
|
-@mkdir $(subst /,\\,$(@D)) 2> build/ignore
|
|
$(recipe.cpp.o.pattern)
|
|
|
|
$(PATH_BUILD_PROJECT)%.ino.cpp.o: $(PATH_PROJECT)%.ino
|
|
-@mkdir $(subst /,\\,$(@D)) 2> build/ignore
|
|
$(subst -c,-c -include Arduino.h -x c++,$(recipe.cpp.o.pattern) )
|
|
|
|
$(PATH_BUILD_PROJECT)%.c.o: $(PATH_PROJECT)%.c
|
|
-@mkdir $(subst /,\\,$(@D)) 2> build/ignore
|
|
$(recipe.c.o.pattern)
|
|
|
|
$(PATH_BUILD_CORE)%.cpp.o: $(PATH_CORE)%.cpp
|
|
-@mkdir $(subst /,\\,$(@D)) 2> build/ignore
|
|
$(recipe.cpp.o.pattern)
|
|
|
|
$(PATH_BUILD_CORE)%.c.o: $(PATH_CORE)%.c
|
|
-@mkdir $(subst /,\\,$(@D)) 2> build/ignore
|
|
$(recipe.c.o.pattern)
|
|
|
|
$(PATH_BUILD_CORE)%.s.o: $(PATH_CORE)%.S
|
|
-@mkdir $(subst /,\\,$(@D)) 2> build/ignore
|
|
$(recipe.S.o.pattern)
|
|
|
|
$(PATH_BUILD_CORE)%.cpp.o: $(PATH_VARIANT)%.cpp
|
|
-@mkdir $(subst /,\\,$(@D)) 2> build/ignore
|
|
$(recipe.cpp.o.pattern)
|
|
|
|
$(PATH_BUILD_CORE)%.c.o: $(PATH_VARIANT)%.c
|
|
-@mkdir $(subst /,\\,$(@D)) 2> build/ignore
|
|
$(recipe.c.o.pattern)
|
|
|
|
clean:
|
|
rm -rf $(PATH_BUILD)
|
|
rm -f $(ELF)
|
|
rm -f $(BIN)
|