[Automake] Scripts for generated build targets do not necessarily produce their output
authorzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Jan 2014 15:13:06 +0000 (15:13 +0000)
committerzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 8 Jan 2014 15:13:06 +0000 (15:13 +0000)
https://bugs.webkit.org/show_bug.cgi?id=126378

Reviewed by Carlos Garcia Campos.

Source/JavaScriptCore:

* GNUmakefile.am: Touch the build targets that are generated through helper scripts that don't
assure the output is generated every time the script is invoked, most commonly due to unchanged
input. This assures the build targets are up-to-date and can't be older that their dependencies,
which would result in constant regeneration at every build.

Source/WebCore:

* GNUmakefile.am: Touch the build targets that are generated through helper scripts that don't
assure the output is generated every time the script is invoked, most commonly due to unchanged
* bindings/gobject/GNUmakefile.am: Simply move the gdom-gen-symbols file into the output file
instead of copying it if the contents differ and removing it. This again ensures that the output
file is always newer than its dependencies, even if the input hasn't changed.

Source/WebKit2:

* GNUmakefile.am: Don't pass the -n option to the ln command that links the build's include
directories to actual source directories. This doesn't replace the original symbolic link,
which can lead to the actual link being older than its dependencies and subsequent constant
relinking at every build.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@161497 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/GNUmakefile.am
Source/WebCore/ChangeLog
Source/WebCore/GNUmakefile.am
Source/WebCore/bindings/gobject/GNUmakefile.am
Source/WebKit2/ChangeLog
Source/WebKit2/GNUmakefile.am

index e58286c..3c7fdd5 100644 (file)
@@ -1,3 +1,15 @@
+2014-01-08  Zan Dobersek  <zdobersek@igalia.com>
+
+        [Automake] Scripts for generated build targets do not necessarily produce their output
+        https://bugs.webkit.org/show_bug.cgi?id=126378
+
+        Reviewed by Carlos Garcia Campos.
+
+        * GNUmakefile.am: Touch the build targets that are generated through helper scripts that don't
+        assure the output is generated every time the script is invoked, most commonly due to unchanged
+        input. This assures the build targets are up-to-date and can't be older that their dependencies,
+        which would result in constant regeneration at every build.
+
 2014-01-07  Filip Pizlo  <fpizlo@apple.com>
 
         DFG fixup phase should be responsible for inserting ValueToInt32's as needed and it should use Phantom to keep the original values alive in case of OSR exit
index 76d5e6b..159963d 100644 (file)
@@ -95,11 +95,13 @@ DerivedSources/JavaScriptCore/KeywordLookup.h: $(srcdir)/Source/JavaScriptCore/K
 
 DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h: $(javascriptcore_sources) $(llint_nosources) $(offlineasm_nosources)
        $(AM_V_GEN)$(RUBY) $(srcdir)/Source/JavaScriptCore/offlineasm/generate_offset_extractor.rb $(srcdir)/Source/JavaScriptCore/llint/LowLevelInterpreter.asm $@
+       $(AM_V_at)touch $@
 
 $(Programs_LLIntOffsetsExtractor_OBJECTS): DerivedSources/JavaScriptCore/LLIntDesiredOffsets.h
 
 DerivedSources/JavaScriptCore/LLIntAssembly.h: Programs/LLIntOffsetsExtractor$(EXEEXT)
        $(AM_V_GEN)$(RUBY) $(srcdir)/Source/JavaScriptCore/offlineasm/asm.rb $(srcdir)/Source/JavaScriptCore/llint/LowLevelInterpreter.asm Programs/LLIntOffsetsExtractor$(EXEEXT) $@
+       $(AM_V_at)touch $@
 
 $(libjavascriptcoregtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_OBJECTS): DerivedSources/JavaScriptCore/LLIntAssembly.h
 
