aboutsummaryrefslogtreecommitdiffstats
path: root/tools/gmake_scripts/os_chibios_3.mk
blob: 7c49c79a4dd5a8d9096adbd8c29dc1486108b4bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#
# This file is subject to the terms of the GFX License. If a copy of
# the license was not distributed with this file, you can obtain one at:
#
#             http://ugfx.io/license.html
#

# See readme.txt for the make API

# Requirements:
#
# CHIBIOS                         The location of the ChibiOS code.    eg CHIBIOS = ../chibios
# CHIBIOS_CPUCLASS                The class of the CPU.    eg CHIBIOS_CPUCLASS = ARMCMx
# CHIBIOS_PLATFORM                The name of the ChibiOS platform.    eg CHIBIOS_PLATFORM = STM32
# CHIBIOS_DEVICE_FAMILY           The name of the ChibiOS device family.    eg CHIBIOS_DEVICE_FAMILY = STM32F4xx
# CHIBIOS_STARTUP                 The name of the ChibiOS startup files.    eg CHIBIOS_STARTUP = startup_stm32f4xx
# CHIBIOS_PORT                    The name of the ChibiOS port.    eg CHIBIOS_PORT = v7m
#

# Optional:
#
# CHIBIOS_LDSCRIPT                The name of the loader script    eg CHIBIOS_LDSCRIPT = STM32F429xI.ld
# CHIBIOS_BOARD                   The name of the ChibiOS board    eg CHIBIOS_BOARD = ST_STM32F429I_DISCOVERY - if not specified you must include equivalent code yourself
# CHIBIOS_VERSION                 Which version of ChibiOS is this (2 or 3) - default is 3
# CHIBIOS_PROCESS_STACKSIZE       Size of the ChibiOS process stack. Only useful if the link script supports it - default is 0x400
# CHIBIOS_EXCEPTIONS_STACKSIZE    Size of the ChibiOS exceptopms stack. Only useful if the link script supports it - default is 0x400
#
# Other ChibiOS things you might want to add to your SRC in your makefile...
#	$(TESTSRC) $(LWSRC) $(FATFSSRC) $(STREAMSSRC) $(SHELLSRC) $(CHIBIOS)/os/various/xxxx
#
# Other ChibiOS things you might want to add to your INCPATH in your makefile...
#	$(TESTINC) $(LWINC) $(FATFSINC) $(STREAMSINC) $(SHELLINC) $(CHIBIOS)/os/various
#
# Note we don't add the above source or folders to the project by default to avoid name potential name conflicts

PATHLIST += CHIBIOS

# Startup files.
include $(CHIBIOS)/os/common/ports/$(CHIBIOS_CPUCLASS)/compilers/GCC/mk/$(CHIBIOS_STARTUP).mk

# HAL-OSAL files (optional).
include $(CHIBIOS)/os/hal/hal.mk
include $(CHIBIOS)/os/hal/ports/$(CHIBIOS_PLATFORM)/$(CHIBIOS_DEVICE_FAMILY)/platform.mk
include $(CHIBIOS)/os/hal/osal/rt/osal.mk

# RTOS files (optional).
include $(CHIBIOS)/os/rt/rt.mk
include $(CHIBIOS)/os/rt/ports/$(CHIBIOS_CPUCLASS)/compilers/GCC/mk/port_$(CHIBIOS_PORT).mk

# Specific board files
ifneq ($(CHIBIOS_BOARD),)
  include $(CHIBIOS)/os/hal/boards/$(CHIBIOS_BOARD)/board.mk
endif
LIBPATH += $(CHIBIOS)/os/common/ports/$(CHIBIOS_CPUCLASS)/compilers/GCC

ifeq ($(LDSCRIPT),)
  ifneq ($(CHIBIOS_LDSCRIPT),)
    LDSCRIPT= $(STARTUPLD)/$(CHIBIOS_LDSCRIPT)
  endif
endif

ifneq ($(LDSCRIPT),)
  ifeq ($(CHIBIOS_PROCESS_STACKSIZE),)
    LDFLAGS += -Wl,--defsym=__process_stack_size__=0x400
  else
    LDFLAGS += -Wl,--defsym=__process_stack_size__=$(CHIBIOS_PROCESS_STACKSIZE)
  endif
  ifeq ($(CHIBIOS_EXCEPTIONS_STACKSIZE),)
    LDFLAGS += -Wl,--defsym=__main_stack_size__=0x400
  else
    LDFLAGS += -Wl,--defsym=__main_stack_size__=$(CHIBIOS_EXCEPTIONS_STACKSIZE)
  endif
endif

# Add include files
INCPATH +=  $(STARTUPINC) \
            $(KERNINC) \
            $(PORTINC) \
            $(OSALINC) \
            $(HALINC) \
            $(PLATFORMINC) \
            $(BOARDINC)

# Add C files
SRC  += $(STARTUPSRC) \
        $(KERNSRC) \
        $(PORTSRC) \
        $(OSALSRC) \
        $(HALSRC) \
        $(PLATFORMSRC) \
        $(BOARDSRC)

# Add ASM files
SRC  += $(STARTUPASM) $(PORTASM) $(OSALASM)