summaryrefslogtreecommitdiff
path: root/gnulib-tool
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2021-12-21 09:59:17 +0100
committerBruno Haible <bruno@clisp.org>2021-12-21 09:59:17 +0100
commit83a0d5891db50c00e283e70df694b6003b1f485d (patch)
tree0ab4aea2af4f9e6bd08d18426945a42b07bb7264 /gnulib-tool
parentf8eed11b15e9141d061900e4068ea1f3ba9b63f6 (diff)
downloadgnulib-83a0d5891db50c00e283e70df694b6003b1f485d.tar.gz
Optimize redundant 'mkdir -p .' invocations.
Reported by Paul Eggert. * gnulib-tool (func_emit_lib_Makefile_am, func_emit_tests_Makefile_am): Eliminate @NMD@ tokens. * modules/alloca-opt (Makefile.am): Prefix the "$(MKDIR_P) '%reldir%'" line with @NMD@. * modules/argz (Makefile.am): Likewise. * modules/assert-h (Makefile.am): Likewise. * modules/byteswap (Makefile.am): Likewise. * modules/configmake (Makefile.am): Likewise. * modules/ctype (Makefile.am): Likewise. * modules/dirent (Makefile.am): Likewise. * modules/errno (Makefile.am): Likewise. * modules/execinfo (Makefile.am): Likewise. * modules/fcntl-h (Makefile.am): Likewise. * modules/float (Makefile.am): Likewise. * modules/fnmatch-h (Makefile.am): Likewise. * modules/getopt-posix (Makefile.am): Likewise. * modules/glob-h (Makefile.am): Likewise. * modules/iconv-h (Makefile.am): Likewise. * modules/ieee754-h (Makefile.am): Likewise. * modules/inttypes-incomplete (Makefile.am): Likewise. * modules/langinfo (Makefile.am): Likewise. * modules/libtextstyle-optional (Makefile.am): Likewise. * modules/limits-h (Makefile.am): Likewise. * modules/locale (Makefile.am): Likewise. * modules/malloc-h (Makefile.am): Likewise. * modules/math (Makefile.am): Likewise. * modules/monetary (Makefile.am): Likewise. * modules/netdb (Makefile.am): Likewise. * modules/openmp-init (Makefile.am): Likewise. * modules/poll-h (Makefile.am): Likewise. * modules/posix-shell (Makefile.am): Likewise. * modules/pthread-h (Makefile.am): Likewise. * modules/pty (Makefile.am): Likewise. * modules/sched (Makefile.am): Likewise. * modules/search (Makefile.am): Likewise. * modules/signal-h (Makefile.am): Likewise. * modules/sigsegv (Makefile.am): Likewise. * modules/snippet/link-warning (Makefile.am): Likewise. * modules/spawn (Makefile.am): Likewise. * modules/stdalign (Makefile.am): Likewise. * modules/stdarg (Makefile.am): Likewise. * modules/stdbool (Makefile.am): Likewise. * modules/stddef (Makefile.am): Likewise. * modules/stdint (Makefile.am): Likewise. * modules/stdio (Makefile.am): Likewise. * modules/stdlib (Makefile.am): Likewise. * modules/stdnoreturn (Makefile.am): Likewise. * modules/string (Makefile.am): Likewise. * modules/strings (Makefile.am): Likewise. * modules/sysexits (Makefile.am): Likewise. * modules/termios (Makefile.am): Likewise. * modules/threads-h (Makefile.am): Likewise. * modules/time (Makefile.am): Likewise. * modules/uchar (Makefile.am): Likewise. * modules/unicase/base (Makefile.am): Likewise. * modules/uniconv/base (Makefile.am): Likewise. * modules/unictype/base (Makefile.am): Likewise. * modules/unigbrk/base (Makefile.am): Likewise. * modules/unilbrk/base (Makefile.am): Likewise. * modules/uniname/base (Makefile.am): Likewise. * modules/uninorm/base (Makefile.am): Likewise. * modules/unistd (Makefile.am): Likewise. * modules/unistdio/base (Makefile.am): Likewise. * modules/unistr/base (Makefile.am): Likewise. * modules/unitypes (Makefile.am): Likewise. * modules/uniwbrk/base (Makefile.am): Likewise. * modules/uniwidth/base (Makefile.am): Likewise. * modules/utime-h (Makefile.am): Likewise. * modules/wchar (Makefile.am): Likewise. * modules/wctype-h (Makefile.am): Likewise.
Diffstat (limited to 'gnulib-tool')
-rwxr-xr-xgnulib-tool18
1 files changed, 16 insertions, 2 deletions
diff --git a/gnulib-tool b/gnulib-tool
index 678d334250..2870c2984a 100755
--- a/gnulib-tool
+++ b/gnulib-tool
@@ -3692,6 +3692,7 @@ func_update_file ()
# - auxdir directory relative to destdir where to place build aux files
# - gnu_make true if --gnu-make was given, false otherwise
# - makefile_name from --makefile-name
+# - automake_subdir true if --automake-subdir was given, false otherwise
# - libtool true if libtool will be used, false or blank otherwise
# - macro_prefix prefix of gl_LIBOBJS macros to use
# - module_indicator_prefix prefix of GNULIB_<modulename> variables to use
@@ -3725,6 +3726,13 @@ func_emit_lib_Makefile_am ()
perhapsLT=
sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ ]*+=/d'
fi
+ # Replace NMD, so as to remove redundant "$(MKDIR_P) '.'" invocations.
+ # The logic is similar to how we define gl_source_base_prefix.
+ if $automake_subdir; then
+ sed_eliminate_NMD='s/@NMD@//'
+ else
+ sed_eliminate_NMD='/@NMD@/d'
+ fi
if $for_test; then
# When creating a package for testing: Attempt to provoke failures,
# especially link errors, already during "make" rather than during
@@ -3735,8 +3743,9 @@ func_emit_lib_Makefile_am ()
sed_transform_check_PROGRAMS="$sed_noop"
fi
echo "## DO NOT EDIT! GENERATED AUTOMATICALLY!"
- $gnu_make ||
- echo "## Process this file with automake to produce Makefile.in."
+ if ! $gnu_make; then
+ echo "## Process this file with automake to produce Makefile.in."
+ fi
func_emit_copyright_notice
if test -n "$actioncmd"; then
printf '# Reproduce by:\n%s\n' "$actioncmd"
@@ -3753,6 +3762,7 @@ func_emit_lib_Makefile_am ()
sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \
-e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' \
-e "$sed_eliminate_LDFLAGS" \
+ -e "$sed_eliminate_NMD" \
-e 's,lib_\([A-Z][A-Z]*\),'"${libname}_${libext}"'_\1,g' \
-e 's,\$(GNULIB_,$('"${module_indicator_prefix}"'_GNULIB_,' \
-e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \
@@ -4097,6 +4107,9 @@ func_emit_tests_Makefile_am ()
perhapsLT=
sed_eliminate_LDFLAGS='/^lib_LDFLAGS[ ]*+=/d'
fi
+ # Replace NMD, so as to remove redundant "$(MKDIR_P) '.'" invocations.
+ # The logic is similar to how we define gl_source_base_prefix.
+ sed_eliminate_NMD='/@NMD@/d'
if $for_test; then
# When creating a package for testing: Attempt to provoke failures,
# especially link errors, already during "make" rather than during
@@ -4126,6 +4139,7 @@ func_emit_tests_Makefile_am ()
sed -e 's,lib_LIBRARIES,lib%_LIBRARIES,g' \
-e 's,lib_LTLIBRARIES,lib%_LTLIBRARIES,g' \
-e "$sed_eliminate_LDFLAGS" \
+ -e "$sed_eliminate_NMD" \
-e 's,lib_\([A-Z][A-Z]*\),libtests_a_\1,g' \
-e 's,\$(GNULIB_,$('"${module_indicator_prefix}"'_GNULIB_,' \
-e 's,lib%_LIBRARIES,lib_LIBRARIES,g' \