altos: always rebuild ao_product.c to track git version
[fw/altos] / src / Makefile.proto
index 958b7572ac783ed1487ceaea0f5911fb69bac78e..59a3b8a616d7969a80f0ba24f12f85703aa6b6a3 100644 (file)
@@ -35,6 +35,7 @@ ALTOS_SRC = \
        ao_panic.c \
        ao_task.c \
        ao_timer.c \
        ao_panic.c \
        ao_task.c \
        ao_timer.c \
+       ao_romconfig.c \
        _bp.c
 
 #
        _bp.c
 
 #
@@ -174,6 +175,11 @@ TD_SRC = \
 
 include Makefile.defs
 
 
 include Makefile.defs
 
+CFLAGS += $(PRODUCT_DEF) -I.
+
+NICKLE=nickle
+CHECK_STACK=sh ../check-stack
+
 REL=$(SRC:.c=.rel) ao_product.rel
 ADB=$(REL:.rel=.adb)
 ASM=$(REL:.rel=.asm)
 REL=$(SRC:.c=.rel) ao_product.rel
 ADB=$(REL:.rel=.adb)
 ASM=$(REL:.rel=.asm)
@@ -188,29 +194,41 @@ PMAP=$(PROG:.ihx=.map)
 PMEM=$(PROG:.ihx=.mem)
 PAOM=$(PROG:.ihx=)
 
 PMEM=$(PROG:.ihx=.mem)
 PAOM=$(PROG:.ihx=)
 
+V=0
+# The user has explicitly enabled quiet compilation.
+ifeq ($(V),0)
+quiet = @printf "  $1 $2 $@\n"; $($1)
+endif
+# Otherwise, print the full command line.
+quiet ?= $($1)
+
 %.rel : %.c $(INC)
 %.rel : %.c $(INC)
-       $(CC) -c $(CFLAGS) -o$@ $<
+       $(call quiet,CC,$(PRODUCT_DEF)) $(CFLAGS) -c -o$@ $<
 
 
-all: $(PROG)
+all: ../$(PROG)
 
 
-$(PROG): $(REL) Makefile Makefile.defs ../Makefile.proto
-       $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $(REL)
+../$(PROG): $(REL) Makefile Makefile.defs ../Makefile.proto
+       $(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(REL) && cp $(PROG) $(PMAP) ..
+       $(call quiet,CHECK_STACK) ../ao.h $(PMEM)
 
 ../altitude.h: make-altitude
        nickle $< > $@
 
 
 ../altitude.h: make-altitude
        nickle $< > $@
 
-ao_product.h: ao-make-product.5c
-             nickle $< -m altusmetrum.org -p $(PRODUCT) -v $(VERSION) > $@
+ao_product.h: ao-make-product.5c always
+       $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
+
+always:
 
 ao_product.rel: ao_product.c ao_product.h
 
 ao_product.rel: ao_product.c ao_product.h
-       $(CC) -c $(CFLAGS) -D PRODUCT_DEFS='\"ao_product.h\"' -o$@ $<
+       $(call quiet,CC) -c $(CFLAGS) -D PRODUCT_DEFS='\"ao_product.h\"' -o$@ $<
 
 distclean:     clean
 
 clean:
        rm -f $(ADB) $(ASM) $(LNK) $(LST) $(REL) $(RST) $(SYM)
 
 distclean:     clean
 
 clean:
        rm -f $(ADB) $(ASM) $(LNK) $(LST) $(REL) $(RST) $(SYM)
-       rm -f $(PROG) $(PCDB) $(PLNK) $(PMAP) $(PMEM) $(PAOM)
+       rm -f $(PCDB) $(PLNK) $(PMAP) $(PMEM) $(PAOM)
        rm -f ao_product.h
        rm -f ao_product.h
+       rm -f ../$(PROG)
 
 install:
 
 
 install: