blob: d2795d19760485c91fde25acb8be0daafa3605cb [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 += \
50 \
Harald Welte361ed202019-02-24 21:15:39 +010051hal/src \
52hpl/ramecc \
Harald Welte361ed202019-02-24 21:15:39 +010053hpl/oscctrl \
54stdio_redirect/gcc \
Kévin Redon69b92d92019-01-24 16:39:20 +010055gcc \
56hpl/osc32kctrl \
Harald Welte361ed202019-02-24 21:15:39 +010057usb \
Kévin Redon69b92d92019-01-24 16:39:20 +010058hpl/dmac \
59usb/class/cdc/device \
Harald Weltecdb1ee32019-04-17 16:31:27 +020060usb/class/ccid/device \
Harald Welte361ed202019-02-24 21:15:39 +010061stdio_redirect \
Kévin Redon69b92d92019-01-24 16:39:20 +010062hal/utils/src \
Kévin Redon69b92d92019-01-24 16:39:20 +010063hpl/usb \
Kévin Redonc94e0fc2019-03-07 19:15:29 +010064dma_m2m \
Harald Welte361ed202019-02-24 21:15:39 +010065hpl/pm \
66hpl/cmcc \
67hpl/gclk \
68gcc/gcc \
69hpl/mclk \
70usb/device \
71hpl/sercom \
72hpl/core
Kévin Redon69b92d92019-01-24 16:39:20 +010073
Harald Welteb2fc5112019-05-17 10:37:45 +020074INC_DIRS = \
75 -I"../" \
76 -I"../CMSIS/Core/Include" \
77 -I"../config" \
78 -I"../dma_m2m" \
79 -I"../hal/include" \
80 -I"../hal/utils/include" \
81 -I"../hpl/cmcc" \
82 -I"../hpl/core" \
83 -I"../hpl/dmac" \
84 -I"../hpl/gclk" \
85 -I"../hpl/mclk" \
86 -I"../hpl/osc32kctrl" \
87 -I"../hpl/oscctrl" \
88 -I"../hpl/pm" \
89 -I"../hpl/port" \
90 -I"../hpl/ramecc" \
91 -I"../hpl/sercom" \
92 -I"../hpl/usb" \
93 -I"../hri" \
94 -I"../include" \
95 -I"../usb" \
96 -I"../usb/class/cdc" \
97 -I"../usb/class/cdc/device" \
98 -I"../usb/class/ccid" \
99 -I"../usb/class/ccid/device" \
100 -I"../usb/device" \
101 -I"../stdio_redirect" \
102 $(NULL)
103
Kévin Redon69b92d92019-01-24 16:39:20 +0100104# List the object files
105OBJS += \
106hal/src/hal_io.o \
Harald Welte361ed202019-02-24 21:15:39 +0100107stdio_redirect/stdio_io.o \
108stdio_redirect/gcc/write.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100109hpl/core/hpl_core_m4.o \
Kévin Redonc94e0fc2019-03-07 19:15:29 +0100110hal/src/hal_cache.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100111usb/class/cdc/device/cdcdf_acm.o \
Harald Weltecdb1ee32019-04-17 16:31:27 +0200112usb/class/ccid/device/ccid_df.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100113hal/utils/src/utils_syscalls.o \
Harald Welte361ed202019-02-24 21:15:39 +0100114stdio_redirect/gcc/read.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100115gcc/system_same54.o \
116hpl/usb/hpl_usb.o \
Kévin Redonc94e0fc2019-03-07 19:15:29 +0100117dma_m2m/dma_memory.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100118hal/src/hal_delay.o \
119hpl/pm/hpl_pm.o \
120hpl/core/hpl_init.o \
121hpl/gclk/hpl_gclk.o \
122hal/utils/src/utils_list.o \
123hal/utils/src/utils_assert.o \
Kévin Redonccbed0b2019-01-24 18:30:26 +0100124hpl/dmac/hpl_dmac.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100125hpl/oscctrl/hpl_oscctrl.o \
Harald Welte361ed202019-02-24 21:15:39 +0100126hal/src/hal_usart_sync.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100127hpl/mclk/hpl_mclk.o \
128hpl/ramecc/hpl_ramecc.o \
Harald Welte361ed202019-02-24 21:15:39 +0100129stdio_start.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100130usb/usb_protocol.o \
131hal/src/hal_init.o \
132gcc/gcc/startup_same54.o \
133hal/src/hal_usb_device.o \
Kévin Redon4e39b012019-01-30 15:55:58 +0100134main.o \
Harald Weltebdf1b352019-05-17 10:21:45 +0200135libosmo_emb.o \
Harald Welte67b2aba2019-04-16 20:47:22 +0200136manual_test.o \
Harald Welte5df0be62019-04-17 20:54:29 +0200137talloc.o \
Harald Welte34a87062019-04-19 22:33:36 +0200138usb_descriptors.o \
Harald Weltec3f170d2019-02-24 09:06:59 +0100139i2c_bitbang.o \
140octsim_i2c.o \
141ncn8025.o \
Harald Welteff9f4ce2019-02-24 22:51:09 +0100142command.o \
Kévin Redon632502d2019-05-02 15:55:31 +0200143iso7816_3.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100144hpl/osc32kctrl/hpl_osc32kctrl.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100145driver_init.o \
Kévin Redonccbed0b2019-01-24 18:30:26 +0100146hal/src/hal_usart_async.o \
Kévin Redonde9fb2e2019-04-03 20:55:02 +0200147hal/src/hal_usart_async_rings.o \
Kévin Redon4cd3f7d2019-01-24 17:57:13 +0100148hpl/sercom/hpl_sercom.o \
Kévin Redonccbed0b2019-01-24 18:30:26 +0100149hal/utils/src/utils_ringbuffer.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100150hal/src/hal_gpio.o \
151hal/utils/src/utils_event.o \
152hal/src/hal_sleep.o \
Kévin Redonc94e0fc2019-03-07 19:15:29 +0100153usb_start.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100154hpl/cmcc/hpl_cmcc.o \
155atmel_start.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100156usb/device/usbdc.o \
157hal/src/hal_atomic.o
158
Kévin Redon69b92d92019-01-24 16:39:20 +0100159# List the dependency files
160DEPS := $(OBJS:%.o=%.d)
161
Kévin Redon69b92d92019-01-24 16:39:20 +0100162OUTPUT_FILE_NAME :=AtmelStart
163QUOTE := "
164OUTPUT_FILE_PATH +=$(OUTPUT_FILE_NAME).elf
165OUTPUT_FILE_PATH_AS_ARGS +=$(OUTPUT_FILE_NAME).elf
166
167vpath %.c ../
168vpath %.s ../
169vpath %.S ../
170
171# All Target
172all: $(SUB_DIRS) $(OUTPUT_FILE_PATH)
173
174# Linker target
175
176$(OUTPUT_FILE_PATH): $(OBJS)
177 @echo Building target: $@
178 @echo Invoking: ARM/GNU Linker
Harald Welte488ddae2019-05-17 10:47:53 +0200179 $(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 +0100180-Wl,-Map="$(OUTPUT_FILE_NAME).map" --specs=nano.specs -Wl,--gc-sections -mcpu=cortex-m4 \
181 \
Kévin Redoneff5cb52019-02-03 14:17:40 +0100182-T"../gcc/gcc/same54n19a_dfu.ld" \
Kévin Redon69b92d92019-01-24 16:39:20 +0100183-L"../gcc/gcc"
184 @echo Finished building target: $@
185
Harald Welte488ddae2019-05-17 10:47:53 +0200186 $(OBJCOPY) -O binary "$(OUTPUT_FILE_NAME).elf" "$(OUTPUT_FILE_NAME).bin"
187 $(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock -R .signature \
188 "$(OUTPUT_FILE_NAME).elf" "$(OUTPUT_FILE_NAME).hex"
189 $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma \
190 .eeprom=0 --no-change-warnings -O binary "$(OUTPUT_FILE_NAME).elf" \
191 "$(OUTPUT_FILE_NAME).eep" || exit 0
192 $(OBJDUMP) -h -S "$(OUTPUT_FILE_NAME).elf" > "$(OUTPUT_FILE_NAME).lss"
193 $(SIZE) "$(OUTPUT_FILE_NAME).elf"
Kévin Redon69b92d92019-01-24 16:39:20 +0100194
Kévin Redon69b92d92019-01-24 16:39:20 +0100195
196# Compiler targets
197
198
Kévin Redon69b92d92019-01-24 16:39:20 +0100199%.o: %.c
200 @echo Building file: $<
201 @echo ARM/GNU C Compiler
Harald Welte488ddae2019-05-17 10:47:53 +0200202 $(CC) $(CFLAGS) $(INC_DIRS) $(EXTRA_CFLAGS) \
Kévin Redon69b92d92019-01-24 16:39:20 +0100203-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
204 @echo Finished building: $<
205
206%.o: %.s
207 @echo Building file: $<
208 @echo ARM/GNU Assembler
Harald Welte488ddae2019-05-17 10:47:53 +0200209 $(CC) $(CFLAGS) $(INC_DIRS) \
Kévin Redon69b92d92019-01-24 16:39:20 +0100210-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
211 @echo Finished building: $<
212
213%.o: %.S
214 @echo Building file: $<
215 @echo ARM/GNU Preprocessing Assembler
Harald Welte488ddae2019-05-17 10:47:53 +0200216 $(CC) $(CFLAGS) $(INC_DIRS) \
Kévin Redon69b92d92019-01-24 16:39:20 +0100217-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
218 @echo Finished building: $<
219
220# Detect changes in the dependent files and recompile the respective object files.
221ifneq ($(MAKECMDGOALS),clean)
222ifneq ($(strip $(DEPS)),)
223-include $(DEPS)
224endif
225endif
226
227$(SUB_DIRS):
228 $(MK_DIR) "$@"
229
230clean:
Harald Weltee4ea2b22019-05-17 10:30:40 +0200231 rm -f $(OBJS)
Kévin Redon69b92d92019-01-24 16:39:20 +0100232 rm -f $(OUTPUT_FILE_PATH)
Harald Weltee4ea2b22019-05-17 10:30:40 +0200233 rm -f $(DEPS)
Kévin Redon69b92d92019-01-24 16:39:20 +0100234 rm -f $(OUTPUT_FILE_NAME).a $(OUTPUT_FILE_NAME).hex $(OUTPUT_FILE_NAME).bin \
235 $(OUTPUT_FILE_NAME).lss $(OUTPUT_FILE_NAME).eep $(OUTPUT_FILE_NAME).map \
Kévin Redonc94e0fc2019-03-07 19:15:29 +0100236 $(OUTPUT_FILE_NAME).srec