Statistics
| Branch: | Tag: | Revision:

amiro-os / modules / LightRing_1-0 / Makefile @ 3cb82b1a

History | View | Annotate | Download (11.5 KB)

1 e545e620 Thomas Schöpping
################################################################################
2
# AMiRo-OS is an operating system designed for the Autonomous Mini Robot       #
3
# (AMiRo) platform.                                                            #
4 84f0ce9e Thomas Schöpping
# Copyright (C) 2016..2019  Thomas Schöpping et al.                            #
5 e545e620 Thomas Schöpping
#                                                                              #
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 -fomit-frame-pointer -falign-functions=16 -fstack-usage
34
endif
35
36
# C specific options here (added to USE_OPT).
37
ifeq ($(USE_COPT),)
38 691a0632 Thomas Schöpping
  USE_COPT = -std=c17
39 e545e620 Thomas Schöpping
endif
40
41
# C++ specific options here (added to USE_OPT).
42
ifeq ($(USE_CPPOPT),)
43 870f74ac Thomas Schöpping
  USE_CPPOPT = -fno-rtti -std=c++17
44 e545e620 Thomas Schöpping
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
# If enabled, this option allows to compile the application in THUMB mode.
62
ifeq ($(USE_THUMB),)
63
  USE_THUMB = yes
64
endif
65
66
# Enable this if you want to see the full log while compiling.
67
ifeq ($(USE_VERBOSE_COMPILE),)
68
  USE_VERBOSE_COMPILE = no
69
endif
70
71
# If enabled, this option makes the build process faster by not compiling
72
# modules not used in the current configuration.
73
ifeq ($(USE_SMART_BUILD),)
74 043cdf33 Thomas Schöpping
  USE_SMART_BUILD = no
75 e545e620 Thomas Schöpping
endif
76
77
#                                                                              #
78
# Build global options                                                         #
79
################################################################################
80
81
################################################################################
82
# Architecture or project specific options                                     #
83
#                                                                              #
84
85
# Stack size to be allocated to the Cortex-M process stack. This stack is
86
# the stack used by the main() thread.
87
ifeq ($(USE_PROCESS_STACKSIZE),)
88
  USE_PROCESS_STACKSIZE = 0x400
89
endif
90
91
# Stack size to the allocated to the Cortex-M main/exceptions stack. This
92
# stack is used for processing interrupts and exceptions.
93
ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
94
  USE_EXCEPTIONS_STACKSIZE = 0x400
95
endif
96
97
# Enables the use of FPU on Cortex-M4.
98
# Possible selections are:
99 9e75cdad Thomas Schöpping
#   no     - no FPU is used (probably equals 'soft')
100 e545e620 Thomas Schöpping
#   soft   - does not use the FPU, thus all floating point operations are emulated
101
#   softfp - uses the FPU, but uses the integer registers only
102
#   hard   - uses the FPU and passes data via the FPU registers
103
ifeq ($(USE_FPU),)
104
  USE_FPU = no
