# HG changeset patch # User Bruno Haible # Date 1261232878 -3600 # Node ID 282eecca2301db05cf652d4f6b9b8e3c591c7a3e # Parent 717d6fde6006ea2361c46dcf1bb3dafbf6925d25 New module attribute 'Applicability'. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,16 @@ - +2009-12-19 Bruno Haible + + New module attribute 'Applicability'. + * modules/TEMPLATE-EXTENDED: New field 'Applicability'. + * gnulib-tool: New option --extract-applicability. + (func_usage): Document it. + (sed_extract_prog): Recognize it. + (func_get_applicability): New function. + (func_import): Generalize handling of 'link-warning' module. + * modules/link-warning (Applicability): New section. + * modules/arg-nonnull (Applicability): New section. + Repoted by Simon Josefsson . + 2009-12-19 Bruno Haible fflush: tweak diff --git a/gnulib-tool b/gnulib-tool --- a/gnulib-tool +++ b/gnulib-tool @@ -115,6 +115,7 @@ gnulib-tool --extract-description module gnulib-tool --extract-status module gnulib-tool --extract-notice module + gnulib-tool --extract-applicability module gnulib-tool --extract-filelist module gnulib-tool --extract-dependencies module gnulib-tool --extract-autoconf-snippet module @@ -1347,6 +1348,7 @@ s/^Description:[ ]*$// s/^Status:[ ]*$// s/^Notice:[ ]*$// + s/^Applicability:[ ]*$// s/^Files:[ ]*$// s/^Depends-on:[ ]*$// s/^configure\.ac-early:[ ]*$// @@ -1389,6 +1391,22 @@ sed -n -e "/^Notice$sed_extract_prog" < "$lookedup_file" } +# func_get_applicability module +# Input: +# - local_gnulib_dir from --local-dir +# The expected result (on stdout) is either 'main', or 'tests', or 'all'. +func_get_applicability () +{ + func_lookup_file "modules/$1" + { sed -n -e "/^Applicability$sed_extract_prog" < "$lookedup_file" + # The default is 'main' or 'tests', depending on the module's name. + case "$1" in + *-tests) echo "tests";; + *) echo "main";; + esac + } | sed -e 's,^ *$,,' | sed -e 1q +} + # func_get_filelist module # Input: # - local_gnulib_dir from --local-dir @@ -2745,9 +2763,9 @@ # is specified, it will consist only of LGPLed source. # The tests-related module list is the transitive closure of the specified # modules, including tests modules, minus the main module list excluding - # 'link-warning'. Its lib/* sources (brought in through dependencies of - # *-tests modules) go into $testsbase/. It may contain GPLed source, even if - # --lgpl is specified. + # modules of applicability 'all'. Its lib/* sources (brought in through + # dependencies of *-tests modules) go into $testsbase/. It may contain GPLed + # source, even if --lgpl is specified. # Determine main module list. saved_inctests="$inctests" inctests="" @@ -2761,8 +2779,13 @@ fi # Determine tests-related module list. echo "$final_modules" | LC_ALL=C sort -u > "$tmp"/final-modules - sed_remove_link_warning='/^link-warning$/d' - testsrelated_modules=`func_reset_sigpipe; echo "$main_modules" | LC_ALL=C sort -u | sed -e "$sed_remove_link_warning" | LC_ALL=C join -v 2 - "$tmp"/final-modules` + testsrelated_modules=`func_reset_sigpipe + for module in $main_modules; do + if test \`func_get_applicability $module\` = main; then + echo $module + fi + done \ + | LC_ALL=C sort -u | LC_ALL=C join -v 2 - "$tmp"/final-modules` if test $verbose -ge 1; then echo "Tests-related module list:" echo "$testsrelated_modules" | sed -e 's/^/ /' @@ -4639,6 +4662,16 @@ done ;; + extract-applicability ) + for module + do + func_verify_module + if test -n "$module"; then + func_get_applicability "$module" + fi + done + ;; + extract-filelist ) for module do diff --git a/modules/TEMPLATE-EXTENDED b/modules/TEMPLATE-EXTENDED --- a/modules/TEMPLATE-EXTENDED +++ b/modules/TEMPLATE-EXTENDED @@ -6,6 +6,8 @@ Files: +Applicability: + Depends-on: configure.ac-early: diff --git a/modules/arg-nonnull b/modules/arg-nonnull --- a/modules/arg-nonnull +++ b/modules/arg-nonnull @@ -1,6 +1,9 @@ Description: A C macro for declaring that specific arguments must not be NULL. +Applicability: +all + Files: build-aux/arg-nonnull.h @@ -9,6 +12,11 @@ configure.ac: Makefile.am: +# The BUILT_SOURCES created by this Makefile snippet are not used via #include +# statements but through direct file reference. Therefore this snippet must be +# present in all Makefile.am that need it. This is ensured by the applicability +# 'all' defined above. + BUILT_SOURCES += arg-nonnull.h # The arg-nonnull.h that gets inserted into generated .h files is the same as # build-aux/arg-nonnull.h, except that it has the copyright header cut off. diff --git a/modules/link-warning b/modules/link-warning --- a/modules/link-warning +++ b/modules/link-warning @@ -1,6 +1,9 @@ Description: A C macro for emitting link time warnings. +Applicability: +all + Files: build-aux/link-warning.h @@ -9,6 +12,11 @@ configure.ac: Makefile.am: +# The BUILT_SOURCES created by this Makefile snippet are not used via #include +# statements but through direct file reference. Therefore this snippet must be +# present in all Makefile.am that need it. This is ensured by the applicability +# 'all' defined above. + BUILT_SOURCES += link-warning.h # The link-warning.h that gets inserted into generated .h files is the same as # build-aux/link-warning.h, except that it has the copyright header cut off.