From: Tom Tromey Date: Wed, 2 Apr 1997 07:15:00 +0000 (+0000) Subject: better error when ldadd/libadd confused X-Git-Tag: pre-ian-conditionals~40 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=68a5f0636eef42228ad0cb659803a02bbce4eac9;p=thirdparty%2Fautomake.git better error when ldadd/libadd confused --- diff --git a/ChangeLog b/ChangeLog index 0eeb524d9..dc2265e47 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +Wed Apr 2 00:03:50 1997 Tom Tromey + + * automake.in (handle_programs): Error if LIBADD used where LDADD + meant. + (handle_libraries): Error if LDADD used where LIBADD meant. + (handle_ltlibraries): Likewise. + +Tue Apr 1 22:46:33 1997 Tom Tromey + + * automake.in (check_canonical_spelling): New sub. + (handle_programs): Use it. + (handle_libraries): Likewise. + (handle_ltlibraries): Likewise. + Mon Mar 31 12:13:08 1997 Tom Tromey * depend2.am (.deps/%.P): Make .P file depend on everything the .c diff --git a/automake.in b/automake.in index 469c7a045..859d50164 100755 --- a/automake.in +++ b/automake.in @@ -1319,6 +1319,30 @@ sub handle_lib_objects return $seen_libobjs; } +# Canonicalize a name, and check to make sure the non-canonical name +# is never used. Returns canonical name. Arguments are name and a +# list of suffixes to check for. +sub check_canonical_spelling +{ + local ($name, @suffixes) = @_; + local ($xname, $xt); + + ($xname = $name) =~ tr/A-Za-z0-9_/_/c; + if ($xname ne $name) + { + local ($xt); + foreach $xt (@suffixes) + { + &am_line_error ($name . $xt, + "invalid variable \`" . $name . $xt + . "'; should be \`" . $xname . $xt . "'") + if &variable_defined ($name . $xt); + } + } + + return $xname; +} + # Handle C programs. sub handle_programs { @@ -1341,19 +1365,10 @@ sub handle_programs { local ($obj) = &get_object_extension ($one_file); - # Canonicalize names. - ($xname = $one_file) =~ tr/A-Za-z0-9_/_/c; - if ($xname ne $one_file) - { - local ($xt); - foreach $xt ('_LDADD', '_LDFLAGS', '_SOURCES', '_OBJECTS', '_DEPENDENCIES') - { - &am_line_error ($one_file . $xt, - "invalid variable \`" . $one_file . $xt - . "'; should be \`" . $xname . $xt . "'") - if &variable_defined ($one_file . $xt); - } - } + # Canonicalize names and check for misspellings. + $xname = &check_canonical_spelling ($one_file, '_LDADD', '_LDFLAGS', + '_SOURCES', '_OBJECTS', + '_DEPENDENCIES'); # FIXME: Using a trick to figure out if any lex sources appear # in our program; should use some cleaner method. @@ -1390,6 +1405,13 @@ sub handle_programs $xt = '_SOURCES' } + if (&variable_defined ($xname . '_LIBADD')) + { + &am_line_error ($xname . '_LIBADD', + "use \`" . $xname . "_LDADD', not \`" + . $xname . "_LIBADD'"); + } + if (! &variable_defined ($xname . '_LDFLAGS')) { # Define the prog_LDFLAGS variable. @@ -1499,19 +1521,9 @@ sub handle_libraries local ($obj) = &get_object_extension ($onelib); - # Canonicalize names. - ($xlib = $onelib) =~ tr/A-Za-z0-9_/_/c; - if ($xlib ne $onelib) - { - local ($xt); - foreach $xt ('_LIBADD', '_SOURCES', '_OBJECTS', '_DEPENDENCIES') - { - &am_line_error ($onelib . $xt, - "invalid variable \`" . $onelib . $xt - . "'; should be \`" . $xlib . $xt . "'") - if &variable_defined ($onelib . $xt); - } - } + # Canonicalize names and check for misspellings. + $xlib = &check_canonical_spelling ($onelib, '_LIBADD', '_SOURCES', + '_OBJECTS', '_DEPENDENCIES'); if (&variable_defined ($xlib . '_LIBADD')) { @@ -1527,6 +1539,13 @@ sub handle_libraries &define_variable ($xlib . "_LIBADD", ''); } + if (&variable_defined ($xlib . '_LDADD')) + { + &am_line_error ($xlib . '_LDADD', + "use \`" . $xlib . "_LIBADD', not \`" + . $xlib . "_LDADD'"); + } + &handle_source_transform ($xlib, $onelib, $obj); $output_rules .= @@ -1610,19 +1629,10 @@ sub handle_ltlibraries local ($obj) = &get_object_extension ($onelib); - # Canonicalize names. - ($xlib = $onelib) =~ tr/A-Za-z0-9_/_/c; - if ($xlib ne $onelib) - { - local ($xt); - foreach $xt ('_LIBADD', '_LDFLAGS', '_SOURCES', '_OBJECTS', '_DEPENDENCIES') - { - &am_line_error ($onelib . $xt, - "invalid variable \`" . $onelib . $xt - . "'; should be \`" . $xlib . $xt . "'") - if &variable_defined ($onelib . $xt); - } - } + # Canonicalize names and check for misspellings. + $xlib = &check_canonical_spelling ($onelib, '_LIBADD', '_LDFLAGS', + '_SOURCES', '_OBJECTS', + '_DEPENDENCIES'); if (! &variable_defined ($xlib . '_LDFLAGS')) { @@ -1644,6 +1654,13 @@ sub handle_ltlibraries &define_variable ($xlib . "_LIBADD", ''); } + if (&variable_defined ($xlib . '_LDADD')) + { + &am_line_error ($xlib . '_LDADD', + "use \`" . $xlib . "_LIBADD', not \`" + . $xlib . "_LDADD'"); + } + local ($linker) = &handle_source_transform ($xlib, $onelib, $obj); # Determine program to use for link. diff --git a/tests/ChangeLog b/tests/ChangeLog index 9b2365988..8109eb926 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,7 @@ +Wed Apr 2 00:12:26 1997 Tom Tromey + + * ldadd.test: New file. + Fri Mar 28 23:36:04 1997 Tom Tromey * stamph.test: New file. diff --git a/tests/Makefile.am b/tests/Makefile.am index 7fff1693e..8ad2634ee 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -24,7 +24,8 @@ ranlib.test confvar.test confvar2.test stdlib.test cxxo.test \ colon2.test colon3.test remake.test output.test output2.test \ remake2.test output3.test output4.test colneq2.test subst.test \ defun2.test yaccpp.test texinfo3.test texinfo4.test tagsub.test \ -cxxlibobj.test seenc.test cygwin32.test lisp.test stamph.test +cxxlibobj.test seenc.test cygwin32.test lisp.test stamph.test \ +ldadd.test EXTRA_DIST = defs $(TESTS) diff --git a/tests/Makefile.in b/tests/Makefile.in index 8d3f401d5..0631497fa 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -78,7 +78,8 @@ ranlib.test confvar.test confvar2.test stdlib.test cxxo.test \ colon2.test colon3.test remake.test output.test output2.test \ remake2.test output3.test output4.test colneq2.test subst.test \ defun2.test yaccpp.test texinfo3.test texinfo4.test tagsub.test \ -cxxlibobj.test seenc.test cygwin32.test lisp.test stamph.test +cxxlibobj.test seenc.test cygwin32.test lisp.test stamph.test \ +ldadd.test EXTRA_DIST = defs $(TESTS) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs diff --git a/tests/ldadd.test b/tests/ldadd.test new file mode 100755 index 000000000..80aba9aa2 --- /dev/null +++ b/tests/ldadd.test @@ -0,0 +1,33 @@ +#! /bin/sh + +# Check to make sure incorrect LDADD usage is diagnosed. + +. $srcdir/defs || exit 1 + +cat > configure.in << 'END' +PACKAGE=nonesuch +VERSION=nonesuch +AC_PROG_CC +AC_ARG_PROGRAM +AC_PROG_INSTALL +AM_PROG_LIBTOOL +AC_OUTPUT(Makefile) +LTLIBOBJS="$LTLIBOBJS q.o" +LIBOBJS="$LIBOBJS q.o" +AC_SUBST(LTLIBOBJS) +END + +cat > Makefile.am << 'END' +lib_LTLIBRARIES = libtu.la +libtu_la_SOURCES = foo.c +libtu_la_LDADD = @LTLIBOBJS@ +END + +: > ltconfig +: > ltmain.sh +: > config.guess +: > config.sub +: > q.c + +$AUTOMAKE && exit 1 +exit 0