105
endif
106
107
#                                                                              #
108
# Architecture or project specific options                                     #
109
################################################################################
110
111
################################################################################
112
# Project, sources and paths                                                   #
113
#                                                                              #
114
115
# Define project name here
116
PROJECT := $(patsubst $(abspath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))..)/%,%,$(abspath $(dir $(abspath $(lastword $(MAKEFILE_LIST))))))
117
118
# Imported source files and paths
119 a7e67622 Thomas Schöpping
include ../../kernel/kernel.mk
120 e545e620 Thomas Schöpping
CHIBIOS := $(AMIROOS_KERNEL)
121 9f224ade Thomas Schöpping
AMIROOS = ../..
122 f39a7138 Thomas Schöpping
# Licensing files
123
include $(CHIBIOS)/os/license/license.mk
124 e545e620 Thomas Schöpping
# Startup files
125
include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk
126
# HAL-OSAL files
127
include $(CHIBIOS)/os/hal/hal.mk
128
include $(CHIBIOS)/os/hal/ports/STM32/STM32F1xx/platform.mk
129
include $(CHIBIOS)/os/hal/osal/rt/osal.mk
130
# RTOS files
131
include $(CHIBIOS)/os/rt/rt.mk
132
include $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v7m.mk
133
# Other files (optional).
134 0128be0f Marc Rothmann
include $(CHIBIOS)/test/lib/test.mk
135
include $(CHIBIOS)/test/rt/rt_test.mk
136 f39a7138 Thomas Schöpping
include $(CHIBIOS)/test/oslib/oslib_test.mk
137 e545e620 Thomas Schöpping
# AMiRo-BLT files
138 a7e67622 Thomas Schöpping
include ../../bootloader/bootloader.mk
139 e545e620 Thomas Schöpping
# AMiRo-LLD files
140 a7e67622 Thomas Schöpping
include ../../periphery-lld/periphery-lld.mk
141 e545e620 Thomas Schöpping
# AMiRo-OS files
142 a7e67622 Thomas Schöpping
include ../modules.mk
143 e545e620 Thomas Schöpping
include $(AMIROOS)/core/core.mk
144
include $(AMIROOS)/unittests/unittests.mk
145
146
# Define linker script file here
147 bf15b7d9 Thomas Schöpping
LDSCRIPT= STM32F103xE.ld
148 e545e620 Thomas Schöpping
149
# C sources that can be compiled in ARM or THUMB mode depending on the global
150
# setting.
151 f39a7138 Thomas Schöpping
CSRC = $(LICSRC) \
152
       $(STARTUPSRC) \
153 e545e620 Thomas Schöpping
       $(KERNSRC) \
154
       $(PORTSRC) \
155
       $(OSALSRC) \
156
       $(HALSRC) \
157
       $(PLATFORMSRC) \
158
       $(MODULESCSRC) \
159
       $(TESTSRC) \
160
       $(PERIPHERYLLDCSRC) \
161
       $(AMIROOSCORECSRC) \
162
       $(UNITTESTSCSRC) \
163
       $(CHIBIOS)/os/various/evtimer.c \
164
       $(CHIBIOS)/os/various/syscalls.c \
165
       $(CHIBIOS)/os/hal/lib/streams/chprintf.c \
166 bf15b7d9 Thomas Schöpping
       board.c \
167 e545e620 Thomas Schöpping
       module.c \
168 9e75cdad Thomas Schöpping
       $(APPSCSRC)
169 e545e620 Thomas Schöpping
170
# C++ sources that can be compiled in ARM or THUMB mode depending on the global
171
# setting.
172 b2053cb5 Thomas Schöpping
CPPSRC = $(AMIROOSCORECPPSRC) \
173 f1f56ad4 Thomas Schöpping
         $(CHIBIOS)/os/various/cpp_wrappers/syscalls_cpp.cpp \
174 b2053cb5 Thomas Schöpping
         $(APPSCPPSRC)
175 e545e620 Thomas Schöpping
176
# C sources to be compiled in ARM mode regardless of the global setting.
177
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
178
#       option that results in lower performance and larger code size.
179 756ef2f6 Thomas Schöpping
ACSRC = $(APPSACSRC)
180 e545e620 Thomas Schöpping
181
# C++ sources to be compiled in ARM mode regardless of the global setting.
182
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
183
#       option that results in lower performance and larger code size.
184 756ef2f6 Thomas Schöpping
ACPPSRC = $(APPSACPPSRC)
185 e545e620 Thomas Schöpping
186
# C sources to be compiled in THUMB mode regardless of the global setting.
187
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
188
#       option that results in lower performance and larger code size.
189 756ef2f6 Thomas Schöpping
TCSRC = $(APPSTCSRC)
190 e545e620 Thomas Schöpping
191
# C sources to be compiled in THUMB mode regardless of the global setting.
192
# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
193
#       option that results in lower performance and larger code size.
194 756ef2f6 Thomas Schöpping
TCPPSRC = $(APPSTCPPSRC)
195 e545e620 Thomas Schöpping
196
# List ASM source files here
197 756ef2f6 Thomas Schöpping
ASMSRC = $(APPSASMSRC)
198 e545e620 Thomas Schöpping
ASMXSRC = $(STARTUPASM) \
199
          $(PORTASM) \
200 756ef2f6 Thomas Schöpping
          $(OSALASM) \
201
          $(APPSASMXSRC)
