Add support for guile 2.0: configure and makefiles.

Note: guile-config is badly broken for guile 2. So
the guile configure  section has been rewritten to
use pkg-config instead.

Manually resolved conflicts:
	Examples/Makefile.in
This commit is contained in:
Geert Janssens 2013-03-07 11:55:01 +01:00
commit b072f22930
4 changed files with 122 additions and 123 deletions

View file

@ -455,11 +455,11 @@ octave_clean:
# Make sure these locate your Guile installation
GUILE = @GUILE@
GUILE_INCLUDE = @GUILEINCLUDE@
GUILE_LIB = @GUILELIB@
GUILE_CFLAGS = @GUILE_CFLAGS@
GUILE_SO = @GUILE_SO@
GUILE_LIBS = @GUILE_LIBS@
GUILE_LIBOPTS = @LIBS@ $(SYSLIBS)
GUILE_LIBPREFIX = lib
GUILE_LIBOPTS = @GUILELINK@ @LIBS@ $(SYSLIBS)
GUILE_SCRIPT = $(RUNME).scm
#------------------------------------------------------------------
@ -467,13 +467,14 @@ GUILE_SCRIPT = $(RUNME).scm
#------------------------------------------------------------------
guile: $(SRCS)
$(SWIG) -guile -scm -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
$(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
$(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_CFLAGS) $(ISRCS) $(SRCS)
$(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
guile_cpp: $(SRCS)
guile_cpp: $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
$(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO): $(SRCS)
$(SWIG) -c++ -guile -scm -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
$(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
$(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
$(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
$(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $@
guile_externalhdr:
$(SWIG) -guile -external-runtime $(TARGET)
@ -483,12 +484,12 @@ guile_externalhdr:
#------------------------------------------------------------------
guile_gh: $(SRCS)
$(SWIG) -guile -gh -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
$(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
$(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_CFLAGS) $(ISRCS) $(SRCS)
$(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
guile_gh_cpp: $(SRCS)
$(SWIG) -c++ -guile -gh -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
$(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
$(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
$(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
# -----------------------------------------------------------------
@ -497,12 +498,12 @@ guile_gh_cpp: $(SRCS)
guile_passive: $(SRCS)
$(SWIG) -guile -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
$(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ISRCS) $(SRCS)
$(CC) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_CFLAGS) $(ISRCS) $(SRCS)
$(LDSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
guile_passive_cpp: $(SRCS)
$(SWIG) -c++ -guile -Linkage passive $(SWIGOPT) $(INTERFACEPATH)
$(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_INCLUDE) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
$(CXX) -c $(CCSHARED) $(CFLAGS) $(INCLUDES) $(GUILE_CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS)
$(CXXSHARED) $(CFLAGS) $(OBJS) $(IOBJS) $(LIBS) $(CPP_DLLIBS) -o $(GUILE_LIBPREFIX)$(TARGET)$(GUILE_SO)
# -----------------------------------------------------------------
@ -513,23 +514,23 @@ guile_static: $(SRCS)
$(SWIG) -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACEPATH)
$(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) \
-DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \
$(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
$(GUILE_CFLAGS) $(LIBS) -L$(GUILE_LIBS) $(GUILE_LIBOPTS) -o $(TARGET)-guile
guile_static_cpp: $(SRCS)
$(SWIG) -c++ -guile -lguilemain.i -Linkage ltdlmod $(SWIGOPT) $(INTERFACEPATH)
$(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
-DSWIGINIT="SCM scm_init_$(TARGET)_module(void); scm_init_$(TARGET)_module();" \
$(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
$(GUILE_CFLAGS) $(LIBS) -L$(GUILE_LIBS) $(GUILE_LIBOPTS) -o $(TARGET)-guile
guile_simple: $(SRCS)
$(SWIG) -guile -lguilemain.i -Linkage simple $(SWIGOPT) $(INTERFACEPATH)
$(CC) $(CFLAGS) $(ISRCS) $(SRCS) $(INCLUDES) \
$(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
$(GUILE_CFLAGS) $(LIBS) -L$(GUILE_LIBS) $(GUILE_LIBOPTS) -o $(TARGET)-guile
guile_simple_cpp: $(SRCS)
$(SWIG) -c++ -guile -lguilemain.i -Linkage simple $(SWIGOPT) $(INTERFACEPATH)
$(CXX) $(CFLAGS) $(ICXXSRCS) $(SRCS) $(CXXSRCS) $(INCLUDES) \
$(GUILE_INCLUDE) $(LIBS) -L$(GUILE_LIB) $(GUILE_LIBOPTS) -o $(TARGET)-guile
$(GUILE_CFLAGS) $(LIBS) -L$(GUILE_LIBS) $(GUILE_LIBOPTS) -o $(TARGET)-guile
# -----------------------------------------------------------------
# Running a Guile example

View file

@ -7,8 +7,8 @@ SWIG = ../$(top_srcdir)/preinst-swig
CC = @CC@
CXX = @CXX@
CFLAGS = @PLATFLAGS@
GUILEINCLUDE = @GUILEINCLUDE@
GUILELINK = @GUILELINK@
GUILE_CFLAGS = @GUILE_CFLAGS@
GUILE_LIBS = @GUILE_LIBS@
SWIGOPT =
WRAP = $(IFILE:.i=_wrap.c)
@ -31,10 +31,10 @@ guile_clean:
sub-all:
$(SWIG) -guile $(SWIGOPT) $(IFILE)
$(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(WRAP) $(GUILEINCLUDE) $(GUILELINK)
$(CC) $(CFLAGS) -o $(TARGET) $(SRCS) $(WRAP) $(GUILE_CFLAGS) $(GUILE_LIBS)
sub-all-cxx:
$(SWIG) -c++ -guile $(SWIGOPT) $(IFILE)
$(CXX) $(CFLAGS) -o $(TARGET) $(SRCS) $(CXXWRAP) $(GUILEINCLUDE) $(GUILELINK)
$(CXX) $(CFLAGS) -o $(TARGET) $(SRCS) $(CXXWRAP) $(GUILE_CFLAGS) $(GUILE_LIBS)
# Makefile ends here

View file

@ -59,7 +59,7 @@ skip-tcl = test -n "@SKIP_TCL@"
skip-perl5 = test -n "@SKIP_PERL5@"
skip-python = test -n "@SKIP_PYTHON@"
skip-java = test -n "@SKIP_JAVA@"
skip-guilegh = test -n "@SKIP_GUILEGH@"
skip-guilegh = test -n "@SKIP_GUILEGH@"
skip-guile = test -n "@SKIP_GUILE@"
skip-mzscheme = test -n "@SKIP_MZSCHEME@"
skip-ruby = test -n "@SKIP_RUBY@"

View file

@ -157,7 +157,7 @@ if test "$GCC" = yes; then
else
ISYSTEM="-I"
fi
AC_MSG_NOTICE(ISYSTEM: $ISYSTEM)
dnl Info for building shared libraries ... in order to run the examples
@ -1148,125 +1148,123 @@ AC_SUBST(NDKBUILD)
# Look for Guile
#----------------------------------------------------------------
GUILEPACKAGE=
GUILEINCLUDE=
GUILE=
GUILELIB=
GUILELINK=
GUILEPKGDATADIR=
GUILE_CFLAGS=
GUILE_LIBS=
AC_ARG_WITH(guile-config,AS_HELP_STRING([--without-guile], [Disable Guile])
AS_HELP_STRING([--with-guile-config=path], [Set location of guile-config]),[ GUILE_CONFIG="$withval"], [GUILE_CONFIG=])
AC_ARG_WITH(guilepackage, AS_HELP_STRING([--with-guile-prefix=path], [Set location of Guile tree]),[
GUILEPACKAGE="$withval"])
AC_ARG_WITH(guile,[ --with-guile=path Set location of Guile executable],[
GUILE="$withval"], [GUILE=yes])
AC_ARG_WITH(guileincl,[ --with-guileincl=path Set location of Guile include directory],[
GUILEINCLUDE="$withval"])
AC_ARG_WITH(guilelib,[ --with-guilelib=path Set location of Guile library directory],[
GUILELIB="$withval"])
AC_ARG_WITH(guile, AS_HELP_STRING([--without-guile], [Disable Guile])
AS_HELP_STRING([--with-guile=path], [Set location of Guile executable]),[GUILE="$withval"], [GUILE=yes])
AC_ARG_WITH(guile-cflags,[ --with-guile-cflags=cflags Set cflags required to compile against Guile],[
GUILE_CFLAGS="$withval"])
AC_ARG_WITH(guile-libs,[ --with-guile-libs=ldflags Set ldflags needed to link with Guile],[
GUILE_LIBS="$withval"])
# First, check for "--without-guile" or "--with-guile=no".
if test x"${GUILE}" = xno -o x"${with_alllang}" = xno ; then
AC_MSG_NOTICE([Disabling Guile])
AC_MSG_NOTICE([Disabling Guile])
GUILE=
GUILE_CFLAGS=
GUILE_LIBS=
else
if test -z "$GUILE_CONFIG" ; then
AC_PATH_PROG(GUILE_CONFIG, guile-config)
fi
if test -n "$GUILE_CONFIG" ; then
GUILEPACKAGE="`$GUILE_CONFIG info prefix`"
GUILEINCLUDE="`$GUILE_CONFIG info includedir`"
GUILELIB="`$GUILE_CONFIG info libdir`"
GUILE="`$GUILE_CONFIG info bindir`/guile"
GUILELINK="`$GUILE_CONFIG link`"
GUILEPKGDATADIR="`$GUILE_CONFIG info pkgdatadir`"
fi
if test -z "$GUILE" -o "x$GUILE" = xyes; then
if test -n "$GUILEPACKAGE"; then
GUILE="$GUILEPACKAGE/bin/guile"
else
GUILE=
fi
# Use pkg-config to find guile specific config parameters
# Note: if guile is not installed in a standard system path
# you can set the environment variable PKG_CONFIG_PATH to
# the directory where the guile package config file is stored
AC_PATH_PROG(PKG_CONFIG,pkg-config)
if test "x$PKG_CONFIG" = x; then
# @*%&$ Ximian programmers renamed this application
AC_PATH_PROG(PKG_CONFIG,pkgconfig)
fi
if test "x$PKG_CONFIG" = x; then
AC_MSG_NOTICE([Could not find the pkg-config (or pkgconfig) program required to set up Guile. Disabling Guile],)
GUILE=
GUILE_CFLAGS=
GUILE_LIBS=""
else
if test -z "$GUILEINCLUDE"; then
if test -n "$GUILEPACKAGE"; then
GUILEINCLUDE="$GUILEPACKAGE/include"
fi
fi
# If the user has given these values, cache them to override the
# detected values.
if test "x$GUILE_LIBS" != x; then
saved_GUILE_LIBS="$GUILE_LIBS"
fi
if test "x$GUILE_CFLAGS" != x; then
saved_GUILE_CFLAGS="$GUILE_CFLAGS"
fi
if test -z "$GUILELIB"; then
if test -n "$GUILEPACKAGE"; then
GUILELIB="$GUILEPACKAGE/lib"
fi
fi
# Look up GUILE_CFLAGS and GUILE_LIBS, and version check
GUILE_SERIES=""
PKG_CHECK_MODULES(GUILE, [guile-1.8], [ GUILE_SERIES="18" ], [
PKG_CHECK_MODULES(GUILE, [guile-2.0], [GUILE_SERIES="20" ], [AC_MSG_NOTICE([
Only Guile 1.8 or 2.0 is supported. Neither version appears to be installed correctly. Disabling Guile
])])
])
if test "x$GUILE-SERIES" = x; then
GUILE=
GUILE_CFLAGS=
GUILE_LIBS=
else
# Look up GUILE executable
if test "x$GUILE" = xyes; then
GUILE=
if test "$xGUILE_SERIES" = "x18"; then
AC_PATH_PROG(GUILE18, guile-1.8)
if test "x$GUILE18" != x; then
GUILE="$GUILE18"
fi
fi
if test "$xGUILE_SERIES" = "x20"; then
AC_PATH_PROG(GUILE20, guile-2.0)
if test "x$GUILE20" != x; then
GUILE="$GUILE20"
fi
fi
if test "x$GUILE" = x; then
AC_PATH_PROG(GUILE, guile)
fi
fi
AC_MSG_CHECKING(for Guile header files)
if test "x$saved_GUILE_LIBS" != x; then
GUILE_LIBS="$saved_GUILE_LIBS"
fi
if test "x$saved_GUILE_CFLAGS" != x; then
GUILE_CFLAGS="$saved_GUILE_CFLAGS"
fi
dirs="$GUILEINCLUDE"
for i in $dirs ; do
if test -r $i/guile/gh.h; then
AC_MSG_RESULT($i)
GUILEINCLUDE="$ISYSTEM$i"
break
fi
done
if test -z "$GUILEINCLUDE"; then
AC_MSG_RESULT(not found)
fi
guilesafe_CFLAGS=$CFLAGS
guilesafe_LIBS=$LIBS
# Filter out "-ansi -pedantic" because Guile header files will not compile with these flags.
# (The flags -ansi -pedantic are automatically added by ac_compile_warnings.m4)
CFLAGS="`echo $CFLAGS | sed 's/-ansi//g;s/-pedantic//g;'` $GUILE_CFLAGS"
LIBS="$LIBS $GUILE_LIBS"
AC_MSG_CHECKING(for Guile library)
dirs="$GUILELIB"
for i in $dirs ; do
if test -r $i/libguile.so; then
AC_MSG_RESULT($i)
GUILELIB="$i"
break
fi
done
if test -z "$GUILELIB"; then
AC_MSG_RESULT(not found)
fi
if test -z "$GUILELINK"; then
GUILELINK="-L$GUILELIB -lguile"
fi
guilesafe_CFLAGS=$CFLAGS
guilesafe_LIBS=$LIBS
# Filter out "-ansi -pedantic" because Guile header files will not compile with these flags.
# (The flags -ansi -pedantic are automatically added by ac_compile_warnings.m4)
CFLAGS="`echo $CFLAGS | sed 's/-ansi//g;s/-pedantic//g;'` $GUILEINCLUDE"
LIBS="$LIBS $GUILELINK"
AC_MSG_CHECKING(whether Guile's gh_ API works)
AC_LINK_IFELSE([AC_LANG_SOURCE([#include <guile/gh.h>
int main() { SCM s; return gh_scm2int(s); }])], GUILE_GH_INTERFACE=1, )
if test -n "$GUILE_GH_INTERFACE" ; then
AC_MSG_CHECKING(whether Guile's gh_ API works)
AC_LINK_IFELSE([AC_LANG_SOURCE([#include <guile/gh.h>
int main() { SCM s; return gh_scm2int(s); }])], GUILE_GH_INTERFACE=1, )
if test -n "$GUILE_GH_INTERFACE" ; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING(whether Guile's SCM_ API works)
AC_LINK_IFELSE([AC_LANG_SOURCE([#include <libguile.h>
int main() { SCM s; scm_slot_exists_p(SCM_BOOL_F, SCM_BOOL_F); return SCM_STRING_LENGTH(s); }])], GUILE_SCM_INTERFACE=1, )
if test -n "$GUILE_SCM_INTERFACE" ; then
else
AC_MSG_RESULT(no)
fi
AC_MSG_CHECKING(whether Guile's SCM_ API works)
AC_LINK_IFELSE([AC_LANG_SOURCE([#include <libguile.h>
int main() { SCM s; scm_slot_exists_p(SCM_BOOL_F, SCM_BOOL_F); return SCM_STRING_LENGTH(s); }])], GUILE_SCM_INTERFACE=1, )
if test -n "$GUILE_SCM_INTERFACE" ; then
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
CFLAGS=$guilesafe_CFLAGS
LIBS=$guilesafe_LIBS
else
AC_MSG_RESULT(no)
fi
CFLAGS=$guilesafe_CFLAGS
LIBS=$guilesafe_LIBS
fi
fi
fi
AC_SUBST(GUILE)
AC_SUBST(GUILEINCLUDE)
AC_SUBST(GUILELIB)
AC_SUBST(GUILELINK)
AC_SUBST(GUILE_CFLAGS)
AC_SUBST(GUILE_LIBS)
AC_SUBST(GUILE_GH_INTERFACE)
AC_SUBST(GUILE_SCM_INTERFACE)
@ -2268,13 +2266,13 @@ AC_SUBST(SKIP_JAVA)
SKIP_GUILE=
if test -z "$GUILEINCLUDE" || test -z "$GUILELIB" || test -z "$GUILE_SCM_INTERFACE"; then
if test -z "$GUILE_CFLAGS" || test -z "$GUILE_LIBS" || test -z "$GUILE_SCM_INTERFACE"; then
SKIP_GUILE="1"
fi
AC_SUBST(SKIP_GUILE)
SKIP_GUILEGH=
if test -z "$GUILEINCLUDE" || test -z "$GUILELIB" || test -z "$GUILE_GH_INTERFACE"; then
if test -z "$GUILE_CFLAGS" || test -z "$GUILE_LIBS" || test -z "$GUILE_GH_INTERFACE"; then
SKIP_GUILEGH="1"
fi
AC_SUBST(SKIP_GUILEGH)