changeset 6250:2c772fe1e1d0

Support --with-tests also with --import.
author Bruno Haible <bruno@clisp.org>
date Mon, 19 Sep 2005 15:33:19 +0000
parents 564133adbd69
children 9acbfeda43d3
files ChangeLog gnulib-tool
diffstat 2 files changed, 79 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2005-09-18  Bruno Haible  <bruno@clisp.org>
+
+	* gnulib-tool: Support --with-tests also with --import.
+	(func_emit_tests_Makefile_am): Use variables $m4base and $testsbase.
+	(func_import): Use variables $testsbase and $inctests. Emit a
+	gl_TESTS_BASE form into gnulib-cache.m4. Create $testsbase/Makefile.am.
+	Remind the user to add AC_CONFIG_FILES($testsdir/Makefile) and
+	SUBDIRS += $testsdir.
+	(func_create_testdir): Update.
+
 2005-09-18  Bruno Haible  <bruno@clisp.org>
 
 	* gnulib-tool (func_import): Comment out code that spits out the
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -22,7 +22,7 @@
 
 progname=$0
 package=gnulib
-cvsdatestamp='$Date: 2005-09-19 15:32:51 $'
+cvsdatestamp='$Date: 2005-09-19 15:33:19 $'
 last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'`
 version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'`
 
@@ -682,6 +682,8 @@
 # - libname         library name
 # - libtool         true if libtool will be used, blank otherwise
 # - sourcebase      relative directory containing lib source code
