altos: Use --gc-sections
[fw/altos] / src / Makefile.defs
1 include $(TOPDIR)/Makedefs
2
3 AO_VPATH=$(TOPDIR)/product:$(TOPDIR)/drivers:$(TOPDIR)/kernel:$(TOPDIR)/util:$(TOPDIR)/kalman:$(TOPDIR)/aes:$(TOPDIR)/math:$(TOPDIR)/draw:$(TOPDIR)
4 vpath make-altitude $(TOPDIR)/util
5 vpath make-kalman $(TOPDIR)/util
6 vpath kalman.5c $(TOPDIR)/kalman
7 vpath kalman_filter.5c $(TOPDIR)/kalman
8 vpath load_csv.5c $(TOPDIR)/kalman
9 vpath matrix.5c $(TOPDIR)/kalman
10 vpath ao-make-product.5c $(TOPDIR)/util
11
12 WARN_FLAGS=-Wall -Wextra -Werror -Wcast-align \
13         -Wpointer-arith \
14         -Wstrict-prototypes \
15         -Wmissing-prototypes \
16         -Wmissing-declarations \
17         -Wnested-externs \
18         -Wshadow \
19         -Warray-bounds=2 \
20         -Wconversion
21
22 OPT=-Os -Wl,-Map=$(PROGNAME)-$(VERSION).map
23
24 PICOLIBC_CFLAGS= \
25         -specs=picolibc.specs \
26         -Wl,--gc-sections \
27         $(PICOLIBC_PRINTF_CFLAGS)
28
29 AO_CFLAGS=\
30         -std=gnu99 \
31         -I. -I$(TOPDIR) -I$(TOPDIR)/kernel -I$(TOPDIR)/drivers \
32         -I$(TOPDIR)/math -I$(TOPDIR)/draw -I$(TOPDIR)/product $(WARN_FLAGS) $(OPT) -g
33
34 NICKLE=nickle
35 ELFTOHEX=$(TOPDIR)/../ao-tools/ao-elftohex/ao-elftohex
36
37 .SUFFIXES: .elf .ihx
38
39 .elf.ihx:
40         $(ELFTOHEX) --output=$@ $*.elf
41
42 V=0
43 # The user has explicitly enabled quiet compilation.
44 ifeq ($(V),0)
45 quiet = @printf "  $1 $2 $@\n"; $($1)
46 endif
47 # Otherwise, print the full command line.
48 quiet ?= $($1)
49
50 .c.o:
51         $(call quiet,CC) -c $(CFLAGS) -o $@ $<
52
53 .DEFAULT_GOAL=all
54
55 ao_product.h: ao-make-product.5c $(TOPDIR)/Makedefs
56         $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
57