From ae071cfc1c81a106a07d24413c8e4c929fe397d8 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Mon, 19 Sep 2005 15:33:19 +0000 Subject: [PATCH] Support --with-tests also with --import. --- ChangeLog | 10 ++++++++ gnulib-tool | 74 +++++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 79 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7f0dfacd68..4e6ddebd3c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2005-09-18 Bruno Haible + + * 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 * gnulib-tool (func_import): Comment out code that spits out the diff --git a/gnulib-tool b/gnulib-tool index 01819009c1..30212e3995 100755 --- 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 @@ func_emit_lib_Makefile_am () # - 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 @@ func_emit_tests_Makefile_am () 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 @@ func_emit_tests_Makefile_am () # 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 @@ func_emit_tests_Makefile_am () 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 @@ func_emit_tests_Makefile_am () # - 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 @@ func_import () cached_avoidlist= cached_sourcebase= cached_m4base= + cached_testsbase= cached_libname= cached_lgpl= cached_libtool= @@ -787,6 +793,9 @@ func_import () /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_import () 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 @@ func_import () 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 @@ func_import () 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 @@ func_import () 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 @@ func_import () 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 @@ func_create_testdir () 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." -- 2.30.2