+# - m4base          relative directory containing autoconf macros
+# - testsbase       relative directory containing unit test code
 func_emit_tests_Makefile_am ()
 {
   if test -n "$libtool"; then
@@ -689,6 +691,7 @@
   else
     libext=a
   fi
+  testsbase_inverse=`echo "$testsbase" | sed -e 's,/$,,' | sed -e 's,[^/][^/]*,..,g'`
   echo "## Process this file with automake to produce Makefile.in."
   echo "# Copyright (C) 2004-2005 Free Software Foundation, Inc."
   echo "#"
@@ -703,7 +706,7 @@
   # Generate dependencies here, since it eases the debugging of test failures.
   echo "AUTOMAKE_OPTIONS = 1.5 foreign"
   echo
-  echo "ACLOCAL_AMFLAGS = -I ../m4"
+  echo "ACLOCAL_AMFLAGS = -I ${testsbase_inverse}/${m4base}"
   echo
   echo "TESTS ="
   echo "noinst_PROGRAMS ="
@@ -717,10 +720,10 @@
   echo
   echo "AM_CPPFLAGS = \\"
   echo "  -I. -I\$(srcdir) \\"
-  echo "  -I.. -I\$(srcdir)/.. \\"
-  echo "  -I../${sourcebase-lib} -I\$(srcdir)/../${sourcebase-lib}"
+  echo "  -I${testsbase_inverse} -I\$(srcdir)/${testsbase_inverse} \\"
+  echo "  -I${testsbase_inverse}/${sourcebase-lib} -I\$(srcdir)/${testsbase_inverse}/${sourcebase-lib}"
   echo
-  echo "LDADD = ../${sourcebase-lib}/${libname}.${libext}"
+  echo "LDADD = ${testsbase_inverse}/${sourcebase-lib}/${libname}.${libext}"
   echo
   for module in $modules; do
     func_verify_tests_module
@@ -750,7 +753,9 @@
 # - libname         library name
 # - sourcebase      directory relative to destdir where to place source code
 # - m4base          directory relative to destdir where to place *.m4 macros
+# - testsbase       directory relative to destdir where to place unit test code
 # - auxdir          directory relative to destdir where to place build aux files
+# - inctests        true if --with-tests was given, blank otherwise
 # - avoidlist       list of modules to avoid, from --avoid
 # - lgpl            true if library's license shall be LGPL, blank otherwise
 # - libtool         true if libtool will be used, blank otherwise
@@ -765,6 +770,7 @@
   cached_avoidlist=
   cached_sourcebase=
   cached_m4base=
+  cached_testsbase=
   cached_libname=
   cached_lgpl=
   cached_libtool=
@@ -787,6 +793,9 @@
       /gl_M4_BASE(/ {
         s,^.*gl_M4_BASE([[ ]*\([^])]*\).*$,cached_m4base="\1",p
       }
+      /gl_TESTS_BASE(/ {
+        s,^.*gl_TESTS_BASE([[ ]*\([^])]*\).*$,cached_testsbase="\1",p
+      }
       /gl_LIB(/ {
         s,^.*gl_LIB([[ ]*\([^])]*\).*$,cached_libname="\1",p
       }
@@ -840,6 +849,13 @@
       func_fatal_error "missing --source-base option"
     fi
   fi
+  # The testsbase defaults to the cached one.
+  if test -z "$testsbase"; then
+    testsbase="$cached_testsbase"
+    if test -z "$testsbase"; then
+      func_fatal_error "missing --tests-base option"
+    fi
+  fi
   # The libname defaults to the cached one.
   if test -z "$supplied_libname"; then
     libname="$cached_libname"
@@ -919,6 +935,16 @@
       echo "Create directory $destdir/$m4base"
     fi
   fi
+  if test -n "$inctests"; then
+    if test ! -d "$destdir/$testsbase"; then
+      if $doit; then
+        echo "Creating directory $destdir/$testsbase"
+        mkdir "$destdir/$testsbase" || func_fatal_error "failed"
+      else
+        echo "Create directory $destdir/$testsbase"
+      fi
+    fi
+  fi
   if test ! -d "$destdir/$auxdir"; then
     if $doit; then
       echo "Creating directory $destdir/$auxdir"
@@ -1114,6 +1140,7 @@
     echo "gl_AVOID([$avoidlist])"
     echo "gl_SOURCE_BASE([$sourcebase])"
     echo "gl_M4_BASE([$m4base])"
+    echo "gl_TESTS_BASE([$testsbase])"
     echo "gl_LIB([$libname])"
     test -z "$lgpl" || echo "gl_LGPL"
     test -z "$libtool" || echo "gl_LIBTOOL"
@@ -1231,6 +1258,33 @@
     fi
   fi
 
+  if test -n "$inctests"; then
+    # Create tests/Makefile.am.
+    func_emit_tests_Makefile_am > "$destdir"/$testsbase/Makefile.am.tmp
+    if test -f "$destdir"/$testsbase/Makefile.am; then
+      if cmp "$destdir"/$testsbase/Makefile.am "$destdir"/$testsbase/Makefile.am.tmp > /dev/null; then
+        rm -f "$destdir"/$testsbase/Makefile.am.tmp
+      else
+        if $doit; then
+          echo "Updating $testsbase/Makefile.am (backup in $testsbase/Makefile.am~)"
+          mv -f "$destdir"/$testsbase/Makefile.am "$destdir"/$testsbase/Makefile.am~
+          mv -f "$destdir"/$testsbase/Makefile.am.tmp "$destdir"/$testsbase/Makefile.am
+        else
+          echo "Update $testsbase/Makefile.am (backup in $testsbase/Makefile.am~)"
+          rm -f "$destdir"/$testsbase/Makefile.am.tmp
+        fi
+      fi
+    else
+      if $doit; then
+        echo "Creating $testsbase/Makefile.am"
+        mv -f "$destdir"/$testsbase/Makefile.am.tmp "$destdir"/$testsbase/Makefile.am
+      else
+        echo "Create $testsbase/Makefile.am"
+        rm -f "$destdir"/$testsbase/Makefile.am.tmp
+      fi
+    fi
+  fi
+
   echo "Finished."
   echo
   echo "You may need to add #include directives for the following .h files."
@@ -1240,9 +1294,17 @@
   echo
   echo "Don't forget to"
   echo "  - add \"$sourcebase/Makefile\" to AC_CONFIG_FILES in $configure_ac,"
+  if test -n "$inctests"; then
+    echo "  - add \"$testsbase/Makefile\" to AC_CONFIG_FILES in $configure_ac,"
+  fi
   sourcebase_dir=`echo "$sourcebase" | sed -n -e 's,/[^/]*$,/,p'`
   sourcebase_base=`basename "$sourcebase"`
   echo "  - mention \"${sourcebase_base}\" in SUBDIRS in ${sourcebase_dir}Makefile.am,"
+  if test -n "$inctests"; then
+    testsbase_dir=`echo "$testsbase" | sed -n -e 's,/[^/]*$,/,p'`
+    testsbase_base=`basename "$testsbase"`
+    echo "  - mention \"${testsbase_base}\" in SUBDIRS in ${testsbase_dir}Makefile.am,"
+  fi
   echo "  - mention \"-I ${m4base}\" in ACLOCAL_AMFLAGS in Makefile.am,"
   echo "  - invoke ${macro_prefix}_EARLY in $configure_ac, right after AC_PROG_CC,"
   echo "  - invoke ${macro_prefix}_INIT in $configure_ac."
@@ -1323,6 +1385,8 @@
     test -d "$testdir/tests" || mkdir "$testdir/tests"
     # Create tests/Makefile.am.
     sourcebase=lib
+    m4base=m4
+    testsbase=tests
     func_emit_tests_Makefile_am > "$testdir/tests/Makefile.am"
     # Create tests/configure.ac.
     (echo "# Process this file with autoconf to produce a configure script."