+ case $license in
+ 'GPLed build tool') ;;
+ 'public domain' | 'unlimited' | 'unmodifiable license text') ;;
+ *)
+ case "$lgpl" in
+ yes | 3)
+ case $license in
+ LGPL | LGPLv2+ | LGPLv3+) ;;
+ *) func_append license_incompatibilities "$module $license$nl" ;;
+ esac
+ ;;
+ 2)
+ case $license in
+ LGPLv2+) ;;
+ *) func_append license_incompatibilities "$module $license$nl" ;;
+ esac
+ ;;
+ *) func_fatal_error "invalid value lgpl=$lgpl" ;;
+ esac
+ ;;
+ esac
+ done
+ if test -n "$license_incompatibilities"; then
+ # Format the license incompatibilities as a table.
+ sed_expand_column1_width50_indent17='s,^\([^ ]*\) ,\1 ,
+s,^\(.................................................[^ ]*\) *, \1 ,'
+ license_incompatibilities=`echo "$license_incompatibilities" | sed -e "$sed_expand_column1_width50_indent17"`
+ func_fatal_error "incompatible license on modules:$nl$license_incompatibilities"
+ fi
+ fi
+
+ # Show banner notice of every module.
+ modules="$main_modules"
+ func_modules_notice
+
+ # Determine script to apply to imported library files.
+ sed_transform_lib_file=
+ for module in $main_modules; do
+ if test $module = config-h; then
+ # Assume config.h exists, and that -DHAVE_CONFIG_H is omitted.
+ sed_transform_lib_file=$sed_transform_lib_file'
+ s/^#ifdef[ ]*HAVE_CONFIG_H[ ]*$/#if 1/
+ '
+ break
+ fi
+ done
+ sed_transform_main_lib_file="$sed_transform_lib_file"
+ if test -n "$do_copyrights"; then
+ if test -n "$lgpl"; then
+ # Update license.
+ case "$lgpl" in
+ yes | 3)
+ sed_transform_main_lib_file=$sed_transform_main_lib_file'
+ s/GNU General/GNU Lesser General/g
+ '
+ ;;
+ 2)
+ sed_transform_main_lib_file=$sed_transform_main_lib_file'
+ s/GNU General/GNU Lesser General/g
+ s/version [23]\([ ,]\)/version 2.1\1/g
+ '
+ ;;
+ *) func_fatal_error "invalid value lgpl=$lgpl" ;;
+ esac
+ else
+ # Update license.
+ sed_transform_main_lib_file=$sed_transform_main_lib_file'
+ s/GNU Lesser General/GNU General/g
+ s/GNU Library General/GNU General/g
+ s/version 2\(.1\)\{0,1\}\([ ,]\)/version 3\2/g
+ '
+ fi
+ fi
+
+ # Determine script to apply to auxiliary files that go into $auxdir/.
+ sed_transform_build_aux_file=
+ if test -n "$do_copyrights"; then
+ # Update license.
+ sed_transform_build_aux_file=$sed_transform_build_aux_file'
+ s/GNU Lesser General/GNU General/g
+ s/GNU Library General/GNU General/g
+ s/version 2\(.1\)\{0,1\}\([ ,]\)/version 3\2/g
+ '
+ fi
+
+ # Determine script to apply to library files that go into $testsbase/.
+ sed_transform_testsrelated_lib_file="$sed_transform_lib_file"
+ if test -n "$do_copyrights"; then
+ # Update license.
+ sed_transform_testsrelated_lib_file=$sed_transform_testsrelated_lib_file'
+ s/GNU Lesser General/GNU General/g
+ s/GNU Library General/GNU General/g
+ s/version 2\(.1\)\{0,1\}\([ ,]\)/version 3\2/g
+ '
+ fi
+
+ # Determine the final file lists.
+ # They must be computed separately, because files in lib/* go into
+ # $sourcebase/ if they are in the main file list but into $testsbase/
+ # if they are in the tests-related file list. Furthermore lib/dummy.c
+ # can be in both.
+ # Determine final main file list.
+ modules="$main_modules"
+ func_modules_to_filelist
+ main_files="$files"
+ # Determine final tests-related file list.
+ modules="$testsrelated_modules"
+ func_modules_to_filelist
+ testsrelated_files=`echo "$files" | sed -e 's,^lib/,tests=lib/,'`
+ # Merge both file lists.
+ sed_remove_empty_lines='/^$/d'
+ files=`{ echo "$main_files"; echo "$testsrelated_files"; } | sed -e "$sed_remove_empty_lines" | LC_ALL=C sort -u`
+ if test $verbose -ge 0; then
+ echo "File list:"
+ sed_prettyprint_files='s,^tests=lib/\(.*\)$,lib/\1 -> tests/\1,'
+ echo "$files" | sed -e "$sed_prettyprint_files" -e 's/^/ /'
+ fi
+
+ test -n "$files" \
+ || func_fatal_error "refusing to do nothing"
+
+ # Add m4/gnulib-tool.m4 to the file list. It is not part of any module.
+ new_files="$files m4/gnulib-tool.m4"
+ old_files="$cached_files"
+ if test -f "$destdir"/$m4base/gnulib-tool.m4; then
+ func_append old_files " m4/gnulib-tool.m4"
+ fi
+
+ rewritten='%REWRITTEN%'
+ sed_rewrite_old_files="\
+ s,^build-aux/,$rewritten$auxdir/,
+ s,^doc/,$rewritten$cached_docbase/,
+ s,^lib/,$rewritten$cached_sourcebase/,
+ s,^m4/,$rewritten$cached_m4base/,
+ s,^tests/,$rewritten$cached_testsbase/,
+ s,^tests=lib/,$rewritten$cached_testsbase/,
+ s,^top/,$rewritten,
+ s,^$rewritten,,"
+ sed_rewrite_new_files="\
+ s,^build-aux/,$rewritten$auxdir/,
+ s,^doc/,$rewritten$docbase/,
+ s,^lib/,$rewritten$sourcebase/,
+ s,^m4/,$rewritten$m4base/,
+ s,^tests/,$rewritten$testsbase/,
+ s,^tests=lib/,$rewritten$testsbase/,
+ s,^top/,$rewritten,
+ s,^$rewritten,,"
+
+ # Create directories.
+ { echo "$sourcebase"
+ echo "$m4base"
+ if test -n "$pobase"; then
+ echo "$pobase"
+ fi
+ docfiles=`echo "$files" | sed -n -e 's,^doc/,,p'`
+ if test -n "$docfiles"; then
+ echo "$docbase"
+ fi
+ if test -n "$inctests"; then
+ echo "$testsbase"
+ fi
+ echo "$auxdir"
+ for f in $files; do echo $f; done \
+ | sed -e "$sed_rewrite_new_files" \
+ | sed -n -e 's,^\(.*\)/[^/]*,\1,p' \
+ | LC_ALL=C sort -u
+ } > "$tmp"/dirs
+ { # Rearrange file descriptors. Needed because "while ... done < ..."
+ # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
+ exec 5<&0 < "$tmp"/dirs
+ while read d; do
+ if test ! -d "$destdir/$d"; then
+ if $doit; then
+ echo "Creating directory $destdir/$d"
+ mkdir -p "$destdir/$d" || func_fatal_error "failed"
+ else
+ echo "Create directory $destdir/$d"
+ fi
+ fi
+ done
+ exec 0<&5 5<&-
+ }
+
+ # Copy files or make symbolic links. Remove obsolete files.
+ added_files=''
+ removed_files=''
+ delimiter=' '
+ # Construct a table with 2 columns: rewritten-file-name original-file-name,
+ # representing the files according to the last gnulib-tool invocation.
+ for f in $old_files; do echo $f; done \
+ | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_old_files" \
+ | LC_ALL=C sort \
+ > "$tmp"/old-files
+ # Construct a table with 2 columns: rewritten-file-name original-file-name,
+ # representing the files after this gnulib-tool invocation.
+ for f in $new_files; do echo $f; done \
+ | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" \
+ | LC_ALL=C sort \
+ > "$tmp"/new-files
+ # First the files that are in old-files, but not in new-files:
+ sed_take_first_column='s,'"$delimiter"'.*,,'
+ for g in `LC_ALL=C join -t"$delimiter" -v1 "$tmp"/old-files "$tmp"/new-files | sed -e "$sed_take_first_column"`; do
+ # Remove the file. Do nothing if the user already removed it.
+ if test -f "$destdir/$g" || test -h "$destdir/$g"; then
+ if $doit; then
+ echo "Removing file $g (backup in ${g}~)"
+ mv -f "$destdir/$g" "$destdir/${g}~" || func_fatal_error "failed"
+ else
+ echo "Remove file $g (backup in ${g}~)"
+ fi
+ func_append removed_files "$g$nl"
+ fi
+ done
+ # func_add_or_update handles a file that ought to be present afterwards.
+ # Uses parameters
+ # - f the original file name
+ # - g the rewritten file name
+ # - already_present nonempty if the file should already exist, empty
+ # otherwise
+ func_add_or_update ()
+ {
+ of="$f"
+ case "$f" in
+ tests=lib/*) f=`echo "$f" | sed -e 's,^tests=lib/,lib/,'` ;;
+ esac
+ func_dest_tmpfilename "$g"
+ func_lookup_file "$f"
+ cp "$lookedup_file" "$tmpfile" || func_fatal_error "failed"
+ if test -n "$sed_transform_main_lib_file"; then
+ case "$of" in
+ lib/*)
+ sed -e "$sed_transform_main_lib_file" \
+ < "$lookedup_file" > "$tmpfile" || func_fatal_error "failed"
+ ;;
+ esac
+ fi
+ if test -n "$sed_transform_build_aux_file"; then
+ case "$of" in
+ build-aux/*)
+ sed -e "$sed_transform_build_aux_file" \
+ < "$lookedup_file" > "$tmpfile" || func_fatal_error "failed"
+ ;;
+ esac
+ fi
+ if test -n "$sed_transform_testsrelated_lib_file"; then
+ case "$of" in
+ tests=lib/*)
+ sed -e "$sed_transform_testsrelated_lib_file" \
+ < "$lookedup_file" > "$tmpfile" || func_fatal_error "failed"
+ ;;
+ esac
+ fi
+ if test -f "$destdir/$g"; then
+ # The file already exists.
+ func_update_file
+ else
+ # Install the file.
+ # Don't protest if the file should be there but isn't: it happens
+ # frequently that developers don't put autogenerated files into CVS.
+ func_add_file
+ func_append added_files "$g$nl"
+ fi
+ rm -f "$tmpfile"
+ }
+ # Then the files that are in new-files, but not in old-files:
+ sed_take_last_column='s,^.*'"$delimiter"',,'
+ already_present=
+ LC_ALL=C join -t"$delimiter" -v2 "$tmp"/old-files "$tmp"/new-files \
+ | sed -e "$sed_take_last_column" \
+ | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" > "$tmp"/added-files
+ { # Rearrange file descriptors. Needed because "while ... done < ..."
+ # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
+ exec 5<&0 < "$tmp"/added-files
+ while read g f; do
+ func_add_or_update
+ done
+ exec 0<&5 5<&-
+ }
+ # Then the files that are in new-files and in old-files:
+ already_present=true
+ LC_ALL=C join -t"$delimiter" "$tmp"/old-files "$tmp"/new-files \
+ | sed -e "$sed_take_last_column" \
+ | sed -e "s,^.*\$,&$delimiter&," -e "$sed_rewrite_new_files" > "$tmp"/kept-files
+ { # Rearrange file descriptors. Needed because "while ... done < ..."
+ # constructs are executed in a subshell e.g. by Solaris 10 /bin/sh.
+ exec 5<&0 < "$tmp"/kept-files
+ while read g f; do
+ func_add_or_update
+ done
+ exec 0<&5 5<&-
+ }
+
+ # Command-line invocation printed in a comment in generated gnulib-cache.m4.
+ actioncmd="gnulib-tool --import"
+ func_append actioncmd " --dir=$destdir"
+ if test -n "$local_gnulib_dir"; then
+ func_append actioncmd " --local-dir=$local_gnulib_dir"
+ fi
+ func_append actioncmd " --lib=$libname"
+ func_append actioncmd " --source-base=$sourcebase"
+ func_append actioncmd " --m4-base=$m4base"
+ if test -n "$pobase"; then
+ func_append actioncmd " --po-base=$pobase"
+ fi
+ func_append actioncmd " --doc-base=$docbase"
+ func_append actioncmd " --tests-base=$testsbase"
+ func_append actioncmd " --aux-dir=$auxdir"
+ if test -n "$inctests"; then
+ func_append actioncmd " --with-tests"
+ fi
+ if test -n "$incobsolete"; then
+ func_append actioncmd " --with-obsolete"
+ fi
+ if test -n "$inc_cxx_tests"; then
+ func_append actioncmd " --with-c++-tests"
+ fi
+ if test -n "$inc_longrunning_tests"; then
+ func_append actioncmd " --with-longrunning-tests"
+ fi
+ if test -n "$inc_privileged_tests"; then
+ func_append actioncmd " --with-privileged-tests"
+ fi
+ if test -n "$inc_unportable_tests"; then
+ func_append actioncmd " --with-unportable-tests"
+ fi
+ if test -n "$inc_all_tests"; then
+ func_append actioncmd " --with-all-tests"
+ fi
+ for module in $avoidlist; do
+ func_append actioncmd " --avoid=$module"
+ done
+ if test -n "$lgpl"; then
+ if test "$lgpl" = yes; then
+ func_append actioncmd " --lgpl"
+ else
+ func_append actioncmd " --lgpl=$lgpl"
+ fi
+ fi
+ if test -n "$makefile_name"; then
+ func_append actioncmd " --makefile-name=$makefile_name"
+ fi
+ if test "$libtool" = true; then
+ func_append actioncmd " --libtool"
+ else
+ func_append actioncmd " --no-libtool"
+ fi
+ func_append actioncmd " --macro-prefix=$macro_prefix"
+ if test -n "$po_domain"; then
+ func_append actioncmd " --po-domain=$po_domain"
+ fi
+ if test -n "$vc_files"; then
+ if test "$vc_files" = true; then
+ func_append actioncmd " --vc-files"
+ else
+ func_append actioncmd " --no-vc-files"
+ fi
+ fi
+ func_append actioncmd " `echo $specified_modules`"
+
+ # Default the makefile name to Makefile.am.
+ if test -n "$makefile_name"; then
+ makefile_am=$makefile_name
+ else
+ makefile_am=Makefile.am
+ fi
+
+ # Create normal Makefile.ams.
+ for_test=false
+
+ # Setup list of Makefile.am edits that are to be performed afterwards.
+ # 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
+ # remembers that ${dir}Makefile.am needs to be edited to that ${var} mentions
+ # ${value}.
+ 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\"
+ }
+ if test "$makefile_am" = Makefile.am; then
+ sourcebase_dir=`echo "$sourcebase" | sed -n -e 's,/[^/]*$,/,p'`
+ sourcebase_base=`basename "$sourcebase"`
+ func_note_Makefile_am_edit "$sourcebase_dir" SUBDIRS "$sourcebase_base"
+ fi
+ if test -n "$pobase"; then
+ pobase_dir=`echo "$pobase" | sed -n -e 's,/[^/]*$,/,p'`
+ pobase_base=`basename "$pobase"`
+ func_note_Makefile_am_edit "$pobase_dir" SUBDIRS "$pobase_base"
+ fi
+ if test -n "$inctests"; then
+ 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"
+ fi
+ fi
+ func_note_Makefile_am_edit "" ACLOCAL_AMFLAGS "-I ${m4base}"
+ {
+ # Find the first parent directory of $m4base that contains or will contain
+ # a Makefile.am.
+ sed_last='s,^.*/\([^/][^/]*\)//*$,\1/,
+s,//*$,/,'
+ sed_butlast='s,[^/][^/]*//*$,,'
+ dir1="${m4base}/"; dir2=""
+ while test -n "$dir1" \
+ && ! { test -f "${destdir}/${dir1}Makefile.am" \
+ || test "${dir1}Makefile.am" = "$sourcebase/$makefile_am" \
+ || test "./${dir1}Makefile.am" = "$sourcebase/$makefile_am" \
+ || { test -n "$inctests" \
+ && { test "${dir1}Makefile.am" = "$testsbase/$makefile_am" \
+ || test "./${dir1}Makefile.am" = "$testsbase/$makefile_am"; }; }; }; do
+ dir2=`echo "$dir1" | sed -e "$sed_last"`"$dir2"
+ dir1=`echo "$dir1" | sed -e "$sed_butlast"`
+ done
+ func_note_Makefile_am_edit "$dir1" EXTRA_DIST "${dir2}gnulib-cache.m4"
+ }
+
+ # Create library makefile.
+ func_dest_tmpfilename $sourcebase/$makefile_am
+ destfile="$sourcebase/$makefile_am"
+ modules="$main_modules"
+ func_emit_lib_Makefile_am > "$tmpfile"
+ if test -f "$destdir"/$sourcebase/$makefile_am; then
+ if cmp "$destdir"/$sourcebase/$makefile_am "$tmpfile" > /dev/null; then
+ rm -f "$tmpfile"
+ else
+ if $doit; then
+ echo "Updating $sourcebase/$makefile_am (backup in $sourcebase/$makefile_am~)"
+ mv -f "$destdir"/$sourcebase/$makefile_am "$destdir"/$sourcebase/$makefile_am~
+ mv -f "$tmpfile" "$destdir"/$sourcebase/$makefile_am
+ else
+ echo "Update $sourcebase/$makefile_am (backup in $sourcebase/$makefile_am~)"
+ rm -f "$tmpfile"
+ fi
+ fi
+ else
+ if $doit; then
+ echo "Creating $sourcebase/$makefile_am"
+ mv -f "$tmpfile" "$destdir"/$sourcebase/$makefile_am
+ else
+ echo "Create $sourcebase/$makefile_am"
+ rm -f "$tmpfile"
+ fi
+ func_append added_files "$sourcebase/$makefile_am$nl"
+ fi
+
+ # Create po/ directory.
+ if test -n "$pobase"; then
+ # Create po makefile and auxiliary files.
+ for file in Makefile.in.in remove-potcdate.sin; do
+ func_dest_tmpfilename $pobase/$file
+ func_lookup_file build-aux/po/$file
+ cat "$lookedup_file" > "$tmpfile"
+ if test -f "$destdir"/$pobase/$file; then
+ if cmp "$destdir"/$pobase/$file "$tmpfile" > /dev/null; then
+ rm -f "$tmpfile"
+ else
+ if $doit; then
+ echo "Updating $pobase/$file (backup in $pobase/$file~)"
+ mv -f "$destdir"/$pobase/$file "$destdir"/$pobase/$file~
+ mv -f "$tmpfile" "$destdir"/$pobase/$file
+ else
+ echo "Update $pobase/$file (backup in $pobase/$file~)"
+ rm -f "$tmpfile"
+ fi
+ fi
+ else
+ if $doit; then
+ echo "Creating $pobase/$file"
+ mv -f "$tmpfile" "$destdir"/$pobase/$file
+ else
+ echo "Create $pobase/$file"
+ rm -f "$tmpfile"
+ fi
+ func_append added_files "$pobase/$file$nl"
+ fi
+ done
+ # Create po makefile parameterization, part 1.
+ func_dest_tmpfilename $pobase/Makevars
+ func_emit_po_Makevars > "$tmpfile"
+ if test -f "$destdir"/$pobase/Makevars; then
+ if cmp "$destdir"/$pobase/Makevars "$tmpfile" > /dev/null; then
+ rm -f "$tmpfile"
+ else
+ if $doit; then
+ echo "Updating $pobase/Makevars (backup in $pobase/Makevars~)"
+ mv -f "$destdir"/$pobase/Makevars "$destdir"/$pobase/Makevars~
+ mv -f "$tmpfile" "$destdir"/$pobase/Makevars
+ else
+ echo "Update $pobase/Makevars (backup in $pobase/Makevars~)"
+ rm -f "$tmpfile"
+ fi
+ fi
+ else
+ if $doit; then
+ echo "Creating $pobase/Makevars"
+ mv -f "$tmpfile" "$destdir"/$pobase/Makevars
+ else
+ echo "Create $pobase/Makevars"
+ rm -f "$tmpfile"
+ fi
+ func_append added_files "$pobase/Makevars$nl"
+ fi
+ # Create po makefile parameterization, part 2.
+ func_dest_tmpfilename $pobase/POTFILES.in
+ func_emit_po_POTFILES_in > "$tmpfile"
+ if test -f "$destdir"/$pobase/POTFILES.in; then
+ if cmp "$destdir"/$pobase/POTFILES.in "$tmpfile" > /dev/null; then
+ rm -f "$tmpfile"
+ else
+ if $doit; then
+ echo "Updating $pobase/POTFILES.in (backup in $pobase/POTFILES.in~)"
+ mv -f "$destdir"/$pobase/POTFILES.in "$destdir"/$pobase/POTFILES.in~
+ mv -f "$tmpfile" "$destdir"/$pobase/POTFILES.in
+ else
+ echo "Update $pobase/POTFILES.in (backup in $pobase/POTFILES.in~)"
+ rm -f "$tmpfile"
+ fi
+ fi
+ else
+ if $doit; then
+ echo "Creating $pobase/POTFILES.in"
+ mv -f "$tmpfile" "$destdir"/$pobase/POTFILES.in
+ else
+ echo "Create $pobase/POTFILES.in"
+ rm -f "$tmpfile"
+ fi
+ func_append added_files "$pobase/POTFILES.in$nl"
+ fi
+ # Fetch PO files.
+ TP_URL="http://translationproject.org/latest/"
+ TP_RSYNC_URI="translationproject.org::tp/latest/"
+ if $doit; then
+ echo "Fetching gnulib PO files from $TP_URL"
+ (cd "$destdir"/$pobase \
+ && { # Prefer rsync over wget if it is available, since it consumes
+ # less network bandwidth, due to compression.
+ if type rsync 2>/dev/null | grep / > /dev/null; then
+ rsync -Lrtz "${TP_RSYNC_URI}gnulib/" .
+ else
+ wget --quiet -r -l1 -nd -np -A.po "${TP_URL}gnulib"
+ fi
+ }
+ )
+ else
+ echo "Fetch gnulib PO files from $TP_URL"
+ fi
+ # Create po/LINGUAS.
+ if $doit; then
+ func_dest_tmpfilename $pobase/LINGUAS
+ (cd "$destdir"/$pobase \
+ && { echo '# Set of available languages.'
+ LC_ALL=C ls -1 *.po | sed -e 's,\.po$,,'
+ }
+ ) > "$tmpfile"
+ if test -f "$destdir"/$pobase/LINGUAS; then
+ if cmp "$destdir"/$pobase/LINGUAS "$tmpfile" > /dev/null; then
+ rm -f "$tmpfile"
+ else
+ echo "Updating $pobase/LINGUAS (backup in $pobase/LINGUAS~)"
+ mv -f "$destdir"/$pobase/LINGUAS "$destdir"/$pobase/LINGUAS~
+ mv -f "$tmpfile" "$destdir"/$pobase/LINGUAS
+ fi
+ else
+ echo "Creating $pobase/LINGUAS"
+ mv -f "$tmpfile" "$destdir"/$pobase/LINGUAS
+ func_append added_files "$pobase/LINGUAS$nl"