altos: Move common build definitions to src/Makefile.defs
[fw/altos] / src / microsplash / Makefile
index 10cb825b590be501905314643072650ede6daaf8..4850ef14f6e7eabc64f844eff25511b0d98dbaf6 100644 (file)
@@ -2,27 +2,23 @@
 # Tiny AltOS build
 #
 #
-vpath % ../attiny:../drivers:../kernel:../product:..
-vpath ao-make-product.5c ../util
-vpath make-altitude-pa ../util
+TOPDIR=..
+include $(TOPDIR)/attiny/Makefile.defs
 
-include ../avr/Makefile.defs
+PROGNAME=microsplash-v1.0
+PROG=$(PROGNAME)-$(VERSION).elf
+HEX=$(PROGNAME)-$(VERSION).ihx
 
-PUBLISH_DIR=$(HOME)/altusmetrumllc/Binaries
-PUBLISH_FILE=$(PUBLISH_DIR)/$(PROG)-$(VERSION).hex
-
-MCU=attiny85
-DUDECPUTYPE=t85
-#PROGRAMMER=stk500v2 -P usb
-LOADSLOW=-i 32 -B 32
-LOADARG=-p $(DUDECPUTYPE) -c $(PROGRAMMER) -e -U flash:w:
+SCRIPT=microsplash-load
 
-#LDFLAGS=-L$(LDSCRIPTS) -Tavr25.x
+PUBLISH_DIR=$(HOME)/altusmetrumllc/Binaries
+PUBLISH_HEX=$(PUBLISH_DIR)/$(HEX)
+PUBLISH_SCRIPT=$(PUBLISH_DIR)/$(SCRIPT)
 
 ALTOS_SRC = \
        ao_micropeak.c \
        ao_spi_attiny.c \
-       ao_led.c \
+       ao_led_tiny.c \
        ao_clock.c \
        ao_ms5607.c \
        ao_exti.c \
@@ -45,30 +41,18 @@ INC=\
        ao_ms5607.h \
        ao_log_micro.h \
        ao_micropeak.h \
+       ao_product.h \
        altitude-pa.h
 
 IDPRODUCT=0
-PRODUCT=MicroSplash-v0.1
+PRODUCT=MicroSplash-v1.0
 PRODUCT_DEF=-DMICROPEAK
-CFLAGS = $(PRODUCT_DEF) -I. -I../attiny -I../kernel -I.. -I../drivers -I../product
-CFLAGS += -g -mmcu=$(MCU) -Wall -Wstrict-prototypes -O2 -mcall-prologues -DATTINY
-
-NICKLE=nickle
-
-PROG=microsplash-v1.0
+CFLAGS = $(PRODUCT_DEF) $(ATTINY_CFLAGS)
 
 SRC=$(ALTOS_SRC)
 OBJ=$(SRC:.c=.o)
 
-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)
-
-all: $(PROG) $(PROG).hex
+all: $(PROG) $(HEX) $(SCRIPT)
 
 CHECK=sh ../util/check-avr-mem
 
@@ -76,46 +60,42 @@ $(PROG): Makefile $(OBJ)
        $(call quiet,CC) $(LDFLAGS) $(CFLAGS) -o $(PROG) $(OBJ)
        $(call quiet,CHECK) $(PROG) || ($(RM) -f $(PROG); exit 1)
 
-$(PROG).hex: $(PROG)
+$(HEX): $(PROG)
        avr-size $(PROG)
        $(OBJCOPY) -R .eeprom -O ihex $(PROG) $@
 
+load: $(HEX)
+       $(LOADCMD) $(LOADARG)$(HEX)
 
-load: $(PROG).hex
-       $(LOADCMD) $(LOADARG)$(PROG).hex
-
-load-slow: $(PROG).hex
-       $(LOADCMD) $(LOADSLOW) $(LOADARG)$(PROG).hex
-
-ao_product.h: ao-make-product.5c ../Version
-       $(call quiet,NICKLE,$<) $< -m altusmetrum.org -i $(IDPRODUCT) -p $(PRODUCT) -v $(VERSION) > $@
-
-ao_product.o: ao_product.c ao_product.h
-
-%.o : %.c $(INC)
-       $(call quiet,CC) -c $(CFLAGS) $<
+load-slow: $(HEX)
+       $(LOADCMD) $(LOADSLOW) $(LOADARG)$(HEX)
 
 distclean:     clean
 
 clean:
-       rm -f *.o $(PROG) $(PROG).hex
+       rm -f *.o *.elf *.ihx $(SCRIPT)
        rm -f ao_product.h
 
+publish: $(PUBLISH_HEX) $(PUBLISH_SCRIPT)
+
+$(PUBLISH_HEX): $(HEX)
+       cp -a $(HEX) $@
 
-publish: $(PROG).hex
-       cp -a $(PROG).hex $(PUBLISH_FILE)
+$(PUBLISH_SCRIPT): $(SCRIPT)
+       cp -a $(SCRIPT) $@
 
 load-product:
-       $(LOADCMD) $(LOADARG)$(PUBLISH_FILE)
+       ./$(SCRIPT) fast
 
 load-product-slow:
-       $(LOADCMD) $(LOADSLOW) $(LOADARG)$(PUBLISH_FILE)
+       ./$(SCRIPT) slow
 
-../altitude-pa.h: make-altitude-pa
-       nickle $< > $@
+$(SCRIPT): $(SCRIPT).tmpl Makefile $(TOPDIR)/Makedefs
+       sed -e 's/%HEX%/$(HEX)/' -e 's/%LOADCMD%/$(LOADCMD)/' -e 's/%LOADARG%/$(LOADARG)/' -e 's/%LOADSLOW%/$(LOADSLOW)/' $(SCRIPT).tmpl > $@ || (rm $@ && exit 1)
+       chmod +x $@
 
 install:
 
 uninstall:
 
-$(OBJ): ao_product.h $(INC)
+$(OBJ): $(INC)