summaryrefslogtreecommitdiff
path: root/bin
Commit message (Collapse)AuthorAgeFilesLines
* Remove TmpModuleexperimental/gsoc/refactoringMatthias Paulmier2018-08-071-1/+0
| | | | | | - lib/Automake/ConfVars.pm: add the am_install_var function. - lib/Automake/Variables.pm: add shadow_unconditionally, am_primary_prefixes and append_exeext.
* Move the END sub to another moduleMatthias Paulmier2018-08-012-0/+2
| | | | | This fixes the warning we had in bcbc407fb where the STDOUT handle was closed and reopened.
* lib/Automake/File.pm: Change the way make_paragraphs worksMatthias Paulmier2018-07-271-1/+1
| | | | | | We now call preprocess_file before make_paragraphs. This is useful to test the lib as we can now feed a file handle (Automake::XFile) directly to make_paragraphs (and not simply a filename).
* lib/Automake/File.pm: Modifie file_contents_internalMatthias Paulmier2018-07-201-42/+47
| | | | | | | | | | This function now takes a list of paragraph as argument instead of building it in its code. This is the first step in the modification of this function to be able to test it with files that don't "physically" exist in the actual file system. * lib/Automake/File.pm: Start the modification of file_contents_internal for unit testing
* Move functions to LangHandlingMatthias Paulmier2018-07-061-421/+1
| | | | | | | | | | These functions are language specific functions. To achieve this, we had to add a new module "TmpModule". The functions in this module should be relocated when we find a better place. * lib/Automake/LangHandling.pm: Add handle_emacs_lisp, handle_java, handle_python to this module. * lib/Automake/LangHandling: Add this module to avoid include cycles.
* Remove sub prototypeMatthias Paulmier2018-07-041-1/+0
|
* Add the HandleConfigure moduleMatthias Paulmier2018-07-031-943/+2
| | | | | | | | | | | This module handles the configure.ac files on the Automake side. It required to modify a bit the scan_autoconf_[file|traces] functions so we can pass them the environment var for autoconf as arguments from the main file (otherwise it wouldn't work). * lib/Automake/HandleConfigure.pm: Module for handling configure.ac for automake. * lib/Automake/Utils.pm: Add some necessary functions for the new HandleConfigure module.
* Add the Standards.pm libraryMatthias Paulmier2018-07-021-46/+1
| | | | | The library provides functions for checking that the required files in a given standard (GNU org GNITS) are present.
* Move yet more functions to Utils.pmMatthias Paulmier2018-06-291-75/+0
| | | | | | | | | | backanme: get the back path to the Makefile directory. locate_am: locate the *.am file for which a *.in file exists get_number_of_threads: returns the number of threads on which Automake should run. * lib/Automake/Utils.pm: Add the backname, locate_am, get_number_of_threads functions to the Automake::Utils module.
* Add a module for handling Texinfo filesMatthias Paulmier2018-06-281-528/+18
| | | | * lib/pm/Texi.pm: New module for handling texinfo files.
* Rearrange file exports and function prototypesMatthias Paulmier2018-06-221-10/+42
| | | | | * automake.in: Rearrange function prototypes. * lib: Remove useless exports.
* lib: Add new modulesMatthias Paulmier2018-06-221-896/+3
| | | | | | | | | | | In an effort to move out as much as possible from the main script, we create these modules to host the methods. * LangHandling: This module host all the functions for handling languages (functions that define obj directories of the language, rewrite the file extention...). * SilentRules: Declares functions for handling silent rules. * Requires: Functions for requiring configuration files.
* Utils: Add yet more methods to this moduleMatthias Paulmier2018-06-221-49/+0
| | | | Move ̀is_make_dir', ̀push_dist_common' and `canonicalize' to this module.
* Move $gen_copyrightMatthias Paulmier2018-06-221-17/+15
| | | | | | | | We move the variable to the bottom of the file where it is used because we have no real reason to declare it where it was. The added comment has also been removed since it doesn't make sense and isn't useful for the comprehension of this variable. The variable will stay in this file unless we have a real reason to move it out of this file.
* Add the Errors.pm perl moduleMatthias Paulmier2018-06-221-34/+1
| | | | | | | This module takes care of outputing errors for Makefile.am and Configure.ac files. * lib/Automake/Errors.pm: New file for printing errors about am and ac files.
* lib: fix Automake::VariableMatthias Paulmier2018-06-221-317/+3
| | | | | | | | | | | Some methods added to this module were not working properly because they depend on others which stayed in automake.in * ConfVars.pm: Added this module to put the methods in question. * CondStack.pm: Module that takes care of the conditional stack. * Utils.pm: Added some needed utility functions for the above to run properly. * File.pm: Methods that looks at files' content. * local.mk: Added the new modules.
* lib: Move methods to Automake::VariableMatthias Paulmier2018-06-221-328/+2
| | | | | | | | | | | | | | | | | | | Some subs in bin/automake are still moveable to this file but require to move other subs before. * verbose_var: adds a prefix to a variable name. * verbose_private_var: same as verbose_var but for private vars. This method is now private in this module since it is only used once in the. define_verbose_var which has been moved here took. * define_verbose_var: defines verbose variables for silent rules in the generated makefile. * define_verbose_tagvar: calls define_verbose_var with $name as argument * define_variable: define a new Makefile variable. * define_pretty_variable: same as above but for printing in an input file. * define_files_variables: define a variable containing a list of files composed of a specified basename and extension. * define_configure_variable: define a variable and substitute its name by a configure-style text.
* Utils.pm: Add more utility methodsMatthias Paulmier2018-06-221-14/+0
| | | | | | * subst: Method to get a configure-style substitute from a text * file_contents_internal: Return the contents of a file from automake/lib/am. This is a long method that will need some reworking later.
* lib: Add Automake::Utils moduleMatthias Paulmier2018-06-221-41/+1
| | | | | | | | This module contains utility methods to be used in bin/automake. * lib/Automake/Utils.pm: New utility module. * var_SUFFIXES_trigger: Moved to the Automake::Utils module. * locate_aux_dir: Moved to the Automake::Utils module.
* automake.in: Move out var/const declarationsMatthias Paulmier2018-06-221-434/+4
| | | | | | | | | | | | | | This is the first step in modularizing Automake for the Summer of Code project "Modularize Automake to improve its test-suite". The goal here is to move out as much as possible from bin/automake.in in order for it to eventually only call methods from the different modules. * lib/Automake/Global.pm: The Automake::Global package will now hold variable and constant declarations in order to move subroutines that use them out of the main package. * bin/automake.in: The $gen_copyright var/constant was left here because it uses a variable passed directly by the Makefile here. This needs to be looked at later. Te rest of the declarations was moved.
* bin: Rely only on the shebang lineMathieu Lirzin2018-03-112-13/+2
| | | | | | | | | | Previously ‘automake’ and ‘aclocal’ were handling the case of being interpreted as a Shell script by using a hack leveraging the fact that Shell and Perl has a compatible syntax intersection allowing those scripts to launch ‘perl’ from the shell. * bin/aclocal.in: Remove cryptic launching hack. * bin/automake.in: Likewise.
* automake: Don't rely on List::Util to provide 'none'Mathieu Lirzin2018-03-081-2/+1
| | | | | | | | | | | | | This change fixes automake bug#30631. This removes the use of List::Util which is not supported by Perl 5.6, by reimplementing the 'none' subroutine. * lib/Automake/General.pm (none): New subroutine. * bin/automake.in (handle_single_transform): Use it. * t/pm/General.pl: New test. * t/list-of-tests.mk (perl_TESTS): Add it. * NEWS: Update.
* automake: Add default libtool_tag to cppasmKhem Raj2018-01-051-0/+1
| | | | | | | * bin/automake.in (register_language): Define default libtool tag to be CC since CPPASCOMPILE is using CC to call assembler. Copyright-paperwork-exempt: yes
* maint: Update copyright years to 2018Mathieu Lirzin2018-01-043-3/+3
| | | | This update has been made with 'make update-copyright'.
* maint: Make Emacs use 'makefile-automake-mode'Mathieu Lirzin2017-09-231-0/+1
| | | | | | | | | | | * bin/local.mk: Specify mode name in the first line. * contrib/t/local.mk: Likewise. * doc/local.mk: Likewise. * lib/Automake/local.mk: Likewise. * lib/am/local.mk: Likewise. * lib/local.mk: Likewise. * m4/local.mk: Likewise. * t/local.mk: Likewise.
* maint: Configure Emacs automatically with ".dir-locals.el"Mathieu Lirzin2017-09-222-35/+0
| | | | | * .dir-locals.el: New Emacs directory configuration file. All perl files adapted.
* Fix a couple more http: URLsPaul Eggert2017-09-192-2/+2
|
* Prefer https: URLsPaul Eggert2017-09-193-8/+8
| | | | | | | | | | | | | | | | | | | | | In Gnulib, Emacs, etc. we are changing ftp: and http: URLs to use https:, to discourage man-in-the-middle attacks when downloading software. The attached patch propagates these changes upstream to Automake. This patch does not affect files that Automake is downstream of, which I'll patch separately. Althouth the resources are not secret, plain HTTP is vulnerable to malicious routers that tamper with responses from GNU servers, and this sort of thing is all too common when people in some other countries browse US-based websites. See, for example: Aceto G, Botta A, Pescapé A, Awan MF, Ahmad T, Qaisar S. Analyzing internet censorship in Pakistan. RTSI 2016. https://dx.doi.org/10.1109/RTSI.2016.7740626 HTTPS is not a complete solution here, but it can be a significant help. The GNU project regularly serves up code to users, so we should take some care here.
* automake: Depend on LIBOBJDIR for LIBOBJS and ALLOCAMichael Haubenwallner2017-09-151-11/+20
| | | | | | | | | | This change fixes automake bug#27781. * bin/automake.in: Add Makefile dependency on LIBOBJDIR/dirstamp for each LIBOBJS/ALLOCA source file found. * t/list-of-tests.mk (XFAIL_TESTS): Drop t/libobj-no-dependency-tracking.sh. * NEWS: Announce bug fix.
* Revert "automake: Handle LTLIBOBJS more specifically"Mathieu Lirzin2017-09-141-2/+3
| | | | This reverts commit 5521219348c55af354878583b99c5f9d66d6d38a.
* build: Rename "Makefile.inc" Makefile fragments to "local.mk"Mathieu Lirzin2017-08-311-0/+0
| | | | | | | | | | | | | | | | | | | | | | This is done to follow a convention used by a lot of GNU packages. * bin/Makefile.inc: Rename to ... * bin/local.mk: ... this. * doc/Makefile.inc: Rename to ... * doc/local.mk: ... this. * lib/Automake/Makefile.inc: Rename to ... * lib/Automake/local.mk: ... this. * lib/am/Makefile.inc: Rename to ... * lib/am/local.mk: ... this. * lib/Makefile.inc: Rename to ... * lib/local.mk: ... this. * m4/Makefile.inc: Rename to ... * m4/local.mk: ... this. * contrib/t/Makefile.inc: Rename to ... * contrib/t/local.mk: ... this. * t/Makefile.inc: Rename to ... * t/local.mk: ... this. Adapt. * Makefile.am: Adapt.
* build: Inline perl prototypes in sourcesMathieu Lirzin2017-08-314-44/+76
| | | | | | | | | | | | | | | | | | | Prototypes allows us to avoid using the '&foo' invocation form when invoking a subroutine before its definition. Previously those prototypes were generated to prevent them from falling out-of-sync with actual definitions. Now we provide a 'check-perl-protos' lint script to ensure that this is not the case. This has the same benefits as generating prototypes while simplifying the bootstrap/build process. * bin/gen-perl-protos: Remove. * bin/Makefile.inc: Adapt. * bootstrap: Likewise. * bin/aclocal.in: Inline prototypes. * bin/automake.in: Likewise. * maintainer/check-perl-protos: New lint script. * maintainer/syntax-checks.mk (sc_perl_protos): New target. (syntax_check_rules): Add it.
* build: Generate versioned scripts at make timeMathieu Lirzin2017-08-313-40/+13
| | | | | | | | | | * configure.ac: Don't generate 'bin/aclocal-${APIVERSION}' and 'bin/automake-${APIVERSION}'. * bin/wrap-aclocal.in: Delete. * bin/wrap-automake.in: Likewise. * bin/Makefile.inc (%D%/automake-$(APIVERSION)) (%D%/aclocal-$(APIVERSION)): New targets. (CLEANFILES): Add them.
* aclocal: Support ACLOCAL_AUTOMAKE_DIR environment variableMathieu Lirzin2017-08-312-8/+11
| | | | | | | | | | | | | * bin/aclocal.in: Reset '@automake_includes' and '@system_includes' in for build environment. Allow setting '@automake_includes' with ACLOCAL_AUTOMAKE_DIR environment variable. (parse_arguments): Ignore 'dirlist' when '@system_includes' is empty. * doc/automake.texi (aclocal Options): Document ACLOCAL_AUTOMAKE_DIR. * bin/wrap-aclocal.in: Remove extra command line options. * pre-inst-env.in: Set ACLOCAL_AUTOMAKE_DIR and ACLOCAL_PATH environment variables. * t/ax/test-defs.in: Adapt. * t/ansi2knr-no-more.sh (warn_rx): Likewise.
* config: Support AUTOMAKE_LIBDIR environment variableMathieu Lirzin2017-08-301-5/+0
| | | | | | | | * lib/Automake/Config.in: Let AUTOMAKE_LIBDIR environment variable override the default location for '$libdir'. * doc/automake.texi (automake Invocation): Document AUTOMAKE_LIBDIR. * pre-inst-env.in (AUTOMAKE_LIBDIR): Set AUTOMAKE_LIBDIR. * bin/wrap-automake.in: Don't use "--libdir" option.
* build: Use PERL5LIB from 'pre-inst-env' scriptMathieu Lirzin2017-08-294-12/+4
| | | | | | | | | | * bin/aclocal.in: Detect build environment with AUTOMAKE_UNINSTALLED. Let 'PERL5LIB' from 'pre-inst-env' define the perl module directories. * bin/automake.in: Likewise. * bin/wrap-aclocal.in: Don't set 'Automake::perl_libdirs' anymore. * bin/wrap-automake.in: Likewise. * t/Makefile.inc (LOG_COMPILER, PL_LOG_COMPILER): Use 'pre-inst-env'. (AM_PL_LOG_FLAGS): Don't set perl module path.
* build: Move wrapped scripts in "bin" directoryMathieu Lirzin2017-08-293-0/+60
| | | | | | | | | | | | | | | | | | Those scripts are used both in the build process and for the tests, so it seems clearer to not hide them in "t/wrap" directory. * t/wrap/aclocal.in: Rename to ... * bin/wrap-aclocal.in: ... this. * t/wrap/automake.in: Rename to ... * bin/wrap-automake.in: ... this. * configure.ac: Generate "bin/aclocal-${APIVERSION}" and "bin/automake-${APIVERSION}" at configure time. * t/Makefile.inc (nodist_noinst_SCRIPTS): Move wrapped scripts ... * bin/Makefile.inc (nodist_noinst_SCRIPTS): ... here. * Makefile.am (extend_PATH): Use "bin" directory. * t/ax/test-defs.in (am_bindir): Likewise. * t/get-sysconf.sh: Likewise. * .gitignore: Update.
* automake: Handle LTLIBOBJS more specificallyMathieu Lirzin2017-08-271-3/+2
| | | | | * bin/automake.in (handle_LIBOBJS_or_ALLOCA): Remove complex regexp substitution when handling LTLIBOBJS.
* aclocal: Avoid problematic string interpolationThomas Jahns2017-07-151-1/+1
| | | | | | | | | | | This fixes bug#20903. Thanks to Eric Bavier for reporting this issue. * bin/aclocal.in (automake_includes): Avoid problematic string interpolation. * NEWS: Update. * THANKS: Thank Eric Bavier. Signed-off-by: Mathieu Lirzin <mthl@gnu.org>
* automake: Shorter object file names under subdir-objectsThomas Martitz2017-07-061-17/+85
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Combining the 'subdir-objects' option with target-specific flags had the consequence of producing long object file names. This was done to preventively ensure the uniqueness of object file names. We are now using shorter names by default, and handle long names when an actual conflict is detected. This will hopefully reduce the necessity of using the 'prog_SHORTNAME' facility. Example: previously: AUTOMAKE_OPTIONS = subdir-objects bin_PROGRAMS += path/to/foo path_to_foo_CFLAGS = $(AM_CFLAGS) -g resulted in objects: sub/path_to_foo-foo.o now object file name is: sub/foo-foo.o * bin/automake.in (proglist, liblist, ltliblist) (dup_shortnames): New globals. (initialize_per_input): Initialize them. (handle_targets): New subroutine. (handle_single_transform): Truncate object file names when possible. * t/subobj-objname-clash.sh: New test. * t/list-of-tests.mk (handwritten_TESTS): Add it. * NEWS: Update. Signed-off-by: Mathieu Lirzin <mthl@gnu.org>
* Merge branch 'micro' into minorMathieu Lirzin2017-06-164-8/+12
|\
| * automake: Update 'read_am_file' docstring.Mathieu Lirzin2017-05-201-4/+7
| | | | | | | | | | * bin/automake.in (read_am_file): Update docstring which was referring to a non existent '%contents' variable.
| * maint: Update copyright years to 2017.Mathieu Lirzin2017-03-024-4/+4
| | | | | | | | This update has been made with 'make update-copyright'.
| * automake: do not emit rule with two dependentsJim Meyering2016-09-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On a system using our replacement alloca, make would emit this warning: target '.deps/alloca.Po' given more than once in the same rule That arose because automake would emit a rule depending on both ./.deps/alloca.Po and .deps/alloca.Po. Normally, duplicate dependents are avoided by virtue of their names being keys in the %dep_files hash, but in this case, that particular file was specified in two different ways. * bin/automake.in (handle_ALLOCA): When the $dir prefix is empty, make it './', to ensure that when we add ./.deps/alloca.Po it is deduped. See: http://bugs/gnu/org/22702
* | Merge branch 'micro' into minorPaul Eggert2016-03-311-1/+1
|\ \ | |/
| * automake: port to Perl 5.22 and laterPaul Eggert2016-03-311-1/+1
| | | | | | | | | | | | | | | | Without this change, Perl 5.22 complains "Unescaped left brace in regex is deprecated" and this is planned to become a hard error in Perl 5.26. See: http://search.cpan.org/dist/perl-5.22.0/pod/perldelta.pod#A_literal_%22{%22_should_now_be_escaped_in_a_pattern * bin/automake.in (substitute_ac_subst_variables): Escape left brace.
* | deps: fix corner-case "make distclean" bugStefano Lattarini2015-01-061-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Assume we have package satisfying the following conditions: (1) automatic dependency tracking is enabled; (2) the 'subdir-objects' Automake option is enabled; (3) the package uses a recursive make setup. Also assume that: (a) a subdir Makefile declares a foo_SOURCES variable containing a source file in the parent directory; (b) that parent Makefile declare a compiled program itself. Then BSD and Solaris make used to fail when running "make distclean", because the 'distclean' target of the subdir Makefile removed the whole '.deps' directory before the parent Makefile was done with the included '.Po' makefile fragments in that directory. This issue was revealed by failures in the 'subobj-vpath-pr13928.sh' test when those make implementations were used. We fix the issue by ensuring the 'distclean' target of any Makefile only removed the '.Po' makefile fragments included by it, rather than the whole '.deps' directory where such files resides. This change should be the last step in fixing automake bug#13928 for good. * bin/automake.in (handle_languages), lib/am/depend.am: Adjust to implement the new 'distclean' logic. * t/pr224.sh: Adjust to avoid a spurious failure. * PLANS/subdir-objects.txt: Update. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* | compile: don't place built object files in $(srcdir), ever ...Stefano Lattarini2015-01-061-16/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... even when a source file is specified as '$(srdir)/foo.c' or '$(top_srcdir)/bar.c'. And ditto for dependency-tracking makefile fragments (those under '.deps' directories). Such issues used to occur when the 'subdir-objects' option was given. This change should fix the second and last part of automake bug#13928. See also bug#16375 and bug#15293. * NEWS: Update. * bin/automake.in (handle_single_transform): Make sure object files and dependency-tracking makefile fragments coming from source like '$(srcdir)/foo.c' and '$(top_srcdir)/bar.c' are placed respectively under $(builddir) and $(top_builddir). * t/subobj-vpath-pr13928.sh: Enhance to expose even more aspects of the bug we've just fixed. * t/subobj-pr13928-more-langs.sh: New test, similar to the one above, but with non-C languages as well. * t/list-of-tests.mk (XFAIL_TESTS): Remove 'subobj-vpath-pr13928.sh', it's now supposed to pass. (handwritten_TESTS): Add 'subobj-pr13928-more-langs.sh'. Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* | deps: 'subdir-object' option now works when foo_SOURCES contains $(var)Stefano Lattarini2015-01-061-41/+43
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Following a suggestions of Johan Kristensen, we have config.status use 'make' invocations rather than Makefile-parsing 'sed' hacks to bootstrap the dependency-tracking '.Po' and '.Plo' makefile fragments. To handle the inclusion of such files that are still missing when make is first we basically generate a temporary Makefile without these includes, and call 'make' on that Makefile. This fixes the serious bug bug#13928, which was an hard blocker to make the behavior mandated by the 'subdir-object' active by default (which we want to do in Automake 2.0). The issue has also been reported in bug#15919. * NEWS, THANKS: Update. * bin/automake.in (handle_languages): Add a trailing "marking" comment ("# am--include-marker") to the generated Makefile lines issuing 'include' directives for the dependency-tracking '.Po' and '.Plo' makefile fragments. Also rename the generated Makefile variable 'am__depfiles_maybe' to the clearer 'am__maybe_remake_depfiles'. Minor unrelated refactoring. * lib/am/configure.am: Adjust to account for the 'am__depfiles_maybe' -> 'am__maybe_remake_depfiles' renaming. * lib/am/depend.am: Add rules to generate a dummy version of all the dependency-tracking '.Po' and '.Plo' makefile fragments. * m4/depout.m4: Use make invocations rather than Makefile-parsing sed hacks to bootstrap the dependency-tracking '.Po' and '.Plo' makefile fragments. We still use some sed trickery in order to remove the inclusion of the still non existing .Po and .Plo files from the Makefile we invoke make upon; this is done stripping lines that contain the magic string "# am--include-marker". * m4/make.m4 (AM_MAKE_INCLUDE): Given that now automake generates Makefiles containing include statements with trailing comment, adjust the checks done here to make sure $MAKE support that; e.g., "include foo.mk # comment" rather than just "include foo.mk". Also refactor and adjust to leave better debugging info in config.log. * t/postproc.sh: Rename ... * t/depend-postproc.sh: ... to this, and adjust and enhance. * t/list-of-tests.mk (handwritten_TESTS): Adjust. (XFAIL_TESTS): Remove 't/subobj-indir-pr13928.sh', which is now succeeding. * t/subobj-indir-pr13928.sh: Simplify slightly, now that we expect it to pass. * t/depcomp8a.sh: Adjust grepping check to account for the changes in the generated Makefile, and tp be somewhat more robust in light of possible future modifications. * t/depcomp8b.sh: Likewise. * t/subobj11b.sh: Likewise. * t/subobj11c.sh: Likewise. * t/extra-sources.sh: Likewise. * t/lex-depend-grep.sh: Likewise. * t/lex-depend-cxx.sh: Add a command to help debugging in case of test failure. Helped-by: Johan Kristensen <johankristensen@gmail.com> Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>
* maint: update copyright years to 2015 (branch 'micro')Stefano Lattarini2015-01-054-4/+4
| | | | Signed-off-by: Stefano Lattarini <stefano.lattarini@gmail.com>