From ed7b54d53410e33d8980397fd0ee757be31f7628 Mon Sep 17 00:00:00 2001 From: Debian Krap Maintainers Date: Mon, 15 Sep 2014 17:48:35 +0000 Subject: [PATCH] build-generated-code-multiple-outputs Gbp-Pq: Name build-generated-code-multiple-outputs.patch --- libsrc/plugin/Makefile.am | 44 ++++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/libsrc/plugin/Makefile.am b/libsrc/plugin/Makefile.am index 39a431b6..1bac2f17 100644 --- a/libsrc/plugin/Makefile.am +++ b/libsrc/plugin/Makefile.am @@ -93,15 +93,45 @@ generated_code = \ export_gate_virtuoso.c import_gate_virtuoso.c import_gate_virtuoso.h \ export_plugin_lang25.c import_plugin_lang25.c import_plugin_lang25.h -$(generated_code): .generated - -.generated: Makefile.am gen_all_gates.sh gen_gate.sh gate_virtuoso.h plugin_lang25.h plugin_msdtc.h - cd $(top_srcdir)/libsrc/plugin; ./gen_all_gates.sh - -rm -rf tmp - touch .generated +# This is still wrong: +# +#$(generated_code): .generated +# +#.generated: Makefile.am gen_all_gates.sh gen_gate.sh gate_virtuoso.h plugin_lang25.h plugin_msdtc.h +# cd $(top_srcdir)/libsrc/plugin; ./gen_all_gates.sh +# -rm -rf tmp +# touch .generated + +# This is correct: +generated_code-stamp: Makefile gen_all_gates.sh gen_gate.sh gate_virtuoso.h plugin_lang25.h plugin_msdtc.h + echo "GENCODE=+= stamp" + @rm -f generated_code-temp + @touch generated_code-temp + @cd $(top_srcdir)/libsrc/plugin; ./gen_all_gates.sh + @rm -rf tmp + @mv -f generated_code-temp $@ + +$(generated_code): generated_code-stamp + ## Recover from the removal of $@ + @if test -f $@; then :; else \ + trap 'rm -rf generated_code-lock generated_code-stamp' 1 2 13 15; \ + if mkdir generated_code-lock 2>/dev/null; then \ + ## This code is being executed by the first process. + rm -f generated_code-stamp; \ + echo "GENCODE=+= stamp"; \ + $(MAKE) $(AM_MAKEFLAGS) generated_code-stamp; \ + rmdir generated_code-lock; \ + else \ + ## This code is being executed by the follower processes. + ## Wait until the first process is done. + while test -d generated_code-lock; do sleep 1; echo "//+//"; done; \ + ## Succeed if and only if the first process succeeded. + test -f generated_code-stamp; exit $$?; \ + fi; \ + fi BUILT_SOURCES = $(generated_code) -DISTCLEANFILES = $(generated_code) .generated +DISTCLEANFILES = $(generated_code) generated_code-stamp generated_code-lock generated_code-temp # ---------------------------------------------------------------------- -- 2.30.2