[sr #111140] autoscan gets confused by Makefile rules that start with '-' to ignore errors

Eric Gallager <[email protected]> Sat, 19 Oct 2024 20:51:05 -0400 (EDT)
Newsgroups gmane.comp.sysutils.autoconf.bugs
Message-ID <[email protected]>
URL:
  <https://savannah.gnu.org/support/?111140>

                 Summary: autoscan gets confused by Makefile rules that start
with '-' to ignore errors
                   Group: Autoconf
               Submitter: egallager
               Submitted: Sun 20 Oct 2024 12:51:01 AM UTC
                Priority: 5 - Unprioritized
                Severity: 3 - Normal
                  Status: None
                 Privacy: Public
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
        Operating System: None


    _______________________________________________________

Follow-up Comments:


-------------------------------------------------------
Date: Sun 20 Oct 2024 12:51:01 AM UTC By: Eric Gallager <egallager>
Make has a feature where starting a line with a tab and a minus sign will
ignore errors on that line:
https://www.gnu.org/software/make/manual/html_node/Errors.html
However, if the command whose errors are meant to be ignored starts with an
"l", `autoscan` will think it's a library that the user is trying to link
with, and thus needs to be checked. Say I have the following Makefile in a
directory:

$ cat Makefile
symlinks:
	-ln -s foo bar
$

If I then run `autoscan`, it will produce a `configure.scan` file that looks
like this:

$ cat configure.scan
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.72])
AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])

# Checks for programs.

# Checks for libraries.
# FIXME: Replace 'main' with a function in '-ln':
AC_CHECK_LIB([n], [main])

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile])
AC_OUTPUT

However, there is no actual "libn" that needs to be linked with, so `autoscan`
shouldn't suggest checking for it. I think a decent heuristic to tell these
apart would be that if a "-l" sequence in a Makefile is preceded by a tab
immediately following the start of a line, it's probably a command rather than
a library.








    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/support/?111140>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/
signature.asc (application/pgp-signature, 228 B)
-----BEGIN PGP SIGNATURE-----

iHUEABYIAB0WIQQk97aszIMMAvLLwm6qLAuaBUf3TgUCZxRT+QAKCRCqLAuaBUf3
TgxuAP9sNQ4YICROiDEh6tcAqJDY4sYS15RyGqJPLd3BIkbYogEAru3O11DG+zgJ
0e6KI7KM81yh3Ewjgcu86rIOZ1yJEAk=
=831o
-----END PGP SIGNATURE-----