Statistics
| Branch: | Tag: | Revision:

amiro-os / modules / LightRing_1-2 / Makefile @ c7cd988c

History | View | Annotate | Download (9.39 KB)

1
################################################################################
2
# AMiRo-OS is an operating system designed for the Autonomous Mini Robot       #
3
# (AMiRo) platform.                                                            #
4
# Copyright (C) 2016..2019  Thomas Schöpping et al.                            #
5
#                                                                              #
6
# This program is free software: you can redistribute it and/or modify         #
7
# it under the terms of the GNU General Public License as published by         #
8
# the Free Software Foundation, either version 3 of the License, or            #
9
# (at your option) any later version.                                          #
10
#                                                                              #
11
# This program is distributed in the hope that it will be useful,              #
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of               #
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                #
14
# GNU General Public License for more details.                                 #
15
#                                                                              #
16
# You should have received a copy of the GNU General Public License            #
17
# along with this program.  If not, see <http://www.gnu.org/licenses/>.        #
18
#                                                                              #
19
# This research/work was supported by the Cluster of Excellence Cognitive      #
20
# Interaction Technology 'CITEC' (EXC 277) at Bielefeld University, which is   #
21
# funded by the German Research Foundation (DFG).                              #
22
################################################################################
23

    
24

    
25

    
26
################################################################################
27
# Build global options                                                         #
28
# NOTE: Can be overridden externally.                                          #
29
#                                                                              #
30

    
31
# Compiler options here.
32
ifeq ($(USE_OPT),)
33
  USE_OPT = -O2 -fstack-usage
34
endif
35

    
36
# C specific options here (added to USE_OPT).
37
ifeq ($(USE_COPT),)
38
  USE_COPT = -std=c17
39
endif
40

    
41
# C++ specific options here (added to USE_OPT).
42
ifeq ($(USE_CPPOPT),)
43
  USE_CPPOPT = -fno-rtti -std=c++17
44
endif
45

    
46
# Enable this if you want the linker to remove unused code and data.
47
ifeq ($(USE_LINK_GC),)
48
  USE_LINK_GC = yes
49
endif
50

    
51
# Linker extra options here.
52
ifeq ($(USE_LDOPT),)
53
  USE_LDOPT =
54
endif
55

    
56
# Enable this if you want link time optimizations (LTO).
57
ifeq ($(USE_LTO),)
58
  USE_LTO = yes
59
endif
60

    
61
# Enable this if you want to see the full log while compiling.
62
ifeq ($(USE_VERBOSE_COMPILE),)
63
  USE_VERBOSE_COMPILE = no
64
endif
65

    
66
# If enabled, this option makes the build process faster by not compiling
67
# modules not used in the current configuration.
68
ifeq ($(USE_SMART_BUILD),)
69
  USE_SMART_BUILD = no
70
endif
71

    
72
#                                                                              #
73
# Build global options                                                         #
74
################################################################################
75

    
76
################################################################################
77
# Architecture or project specific options                                     #
78
#                                                                              #
79

    
80
# Stack size to be allocated to the Cortex-M process stack. This stack is
81
# the stack used by the main() thread.
82
ifeq ($(USE_PROCESS_STACKSIZE),)
83
  USE_PROCESS_STACKSIZE = 0x400
84
endif
85

    
86
# Stack size to the allocated to the Cortex-M main/exceptions stack. This
87
# stack is used for processing interrupts and exceptions.
88
ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
89
  USE_EXCEPTIONS_STACKSIZE = 0x400
90
endif
91

    
92
# Enables the use of FPU.
93
# Possible selections are:
94
#   no     - no FPU is used (probably equals 'soft')
95
#   soft   - does not use the FPU, thus all floating point operations are emulated
96
#   softfp - uses the FPU, but uses the integer registers only
97
#   hard   - uses the FPU and passes data via the FPU registers
98
ifeq ($(USE_FPU),)
99
  USE_FPU = no
100
endif
101

    
102
# FPU-related options.
103
ifeq ($(USE_FPU_OPT),)
104
  USE_FPU_OPT = -mfloat-abi=$(USE_FPU) -mfpu=fpv4-sp-d16
105
endif
106

    
107
#                                                                              #
108
# Architecture or project specific options                                     #
109
################################################################################
110

    
111
################################################################################
112
# Project, target, sources and paths                                           #
113
#                                                                              #
114

    
115
# Absolute path to the project.
116
PROJECT_PATH := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))
117

    
118
# Project name.
119
PROJECT := $(notdir $(PROJECT_PATH))
120

    
121
# Target settings.
122
MCU := cortex-m3
123

    
124
# Module specific paths and directories.
125
MODULE_DIR := .
126
CONFIG_DIR := $(MODULEDIR)
127
ifeq ($(BUILDDIR),)
128
  BUILDDIR := $(PROJECT_PATH)/build
