浏览代码

esp32: move www.zip into max80/data

Per the Arduino specification, use the $(SKETCH)/data directory
instead of a path outside the sketch tree.
H. Peter Anvin 2 月之前
父节点
当前提交
02f7f2a95d
共有 3 个文件被更改,包括 24 次插入12 次删除
  1. 1 0
      esp32/.gitignore
  2. 22 11
      esp32/Makefile
  3. 1 1
      esp32/max80/www.c

+ 1 - 0
esp32/.gitignore

@@ -10,6 +10,7 @@ arduino/
 *.partitions.bin
 *.elf
 *.map
+*.deps
 www/version
 max80/src/common
 max80/debug.cfg

+ 22 - 11
esp32/Makefile

@@ -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

+ 1 - 1
esp32/max80/www.c

@@ -1,2 +1,2 @@
 #include "incbin.h"
-INCBIN(wwwzip, "../www.zip");
+INCBIN(wwwzip, "data/www.zip");