PROJECT_NAME     := mesh_beacon
TARGETS          := $(PROJECT_NAME)
OUTPUT_DIRECTORY := _build

SDK_ROOT := ../../nRF5_SDK_12.1.0
SDK_MESH_ROOT := ../../nrf5_SDK_for_Mesh_v0.9.2-Alpha
PROJ_DIR := .

$(OUTPUT_DIRECTORY)/$(PROJECT_NAME).out: \
  LINKER_SCRIPT  := linker.ld
# Source files common to all targets
SRC_FILES += \
	$(PROJ_DIR)/main.c \
	$(SDK_MESH_ROOT)/examples/hal/src/simple_hal.c \
	$(SDK_MESH_ROOT)/examples/models/simple_on_off/src/simple_on_off_server.c \
	$(SDK_MESH_ROOT)/mesh/src/access/access.c \
	$(SDK_MESH_ROOT)/mesh/src/access/nrf_mesh_node_config.c \
	$(SDK_MESH_ROOT)/mesh/src/core/log.c \
	$(SDK_MESH_ROOT)/mesh/src/core/nrf_mesh.c \

# Include folders common to all targets
INC_FOLDERS += \
	$(PROJ_DIR) \
	$(SDK_MESH_ROOT)/examples/hal/include \
	$(SDK_MESH_ROOT)/examples/models/simple_on_off/include \
	$(SDK_MESH_ROOT)/examples \
	$(SDK_MESH_ROOT)/mesh/include/dfu \
	$(SDK_MESH_ROOT)/mesh/include/prov \
	$(SDK_MESH_ROOT)/lib/rtt/include \
	$(SDK_MESH_ROOT)/lib/softdevice/s130/headers \
	$(SDK_MESH_ROOT)/mesh/api \
	$(SDK_MESH_ROOT)/mesh/include/access \
	$(SDK_MESH_ROOT)/mesh/include/core \
	$(SDK_MESH_ROOT)/mesh/models/config/include \
	$(SDK_MESH_ROOT)/toolchain/device \
	$(SDK_MESH_ROOT)/toolchain/cmsis/include \
	$(SDK_MESH_ROOT)/toolchain \

# Libraries common to all targets
LIB_FILES += \

# C flags common to all targets
CFLAGS += \
	-DNRF51 \
	-DNRF51422 \
	-DS130 \
	-DSWI_DISABLE0 \
	-DBOARD_PCA10028 \
	-DBSP_DEFINES_ONLY \
	-mcpu=cortex-m0 \
	-mthumb -mabi=aapcs \
	-Wall -Werror -O3 -g3 \
	-mfloat-abi=soft \
	-ffunction-sections -fdata-sections -fno-strict-aliasing \
	-fno-builtin --short-enums \
	-MP -MD \
	-Wno-format \

# C++ flags common to all targets
CXXFLAGS += \

# Assembler flags common to all targets
ASMFLAGS += \
	-x assembler-with-cpp \
	-DNRF51 \
	-DNRF51422 \
	-DS130 \
	-DSWI_DISABLE0 \
	-DBOARD_PCA10028 \
	-DBSP_DEFINES_ONLY \

# Linker flags
LDFLAGS += \
	-mthumb -mabi=aapcs -L $(TEMPLATE_PATH) -T$(LINKER_SCRIPT) \
	-mcpu=cortex-m0 \
	-Wl,--gc-sections \
	--specs=nano.specs -lc -lnosys \



.PHONY: $(TARGETS) default all clean help flash
# Default target - first one defined
default: $(PROJECT_NAME)

# Print all targets that can be built
help:
	@echo following targets are available:
	@echo 	$(PROJECT_NAME)

TEMPLATE_PATH := $(SDK_ROOT)/components/toolchain/gcc

include $(TEMPLATE_PATH)/Makefile.common
$(foreach target, $(TARGETS), $(call define_target, $(target)))
-include $(foreach target, $(TARGETS), $($(target)_dependencies))

# Flash the program
flash: $(OUTPUT_DIRECTORY)/$(PROJECT_NAME).hex
	@echo Flashing: $<
	@nrfjprog --program $< -f nrf51 --chiperase
	@nrfjprog --reset -f nrf51