@@ -235,6 +237,7 @@ DerivedSources/JavaScriptCore/InspectorJS.json: $(INSPECTOR_SCRIPTS_DIR)/generat
 # Copy generated header files to DerivedSources/JavaScriptCore/inspector so that WebCore's ForwardingHeader style of #include <inspector/Foo.h> will work.
 DerivedSources/JavaScriptCore/InspectorJSBackendDispatchers.cpp: DerivedSources/JavaScriptCore/InspectorJS.json $(INSPECTOR_SCRIPTS_DIR)/CodeGeneratorInspector.py $(INSPECTOR_SCRIPTS_DIR)/CodeGeneratorInspectorStrings.py
        $(AM_V_GEN)$(PYTHON) $(INSPECTOR_SCRIPTS_DIR)/CodeGeneratorInspector.py $< --output_h_dir $(GENSOURCES_JAVASCRIPTCORE) --output_cpp_dir $(GENSOURCES_JAVASCRIPTCORE) --output_js_dir $(GENSOURCES_JAVASCRIPTCORE) --output_type JavaScript
+       $(AM_V_at)touch $@
        mkdir -p DerivedSources/JavaScriptCore/inspector
        cp DerivedSources/JavaScriptCore/InspectorJSTypeBuilders.h DerivedSources/JavaScriptCore/InspectorJSFrontendDispatchers.h DerivedSources/JavaScriptCore/InspectorJSBackendDispatchers.h DerivedSources/JavaScriptCore/inspector
 DerivedSources/JavaScriptCore/InspectorJSTypeBuilders.h: DerivedSources/JavaScriptCore/InspectorJSTypeBuilders.cpp
index 7b3bb1b..d7a983d 100644 (file)
@@ -1,3 +1,16 @@
+2014-01-08  Zan Dobersek  <zdobersek@igalia.com>
+
+        [Automake] Scripts for generated build targets do not necessarily produce their output
+        https://bugs.webkit.org/show_bug.cgi?id=126378
+
+        Reviewed by Carlos Garcia Campos.
+
+        * GNUmakefile.am: Touch the build targets that are generated through helper scripts that don't
+        assure the output is generated every time the script is invoked, most commonly due to unchanged
+        * bindings/gobject/GNUmakefile.am: Simply move the gdom-gen-symbols file into the output file
+        instead of copying it if the contents differ and removing it. This again ensures that the output
+        file is always newer than its dependencies, even if the input hasn't changed.
+
 2014-01-08  Frédéric Wang  <fred.wang@free.fr>
 
         Remove invalid comments from mathtags.ing
index cfecee7..170f07b 100644 (file)
@@ -360,6 +360,7 @@ DerivedSources/WebCore/InspectorWeb.json: $(INSPECTOR_SCRIPTS_DIR)/generate-comb
 # All Web Inspector generated files are created with this one call to CodeGeneratorInspector.py
 DerivedSources/WebCore/InspectorWebBackendDispatchers.cpp: $(GENSOURCES_WEBCORE)/InspectorWeb.json $(GENSOURCES_JAVASCRIPTCORE)/InspectorJS.json $(INSPECTOR_SCRIPTS_DIR)/CodeGeneratorInspector.py $(INSPECTOR_SCRIPTS_DIR)/CodeGeneratorInspectorStrings.py $(GENSOURCES_JAVASCRIPTCORE)/InspectorJSTypeBuilders.h
        $(AM_V_GEN)$(PYTHON) $(INSPECTOR_SCRIPTS_DIR)/CodeGeneratorInspector.py $(GENSOURCES_WEBCORE)/InspectorWeb.json $(GENSOURCES_JAVASCRIPTCORE)/InspectorJS.json --output_h_dir $(GENSOURCES_WEBCORE) --output_cpp_dir $(GENSOURCES_WEBCORE) --output_js_dir $(GENSOURCES_WEBCORE) --output_type Web
+       $(AM_V_at)touch $@
 DerivedSources/WebCore/InspectorWebTypeBuilders.h: DerivedSources/WebCore/InspectorWebTypeBuilders.cpp
 DerivedSources/WebCore/InspectorWebTypeBuilders.cpp: DerivedSources/WebCore/InspectorWebFrontendDispatchers.h
 DerivedSources/WebCore/InspectorWebFrontendDispatchers.h: DerivedSources/WebCore/InspectorWebFrontendDispatchers.cpp