202 e545e620 Thomas Schöpping
203 f39a7138 Thomas Schöpping
INCDIR = $(LICINC) \
204 e545e620 Thomas Schöpping
         $(STARTUPINC) \
205
         $(KERNINC) \
206
         $(PORTINC) \
207
         $(OSALINC) \
208
         $(HALINC) \
209
         $(PLATFORMINC) \
210
         $(MODULESINC) \
211
         $(TESTINC) \
212
         $(BOOTLOADERINC) \
213
         $(CHIBIOS)/os/hal/lib/streams \
214
         $(PERIPHERYLLDINC) \
215
         $(AMIROOS) \
216
         $(AMIROOSCOREINC) \
217
         $(UNITTESTSINC) \
218 9e75cdad Thomas Schöpping
         $(APPSINC)
219 e545e620 Thomas Schöpping
220
#                                                                              #
221
# Project, sources and paths                                                   #
222
################################################################################
223
224
################################################################################
225
# Compiler settings                                                            #
226
# NOTE: Some can be overridden externally.                                     #
227
#                                                                              #
228
229
MCU  = cortex-m3
230
231
#TRGT = arm-elf-
232
TRGT = arm-none-eabi-
233
CC   = $(TRGT)gcc
234
CPPC = $(TRGT)g++
235
# Enable loading with g++ only if you need C++ runtime support.
236
# NOTE: You can use C++ even without C++ support if you are careful. C++
237
#       runtime support makes code size explode.
238
LD   = $(TRGT)gcc
239
#LD   = $(TRGT)g++
240
CP   = $(TRGT)objcopy
241
AS   = $(TRGT)gcc -x assembler-with-cpp
242
AR   = $(TRGT)ar
243
OD   = $(TRGT)objdump
244
SZ   = $(TRGT)size
245
HEX  = $(CP) -O ihex
246
BIN  = $(CP) -O binary
247
SREC = $(CP) -O srec --srec-len=248
248
249
# ARM-specific options here
250
ifeq ($(AOPT),)
251
  AOPT =
252
endif
253
254
# THUMB-specific options here
255
ifeq ($(TOPT),)
256
  TOPT = -mthumb -DTHUMB
257
endif
258
259
# Define C warning options here
260
ifeq ($(CWARN),)
261
  CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes
262
endif
263
264
# Define C++ warning options here
265
ifeq ($(CPPWARN),)
266
  CPPWARN = -Wall -Wextra -Wundef
267
endif
268
269
#                                                                              #
270
# Compiler settings                                                            #
271
################################################################################
272
273
################################################################################
274
# Start of user section                                                        #
275
#                                                                              #
276
277
# List all user C define here, like -D_DEBUG=1
278
UDEFS +=
279
280
# Define ASM defines here
281
UADEFS +=
282
283
# List all user directories here
284
UINCDIR +=
285
286
# List the user directory to look for the libraries here
287
ULIBDIR +=
288
289
# List all user libraries here
290
ULIBS +=
291
292
#                                                                              #
293
# End of user defines                                                          #
294
################################################################################
295
296 2c89d7e2 Thomas Schöpping
################################################################################
297
# Start of targets section                                                     #
298
#                                                                              #
299 870f74ac Thomas Schöpping
300 2c89d7e2 Thomas Schöpping
# all and its dependencies
301 6b1000b5 Thomas Schöpping
ifeq ($(BUILDDIR),)
302
	BUILDDIR = ./build
303
endif
304 e545e620 Thomas Schöpping
RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC
305
include $(RULESPATH)/rules.mk
306
307 2c89d7e2 Thomas Schöpping
# flash
308
include $(AMIROOS)/bootloader/bootloader.mk
309
FLASH_MODULES = $(PROJECT)
310
FLASH_FILES = $(BUILDDIR)/$(PROJECT).$(FLASHTOOL_EXT)
311
312
flash: $(FLASH_FILES)
313
	$(info )
314
ifeq ($(FLASHTOOL),SerialBoot)
315
	$(info Flashing ($(FLASHTOOL)):)
316
	$(FLASHTOOL_CMD) $(FLASHTOOL_ARGS)
317
else
318
	$(info ERROR: unable to flash the module (SerialBoot unavailable))
319
endif
320
321
#                                                                              #
322
# End of targets section                                                       #
323
################################################################################