From 238a612de1b9ef84420e15eaf4ba5c45f204ebf1 Mon Sep 17 00:00:00 2001 From: Albert Emanuel Milani Date: Thu, 15 Jun 2023 00:17:18 -0400 Subject: [PATCH 1/3] Fix parallel build Every documentation file expected to be able to rewrite pandoc.yml, causing conflicts when make tried building different doc files at the same time. Now each file's .yml file gets a unique name. --- .gitignore | 1 - Makefile | 36 ++++++++++++++++++------------------ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 24d184e..70416c1 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,3 @@ loadp2/build-win32 proploader-*-build spin2gui_dir src/rc/wish.res.o -pandoc.yml diff --git a/Makefile b/Makefile index a7d19fa..236d61f 100644 --- a/Makefile +++ b/Makefile @@ -106,8 +106,10 @@ endif VPATH=.:spin2cpp/doc ifdef PANDOC_EXISTS -PDFFILES=spin2cpp/Flexspin.pdf spin2cpp/doc/general.pdf spin2cpp/doc/basic.pdf spin2cpp/doc/c.pdf spin2cpp/doc/spin.pdf -HTMLFILES=spin2cpp/Flexspin.html spin2cpp/doc/general.html spin2cpp/doc/basic.html spin2cpp/doc/c.html spin2cpp/doc/spin.html +DOCSTEMS=spin2cpp/Flexspin spin2cpp/doc/general spin2cpp/doc/basic spin2cpp/doc/c spin2cpp/doc/spin +PDFFILES=$(patsubst %,%.pdf,$(DOCSTEMS)) +HTMLFILES=$(patsubst %,%.html,$(DOCSTEMS)) +YMLFILES=$(patsubst %,%.yml,$(DOCSTEMS)) endif # @@ -154,7 +156,7 @@ clean: rm -rf *.exe *.zip rm -rf bin rm -rf board - rm -rf $(BINFILES) $(PDFFILES) $(HTMLFILES) + rm -rf $(BINFILES) $(PDFFILES) $(HTMLFILES) $(YMLFILES) rm -rf spin2cpp/build* rm -rf proploader-*-build rm -rf loadp2/build* @@ -167,10 +169,9 @@ clean: rm -rf samples/*/*.lst samples/*/*.pasm samples/*/*.p2asm rm -rf samples/$(SUBSAMPLES)/*.binary rm -rf $(RESOBJ) - rm -rf pandoc.yml rm -rf src/version.tcl -flexprop_base: src/version.tcl src/makepandoc.tcl $(BOARDFILES) $(PDFFILES) $(HTMLFILES) +flexprop_base: $(BOARDFILES) docs mkdir -p flexprop/bin mkdir -p flexprop/doc mkdir -p flexprop/board @@ -191,17 +192,21 @@ endif .PHONY: flexprop_base -# rules for building PDF files +# rules for building PDF and HTML documentation -%.pdf: %.md - $(TCLSH) src/makepandoc.tcl $< > pandoc.yml - -$(PANDOC) --metadata-file=pandoc.yml -s --toc -f gfm -t latex -o $@ $< +docs: $(PDFFILES) $(HTMLFILES) + +%.pdf: %.md %.yml + -$(PANDOC) --metadata-file=$*.yml -s --toc -f gfm -t latex -o $@ $< + +%.html: %.md %.yml + -$(PANDOC) --metadata-file=$*.yml -s --toc -f gfm -o $@ $< -# rules for building PDF files +%.yml: %.md src/makepandoc.tcl src/version.tcl + $(TCLSH) src/makepandoc.tcl $< > $@ -%.html: %.md - $(TCLSH) src/makepandoc.tcl $< > pandoc.yml - -$(PANDOC) --metadata-file=pandoc.yml -s --toc -f gfm -o $@ $< +src/version.tcl: version.inp spin2cpp/version.h + cpp -xc++ -DTCL_SRC < version.inp > $@ # rules for native binaries @@ -312,11 +317,6 @@ loadp2/build-macosx/loadp2: ## Other rules -src/version.tcl: version.inp spin2cpp/version.h - cpp -xc++ -DTCL_SRC < version.inp > $@ - -docs: $(PDFFILES) $(HTMLFILES) - docker: docker build -t flexpropbuilder . From d1f21082a2f273bc418d3e486b5deef0bc0c1227 Mon Sep 17 00:00:00 2001 From: Albert Emanuel Milani Date: Thu, 15 Jun 2023 00:22:29 -0400 Subject: [PATCH 2/3] Correctly invoke recursive make Why it should be done this way: https://www.gnu.org/software/make/manual/make.html#MAKE-Variable --- Makefile | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index 236d61f..731e87d 100644 --- a/Makefile +++ b/Makefile @@ -226,15 +226,15 @@ bin/loadp2: loadp2/build/loadp2 cp $< $@ spin2cpp/build/flexspin: - make -C spin2cpp OPT=-O1 + $(MAKE) -C spin2cpp OPT=-O1 spin2cpp/build/flexcc: - make -C spin2cpp OPT=-O1 + $(MAKE) -C spin2cpp OPT=-O1 proploader-$(OS)-build/bin/proploader: bin/flexspin - make -C PropLoader OS=$(OS) SPINCMP="`pwd`/bin/flexspin" + $(MAKE) -C PropLoader OS=$(OS) SPINCMP="`pwd`/bin/flexspin" loadp2/build/loadp2: bin/flexspin - make -C loadp2 P2ASM="`pwd`/bin/flexspin -2 -I`pwd`/spin2cpp/include" + $(MAKE) -C loadp2 P2ASM="`pwd`/bin/flexspin -2 -I`pwd`/spin2cpp/include" # rules for Win32 binaries @@ -265,23 +265,23 @@ bin/loadp2.exe: loadp2/build-win32/loadp2.exe mv bin/loadp2.signed.exe bin/loadp2.exe spin2cpp/build-win32/flexspin.exe: - make -C spin2cpp CROSS=win32 + $(MAKE) -C spin2cpp CROSS=win32 spin2cpp/build-win32/flexcc.exe: - make -C spin2cpp CROSS=win32 + $(MAKE) -C spin2cpp CROSS=win32 ifneq ($(OS),msys) proploader-msys-build/bin/proploader.exe: - make -C PropLoader CROSS=win32 SPINCMP="`pwd`/bin/flexspin" + $(MAKE) -C PropLoader CROSS=win32 SPINCMP="`pwd`/bin/flexspin" endif ifneq ($(OS),macosx) proploader-macosx-build/bin/proploader: - make -C PropLoader CROSS=macosx SPINCMP="`pwd`/bin/flexspin" + $(MAKE) -C PropLoader CROSS=macosx SPINCMP="`pwd`/bin/flexspin" endif ifneq ($(OS),msys) loadp2/build-win32/loadp2.exe: - make -C loadp2 CROSS=win32 P2ASM="`pwd`/bin/flexspin -2 -I`pwd`/spin2cpp/include" + $(MAKE) -C loadp2 CROSS=win32 P2ASM="`pwd`/bin/flexspin -2 -I`pwd`/spin2cpp/include" endif $(RESOBJ): $(RES_RC) @@ -308,12 +308,12 @@ bin/flexcc.mac: spin2cpp/build-macosx/flexcc $(SIGNMAC) $@ spin2cpp/build-macosx/flexspin: - make -C spin2cpp CROSS=macosx + $(MAKE) -C spin2cpp CROSS=macosx spin2cpp/build-macosx/flexcc: - make -C spin2cpp CROSS=macosx + $(MAKE) -C spin2cpp CROSS=macosx loadp2/build-macosx/loadp2: - make -C loadp2 CROSS=macosx + $(MAKE) -C loadp2 CROSS=macosx ## Other rules @@ -327,7 +327,7 @@ board/P2ES_sdcard.bin: board/sdcard/sdboot.binary mv board/sdcard/sdboot.binary board/P2ES_sdcard.bin board/sdcard/sdboot.binary: bin/flexspin board/sdcard - (make -C board/sdcard P2CC="`pwd`/bin/flexspin -2 -I`pwd`/spin2cpp/include") + $(MAKE) -C board/sdcard P2CC="`pwd`/bin/flexspin -2 -I`pwd`/spin2cpp/include" rm -f board/sdcard/*.p2asm board/P2ES_flashloader.spin2: loadp2/board/P2ES_flashloader.spin2 From 7b80fbe1822eed54ded68ad1f2e5f1cef9cf9155 Mon Sep 17 00:00:00 2001 From: Albert Emanuel Milani Date: Thu, 15 Jun 2023 01:08:57 -0400 Subject: [PATCH 3/3] Don't build flexspin/flexcc twice during parallel build Not only is this a waste, but if the second build of a file was written while the first was still being read, it would cause the build to fail. --- Makefile | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 731e87d..eadf17b 100644 --- a/Makefile +++ b/Makefile @@ -225,9 +225,7 @@ bin/loadp2: loadp2/build/loadp2 mkdir -p bin cp $< $@ -spin2cpp/build/flexspin: - $(MAKE) -C spin2cpp OPT=-O1 -spin2cpp/build/flexcc: +spin2cpp/build/flexspin spin2cpp/build/flexcc: $(MAKE) -C spin2cpp OPT=-O1 proploader-$(OS)-build/bin/proploader: bin/flexspin @@ -264,9 +262,7 @@ bin/loadp2.exe: loadp2/build-win32/loadp2.exe $(SIGNPC) bin/loadp2 mv bin/loadp2.signed.exe bin/loadp2.exe -spin2cpp/build-win32/flexspin.exe: - $(MAKE) -C spin2cpp CROSS=win32 -spin2cpp/build-win32/flexcc.exe: +spin2cpp/build-win32/flexspin.exe spin2cpp/build-win32/flexcc.exe: $(MAKE) -C spin2cpp CROSS=win32 ifneq ($(OS),msys) @@ -307,9 +303,7 @@ bin/flexcc.mac: spin2cpp/build-macosx/flexcc cp $< $@ $(SIGNMAC) $@ -spin2cpp/build-macosx/flexspin: - $(MAKE) -C spin2cpp CROSS=macosx -spin2cpp/build-macosx/flexcc: +spin2cpp/build-macosx/flexspin spin2cpp/build-macosx/flexcc: $(MAKE) -C spin2cpp CROSS=macosx loadp2/build-macosx/loadp2: