seesaw/Makefile
2018-10-02 14:15:38 -04:00

183 lines
No EOL
4.6 KiB
Makefile

BOARD=debug
-include Makefile.user
include boards/$(BOARD)/board.mk
CC=arm-none-eabi-gcc
CXX=arm-none-eabi-g++
ifeq ($(DEBUG), 1)
ENABLE_LOGGING = -DENABLE_LOGGING
else
ENABLE_LOGGING =
endif
COMMON_FLAGS = -mthumb -mcpu=cortex-m0plus -Os -g3 -D$(CHIP_FAMILY) -D__$(CHIP_VARIANT)__ -DBOARD_$(BOARD_NAME) $(ENABLE_LOGGING)
WFLAGS = \
-Wall -Werror
SFLAGS = $(COMMON_FLAGS) \
-x assembler-with-cpp -c \
$(WFLAGS)
CFLAGS = $(COMMON_FLAGS) \
-x c -std=gnu99 -c \
-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" \
$(WFLAGS)
CXXFLAGS = $(COMMON_FLAGS) \
-ffunction-sections -fdata-sections \
-fno-rtti -fno-exceptions -c -std=c++11 \
-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" \
$(WFLAGS)
LDFLAGS= $(COMMON_FLAGS) \
-Wall -Werror -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common \
-Wl,--warn-section-align -Wl,--warn-unresolved-symbols \
-save-temps \
--specs=nano.specs --specs=nosys.specs
BUILD_PATH=build/$(BOARD)
QPPORT = lib/qp/ports/arm-cm/qxk/gnu
INCLUDES = -I. -I./include -I./include/USB -I./bsp -I./lib/qp/extras -I./lib/qp/include -I./lib/qp/source -I$(QPPORT)
INCLUDES += -I./boards/$(BOARD) -Ilib/cmsis/CMSIS/Include
INCLUDES += -I$(BUILD_PATH)
ifeq ($(CHIP_FAMILY), SAMD21)
INCLUDES += -Ilib/samd21/samd21a/include/
endif
ifeq ($(CHIP_FAMILY), SAMD09)
INCLUDES += -Ilib/samd09/include/
endif
ifeq ($(CHIP_FAMILY), SAMD10)
INCLUDES += -Ilib/samd10/include/
endif
SSOURCES = \
$(QPPORT)/qxk_port.S \
ifeq ($(CHIP_FAMILY), SAMD21)
CSOURCES = Device_Startup/startup_samd21.c \
Device_Startup/system_samd21.c
endif
ifeq ($(CHIP_FAMILY), SAMD09)
CSOURCES = Device_Startup/startup_samd09.c \
Device_Startup/system_samd09.c
endif
ifeq ($(CHIP_FAMILY), SAMD10)
CSOURCES = Device_Startup/startup_samd10.c \
Device_Startup/system_samd10.c
endif
COMMON_SRC = \
lib/qp/source/qep_hsm.cpp \
lib/qp/source/qep_msm.cpp \
lib/qp/source/qf_act.cpp \
lib/qp/source/qf_actq.cpp \
lib/qp/source/qf_defer.cpp \
lib/qp/source/qf_dyn.cpp \
lib/qp/source/qf_mem.cpp \
lib/qp/source/qf_ps.cpp \
lib/qp/source/qf_qact.cpp \
lib/qp/source/qf_qeq.cpp \
lib/qp/source/qf_qmact.cpp \
lib/qp/source/qf_time.cpp \
lib/qp/source/qxk.cpp \
lib/qp/source/qxk_mutex.cpp \
lib/qp/source/qxk_sema.cpp \
lib/qp/source/qxk_xthr.cpp \
lib/qp/include/qstamp.cpp \
lib/qp/extras/fw_evt.cpp \
lib/qp/extras/fw_log.cpp \
SOURCES = $(COMMON_SRC) \
source/bsp.cpp \
source/event.cpp \
source/AOADC.cpp \
source/AODAC.cpp \
source/AOTouch.cpp \
source/AOInterrupt.cpp \
source/AOSERCOM.cpp \
source/AOTimer.cpp \
source/dap.cpp \
source/Delegate.cpp \
source/I2CSlave.cpp \
source/SPISlave.cpp \
source/main.cpp \
source/Neopixel.cpp \
source/System.cpp \
source/AOKeypad.cpp \
source/AOEncoder.cpp \
bsp/bsp_adc.cpp \
bsp/bsp_gpio.cpp \
bsp/bsp_sercom.cpp \
bsp/bsp_timer.cpp \
bsp/bsp_dma.cpp \
bsp/pinmux.cpp \
bsp/bsp_neopix.cpp \
bsp/adafruit_ptc.cpp \
ifeq ($(CHIP_FAMILY), SAMD21)
FULL_SOURCES = $(SOURCES) \
source/AOUSB.cpp \
source/USB/CDC.cpp \
source/USB/USBCore.cpp
endif
ifeq ($(CHIP_FAMILY), SAMD09)
FULL_SOURCES = $(SOURCES)
endif
ifeq ($(CHIP_FAMILY), SAMD10)
FULL_SOURCES = $(SOURCES)
endif
SOBJECTS = $(patsubst %.S,$(BUILD_PATH)/%.o,$(SSOURCES))
COBJECTS = $(patsubst %.c,$(BUILD_PATH)/%.o,$(CSOURCES))
OBJECTS = $(patsubst %.cpp,$(BUILD_PATH)/%.o,$(FULL_SOURCES))
NAME=seesaw-$(BOARD)
EXECUTABLE=$(BUILD_PATH)/$(NAME).bin
all: dirs $(EXECUTABLE)
dirs:
@echo "Building $(BOARD)"
@python scripts/datecode.py
-@mkdir -p $(BUILD_PATH)
-@mkdir -p $(BUILD_PATH)/lib/qp/source
-@mkdir -p $(BUILD_PATH)/lib/qp/include
-@mkdir -p $(BUILD_PATH)/lib/qp/extras
-@mkdir -p $(BUILD_PATH)/lib/qp/ports/arm-cm/qxk/gnu/
-@mkdir -p $(BUILD_PATH)/source/USB
-@mkdir -p $(BUILD_PATH)/Device_Startup
-@mkdir -p $(BUILD_PATH)/bsp
$(EXECUTABLE): $(SOBJECTS) $(COBJECTS) $(OBJECTS)
$(CC) -L$(BUILD_PATH) $(LDFLAGS) \
-T$(LINKER_SCRIPT) \
-Wl,-Map,$(BUILD_PATH)/$(NAME).map -o $(BUILD_PATH)/$(NAME).elf $(SOBJECTS) $(COBJECTS) $(OBJECTS)
arm-none-eabi-objcopy -O binary $(BUILD_PATH)/$(NAME).elf $@
@echo
-@arm-none-eabi-size $(BUILD_PATH)/$(NAME).elf
@echo
$(BUILD_PATH)/%.o: %.S $(wildcard include/*.h boards/*/*.h)
echo "$<"
$(CC) $(SFLAGS) $(BLD_EXTA_FLAGS) $(INCLUDES) $< -o $@
$(BUILD_PATH)/%.o: %.c $(wildcard include/*.h boards/*/*.h)
echo "$<"
$(CC) $(CFLAGS) $(BLD_EXTA_FLAGS) $(INCLUDES) $< -o $@
$(BUILD_PATH)/%.o: %.cpp $(wildcard include/*.h boards/*/*.h)
echo "$<"
$(CXX) $(CXXFLAGS) $(BLD_EXTA_FLAGS) $(INCLUDES) $< -o $@
clean:
rm -rf build
all-boards:
for f in `cd boards; ls` ; do "$(MAKE)" BOARD=$$f ; done