@@ -446,6 +447,7 @@ $(supplemental_dependency_file): $(SCRIPTS_FOR_PREPROCESS_IDLS) $(dom_binding_id
        $(AM_V_at)true > $(idl_files_list)
        $(AM_V_at)($(foreach idl, $(dom_binding_idls), echo $(idl) &&) true) >> $(idl_files_list)
        $(AM_V_at)$(PERL) -I$(WebCore)/bindings/scripts $(WebCore)/bindings/scripts/preprocess-idls.pl --defines "LANGUAGE_JAVASCRIPT=1 $(feature_defines)" --idlFilesList $(idl_files_list) --windowConstructorsFile $(window_constructors_file) --workerGlobalScopeConstructorsFile $(workerglobalscope_constructors_file) --sharedWorkerGlobalScopeConstructorsFile $(sharedworkerglobalscope_constructors_file) --dedicatedWorkerGlobalScopeConstructorsFile $(dedicatedworkerglobalscope_constructors_file) --supplementalDependencyFile $@
+       $(AM_V_at)touch $@
 
 .PHONY: $(window_constructors_file) $(workerglobalscope_constructors_file) $(sharedworkerglobalscope_constructors_file) $(dedicatedworkerglobalscope_constructors_file)
 
index 6864e10..bd3643f 100644 (file)
@@ -501,8 +501,7 @@ DerivedSources/webkitdom/WebKitDOM%.symbols: DerivedSources/webkitdom/WebKitDOM%
 DerivedSources/webkitdom/webkitdom.symbols: $(gdom_symbol_files) $(WebCore)/bindings/gobject/webkitdom.symbols $(WebCore)/bindings/scripts/gobject-run-api-break-test
        $(AM_V_GEN)cat $(gdom_symbol_files) > gdom-gen-symbols \
        && $(PYTHON) $(WebCore)/bindings/scripts/gobject-run-api-break-test $(WebCore)/bindings/gobject/webkitdom.symbols gdom-gen-symbols \
-       && (cmp -s gdom-gen-symbols $@ || cp gdom-gen-symbols $@) \
-       && rm -f gdom-gen-symbols
+       && mv gdom-gen-symbols $@
 
 EXTRA_DIST += \
        $(WebCore)/bindings/gobject/WebKitDOMCustom.symbols \
index 55ba879..cb42d35 100644 (file)
@@ -1,3 +1,15 @@
+2014-01-08  Zan Dobersek  <zdobersek@igalia.com>
+
+        [Automake] Scripts for generated build targets do not necessarily produce their output
+        https://bugs.webkit.org/show_bug.cgi?id=126378
+
+        Reviewed by Carlos Garcia Campos.
+
+        * GNUmakefile.am: Don't pass the -n option to the ln command that links the build's include
+        directories to actual source directories. This doesn't replace the original symbolic link,
+        which can lead to the actual link being older than its dependencies and subsequent constant
+        relinking at every build.
+
 2014-01-07  Eric Carlson  <eric.carlson@apple.com>
 
         Teach MediaSessionManager to manage interruptions
index ed45d71..37f74c3 100644 (file)
@@ -397,11 +397,11 @@ BUILT_SOURCES += $(top_builddir)/stamp-webkit2-forwarding-headers
 
 $(GENSOURCES_WEBKIT2)/webkit2gtk/include/webkit2: $(webkit2gtk_h_api)
        $(AM_V_GEN)mkdir -p $(GENSOURCES_WEBKIT2)/webkit2gtk/include \
-       && ln -n -s -f ${shell pwd}/$(WebKit2)/UIProcess/API/gtk $@
+       && ln -s -f ${shell pwd}/$(WebKit2)/UIProcess/API/gtk $@
 
 $(GENSOURCES_WEBKIT2)/webkit2extension/include/webkit2: $(webkit2gtk_h_api)
        $(AM_V_GEN)mkdir -p $(GENSOURCES_WEBKIT2)/webkit2extension/include \
-       && ln -n -s -f ${shell pwd}/$(WebKit2)/WebProcess/InjectedBundle/API/gtk $@
+       && ln -s -f ${shell pwd}/$(WebKit2)/WebProcess/InjectedBundle/API/gtk $@
 
 BUILT_SOURCES += \
        $(GENSOURCES_WEBKIT2)/webkit2extension/include/webkit2 \