1
0
Fork 0
nrf51-cryptolib/template/Makefile

175 lines
5.7 KiB
Makefile
Raw Normal View History

2016-06-01 15:07:50 -04:00
TOOLCHAIN_PREFIX ?= arm-none-eabi
AS = $(TOOLCHAIN_PATH)$(TOOLCHAIN_PREFIX)-as
CC = $(TOOLCHAIN_PATH)$(TOOLCHAIN_PREFIX)-gcc
LD = $(TOOLCHAIN_PATH)$(TOOLCHAIN_PREFIX)-gcc
OBJCOPY = $(TOOLCHAIN_PATH)$(TOOLCHAIN_PREFIX)-objcopy
OBJDUMP = $(TOOLCHAIN_PATH)$(TOOLCHAIN_PREFIX)-objdump
SIZE = $(TOOLCHAIN_PATH)$(TOOLCHAIN_PREFIX)-size
GDB = $(TOOLCHAIN_PATH)$(TOOLCHAIN_PREFIX)-gdb
START_CODE ?= startup_nrf51.s
SYSTEM_FILE ?= system_nrf51.c
ifdef DEV_BOARD
CFLAGS += -DDEV_BOARD
endif
ifeq ($(USE_SOFTDEVICE), s110)
CFLAGS += -DS110
USE_BLE = 1
endif
ifeq ($(USE_SOFTDEVICE), s120)
CFLAGS += -DS120
USE_BLE = 1
endif
ifeq ($(USE_SOFTDEVICE), s310)
USE_BLE = 1
USE_ANT = 1
CFLAGS += -DS310
endif
LIBRARY_PATHS += $(TEMPLATE_PATH)
LIBRARY_PATHS += $(SDK_PATH)components/toolchain/gcc/
LIBRARY_PATHS += $(SDK_PATH)components/toolchain/
LIBRARY_PATHS += $(wildcard $(SDK_PATH)components/libraries/*/)
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/ble_flash/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/clock/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/common/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/config/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/delay/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/gpiote/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/hal/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/lpcomp/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/ppi/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/pstorage/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/qdec/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/radio_config/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/rng/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/rtc/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/sdio/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/spi_master/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/spi_slave/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/swi/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/timer/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/twi_master/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/uart/
LIBRARY_PATHS += $(SDK_PATH)/components/drivers_nrf/wdt/
LIBRARY_PATHS += $(wildcard $(SDK_PATH)components/device/)
LIBRARY_PATHS += $(wildcard $(SDK_PATH)components/serialization/*/)
ifdef USE_BLE
LIBRARY_PATHS += $(wildcard $(SDK_PATH)components/ble/*/)
LIBRARY_PATHS += $(wildcard $(SDK_PATH)components/ble/ble_services/*/)
CFLAGS += -DBLE_STACK_SUPPORT_REQD
endif
ifdef USE_ANT
CFLAGS += -DANT_STACK_SUPPORT_REQD
endif
ifdef USE_SOFTDEVICE
CFLAGS += -DSOFTDEVICE_PRESENT
LIBRARY_PATHS += $(SDK_PATH)components/softdevice/common/softdevice_handler/
LIBRARY_PATHS += $(SDK_PATH)components/softdevice/$(USE_SOFTDEVICE)/headers/
else
LIBRARY_PATHS += $(wildcard $(SDK_PATH)components/drivers_nrf/nrf_soc_nosd/)
USE_SOFTDEVICE = blank
endif
LINKER_SCRIPT ?= gcc_nrf51_$(USE_SOFTDEVICE).ld
OUTPUT_NAME ?= $(addsuffix _$(USE_SOFTDEVICE)_$(VERSION), $(PROJECT_NAME))
ifdef USE_EXT_SENSORS
LIBRARY_PATHS += $(wildcard $(SDK_PATH)components/ext_sensors/*/)
endif
LIBRARY_INCLUDES = $(addprefix -I,$(LIBRARY_PATHS))
VPATH = $(LIBRARY_PATHS)
OUTPUT_PATH = _build/
CPUFLAGS += -mthumb -mcpu=cortex-m0 -mabi=aapcs -mfloat-abi=soft
ifdef BOARD
CFLAGS += -DBOARD=$(BOARD)
endif
CFLAGS += -std=gnu99 -c $(CPUFLAGS) -Wall -D$(DEVICE) $(LIBRARY_INCLUDES) -MD
# keep every function in separate section. This will allow linker to dump unused functions
CFLAGS += -ffunction-sections -fdata-sections -fno-strict-aliasing
CFLAGS += -fno-builtin --short-enums
# keep every function in separate section. This will allow linker to dump unused functions
LDFLAGS += -mthumb -mabi=aapcs -L $(TEMPLATE_PATH) -T$(LINKER_SCRIPT)
LDFLAGS += -mcpu=cortex-m0
LDFLAGS += -Wl,--gc-sections
# use newlib in nano version
LDFLAGS += --specs=nano.specs -lc -lnosys
LDFLAGS += -Wl,-Map=$(OUTPUT_PATH)$(OUTPUT_NAME).Map
HEX = $(OUTPUT_PATH)$(OUTPUT_NAME).hex
ELF = $(OUTPUT_PATH)$(OUTPUT_NAME).elf
BIN = $(OUTPUT_PATH)$(OUTPUT_NAME).bin
SRCS = $(SYSTEM_FILE) $(notdir $(APPLICATION_SRCS))
OBJS = $(addprefix $(OUTPUT_PATH), $(SRCS:.c=.o)) $(addprefix $(OUTPUT_PATH),$(APPLICATION_LIBS))
DEPS = $(addprefix $(OUTPUT_PATH), $(SRCS:.c=.d))
SRCS_AS = $(START_CODE)
OBJS_AS = $(addprefix $(OUTPUT_PATH), $(SRCS_AS:.s=.os))
JLINK_OPTIONS = -device nrf51822 -if swd -speed 1000
all: $(OBJS) $(OBJS_AS) $(HEX)
rebuild: clean all
bootloader: clean
make -C bootloader
combined: bootloader all
srec_cat \
softdevice/softdevice.hex -intel \
bootloader/_build/sdk10_bootloader_s110.hex -intel -exclude 0x3FC00 0x3FC04 \
_build/hiro_s110_$(VERSION).hex -intel \
-generate 0x3FC00 0x3FC04 -const-le 0x01 4 \
-output bulk-program/$(PROJECT_NAME)-combined-$(VERSION).hex -intel
ln bulk-program/$(PROJECT_NAME)-combined-$(VERSION).hex bulk-program/$(PROJECT_NAME)-combined.hex
# combined: rebuild
# srec_cat \
# softdevice/softdevice.hex -intel \
# _build/$(PROJECT_NAME)_$(USE_SOFTDEVICE)_$(VERSION).hex -intel \
# -output bulk-program/combined.hex -intel
# ln -s bulk-program/combined.hex bulk-program/$(PROJECT_NAME)-$(VERSION)-combined.hex
ifeq ($(OS),Windows_NT)
include $(TEMPLATE_PATH)Makefile.windows
else
include $(TEMPLATE_PATH)Makefile.posix
endif
$(HEX): $(OBJS) $(OBJS_AS)
$(LD) $(LDFLAGS) $(OBJS_AS) $(OBJS) -o $(ELF)
$(OBJCOPY) -Oihex $(ELF) $(HEX)
$(OBJCOPY) -Obinary $(ELF) $(BIN)
$(SIZE) $(ELF)
size: $(ELF)
$(SIZE) $(ELF)
$(OUTPUT_PATH)%.o: %.c
$(MAKE_BUILD_FOLDER)
$(CC) $(LDFLAGS) $(CFLAGS) $< -o $@
$(OUTPUT_PATH)%.os: %.s
$(MAKE_BUILD_FOLDER)
$(AS) $< -o $@
-include $(DEPS)
.PHONY: all clean rebuild size