cdc51a1ef2f9a699a6a436fb243d89021bcbb4e7
[gnuk/gnuk.git] / src / Makefile.in
1 # Makefile for Gnuk
2
3 @DEBUG_MAKE_OPTION@
4 ifneq ($(ENABLE_DEBUG),)
5 ENABLE_VCOMPORT=1
6 endif
7
8 ##############################################################################
9 # Build global options
10 # NOTE: Can be overridden externally.
11 #
12
13 # Compiler options here.
14 ifeq ($(USE_OPT),)
15   USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16
16 endif
17
18 # C++ specific options here (added to USE_OPT).
19 ifeq ($(USE_CPPOPT),)
20   USE_CPPOPT = -fno-rtti
21 endif
22
23 # Enable this if you want the linker to remove unused code and data
24 ifeq ($(USE_LINK_GC),)
25   USE_LINK_GC = yes
26 endif
27
28 # If enabled, this option allows to compile the application in THUMB mode.
29 ifeq ($(USE_THUMB),)
30   USE_THUMB = yes
31 endif
32
33 # Enable register caching optimization (read documentation).
34 ifeq ($(USE_CURRP_CACHING),)
35   USE_CURRP_CACHING = no
36 endif
37
38 #
39 # Build global options
40 ##############################################################################
41
42 ##############################################################################
43 # Architecture or project specific options
44 #
45
46 # Enable this if you really want to use the STM FWLib.
47 ifeq ($(USE_FWLIB),)
48   USE_FWLIB = no
49 endif
50
51 #
52 # Architecture or project specific options
53 ##############################################################################
54
55 ##############################################################################
56 # Project, sources and paths
57 #
58
59 # Define project name here
60 PROJECT = gnuk
61
62 # Define linker script file here
63 LDSCRIPT= gnuk.ld
64
65 # Imported source files
66 CHIBIOS = ../ChibiOS_2.0.8
67 include $(CHIBIOS)/os/hal/platforms/STM32/platform.mk
68 include $(CHIBIOS)/os/hal/hal.mk
69 include $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F10x/port.mk
70 include $(CHIBIOS)/os/kernel/kernel.mk
71 include stmusb.mk
72 include vcomport.mk
73 include crypt.mk
74 include @BOARD_MAKEFILE@
75
76 # C sources that can be compiled in ARM or THUMB mode depending on the global
77 # setting.
78 CSRC = $(PORTSRC) \
79        $(KERNSRC) \
80        $(HALSRC) \
81        $(PLATFORMSRC) \
82        $(BOARDSRC) \
83        $(CHIBIOS)/os/various/evtimer.c \
84        $(CHIBIOS)/os/various/syscalls.c \
85        $(STMUSBSRC) \
86        $(VCOMSRC) \
87        $(CRYPTSRC) \
88        main.c usb_lld.c \
89         usb_desc.c usb_prop.c \
90         usb-icc.c openpgp.c ac.c openpgp-do.c flash.c hardclock.c \
91         random.c
92
93 ifneq ($(ENABLE_DEBUG),)
94 CSRC += debug.c
95 endif
96
97 # List ASM source files here
98 ASMSRC = $(PORTASM) \
99          $(CHIBIOS)/os/ports/GCC/ARMCMx/STM32F10x/vectors.s
100
101 INCDIR = $(CRYPTINCDIR) $(STMUSBINCDIR) $(VCOMDIR) \
102          $(PORTINC) $(KERNINC) $(TESTINC) \
103          $(HALINC) $(PLATFORMINC) $(BOARDINC) \
104          $(CHIBIOS)/os/various
105
106 #
107 # Project, sources and paths
108 ##############################################################################
109
110 ##############################################################################
111 # Compiler settings
112 #
113
114 MCU  = cortex-m3
115
116 #TRGT = arm-elf-
117 TRGT = arm-none-eabi-
118 CC   = $(TRGT)gcc
119 CPPC = $(TRGT)g++
120 # Enable loading with g++ only if you need C++ runtime support.
121 # NOTE: You can use C++ even without C++ support if you are careful. C++
122 #       runtime support makes code size explode.
123 LD   = $(TRGT)gcc
124 #LD   = $(TRGT)g++
125 CP   = $(TRGT)objcopy
126 AS   = $(TRGT)gcc -x assembler-with-cpp
127 OD   = $(TRGT)objdump
128 HEX  = $(CP) -O ihex
129 BIN  = $(CP) -O binary
130
131 # ARM-specific options here
132 AOPT =
133
134 # THUMB-specific options here
135 TOPT = -mthumb -DTHUMB
136
137 # Define C warning options here
138 CWARN = -Wall -Wextra -Wstrict-prototypes
139
140 # Define C++ warning options here
141 CPPWARN = -Wall -Wextra
142
143 #
144 # Compiler settings
145 ##############################################################################
146
147 ##############################################################################
148 # Start of default section
149 #
150
151 # List all default C defines here, like -D_DEBUG=1
152 DDEFS = -DCORTEX_USE_BASEPRI=TRUE
153
154 # List all default ASM defines here, like -D_DEBUG=1
155 DADEFS =
156
157 # List all default directories to look for include files here
158 DINCDIR =
159
160 # List the default directory to look for the libraries here
161 DLIBDIR =
162
163 # List all default libraries here
164 DLIBS =
165
166 #
167 # End of default section
168 ##############################################################################
169
170 ##############################################################################
171 # Start of user section
172 #
173
174 # List all user C define here, like -D_DEBUG=1
175 UDEFS =
176
177 # Define ASM defines here
178 UADEFS =
179
180 # List all user directories here
181 UINCDIR =
182
183 # List the user directory to look for the libraries here
184 ULIBDIR =
185
186 # List all user libraries here
187 ULIBS =
188
189 #
190 # End of user defines
191 ##############################################################################
192
193 ifeq ($(USE_FWLIB),yes)
194   include $(CHIBIOS)/ext/stm32lib/stm32lib.mk
195   CSRC += $(STM32SRC)
196   INCDIR += $(STM32INC)
197   USE_OPT += -DUSE_STDPERIPH_DRIVER
198 endif
199
200 include $(CHIBIOS)/os/ports/GCC/ARM/rules.mk
201
202 OBJS += random-data.o
203 OUTFILES += random_bits
204
205 random_bits:
206         dd if=/dev/random bs=1 of=random_bits count=1024
207
208 random-data.o: random_bits
209         $(CP) -I binary $< -O elf32-littlearm -B arm \
210               --rename-section \
211                 .data=.gnuk_random,alloc,load,readonly,data,contents \
212                 $@
213
214 $(PROJECT).elf: random-data.o
215
216 distclean: clean
217         -rm -f Makefile gnuk.ld config.h