From: Nathan Phillip Brink Subject: Make dependence on TCL not be automagic (so that --with-tcl errors out if TCL can't be found and not specifying --with-tcl does the normal automagic behavior). Support LDFLAGS=-Wl,--as-needed by using LIBS instead of LDFLAGS for -ltcl as appropriate. --- a/configure.in +++ b/configure.in @@ -1122,43 +1122,41 @@ dnl dnl Tcl support? dnl -AC_ARG_WITH(tcl, -[ --with-tcl[=PATH_TO_tclConfig.sh] Compile with tcl support.], -[ - tclconfig=$withval -], - tclconfig="yes" -) - -if test "x$tclconfig" = "xyes" ; then - for i in /usr/lib /usr/local/lib /usr/local/lib/tcl8.4 ; do - if test -r $i/tclConfig.sh ; then - tclconfig=$i/tclConfig.sh - break; - fi - done -fi +AC_ARG_WITH([tcl], [AS_HELP_STRING([--with-tcl[=PATH_TO_tclConfig.sh]], [Compile with tcl support.])], + [], [with_tcl=maybe]) AC_MSG_CHECKING(whether to support TCL) -if test "x$tclconfig" = "xno"; then +if test "x$with_tcl" = "xno"; then AC_MSG_RESULT(no) else - if test ! -r $tclconfig ; then + with_tcl_errormsg="You specified --with-tcl=$with_tcl but I could not find TCL. Please specify --with-tcl=/path/to/tclConfig.sh or remove --with-tcl from ./configure's commandline." + if test "x$with_tcl" = "xmaybe" -o "x$with_tcl" = "xyes"; then + for i in /usr/lib /usr/local/lib /usr/local/lib/tcl8.4 ; do + if test -r "$i"/tclConfig.sh ; then + tclconfig="$i"/tclConfig.sh + break; + fi + done + else + tclconfig="$with_tcl" + fi + if test ! -r "$tclconfig" ; then + dnl Avoid being automagic unless if the user wants us to be. + AS_IF([test "x$with_tcl" != "xmaybe"], + [AC_MSG_ERROR([$with_tcl_errormsg])]) AC_MSG_RESULT(no) else AC_MSG_RESULT(yes) - TCLCFLAGS=`(. $tclconfig && echo $TCL_INCLUDE_SPEC)` - TCLLDFLAGS1=`(. $tclconfig && echo $TCL_LIB_SPEC)` - TCLLDFLAGS2=`(. $tclconfig && echo $TCL_LIBS)` - TCLLDFLAGS=$(eval echo "$TCLLDFLAGS1 $TCLLDFLAGS2") + TCLCFLAGS=`(. "$tclconfig" && echo $TCL_INCLUDE_SPEC)` + TCLLIBS=`(. "$tclconfig" && echo $TCL_LIB_SPEC $TCL_LIBS)` TCLDOTOH="tcl.o" AC_MSG_CHECKING(whether embedded tcl works the way I expect) have_embedded_tcl="no" old_CFLAGS="$CFLAGS" - old_LDFLAGS="$LDFLAGS" + old_LIBS="$LIBS" CFLAGS="$CFLAGS $TCLCFLAGS" - LDFLAGS="$LDFLAGS $TCLLDFLAGS" + LIBS="$LIBS $TCLLIBS" AC_TRY_LINK([ #include Tcl_Interp *my_tcl; @@ -1175,14 +1173,16 @@ ], have_embedded_tcl="yes") CFLAGS="$old_CFLAGS" - LDFLAGS="$old_LDFLAGS" + LIBS="$old_LIBS" if test $have_embedded_tcl = "yes" ; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_TCL) AC_DEFINE(TCLCFLAGS) - AC_DEFINE(TCLLDFLAGS) + AC_DEFINE(TCLLIBS) else - AC_MSG_RESULT(no, sorry) + AS_IF([test "$with_tcl" != "xmaybe"], + [AC_MSG_ERROR([$with_tcl_errormsg])]) + AC_MSG_RESULT(no, sorry) fi fi fi @@ -1383,7 +1383,7 @@ AC_SUBST(RUBYLIBS) AC_SUBST(TCLDOTOH) AC_SUBST(TCLCFLAGS) -AC_SUBST(TCLLDFLAGS) +AC_SUBST(TCLLIBS) AC_SUBST(PERLDOTOH) AC_SUBST(PERLCFLAGS) AC_SUBST(PERLLDFLAGS) --- a/source/Makefile.in +++ b/source/Makefile.in @@ -38,7 +38,7 @@ epic5: $(OBJECTS) sh info.c.sh $(CC) $(CFLAGS) $(INCLUDES) -c info.c - $(CC) $(CFLAGS) $(LDFLAGS) -o epic5 $(OBJECTS) info.o @PERLLDFLAGS@ @TCLLDFLAGS@ @RUBYLIBS@ $(LIBS) + $(CC) $(CFLAGS) $(LDFLAGS) -o epic5 $(OBJECTS) info.o @PERLLDFLAGS@ @TCLLIBS@ @RUBYLIBS@ $(LIBS) $(RM) info.c info.o clean:: $(RM) epic5 $(OBJECTS)