]> mj.ucw.cz Git - home-hw.git/blob - test-pwm/Makefile
A simple PWM test
[home-hw.git] / test-pwm / Makefile
1 BINARY=test
2 OBJS=test.o
3
4 # Library modules to use
5 vpath %.c ../lib
6 OBJS += util-debug.o
7
8 OPENCM3_DIR=/home/mj/stm/libopencm3
9 DEVICE=stm32f103x8
10
11 all: $(BINARY).elf $(BINARY).bin
12
13 flash: $(BINARY).flash
14
15 reset: all
16         ../bin/st-flash reset
17
18 ifneq ($(V),1)
19 Q               := @
20 NULL            := 2>/dev/null
21 endif
22
23 include $(OPENCM3_DIR)/mk/genlink-config.mk
24
25 PREFIX          ?= arm-none-eabi
26
27 CC              := $(PREFIX)-gcc
28 CXX             := $(PREFIX)-g++
29 LD              := $(PREFIX)-gcc
30 AR              := $(PREFIX)-ar
31 AS              := $(PREFIX)-as
32 OBJCOPY         := $(PREFIX)-objcopy
33 OBJDUMP         := $(PREFIX)-objdump
34 GDB             := $(PREFIX)-gdb
35 OPT             := -Os
36 DEBUG           := -ggdb3
37 CSTD            ?= -std=c99
38
39 TGT_CFLAGS      += $(OPT) $(CSTD) $(DEBUG)
40 TGT_CFLAGS      += $(ARCH_FLAGS)
41 TGT_CFLAGS      += -Wall -Wextra -Wshadow -Wimplicit-function-declaration
42 TGT_CFLAGS      += -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes
43 TGT_CFLAGS      += -fno-common -ffunction-sections -fdata-sections
44 TGT_CFLAGS      += -I. -I../lib
45
46 TGT_CPPFLAGS    += -MD
47
48 TGT_LDFLAGS     += --static -nostartfiles
49 TGT_LDFLAGS     += -T$(LDSCRIPT)
50 TGT_LDFLAGS     += $(ARCH_FLAGS) $(DEBUG)
51 TGT_LDFLAGS     += -Wl,-Map=$(*).map -Wl,--cref
52 TGT_LDFLAGS     += -Wl,--gc-sections
53 ifeq ($(V),99)
54 TGT_LDFLAGS     += -Wl,--print-gc-sections
55 endif
56
57 LDLIBS          += -Wl,--start-group -lc -lgcc -lnosys -Wl,--end-group
58
59 include $(OPENCM3_DIR)/mk/genlink-rules.mk
60
61 %.bin: %.elf
62         @printf "  OBJCOPY $(*).bin\n"
63         $(Q)$(OBJCOPY) -Obinary $(*).elf $(*).bin
64
65 %.elf: $(OBJS) $(LDSCRIPT)
66         @printf "  LD      $(*).elf\n"
67         $(Q)$(LD) $(TGT_LDFLAGS) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $*.elf
68
69 %.o: %.c
70         @printf "  CC      $(*).c\n"
71         $(Q)$(CC) $(TGT_CFLAGS) $(CFLAGS) $(TGT_CPPFLAGS) $(CPPFLAGS) -o $@ -c $<
72
73 .PHONY: clean
74 clean:
75         @printf "  CLEAN\n"
76         $(Q)rm -f *.elf *.bin *.o *.d *.map $(LDSCRIPT)
77
78 %.flash: %.bin
79         @printf "  FLASH  $<\n"
80         $(Q)../bin/st-flash write $(*).bin 0x8000000
81
82 .SECONDEXPANSION:
83 .SECONDARY:
84
85 -include $(OBJS:.o=.d)