changeset 39815:35efeabe809f

gnulib-tool: Fix build order when $testsbase is a subdir of $sourcebase. Reported by Antoine Luong <antoine.luong@c-s.fr> in <https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00008.html>. * gnulib-tool (func_import): For the tests, set a dotfirst flag. (func_emit_lib_Makefile_am): Consider the dotfirst flag. (func_emit_tests_Makefile_am): Don't consider the dotfirst flag.
author Bruno Haible <bruno@clisp.org>
date Mon, 03 Sep 2018 21:19:16 +0200
parents 6cbd05e63545
children 160f362b8469
files ChangeLog gnulib-tool
diffstat 2 files changed, 29 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sun Sep 02 02:53:31 2018 -0700
+++ b/ChangeLog	Mon Sep 03 21:19:16 2018 +0200
@@ -1,3 +1,12 @@
+2018-09-03  Bruno Haible  <bruno@clisp.org>
+
+	gnulib-tool: Fix build order when $testsbase is a subdir of $sourcebase.
+	Reported by Antoine Luong <antoine.luong@c-s.fr> in
+	<https://lists.gnu.org/archive/html/bug-gnulib/2018-09/msg00008.html>.
+	* gnulib-tool (func_import): For the tests, set a dotfirst flag.
+	(func_emit_lib_Makefile_am): Consider the dotfirst flag.
+	(func_emit_tests_Makefile_am): Don't consider the dotfirst flag.
+
 2018-09-02  Paul Eggert  <eggert@cs.ucla.edu>
 
 	mktime: fix unlikely race+overflow bug
--- a/gnulib-tool	Sun Sep 02 02:53:31 2018 -0700
+++ b/gnulib-tool	Mon Sep 03 21:19:16 2018 +0200
@@ -3484,7 +3484,7 @@
 #                   sed expression for resolving ${gl_include_guard_prefix}
 # - destfile        filename relative to destdir of makefile being generated
 # Input/Output:
-# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
+# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val,dotfirst}
 #                   list of edits to be done to Makefile.am variables
 # Output:
 # - uses_subdirs    nonempty if object files in subdirs exist
@@ -3655,8 +3655,14 @@
     eval dir=\"\$makefile_am_edit${edit}_dir\"
     eval var=\"\$makefile_am_edit${edit}_var\"
     eval val=\"\$makefile_am_edit${edit}_val\"
+    eval dotfirst=\"\$makefile_am_edit${edit}_dotfirst\"
     if test -n "$var"; then
       if test "${dir}Makefile.am" = "$destfile" || test "./${dir}Makefile.am" = "$destfile"; then
+        if test "${var}" = SUBDIRS && test -n "$dotfirst"; then
+          # The added subdirectory ${val} needs to be mentioned after '.'.
+          # Since we don't have '.' among SUBDIRS so far, add it now.
+          val=". ${val}"
+        fi
         echo "${var} += ${val}"
         eval "makefile_am_edit${edit}_var="
       fi
@@ -3838,7 +3844,7 @@
 #                   sed expression for resolving ${gl_include_guard_prefix}
 # - destfile        filename relative to destdir of makefile being generated
 # Input/Output:
-# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val}
+# - makefile_am_edits and makefile_am_edit${edit}_{dir,var,val,dotfirst}
 #                   list of edits to be done to Makefile.am variables
 # Output:
 # - uses_subdirs    nonempty if object files in subdirs exist
@@ -3987,8 +3993,14 @@
     eval dir=\"\$makefile_am_edit${edit}_dir\"
     eval var=\"\$makefile_am_edit${edit}_var\"
     eval val=\"\$makefile_am_edit${edit}_val\"
+    eval dotfirst=\"\$makefile_am_edit${edit}_dotfirst\"
     if test -n "$var"; then
       if test "${dir}Makefile.am" = "$destfile" || test "./${dir}Makefile.am" = "$destfile"; then
+        if test "${var}" = SUBDIRS && test -n "$dotfirst"; then
+          # The added subdirectory ${val} needs to be mentioned after '.'.
+          # But we have '.' among SUBDIRS already, so do nothing.
+          :
+        fi
         echo "${var} += ${val}"
         eval "makefile_am_edit${edit}_var="
       fi
@@ -5253,15 +5265,19 @@
   # Some of these edits apply to files that we will generate; others are
   # under the responsibility of the developer.
   makefile_am_edits=0
-  # func_note_Makefile_am_edit dir var value
+  # func_note_Makefile_am_edit dir var value [dotfirst]
   # remembers that ${dir}Makefile.am needs to be edited to that ${var} mentions
   # ${value}.
+  # If ${dotfirst} is non-empty, this mention needs to be present after '.'.
+  # This is a special hack for the SUBDIRS variable, cf.
+  # <https://www.gnu.org/software/automake/manual/html_node/Subdirectories.html>.
   func_note_Makefile_am_edit ()
   {
     makefile_am_edits=`expr $makefile_am_edits + 1`
     eval makefile_am_edit${makefile_am_edits}_dir=\"\$1\"
     eval makefile_am_edit${makefile_am_edits}_var=\"\$2\"
     eval makefile_am_edit${makefile_am_edits}_val=\"\$3\"
+    eval makefile_am_edit${makefile_am_edits}_dotfirst=\"\$4\"
   }
   if test "$makefile_am" = Makefile.am; then
     sourcebase_dir=`echo "$sourcebase" | sed -n -e 's,/[^/]*$,/,p'`
@@ -5277,7 +5293,7 @@
     if test "$makefile_am" = Makefile.am; then
       testsbase_dir=`echo "$testsbase" | sed -n -e 's,/[^/]*$,/,p'`
       testsbase_base=`basename "$testsbase"`
-      func_note_Makefile_am_edit "$testsbase_dir" SUBDIRS "$testsbase_base"
+      func_note_Makefile_am_edit "$testsbase_dir" SUBDIRS "$testsbase_base" true
     fi
   fi
   func_note_Makefile_am_edit "" ACLOCAL_AMFLAGS "-I ${m4base}"