blob: b1430572fad785cf9a08a19d7853c4cb3703560a [file] [log] [blame]
Kévin Redon69b92d92019-01-24 16:39:20 +01001################################################################################
Harald Welte6135be92019-05-17 10:31:40 +02002# Manually edited. Do not overwrite with Automatically-generated file.
Kévin Redon69b92d92019-01-24 16:39:20 +01003################################################################################
4
Harald Welte3304ca22019-04-17 22:08:57 +02005EXTRA_LIBS=/usr/local/arm-none-eabi/lib/libosmocore.a
Harald Weltecdb1ee32019-04-17 16:31:27 +02006EXTRA_CFLAGS=-I/usr/local/arm-none-eabi/include -I../../ccid
Harald Welte488ddae2019-05-17 10:47:53 +02007CROSS_COMPILE= arm-none-eabi-
Harald Weltecdb1ee32019-04-17 16:31:27 +02008
Harald Weltefad379a2019-05-17 10:42:02 +02009CFLAGS_CPU=-D__SAME54N19A__ -mcpu=cortex-m4 -mfloat-abi=softfp -mfpu=fpv4-sp-d16
10CFLAGS=-x c -mthumb -DDEBUG -Os -ffunction-sections -fdata-sections -mlong-calls \
11 -g3 -Wall -c -std=gnu99 $(CFLAGS_CPU)
12
Harald Welte488ddae2019-05-17 10:47:53 +020013CC = $(CROSS_COMPILE)gcc
14LD = $(CROSS_COMPILE)ld
15SIZE = $(CROSS_COMPILE)size
16STRIP = $(CROSS_COMPILE)strip
17OBJCOPY = $(CROSS_COMPILE)objcopy
18OBJDUMP = $(CROSS_COMPILE)objdump
19SIZE = $(CROSS_COMPILE)size
20GDB = $(CROSS_COMPILE)gdb
21NM = $(CROSS_COMPILE)nm
22
Harald Welte059d1b02019-05-17 10:53:53 +020023TOP=../..
24GIT_VERSION=$(shell $(TOP)/git-version-gen $(TOP)/.tarvers)
25CFLAGS += -DGIT_VERSION=\"$(GIT_VERSION)\"
26
Kévin Redon69b92d92019-01-24 16:39:20 +010027ifdef SystemRoot
28 SHELL = cmd.exe
29 MK_DIR = mkdir
30else
31 ifeq ($(shell uname), Linux)
32 MK_DIR = mkdir -p
33 endif
34
35 ifeq ($(shell uname | cut -d _ -f 1), CYGWIN)
36 MK_DIR = mkdir -p
37 endif
38
39 ifeq ($(shell uname | cut -d _ -f 1), MINGW32)
40 MK_DIR = mkdir -p
41 endif
42
43 ifeq ($(shell uname | cut -d _ -f 1), MINGW64)
44 MK_DIR = mkdir -p
45 endif
46endif
47
48# List the subdirectories for creating object files
49SUB_DIRS += \
Harald Weltefa9ea772019-05-17 13:05:26 +020050 ccid \
Harald Welte71d01e42019-05-17 12:50:42 +020051 dma_m2m \
52 gcc \
53 gcc/gcc \
54 hal/src \
55 hal/utils/src \
56 hpl/cmcc \
57 hpl/core \
58 hpl/dmac \
59 hpl/gclk \
60 hpl/mclk \
61 hpl/osc32kctrl \
62 hpl/oscctrl \
63 hpl/pm \
64 hpl/ramecc \
65 hpl/sercom \
66 hpl/usb \
67 stdio_redirect \
68 stdio_redirect/gcc \
69 usb \
70 usb/class/ccid/device \
71 usb/class/cdc/device \
72 usb/device \
73 $(NULL)
Kévin Redon69b92d92019-01-24 16:39:20 +010074
Harald Welteb2fc5112019-05-17 10:37:45 +020075INC_DIRS = \
76 -I"../" \
77 -I"../CMSIS/Core/Include" \
Harald Weltefa9ea772019-05-17 13:05:26 +020078 -I"../ccid" \
Harald Welteb2fc5112019-05-17 10:37:45 +020079 -I"../config" \
80 -I"../dma_m2m" \
81 -I"../hal/include" \
82 -I"../hal/utils/include" \
83 -I"../hpl/cmcc" \
84 -I"../hpl/core" \
85 -I"../hpl/dmac" \
86 -I"../hpl/gclk" \
87 -I"../hpl/mclk" \
88 -I"../hpl/osc32kctrl" \
89 -I"../hpl/oscctrl" \
90 -I"../hpl/pm" \
91 -I"../hpl/port" \
92 -I"../hpl/ramecc" \
93 -I"../hpl/sercom" \
94 -I"../hpl/usb" \
95 -I"../hri" \
96 -I"../include" \
Harald Welte71d01e42019-05-17 12:50:42 +020097 -I"../stdio_redirect" \
Harald Welteb2fc5112019-05-17 10:37:45 +020098 -I"../usb" \
Harald Welteb2fc5112019-05-17 10:37:45 +020099 -I"../usb/class/ccid" \
100 -I"../usb/class/ccid/device" \
Harald Welte71d01e42019-05-17 12:50:42 +0200101 -I"../usb/class/cdc" \
102 -I"../usb/class/cdc/device" \
Harald Welteb2fc5112019-05-17 10:37:45 +0200103 -I"../usb/device" \
Harald Welteb2fc5112019-05-17 10:37:45 +0200104 $(NULL)
105
Kévin Redon69b92d92019-01-24 16:39:20 +0100106# List the object files
107OBJS += \
Harald Welte9bb8bfe2019-05-17 16:10:00 +0200108 atmel_start.o \
Harald Weltefa9ea772019-05-17 13:05:26 +0200109 ccid/ccid_proto.o \
110 ccid/ccid_device.o \
Harald Welte71d01e42019-05-17 12:50:42 +0200111 command.o \
112 dma_m2m/dma_memory.o \
113 driver_init.o \
114 gcc/gcc/startup_same54.o \
115 gcc/system_same54.o \
116 hal/src/hal_atomic.o \
117 hal/src/hal_cache.o \
118 hal/src/hal_delay.o \
119 hal/src/hal_gpio.o \
120 hal/src/hal_init.o \
121 hal/src/hal_io.o \
122 hal/src/hal_sleep.o \
123 hal/src/hal_usart_async.o \
124 hal/src/hal_usart_async_rings.o \
125 hal/src/hal_usart_sync.o \
126 hal/src/hal_usb_device.o \
127 hal/utils/src/utils_assert.o \
128 hal/utils/src/utils_event.o \
129 hal/utils/src/utils_list.o \
130 hal/utils/src/utils_ringbuffer.o \
131 hal/utils/src/utils_syscalls.o \
132 hpl/cmcc/hpl_cmcc.o \
133 hpl/core/hpl_core_m4.o \
134 hpl/core/hpl_init.o \
135 hpl/dmac/hpl_dmac.o \
136 hpl/gclk/hpl_gclk.o \
137 hpl/mclk/hpl_mclk.o \
138 hpl/osc32kctrl/hpl_osc32kctrl.o \
139 hpl/oscctrl/hpl_oscctrl.o \
140 hpl/pm/hpl_pm.o \
141 hpl/ramecc/hpl_ramecc.o \
142 hpl/sercom/hpl_sercom.o \
143 hpl/usb/hpl_usb.o \
144 i2c_bitbang.o \
145 iso7816_3.o \
146 libosmo_emb.o \
147 main.o \
148 manual_test.o \
149 ncn8025.o \
150 octsim_i2c.o \
151 stdio_redirect/gcc/read.o \
152 stdio_redirect/gcc/write.o \
153 stdio_redirect/stdio_io.o \
154 stdio_start.o \
155 talloc.o \
156 usb/class/ccid/device/ccid_df.o \
157 usb/class/cdc/device/cdcdf_acm.o \
158 usb/device/usbdc.o \
159 usb/usb_protocol.o \
160 usb_descriptors.o \
161 usb_start.o \
162 $(NULL)
Kévin Redon69b92d92019-01-24 16:39:20 +0100163
Kévin Redon69b92d92019-01-24 16:39:20 +0100164# List the dependency files
165DEPS := $(OBJS:%.o=%.d)
166
Harald Weltec85aab22019-05-17 11:05:20 +0200167OUTPUT_FILE_NAME := sysmoOCTSIM
Kévin Redon69b92d92019-01-24 16:39:20 +0100168QUOTE := "
169OUTPUT_FILE_PATH +=$(OUTPUT_FILE_NAME).elf
170OUTPUT_FILE_PATH_AS_ARGS +=$(OUTPUT_FILE_NAME).elf
171
172vpath %.c ../
173vpath %.s ../
174vpath %.S ../
175
176# All Target
177all: $(SUB_DIRS) $(OUTPUT_FILE_PATH)
178
179# Linker target
180
181$(OUTPUT_FILE_PATH): $(OBJS)
182 @echo Building target: $@
183 @echo Invoking: ARM/GNU Linker
Harald Welte488ddae2019-05-17 10:47:53 +0200184 $(CC) -o $(OUTPUT_FILE_NAME).elf $(OBJS) $(EXTRA_LIBS) -Wl,--start-group -lm -Wl,--end-group -mthumb \
Kévin Redon69b92d92019-01-24 16:39:20 +0100185-Wl,-Map="$(OUTPUT_FILE_NAME).map" --specs=nano.specs -Wl,--gc-sections -mcpu=cortex-m4 \
186 \
Kévin Redoneff5cb52019-02-03 14:17:40 +0100187-T"../gcc/gcc/same54n19a_dfu.ld" \
Kévin Redon69b92d92019-01-24 16:39:20 +0100188-L"../gcc/gcc"
189 @echo Finished building target: $@
190
Harald Welte488ddae2019-05-17 10:47:53 +0200191 $(OBJCOPY) -O binary "$(OUTPUT_FILE_NAME).elf" "$(OUTPUT_FILE_NAME).bin"
192 $(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock -R .signature \
193 "$(OUTPUT_FILE_NAME).elf" "$(OUTPUT_FILE_NAME).hex"
194 $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma \
195 .eeprom=0 --no-change-warnings -O binary "$(OUTPUT_FILE_NAME).elf" \
196 "$(OUTPUT_FILE_NAME).eep" || exit 0
197 $(OBJDUMP) -h -S "$(OUTPUT_FILE_NAME).elf" > "$(OUTPUT_FILE_NAME).lss"
198 $(SIZE) "$(OUTPUT_FILE_NAME).elf"
Kévin Redon69b92d92019-01-24 16:39:20 +0100199
Kévin Redon69b92d92019-01-24 16:39:20 +0100200
201# Compiler targets
202
203
Kévin Redon69b92d92019-01-24 16:39:20 +0100204%.o: %.c
205 @echo Building file: $<
206 @echo ARM/GNU C Compiler
Harald Welte488ddae2019-05-17 10:47:53 +0200207 $(CC) $(CFLAGS) $(INC_DIRS) $(EXTRA_CFLAGS) \
Kévin Redon69b92d92019-01-24 16:39:20 +0100208-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
209 @echo Finished building: $<
210
211%.o: %.s
212 @echo Building file: $<
213 @echo ARM/GNU Assembler
Harald Welte488ddae2019-05-17 10:47:53 +0200214 $(CC) $(CFLAGS) $(INC_DIRS) \
Kévin Redon69b92d92019-01-24 16:39:20 +0100215-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
216 @echo Finished building: $<
217
218%.o: %.S
219 @echo Building file: $<
220 @echo ARM/GNU Preprocessing Assembler
Harald Welte488ddae2019-05-17 10:47:53 +0200221 $(CC) $(CFLAGS) $(INC_DIRS) \
Kévin Redon69b92d92019-01-24 16:39:20 +0100222-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
223 @echo Finished building: $<
224
225# Detect changes in the dependent files and recompile the respective object files.
226ifneq ($(MAKECMDGOALS),clean)
227ifneq ($(strip $(DEPS)),)
228-include $(DEPS)
229endif
230endif
231
232$(SUB_DIRS):
233 $(MK_DIR) "$@"
234
235clean:
Harald Weltee4ea2b22019-05-17 10:30:40 +0200236 rm -f $(OBJS)
Kévin Redon69b92d92019-01-24 16:39:20 +0100237 rm -f $(OUTPUT_FILE_PATH)
Harald Weltee4ea2b22019-05-17 10:30:40 +0200238 rm -f $(DEPS)
Kévin Redon69b92d92019-01-24 16:39:20 +0100239 rm -f $(OUTPUT_FILE_NAME).a $(OUTPUT_FILE_NAME).hex $(OUTPUT_FILE_NAME).bin \
240 $(OUTPUT_FILE_NAME).lss $(OUTPUT_FILE_NAME).eep $(OUTPUT_FILE_NAME).map \
Kévin Redonc94e0fc2019-03-07 19:15:29 +0100241 $(OUTPUT_FILE_NAME).srec