129
endif
130
DEPDIR := $(dir $(BUILDDIR)).dep
131

    
132
# Linker script.
133
LDSCRIPT = STM32F103xE.ld
134

    
135
# General AMiRo-OS files.
136
include ../../amiro-os.mk
137

    
138
# Module specific ChibiOS files.
139
include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk
140
include $(CHIBIOS)/os/hal/ports/STM32/STM32F1xx/platform.mk
141
include $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v7m.mk
142

    
143
# Module specific configuration
144
## select one (or none) of the following
145
#BOARD_BREAKOUT_MODULE := BOARD_BREAKOUT_NONE
146
#BOARD_BREAKOUT_MODULE := BOARD_BREAKOUT_UWBv10
147

    
148
# Module specific periphery LLDs.
149
include $(AMIROLLD)/drivers/AT24C01B/v1/alld_AT24C01B.mk
150
include $(AMIROLLD)/drivers/INA219/v1/alld_INA219.mk
151
include $(AMIROLLD)/drivers/LED/v1/alld_LED.mk
152
include $(AMIROLLD)/drivers/MIC9404x/v1/alld_MIC9404x.mk
153
include $(AMIROLLD)/drivers/TLC5947/v1/alld_TLC5947.mk
154
ifeq ($(BOARD_BREAKOUT_MODULE), BOARD_BREAKOUT_UWBv10)
155
  include $(AMIROLLD)/drivers/DW1000/v2/alld_DW1000.mk
156
else ifeq ($(BOARD_BREAKOUT_MODULE),)
157
  include $(AMIROLLD)/drivers/DW1000/v2/alld_DW1000.mk
158
endif
159

    
160
# Module specific inclusion directories
161
MODULE_INC = $(MODULE_DIR)
162

    
163
# Module specific C source files.
164
MODULE_CSRC = $(MODULE_DIR)/board.c \
165
              $(MODULE_DIR)/module.c
166

    
167
# Module specific tests.
168
include $(MODULE_DIR)/test/AT24C01B/module_test_AT24C01B.mk
169
include $(MODULE_DIR)/test/INA219/module_test_INA219.mk
170
include $(MODULE_DIR)/test/LED/module_test_LED.mk
171
include $(MODULE_DIR)/test/MIC9404x/module_test_MIC9404x.mk
172
include $(MODULE_DIR)/test/TLC5947/module_test_TLC5947.mk
173
ifeq ($(BOARD_BREAKOUT_MODULE), BOARD_BREAKOUT_UWBv10)
174
  include $(MODULE_DIR)/test/DW1000/module_test_DW1000.mk
175
else ifeq ($(BOARD_BREAKOUT_MODULE),)
176
  include $(MODULE_DIR)/test/DW1000/module_test_DW1000.mk
177
endif
178

    
179
# C warning options.
180
CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes
181

    
182
# C++ warning options.
183
CPPWARN = -Wall -Wextra -Wundef
184

    
185
# Create an additional .srec image file.
186
SREC = $(CP) -O srec --srec-len=248
187

    
188
#                                                                              #
189
# Project, target, sources and paths                                           #
190
################################################################################
191

    
192
################################################################################
193
# Start of user section                                                        #
194
#                                                                              #
195

    
196
# List all user C define here, like -D_DEBUG=1
197
ifneq ($(BOARD_SENSORRING),)
198
  UDEFS += -DBOARD_BREAKOUT_MODULE=$(BOARD_BREAKOUT_MODULE)
199
endif
200
UDEFS +=
201

    
202
# Define ASM defines here
203
UADEFS +=
204

    
205
# List all user directories here
206
UINCDIR +=
207

    
208
# List the user directory to look for the libraries here
209
ULIBDIR +=
210

    
211
# List all user libraries here
212
ULIBS +=
213

    
214
#                                                                              #
215
# End of user section                                                          #
216
################################################################################
217

    
218
################################################################################
219
# Common rules                                                                 #
220
#                                                                              #
221

    
222
RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk
223
include $(RULESPATH)/arm-none-eabi.mk
224
include $(RULESPATH)/rules.mk
225

    
226
#                                                                              #
227
# Common rules                                                                 #
228
################################################################################
229

    
230
################################################################################
231
# Custom rules                                                                 #
232
#                                                                              #
233

    
234
FLASH_MODULES = $(PROJECT)
235
FLASH_FILES = $(BUILDDIR)/$(PROJECT).$(FLASHTOOL_EXT)
236

    
237
flash: $(FLASH_FILES)
238
	$(info )
239
ifeq ($(FLASHTOOL),SerialBoot)
240
	$(info Flashing ($(FLASHTOOL)):)
241
	$(FLASHTOOL_CMD) $(FLASHTOOL_ARGS)
242
else
243
	$(info ERROR: unable to flash the module (SerialBoot unavailable))
244
endif
245

    
246
#                                                                              #
247
# Custom rules                                                                 #
248
################################################################################
249