Wirepas SDK
makefile_app.mk
Go to the documentation of this file.
1include makefile_common.mk
2
3.DEFAULT_GOAL := all
4
5# Linker script
6ifndef MCU_RAM_VAR
7LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_app_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR).ld
8else
9LDSCRIPT = $(MCU_PATH)$(MCU_FAMILY)/$(MCU)/linker/gcc_app_$(MCU)$(MCU_SUB)$(MCU_MEM_VAR)_$(MCU_RAM_VAR).ld
10endif
11
12LIBS :=
13
14ifeq ($(filter $(TARGET_BOARDS),$(target_board)),)
15 $(error Board $(target_board) is not in supported board list: ($(TARGET_BOARDS)))
16endif
17
18# File to store app version
19VERSION_FILE := $(BUILDPREFIX_APP)version.txt
20
21# App different formats
22APP_ELF := $(BUILDPREFIX_APP)$(APP_NAME).elf
23
24# For backward compatibility as app makefile except SRCS_PATH variable
25SRCS_PATH := $(APP_SRCS_PATH)
26
27# Convert default network settings to CFLAGS to be used in code
28ifneq ($(default_network_address),)
29CFLAGS += -DNETWORK_ADDRESS=$(default_network_address)
30endif
31ifneq ($(default_network_channel),)
32CFLAGS += -DNETWORK_CHANNEL=$(default_network_channel)
33endif
34ifneq ($(default_network_cipher_key),)
35CFLAGS += -DNET_CIPHER_KEY=$(default_network_cipher_key)
36endif
37ifneq ($(default_network_authen_key),)
38CFLAGS += -DNET_AUTHEN_KEY=$(default_network_authen_key)
39endif
40# And version numbers
41CFLAGS += -DVER_MAJOR=$(app_major) -DVER_MINOR=$(app_minor) -DVER_MAINT=$(app_maintenance) -DVER_DEV=$(app_development)
42
43# Mac profile
44ifeq ("$(mac_profile)","ism_24_ghz")
45 CFLAGS += -DMAC_PROFILE_ISM24
46else ifeq ("$(mac_profile)","subg")
47 CFLAGS += -DMAC_PROFILE_SUBG
48else
49 CFLAGS += -DMAC_PROFILE_DECTNR
50endif
51
52# Include board init part
53-include board/makefile
54
55# Include app specific makefile
56-include $(APP_SRCS_PATH)makefile
57
58
59# Include Libraries config first (dependencies)
60-include $(WP_LIB_PATH)config.mk
61
62# Generic util functions are needed for all apps (api.c)
63-include $(UTIL_PATH)makefile
64
65# Include libraries code
66-include $(WP_LIB_PATH)makefile
67INCLUDES += -I$(WP_LIB_PATH)
68
69# Include MCU config first
70-include $(MCU_PATH)config.mk
71
72# Include MCU HAL drivers code
73-include $(HAL_API_PATH)makefile
74
75# Include common MCU sources
76include $(MCU_PATH)common/makefile
77
78#
79# Sources & includes paths
80#
81SRCS += $(APP_SRCS_PATH)app.c
82INCLUDES += -I$(API_PATH) -I$(APP_SRCS_PATH)include -I$(UTIL_PATH)
83
84# Objects list
85OBJS_ = $(SRCS:.c=.o) $(ASM_SRCS:.s=.o)
86OBJS = $(addprefix $(BUILDPREFIX_APP), $(OBJS_))
87
88# Dependent list
89DEPS_ = $(SRCS:.c=.d)
90DEPS = $(addprefix $(BUILDPREFIX_APP), $(DEPS_))
91
92
93# Files to be cleaned
94CLEAN := $(OBJS) $(APP_ELF) $(APP_HEX) $(DEPS)
95
96$(BUILDPREFIX_APP)%.o : %.c $(APP_SRCS_PATH)makefile $(APP_CONFIG) $(BOARD_CONFIG) $(MCU_CONFIG)
97 $(DD)$(MKDIR) $(@D)
98 @echo "$(COLOR_CC)CC$(COLOR_END) $<"
99 $(D)$(CC) $(INCLUDES) $(CFLAGS) -MMD -MP -c $< -o $@
100
101$(BUILDPREFIX_APP)%.o : %.s
102 $(DD)$(MKDIR) $(@D)
103 @echo "$(COLOR_CC)CC$(COLOR_END) $<"
104 $(D)$(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
105
106
107$(APP_ELF): $(OBJS) $(LIBS)
108 @echo "$(COLOR_LINK)Linking$(COLOR_END) $@"
109 $(D)$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ \
110 -Wl,-Map=$(BUILDPREFIX_APP)$(APP_NAME).map \
111 -Wl,-T,$(LDSCRIPT),--print-memory-usage $(LIBS)
112
113
114$(APP_HEX): $(APP_ELF)
115 @echo "$(COLOR_DETAILS)CFLAGS are:\n $(CFLAGS)$(COLOR_END)"
116 @echo "$(COLOR_DETAILS)LDFLAGS are:\n $(LDFLAGS)$(COLOR_END)"
117 @echo "$(COLOR_INFO)Generating:$(COLOR_END) $@"
118 $(D)@$(OBJCOPY) $< -O ihex $@
119
120.PHONY: $(VERSION_FILE)
121$(VERSION_FILE):
122 @echo "app_version=$(app_major).$(app_minor).$(app_maintenance).$(app_development)" > $(@)
123 @echo "sha1=$(shell git log -1 --pretty=format:"%h")" >> $(@)
124
125.PHONY: all
126all: $(APP_HEX) $(VERSION_FILE)
127
128clean:
129 $(D)$(RM) -rf $(CLEAN)
130
131-include $(DEPS)