]> Pileus Git - ~andy/csm213a-hw/blob - common.mk
Fix whitespace error
[~andy/csm213a-hw] / common.mk
1 # Settings
2 GDB      ?= arm-none-eabi-gdb
3 GAS      ?= arm-none-eabi-as
4 GCC      ?= arm-none-eabi-gcc
5 GXX      ?= arm-none-eabi-g++
6 GLD      ?= arm-none-eabi-gcc
7 OBJCOPY  ?= arm-none-eabi-objcopy
8
9 CFLAGS   ?= -Wall -g --std=gnu99
10 CXXFLAGS ?= -Wall -g --std=gnu++98
11
12 # Cross compiler flags
13 CPPFLAGS += -I$(MBED) -I$(MBED)/TARGET_KL46Z
14
15 CFLAGS   += -mthumb -mcpu=cortex-m0plus
16 CXXFLAGS += -mthumb -mcpu=cortex-m0plus -fno-exceptions
17
18 LDFLAGS  += --specs=nano.specs -Wl,-u_printf_float -Wl,--gc-sections \
19             -T$(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/MKL46Z4.ld \
20             -L$(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM \
21             $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/cmsis_nvic.o \
22             $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/retarget.o \
23             $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/startup_MKL46Z4.o \
24             $(MBED)/TARGET_KL46Z/TOOLCHAIN_GCC_ARM/system_MKL46Z4.o \
25             -Wl,--start-group -lmbed -lc_s -lstdc++_s -Wl,--end-group
26
27 # Targets
28 all: $(addsuffix .bin,$(PROG))
29
30 info: all
31         @echo "LS   $(PROG).bin $(PROG).elf"
32         @ls -lh $(PROG).bin $(PROG).elf
33
34 install: all
35         @echo "INST $(PROG).bin"
36         @if [ -b /dev/sdb ]; then         \
37                 mount /mnt/usb;           \
38                 cp $(PROG).bin /mnt/usb;  \
39                 umount /mnt/usb;          \
40         else                              \
41                 echo Error: No USB found; \
42         fi
43
44 gdb: all
45         $(GDB) -ex 'target remote localhost:3333' $(PROG).elf
46
47 openocd: all
48         openocd -c 'adapter_khz 5000'         \
49                 -c 'gdb_memory_map disable'   \
50                 -s /usr/share/openocd/scripts \
51                 -f board/frdm-kl46z.cfg
52
53 clean:
54         @echo "RM   *.bin *.elf *.o $(CLEAN)"
55         @rm -f *.bin *.elf *.o $(CLEAN)
56
57 # Defaults
58 $(PROG).elf: $(OJBS)
59
60 # Rules
61 %.o: %.c $(wildcard *.h) makefile ../common.mk ../config.mk
62         @echo "CC   $<"
63         @$(GCC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
64
65 %.o: %.cc $(wildcard *.h) makefile ../common.mk ../config.mk
66         @echo "CXX  $<"
67         @$(GXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
68
69 %.o: %.cpp $(wildcard *.h) makefile ../common.mk ../config.mk
70         @echo "CXX  $<"
71         @$(GXX) $(CXXFLAGS) $(CPPFLAGS) -c -o $@ $<
72
73 %.elf:
74         @echo "LD   $+"
75         @$(GLD) $(CFLAGS) -o $@ $^ $(LDFLAGS)
76
77 %.bin: %.elf
78         @echo "BIN  $+"
79         @$(OBJCOPY) -O binary $< $@