|
@@ -9,21 +9,30 @@ PERL = perl
|
|
|
|
|
|
SKETCH = max80
|
|
|
TARGET = output/$(SKETCH).ino.bin
|
|
|
-GENFILES = www.zip
|
|
|
+GENFILES = $(SKETCH)/data/www.zip
|
|
|
WWW = www
|
|
|
PORT ?= /dev/ttyACM0
|
|
|
|
|
|
all: $(TARGET)
|
|
|
|
|
|
-common = $(SKETCH)/src/common
|
|
|
+common := ../common
|
|
|
|
|
|
-$(TARGET): $(shell find $(SKETCH) -type f) $(GENFILES)
|
|
|
- if ! test -L '$(common)'; then \
|
|
|
- rm -rf '$(common)' ; \
|
|
|
- cd '$(SKETCH)/src' && ln -sf ../../../common . ; \
|
|
|
- fi
|
|
|
+output/%.ino.bin: $(GENFILES)
|
|
|
cd $(SKETCH) && $(ARDUINO) compile
|
|
|
|
|
|
+-include $(SKETCH).deps
|
|
|
+
|
|
|
+%.deps:
|
|
|
+ if ! test -L '$*/src/common'; then \
|
|
|
+ rm -rf '$*/src/common' 2>/dev/null ; \
|
|
|
+ cd '$*/src' && ln -sf ../../$(common) . ; \
|
|
|
+ fi
|
|
|
+ ( echo -n 'output/$*.ino.bin: ' && \
|
|
|
+ find -L '$*' -type f '(' -path '$*/data/*' \
|
|
|
+ $(patsubst %,-o -name '*.%',ino c h S cpp hpp tpp ipp) \
|
|
|
+ ')' -printf '\\\n\t%p ' && \
|
|
|
+ echo '' ) > '$@'
|
|
|
+
|
|
|
.PHONY: zip
|
|
|
zip: zipexclude
|
|
|
mkdir -p zip
|
|
@@ -35,9 +44,10 @@ zip: zipexclude
|
|
|
$(ZIP) -9DrpX -UN=UTF8 -FS ../zip/www.zip . -x@../zipexclude
|
|
|
|
|
|
# Ugly hack but needed to avoid unnecessary rebuilds
|
|
|
-www.zip: zip
|
|
|
- if [ ! -f $@ ] || [ zip/$@ -nt $@ ]; then \
|
|
|
- cp -f zip/$@ $@; \
|
|
|
+$(SKETCH)/data/www.zip: zip
|
|
|
+ if [ ! -f $@ ] || [ zip/$(@F) -nt $@ ]; then \
|
|
|
+ mkdir -p $(@D) ; \
|
|
|
+ cp -f zip/$(@F) $@; \
|
|
|
rm -f build/sketch/www.c build/sketch/www.c.*; \
|
|
|
fi
|
|
|
|
|
@@ -45,7 +55,8 @@ upload: $(TARGET)
|
|
|
cd $(SKETCH) && $(ARDUINO) upload -p $(PORT) $(SKETCH)
|
|
|
|
|
|
clean:
|
|
|
- rm -rf build cache zip $(GENFILES) $(common)
|
|
|
+ rm -rf build cache zip www.zip *.deps $(GENFILES) \
|
|
|
+ $(SKETCH)/src/common
|
|
|
|
|
|
spotless: clean
|
|
|
rm -rf arduino output
|