This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: build-guile [fwd: g-wrap-0.3.9 configure problem]


Hi all,

I think it would be important to let build-guile return really *ALL*
libraries needed. For older versions of guile without build-guile or for
those where it's not working I made some patches to Gnome's
gnome-guile-checks.m4 a few weeks ago. When it finds a working
build-guile, it uses it - otherwise it tests some libraries [FIXME: One
should add -lsocket, -lnls and all the other stuff here ...].
Most important: it actually tests whether linking against guile works!
This is especially important when cross-compiling and build-guile in
/usr/bin - in this case configure would decide that guile does not work
and leave it out. Hope it is useful !

Martin

On 8 May 1998 chrislee@lavash.ius.cs.cmu.edu wrote:

> To: guile@cygnus.com
> Subject: build-guile [fwd: g-wrap-0.3.9 configure problem]
> From: chrislee@lavash.ius.cs.cmu.edu
> 
> 
> Dominique gave me permission to post his message here.  I am trying to
> help him set-up G-Wrap to configure correctly for his Guile
> interpreter (note that he is using guile-core-980111 under Solaris).
> My configure.in script uses build-guile to determine link flags (using
> the configuration code Mikael Djurfeldt sent to me -- thanks!), but he
> is still having some problems with ./configure missing a couple of
> libraries for linking.
> 
> Could anyone tell me whether my answers to his questions are correct?
> Also, if my understanding of what happened to him is true, it looks
> like build-guile may not be supplying all the necessary '-l...'
> flags (though it may be due to the old version of Guile).

Someone should fix this in build-guile.

> 
> Thanks for any suggestions,
>  -Chris
> 
> ps.  I rarely get answers when I post to guile@cygnus.com.  Is my
>      netiquette OK?
> 
> 

[..]

> > 	dnl Checks for libraries.
> > 	AC_PATH_PROG(BUILD_GUILE, build-guile)
> > 	if test "$ac_cv_prog_BUILD_GUILE" = no; then
> > 	  GUILE_LIBS='-lguile'
> > 	else
> > 	  GUILE_LIBS=`build-guile link`
> > 	fi
> > 	LIBS="$GUILE_LIBS $LIBS"
> > 
> > This is the way we builders of Guile extensions are supposed to
> > figure-out how to link our executables.  The purpose of these is to
> > query Guile itself as to which libraries it uses for building the
> > guile executable.
>

[...]

> > In this case, we should alert the maintainers and
> > make sure their configure script itself gets the libraries right so
> > that it builds the proper list into the variable %guile-build-info
> > (this is a variable avaiable in the interpreter which is somehow build
> > during the configuration of Guile -- I haven't investigated how).

> I think the problem is here!

Yes, that's my oppinion, too.

> > If you are using Guile 1.2 instead of a recent snapshot, build-guile
> > may not exist on your system.  In this case, I would edit configure.in
> > to use the line 
> > 
> >   GUILE_LIBS='-lguile -lsocket -lnsl -ldl'
> > 
> > instead of 
> > 
> >   GUILE_LIBS='-lguile'
> > 
> > and run autoconf.  If you don't have autoconf, just find the
> > corresponding line in ./configure and make the same change.
> > 
> > I hope this helps,

> Yes ok, I am using a recent snap and I have autoconf
> I understand the workarround.
> thanks.

-----------------------------------------------------------------
   Martin Baulig - Angewandte Mathematik - Universitaet Trier

   baulig@castor.uni-trier.de, http://www.home-of-linux.org/
   Key: 1024-bit key with ID C8178435 created 1997/01/24 
   ID:  67 C1 84 A0 47 F5 11 C5  5F 68 4C 84 99 05 C3 92
   Finger me for public key or fetch finger.txt from the url above
------------------------------------------------------------------
dnl
dnl GNOME_CHECK_GUILE (failflag)
dnl
dnl if failflag is "fail" then GNOME_CHECK_GUILE will abort if guile is not found.
dnl

AC_DEFUN([GNOME_CHECK_GUILE],
[
	saved_ldflags="$LDFLAGS"
	saved_cppflags="$CPPFLAGS"
	LDFLAGS="$LDFLAGS $GNOME_LIBDIR"

	AC_CHECK_LIB(qthreads,main,[
		QTTHREADS_LIB="-lqthreads"
	],[
		AC_CHECK_LIB(qt, qt_null, QTTHREADS_LIB="-lqt")
	],$LIBS)
	AC_SUBST(QTTHREADS_LIB)

	AC_CHECK_LIB(termcap,main,TERMCAP_LIB="-ltermcap")
	AC_CHECK_LIB(readline,main,READLINE_LIB="-lreadline",,$TERMCAP_LIB)

	AC_SUBST(TERMCAP_LIB)
	AC_SUBST(READLINE_LIB)

	AC_CHECK_PROG(BUILD_GUILE, build-guile, yes, no)

	if test "x$BUILD_GUILE" = "xyes"; then
		AC_MSG_CHECKING(whether build-guile works)
		if test x`build-guile --version >/dev/null 2>&1 || \
				echo no` = xno; then
			BUILD_GUILE=no
		fi
		AC_MSG_RESULT($BUILD_GUILE)
	fi

	AC_CHECK_LIB(m, sin)

	if test "x$BUILD_GUILE" = "xyes"; then
		AC_MSG_CHECKING(for guile libraries)
		GUILE_LIBS="-L`build-guile info libdir` `build-guile link`"
		AC_MSG_RESULT($GUILE_LIBS)
		AC_MSG_CHECKING(for guile headers)
		GUILE_INCS="-I`build-guile info includedir`"
		AC_MSG_RESULT($GUILE_INCS)
	else
		GUILE_LIBS="$GNOME_LIBDIR"
		GUILE_INCS="$GNOME_INCLUDEDIR"
		AC_CHECK_LIB(rx, main, GUILE_LIBS="-lrx $GUILE_LIBS")
		AC_CHECK_LIB(qt, main, GUILE_LIBS="-lqt $GUILE_LIBS")
		AC_CHECK_LIB(dl, dlopen, GUILE_LIBS="-ldl $GUILE_LIBS")
		GUILE_LIBS="-lguile $GUILE_LIBS $QTTHREADS_LIB $TERMCAP_LIB $READLINE_LIB"
	fi

	AC_SUBST(GUILE_LIBS)
	AC_SUBST(GUILE_INCS)

	LDFLAGS="$saved_ldflags $GUILE_LIBS"
	CPPFLAGS="$saved_cppflags $GUILE_INCS"

	AC_MSG_CHECKING(whether guile works)
	AC_TRY_LINK([
		#include <libguile.h>
		#include <guile/gh.h>
	],[
		gh_eval_str("(newline)");
		scm_boot_guile(0,NULL,NULL,NULL);
	],[
		ac_cv_guile_found=yes
		AC_DEFINE(HAVE_GUILE)
	],[
		ac_cv_guile_found=no
	])
	AC_MSG_RESULT($ac_cv_guile_found)

	if test x$ac_cv_guile_found = xno ; then
		if test x$1 = xfail ; then
		  AC_MSG_ERROR(Can not find Guile 1.2 on this system)
		else
		  AC_MSG_WARN(Can not find Guile 1.2 on this system)
		fi
		ac_cv_guile_found=no
	fi

	LDFLAGS="$saved_ldflags"
	CPPFLAGS="$saved_cppflags"

	AC_SUBST(GUILE_LIBS)
	AM_CONDITIONAL(GUILE, test x$ac_cv_guile_found = xyes)
])

PGP signature