-
-
Save rifatmahmud/6b41accfbb1bd5a2e853 to your computer and use it in GitHub Desktop.
Modified makefile of BLE_Gateway example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#------------------------------------------------------------------------------ | |
# Firmware build | |
# | |
# Selectable build options | |
#------------------------------------------------------------------------------ | |
#TARGET_BOARD ?= BOARD_PCA10000 | |
#TARGET_BOARD ?= BOARD_PCA10001 | |
TARGET_BOARD ?= BOARD_PCA10028 | |
#TARGET_BOARD ?= BOARD_PCA10031 | |
USE_RBC_MESH_SERIAL ?= "no" | |
USE_BUTTONS ?= "no" | |
#------------------------------------------------------------------------------ | |
# Define relative paths to SDK components | |
#------------------------------------------------------------------------------ | |
SDK_BASE := ../../../../../.. | |
COMPONENTS := $(SDK_BASE)/components | |
TEMPLATE_PATH := $(COMPONENTS)/toolchain/gcc | |
LINKER_SCRIPT := ./gcc_nrf51_s110_xxaa.ld | |
ifeq ($(USE_BUTTONS), "yes") | |
BUTTON_STRING="_buttons" | |
else | |
BUTTON_STRING="" | |
endif | |
ifeq ($(USE_RBC_MESH_SERIAL), "yes") | |
SERIAL_STRING="_serial" | |
else | |
SERIAL_STRING="" | |
endif | |
OUTPUT_NAME := rbc_gatt$(BUTTON_STRING)$(SERIAL_STRING)_$(TARGET_BOARD) | |
#------------------------------------------------------------------------------ | |
# Proceed cautiously beyond this point. Little should change. | |
#------------------------------------------------------------------------------ | |
export OUTPUT_NAME | |
export GNU_INSTALL_ROOT | |
MAKEFILE_NAME := $(MAKEFILE_LIST) | |
MAKEFILE_DIR := $(dir $(MAKEFILE_NAME) ) | |
ifeq ($(OS),Windows_NT) | |
include $(TEMPLATE_PATH)/Makefile.windows | |
else | |
include $(TEMPLATE_PATH)/Makefile.posix | |
endif | |
# echo suspend | |
ifeq ("$(VERBOSE)","1") | |
NO_ECHO := | |
else | |
NO_ECHO := @ | |
endif | |
ifeq ($(MAKECMDGOALS),debug) | |
BUILD_TYPE := debug | |
else | |
BUILD_TYPE := release | |
endif | |
# Toolchain commands | |
CC := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-gcc" | |
AS := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-as" | |
AR := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-ar" -r | |
LD := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-ld" | |
NM := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-nm" | |
OBJDUMP := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objdump" | |
OBJCOPY := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-objcopy" | |
SIZE := "$(GNU_INSTALL_ROOT)/bin/$(GNU_PREFIX)-size" | |
MK := mkdir | |
RM := rm -rf | |
CP := cp | |
# function for removing duplicates in a list | |
remduplicates = $(strip $(if $1,$(firstword $1) $(call remduplicates,$(filter-out $(firstword $1),$1)))) | |
# source common to all targets | |
C_SOURCE_FILES += ../main.c | |
C_SOURCE_FILES += ../led_config.c | |
C_SOURCE_FILES += ../nrf_adv_conn.c | |
ifeq ($(USE_RBC_MESH_SERIAL), "yes") | |
CFLAGS += -D RBC_MESH_SERIAL=1 | |
C_SOURCE_FILES += ../../../rbc_mesh/src/serial_handler.c | |
C_SOURCE_FILES += $(COMPONENTS)/drivers_nrf/spi_slave/spi_slave.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/mesh_aci.c | |
endif | |
ifeq ($(USE_BUTTONS), "yes") | |
CFLAGS += -D BUTTONS=1 | |
endif | |
C_SOURCE_FILES += ../../../rbc_mesh/src/radio_control.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/rbc_mesh.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/timer_control.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/timeslot_handler.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/trickle.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/mesh_srv.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/transport_control.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/fifo.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/event_handler.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/version_handler.c | |
C_SOURCE_FILES += ../../../rbc_mesh/src/mesh_packet.c | |
C_SOURCE_FILES += ../../../../../../components/libraries/util/app_error.c | |
C_SOURCE_FILES += ../../../../../../components/libraries/fifo/app_fifo.c | |
C_SOURCE_FILES += ../../../../../../components/libraries/util/app_util_platform.c | |
C_SOURCE_FILES += ../../../../../../components/libraries/util/nrf_assert.c | |
C_SOURCE_FILES += ../../../../../../components/libraries/uart/retarget.c | |
C_SOURCE_FILES += ../../../../../../components/drivers_nrf/uart/app_uart_fifo.c | |
C_SOURCE_FILES += ../../../../../../components/drivers_nrf/hal/nrf_delay.c | |
C_SOURCE_FILES += ../../../../../../components/drivers_nrf/common/nrf_drv_common.c | |
C_SOURCE_FILES += ../../../../../../components/drivers_nrf/gpiote/nrf_drv_gpiote.c | |
C_SOURCE_FILES += $(COMPONENTS)/ble/common/ble_advdata.c | |
C_SOURCE_FILES += $(COMPONENTS)/softdevice/common/softdevice_handler/softdevice_handler.c | |
C_SOURCE_FILES += $(COMPONENTS)/toolchain/system_nrf51.c | |
# assembly files common to all targets | |
ASM_SOURCE_FILES += $(COMPONENTS)/toolchain/gcc/gcc_startup_nrf51.s | |
# includes common to all targets | |
INC_PATHS += -I../include | |
INC_PATHS += -I../../../rbc_mesh | |
INC_PATHS += -I../../../rbc_mesh/include | |
INC_PATHS += -I../../../SDK/bsp | |
INC_PATHS += -I$(COMPONENTS)/softdevice/s110/headers | |
INC_PATHS += -I$(COMPONENTS)/softdevice/common/softdevice_handler | |
INC_PATHS += -I$(COMPONENTS)/toolchain/gcc | |
INC_PATHS += -I$(COMPONENTS)/libraries/util | |
INC_PATHS += -I$(COMPONENTS)/ble/common | |
INC_PATHS += -I$(COMPONENTS)/drivers_nrf/hal | |
INC_PATHS += -I$(COMPONENTS)/drivers_nrf/spi_slave | |
INC_PATHS += -I$(COMPONENTS)/toolchain/gcc | |
INC_PATHS += -I$(COMPONENTS)/toolchain | |
INC_PATHS += -I$(COMPONENTS)/device | |
INC_PATHS += -I$(COMPONENTS)/softdevice/s110/headers | |
INC_PATHS += -I$(COMPONENTS)/drivers_nrf/hal | |
INC_PATHS += -I../../../../../../components/drivers_nrf/config | |
INC_PATHS += -I../../../../../../components/libraries/fifo | |
INC_PATHS += -I../../../../../../components/drivers_nrf/gpiote | |
INC_PATHS += -I../../../../../../components/drivers_nrf/uart | |
INC_PATHS += -I../../../../../../components/drivers_nrf/common | |
INC_PATHS += -I../../../../../../components/drivers_nrf/nrf_soc_nosd | |
OBJECT_DIRECTORY = _build | |
LISTING_DIRECTORY = $(OBJECT_DIRECTORY) | |
OUTPUT_BINARY_DIRECTORY = $(OBJECT_DIRECTORY) | |
# Sorting removes duplicates | |
BUILD_DIRECTORIES := $(sort $(OBJECT_DIRECTORY) $(OUTPUT_BINARY_DIRECTORY) $(LISTING_DIRECTORY) ) | |
ifeq ($(BUILD_TYPE),debug) | |
DEBUG_FLAGS += -D DEBUG -g -O0 | |
else | |
DEBUG_FLAGS += -D NDEBUG -O3 | |
endif | |
# flags common to all targets | |
#CFLAGS += -save-temps | |
CFLAGS += $(DEBUG_FLAGS) | |
CFLAGS += -D NRF51 | |
CFLAGS += -D BLE_STACK_SUPPORT_REQD | |
CFLAGS += -D S110 | |
CFLAGS += -D SOFTDEVICE_PRESENT | |
CFLAGS += -D $(TARGET_BOARD) | |
CFLAGS += -mcpu=cortex-m0 | |
CFLAGS += -mthumb -mabi=aapcs --std=gnu99 | |
CFLAGS += -Wall | |
CFLAGS += -Wa,-adhln | |
CFLAGS += -mfloat-abi=soft | |
CFLAGS += -ffunction-sections | |
CFLAGS += -fdata-sections -fno-strict-aliasing | |
CFLAGS += -fno-builtin | |
# Linker flags | |
LDFLAGS += -Xlinker -Map=$(LISTING_DIRECTORY)/$(OUTPUT_NAME).map | |
LDFLAGS += -mthumb -mabi=aapcs -L $(TEMPLATE_PATH) -T$(LINKER_SCRIPT) | |
LDFLAGS += -mcpu=cortex-m0 | |
LDFLAGS += $(DEBUG_FLAGS) | |
LDFLAGS += -Wl,--gc-sections | |
LDFLAGS += --specs=nano.specs -lc -lnosys | |
# Assembler flags | |
ASMFLAGS += $(DEBUG_FLAGS) | |
ASMFLAGS += -x assembler-with-cpp | |
ASMFLAGS += -D NRF51 | |
ASMFLAGS += -D BLE_STACK_SUPPORT_REQD | |
ASMFLAGS += -D S110 | |
ASMFLAGS += -D SOFTDEVICE_PRESENT | |
ASMFLAGS += -D $(TARGET_BOARD) | |
C_SOURCE_FILE_NAMES = $(notdir $(C_SOURCE_FILES)) | |
C_PATHS = $(call remduplicates, $(dir $(C_SOURCE_FILES) ) ) | |
C_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(C_SOURCE_FILE_NAMES:.c=.o) ) | |
ASM_SOURCE_FILE_NAMES = $(notdir $(ASM_SOURCE_FILES)) | |
ASM_PATHS = $(call remduplicates, $(dir $(ASM_SOURCE_FILES) )) | |
ASM_OBJECTS = $(addprefix $(OBJECT_DIRECTORY)/, $(ASM_SOURCE_FILE_NAMES:.s=.o) ) | |
TOOLCHAIN_BASE = $(basename $(notdir $(GNU_INSTALL_ROOT))) | |
TIMESTAMP := $(shell date +'%s') | |
vpath %.c $(C_PATHS) | |
vpath %.s $(ASM_PATHS) | |
OBJECTS = $(C_OBJECTS) $(ASM_OBJECTS) | |
all: $(BUILD_DIRECTORIES) $(OBJECTS) | |
@echo Linking target: $(OUTPUT_NAME).elf | |
$(NO_ECHO)$(CC) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf | |
$(NO_ECHO)$(MAKE) -f $(MAKEFILE_NAME) -C $(MAKEFILE_DIR) -e finalize | |
@echo "*****************************************************" | |
@echo "build project: $(OUTPUT_NAME)" | |
@echo "build type: $(BUILD_TYPE)" | |
@echo "build with: $(TOOLCHAIN_BASE)" | |
@echo "build target: $(TARGET_BOARD)" | |
@echo "build options --" | |
@echo " USE_RBC_MESH_SERIAL $(USE_RBC_MESH_SERIAL)" | |
@echo " USE_BUTTONS $(USE_BUTTONS)" | |
@echo "build products --" | |
@echo " $(OUTPUT_NAME).elf" | |
@echo " $(OUTPUT_NAME).hex" | |
@echo "*****************************************************" | |
debug : all | |
release : all | |
# Create build directories | |
$(BUILD_DIRECTORIES): | |
echo $(MAKEFILE_NAME) | |
$(MK) $@ | |
# Create objects from C SRC files | |
$(OBJECT_DIRECTORY)/%.o: %.c | |
@echo Compiling file: $(notdir $<) | |
$(NO_ECHO)$(CC) $(CFLAGS) $(INC_PATHS) \ | |
-c $< -o $@ > $(OUTPUT_BINARY_DIRECTORY)/$*.lst | |
# Assemble files | |
$(OBJECT_DIRECTORY)/%.o: %.s | |
@echo Compiling file: $(notdir $<) | |
$(NO_ECHO)$(CC) $(ASMFLAGS) $(INC_PATHS) -c -o $@ $< | |
# Link | |
$(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf: $(BUILD_DIRECTORIES) $(OBJECTS) | |
@echo Linking target: $(OUTPUT_NAME).elf | |
$(NO_ECHO)$(CC) $(LDFLAGS) $(OBJECTS) $(LIBS) -o $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf | |
# Create binary .bin file from the .elf file | |
$(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).bin: $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf | |
@echo Preparing: $(OUTPUT_NAME).bin | |
$(NO_ECHO)$(OBJCOPY) -O binary $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).bin | |
# Create binary .hex file from the .elf file | |
$(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).hex: $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf | |
@echo Preparing: $(OUTPUT_NAME).hex | |
$(NO_ECHO)$(OBJCOPY) -O ihex $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).hex | |
finalize: genbin genhex echosize | |
genbin: | |
@echo Preparing: $(OUTPUT_NAME).bin | |
$(NO_ECHO)$(OBJCOPY) -O binary $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).bin | |
# Create binary .hex file from the .elf file | |
genhex: | |
@echo Preparing: $(OUTPUT_NAME).hex | |
$(NO_ECHO)$(OBJCOPY) -O ihex $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).hex | |
echosize: | |
-@echo "" | |
$(NO_ECHO)$(SIZE) $(OUTPUT_BINARY_DIRECTORY)/$(OUTPUT_NAME).elf | |
-@echo "" | |
clean: | |
$(RM) $(BUILD_DIRECTORIES) | |
cleanobj: | |
$(RM) $(BUILD_DIRECTORIES)/*.o | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment