blob: c9222ca94e36071b2c8646247ecd1bbc34d59b46 [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
Kévin Redon69b92d92019-01-24 16:39:20 +010023ifdef SystemRoot
24 SHELL = cmd.exe
25 MK_DIR = mkdir
26else
27 ifeq ($(shell uname), Linux)
28 MK_DIR = mkdir -p
29 endif
30
31 ifeq ($(shell uname | cut -d _ -f 1), CYGWIN)
32 MK_DIR = mkdir -p
33 endif
34
35 ifeq ($(shell uname | cut -d _ -f 1), MINGW32)
36 MK_DIR = mkdir -p
37 endif
38
39 ifeq ($(shell uname | cut -d _ -f 1), MINGW64)
40 MK_DIR = mkdir -p
41 endif
42endif
43
44# List the subdirectories for creating object files
45SUB_DIRS += \
46 \
Harald Welte361ed202019-02-24 21:15:39 +010047hal/src \
48hpl/ramecc \
Harald Welte361ed202019-02-24 21:15:39 +010049hpl/oscctrl \
50stdio_redirect/gcc \
Kévin Redon69b92d92019-01-24 16:39:20 +010051gcc \
52hpl/osc32kctrl \
Harald Welte361ed202019-02-24 21:15:39 +010053usb \
Kévin Redon69b92d92019-01-24 16:39:20 +010054hpl/dmac \
55usb/class/cdc/device \
Harald Weltecdb1ee32019-04-17 16:31:27 +020056usb/class/ccid/device \
Harald Welte361ed202019-02-24 21:15:39 +010057stdio_redirect \
Kévin Redon69b92d92019-01-24 16:39:20 +010058hal/utils/src \
Kévin Redon69b92d92019-01-24 16:39:20 +010059hpl/usb \
Kévin Redonc94e0fc2019-03-07 19:15:29 +010060dma_m2m \
Harald Welte361ed202019-02-24 21:15:39 +010061hpl/pm \
62hpl/cmcc \
63hpl/gclk \
64gcc/gcc \
65hpl/mclk \
66usb/device \
67hpl/sercom \
68hpl/core
Kévin Redon69b92d92019-01-24 16:39:20 +010069
Harald Welteb2fc5112019-05-17 10:37:45 +020070INC_DIRS = \
71 -I"../" \
72 -I"../CMSIS/Core/Include" \
73 -I"../config" \
74 -I"../dma_m2m" \
75 -I"../hal/include" \
76 -I"../hal/utils/include" \
77 -I"../hpl/cmcc" \
78 -I"../hpl/core" \
79 -I"../hpl/dmac" \
80 -I"../hpl/gclk" \
81 -I"../hpl/mclk" \
82 -I"../hpl/osc32kctrl" \
83 -I"../hpl/oscctrl" \
84 -I"../hpl/pm" \
85 -I"../hpl/port" \
86 -I"../hpl/ramecc" \
87 -I"../hpl/sercom" \
88 -I"../hpl/usb" \
89 -I"../hri" \
90 -I"../include" \
91 -I"../usb" \
92 -I"../usb/class/cdc" \
93 -I"../usb/class/cdc/device" \
94 -I"../usb/class/ccid" \
95 -I"../usb/class/ccid/device" \
96 -I"../usb/device" \
97 -I"../stdio_redirect" \
98 $(NULL)
99
Kévin Redon69b92d92019-01-24 16:39:20 +0100100# List the object files
101OBJS += \
102hal/src/hal_io.o \
Harald Welte361ed202019-02-24 21:15:39 +0100103stdio_redirect/stdio_io.o \
104stdio_redirect/gcc/write.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100105hpl/core/hpl_core_m4.o \
Kévin Redonc94e0fc2019-03-07 19:15:29 +0100106hal/src/hal_cache.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100107usb/class/cdc/device/cdcdf_acm.o \
Harald Weltecdb1ee32019-04-17 16:31:27 +0200108usb/class/ccid/device/ccid_df.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100109hal/utils/src/utils_syscalls.o \
Harald Welte361ed202019-02-24 21:15:39 +0100110stdio_redirect/gcc/read.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100111gcc/system_same54.o \
112hpl/usb/hpl_usb.o \
Kévin Redonc94e0fc2019-03-07 19:15:29 +0100113dma_m2m/dma_memory.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100114hal/src/hal_delay.o \
115hpl/pm/hpl_pm.o \
116hpl/core/hpl_init.o \
117hpl/gclk/hpl_gclk.o \
118hal/utils/src/utils_list.o \
119hal/utils/src/utils_assert.o \
Kévin Redonccbed0b2019-01-24 18:30:26 +0100120hpl/dmac/hpl_dmac.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100121hpl/oscctrl/hpl_oscctrl.o \
Harald Welte361ed202019-02-24 21:15:39 +0100122hal/src/hal_usart_sync.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100123hpl/mclk/hpl_mclk.o \
124hpl/ramecc/hpl_ramecc.o \
Harald Welte361ed202019-02-24 21:15:39 +0100125stdio_start.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100126usb/usb_protocol.o \
127hal/src/hal_init.o \
128gcc/gcc/startup_same54.o \
129hal/src/hal_usb_device.o \
Kévin Redon4e39b012019-01-30 15:55:58 +0100130main.o \
Harald Weltebdf1b352019-05-17 10:21:45 +0200131libosmo_emb.o \
Harald Welte67b2aba2019-04-16 20:47:22 +0200132manual_test.o \
Harald Welte5df0be62019-04-17 20:54:29 +0200133talloc.o \
Harald Welte34a87062019-04-19 22:33:36 +0200134usb_descriptors.o \
Harald Weltec3f170d2019-02-24 09:06:59 +0100135i2c_bitbang.o \
136octsim_i2c.o \
137ncn8025.o \
Harald Welteff9f4ce2019-02-24 22:51:09 +0100138command.o \
Kévin Redon632502d2019-05-02 15:55:31 +0200139iso7816_3.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100140hpl/osc32kctrl/hpl_osc32kctrl.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100141driver_init.o \
Kévin Redonccbed0b2019-01-24 18:30:26 +0100142hal/src/hal_usart_async.o \
Kévin Redonde9fb2e2019-04-03 20:55:02 +0200143hal/src/hal_usart_async_rings.o \
Kévin Redon4cd3f7d2019-01-24 17:57:13 +0100144hpl/sercom/hpl_sercom.o \
Kévin Redonccbed0b2019-01-24 18:30:26 +0100145hal/utils/src/utils_ringbuffer.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100146hal/src/hal_gpio.o \
147hal/utils/src/utils_event.o \
148hal/src/hal_sleep.o \
Kévin Redonc94e0fc2019-03-07 19:15:29 +0100149usb_start.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100150hpl/cmcc/hpl_cmcc.o \
151atmel_start.o \
Kévin Redon69b92d92019-01-24 16:39:20 +0100152usb/device/usbdc.o \
153hal/src/hal_atomic.o
154
Kévin Redon69b92d92019-01-24 16:39:20 +0100155# List the dependency files
156DEPS := $(OBJS:%.o=%.d)
157
Kévin Redon69b92d92019-01-24 16:39:20 +0100158OUTPUT_FILE_NAME :=AtmelStart
159QUOTE := "
160OUTPUT_FILE_PATH +=$(OUTPUT_FILE_NAME).elf
161OUTPUT_FILE_PATH_AS_ARGS +=$(OUTPUT_FILE_NAME).elf
162
163vpath %.c ../
164vpath %.s ../
165vpath %.S ../
166
167# All Target
168all: $(SUB_DIRS) $(OUTPUT_FILE_PATH)
169
170# Linker target
171
172$(OUTPUT_FILE_PATH): $(OBJS)
173 @echo Building target: $@
174 @echo Invoking: ARM/GNU Linker
Harald Welte488ddae2019-05-17 10:47:53 +0200175 $(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 +0100176-Wl,-Map="$(OUTPUT_FILE_NAME).map" --specs=nano.specs -Wl,--gc-sections -mcpu=cortex-m4 \
177 \
Kévin Redoneff5cb52019-02-03 14:17:40 +0100178-T"../gcc/gcc/same54n19a_dfu.ld" \
Kévin Redon69b92d92019-01-24 16:39:20 +0100179-L"../gcc/gcc"
180 @echo Finished building target: $@
181
Harald Welte488ddae2019-05-17 10:47:53 +0200182 $(OBJCOPY) -O binary "$(OUTPUT_FILE_NAME).elf" "$(OUTPUT_FILE_NAME).bin"
183 $(OBJCOPY) -O ihex -R .eeprom -R .fuse -R .lock -R .signature \
184 "$(OUTPUT_FILE_NAME).elf" "$(OUTPUT_FILE_NAME).hex"
185 $(OBJCOPY) -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma \
186 .eeprom=0 --no-change-warnings -O binary "$(OUTPUT_FILE_NAME).elf" \
187 "$(OUTPUT_FILE_NAME).eep" || exit 0
188 $(OBJDUMP) -h -S "$(OUTPUT_FILE_NAME).elf" > "$(OUTPUT_FILE_NAME).lss"
189 $(SIZE) "$(OUTPUT_FILE_NAME).elf"
Kévin Redon69b92d92019-01-24 16:39:20 +0100190
Kévin Redon69b92d92019-01-24 16:39:20 +0100191
192# Compiler targets
193
194
Kévin Redon69b92d92019-01-24 16:39:20 +0100195%.o: %.c
196 @echo Building file: $<
197 @echo ARM/GNU C Compiler
Harald Welte488ddae2019-05-17 10:47:53 +0200198 $(CC) $(CFLAGS) $(INC_DIRS) $(EXTRA_CFLAGS) \
Kévin Redon69b92d92019-01-24 16:39:20 +0100199-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
200 @echo Finished building: $<
201
202%.o: %.s
203 @echo Building file: $<
204 @echo ARM/GNU Assembler
Harald Welte488ddae2019-05-17 10:47:53 +0200205 $(CC) $(CFLAGS) $(INC_DIRS) \
Kévin Redon69b92d92019-01-24 16:39:20 +0100206-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
207 @echo Finished building: $<
208
209%.o: %.S
210 @echo Building file: $<
211 @echo ARM/GNU Preprocessing Assembler
Harald Welte488ddae2019-05-17 10:47:53 +0200212 $(CC) $(CFLAGS) $(INC_DIRS) \
Kévin Redon69b92d92019-01-24 16:39:20 +0100213-MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<"
214 @echo Finished building: $<
215
216# Detect changes in the dependent files and recompile the respective object files.
217ifneq ($(MAKECMDGOALS),clean)
218ifneq ($(strip $(DEPS)),)
219-include $(DEPS)
220endif
221endif
222
223$(SUB_DIRS):
224 $(MK_DIR) "$@"
225
226clean:
Harald Weltee4ea2b22019-05-17 10:30:40 +0200227 rm -f $(OBJS)
Kévin Redon69b92d92019-01-24 16:39:20 +0100228 rm -f $(OUTPUT_FILE_PATH)
Harald Weltee4ea2b22019-05-17 10:30:40 +0200229 rm -f $(DEPS)
Kévin Redon69b92d92019-01-24 16:39:20 +0100230 rm -f $(OUTPUT_FILE_NAME).a $(OUTPUT_FILE_NAME).hex $(OUTPUT_FILE_NAME).bin \
231 $(OUTPUT_FILE_NAME).lss $(OUTPUT_FILE_NAME).eep $(OUTPUT_FILE_NAME).map \
Kévin Redonc94e0fc2019-03-07 19:15:29 +0100232 $(OUTPUT_FILE_NAME).srec