mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@1800 57a11ea4-9604-0410-9ed3-97b8803252fd
445 lines
15 KiB
Bash
445 lines
15 KiB
Bash
# -*-shell-script-*-
|
|
# FILE:
|
|
# configure.in
|
|
#
|
|
# FUNCTION:
|
|
# implements checks vfor a variety of system-specific functions
|
|
#
|
|
# Contents:
|
|
# Headers - Autoconf header stuff
|
|
# Variables - Hardcoded variables
|
|
# Programs - Check for programs binaries
|
|
# Functions - Check for functions
|
|
# With - Check for --with/without options
|
|
# Enable - Check for --enable/disable options
|
|
# Libraries - Check for libraries
|
|
# Footer - Autoconf footer stuff
|
|
|
|
|
|
### --------------------------------------------------------------------------
|
|
### Headers
|
|
### check for various programs, and stuff (do this first because later
|
|
### commands depend on them):
|
|
|
|
AC_INIT(src/guile/gnucash.h.in)
|
|
AC_PROG_INSTALL
|
|
AC_PROG_RANLIB
|
|
|
|
### AC_PROG_CC sets CFLAGS if it's not already set.
|
|
AC_PROG_CC
|
|
|
|
AC_ISC_POSIX
|
|
AC_C_BIGENDIAN
|
|
AC_PROG_MAKE_SET
|
|
|
|
AC_CHECK_FUNCS(stpcpy)
|
|
|
|
### --------------------------------------------------------------------------
|
|
### Variables
|
|
### Set up all the initial variable values...
|
|
|
|
|
|
|
|
|
|
# USE_QUICKFILL:
|
|
AC_DEFINE(USE_QUICKFILL,1)
|
|
|
|
# Should we uses color (red/black) balances?
|
|
AC_ARG_ENABLE( color,
|
|
[ --disable-color don't use color (red/black) balances],
|
|
AC_DEFINE(USE_NO_COLOR,1),
|
|
AC_DEFINE(USE_NO_COLOR,0) )
|
|
|
|
AC_ARG_WITH( opt-style-install,
|
|
[ --with-opt-style-install install everything in subdirs of --prefix],
|
|
OPT_STYLE_INSTALL=1,
|
|
OPT_STYLE_INSTALL=0)
|
|
AC_SUBST(OPT_STYLE_INSTALL)
|
|
|
|
AC_ARG_ENABLE( debug,
|
|
[ --enable-debug compile with debugging flags set],
|
|
CFLAGS="${CFLAGS} -g -Wall"
|
|
LDFLAGS="${LDFLAGS} -g -Wall"
|
|
AC_DEFINE(DEBUG_MEMORY,1) AC_DEFINE(USE_DEBUG,1),
|
|
AC_DEFINE(DEBUG_MEMORY,0) AC_DEFINE(USE_DEBUG,0) )
|
|
|
|
AC_ARG_ENABLE( warnings,
|
|
[ --enable-warnings compile with lots of warnings generated],
|
|
CFLAGS="${CFLAGS} -g -Wall -ansi -pedantic -Wwrite-strings -Wid-clash-31 -Wpointer-arith -Wcast-qual -Wcast-align -Wtraditional -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wshadow -Woverloaded-virtual -Winline -felide-constructors -fnonnull-objects"
|
|
LDFLAGS="${LDFLAGS} -g -Wall"
|
|
AC_DEFINE(DEBUG_MEMORY,1) AC_DEFINE(USE_DEBUG,1) )
|
|
|
|
### --------------------------------------------------------------------------
|
|
### Programs
|
|
|
|
# Check for perl, force version 5
|
|
# AC_CHECK_PROGS(PERL,perl5 perl) # Sets @PERL@
|
|
AC_PATH_PROG(PERL, perl)
|
|
AC_ARG_WITH(perl,
|
|
[ --with-perl=FILE which perl executable to use ],
|
|
PERL="${with_perl}")
|
|
|
|
# Make sure Perl was found
|
|
if test x"$PERL" = x; then
|
|
AC_MSG_ERROR([Cannot find Perl. Try using the --with-perl flag.])
|
|
fi
|
|
|
|
# Make sure it's version 5 or later
|
|
if "$PERL" -e 'exit 1 if $] < 5.0'; then
|
|
:
|
|
else
|
|
AC_MSG_ERROR([Found ${PERL} reports version ]
|
|
[`${PERL} -e 'print $]'`, need version 5.*])
|
|
fi
|
|
AC_SUBST(PERL)
|
|
|
|
# Now check for perl headers
|
|
# This appears to be what Perl's ExtUtils::MakeMaker module does, so
|
|
# I'm reasonably sure it's correct.
|
|
# PERLINCL="/usr/lib/perl5/i386-linux/5.00404"
|
|
#
|
|
PERLINCL=`perl -MConfig -e 'print $Config{"archlibexp"}'`
|
|
AC_ARG_WITH( perl-includes,
|
|
[ --with-perl-includes=DIR specify where to look for perl includes],
|
|
PERLINCL="$with_perl_includes" )
|
|
|
|
if test ! -d ${PERLINCL}/CORE; then
|
|
AC_MSG_ERROR([Missing directory ${PERLINCL}/CORE in the perl include directory])
|
|
fi
|
|
AC_SUBST(PERLINCL)
|
|
|
|
# Check for 'swig'
|
|
AC_PATH_PROG(SWIG,swig,no) # Sets @SWIG@
|
|
AC_ARG_WITH(swig,
|
|
[ --with-swig=FILE which swig executable to use ],
|
|
SWIG="${with_swig}")
|
|
|
|
if test x"$SWIG" = xno; then
|
|
AC_MSG_ERROR([Cannot find Swig. Try using the --with-swig flag.])
|
|
fi
|
|
|
|
# Let the user specify gnome paths:
|
|
GNOME_CONFIG_BIN="gnome-config"
|
|
AC_ARG_WITH( gnome-config,
|
|
[ --with-gnome-config=executable which gnome-config to use to find gnome ],
|
|
GNOME_CONFIG_BIN="$with_gnome_config")
|
|
|
|
# If the user hasn't specified the binary, then try to find it.
|
|
if test x"${GNOME_CONFIG_BIN}" = x
|
|
then
|
|
AC_PATH_PROG(GNOME_CONFIG_BIN, gnome-config, GNOME_CONFIG_NOT_FOUND)
|
|
fi
|
|
AC_SUBST(GNOME_CONFIG_BIN)
|
|
|
|
### --------------------------------------------------------------------------
|
|
### Libraries
|
|
LIBS="$LIBS -lm"
|
|
|
|
# We're going to set up our own X configure variables. These are only
|
|
# used in side configure. At the end, we use them to set X_LIBS.
|
|
# This allows us to be careful about libarary ordering, in case that's
|
|
# important.
|
|
|
|
AC_PATH_X
|
|
AC_PATH_XTRA
|
|
|
|
# This is how to use the variables set by AC_PATH_XTRA:
|
|
# cc @X_CFLAGS@ -c -o foo.o foo.c
|
|
# cc @X_LIBS@ (-lfoo...) @X_PRE_LIBS@ -lX11 @X_EXTRA_LIBS@
|
|
# (But see also the test for Motif libraries, below.)
|
|
# (Perhaps X_LIBS should have been called X_LDFLAGS.)
|
|
|
|
# XXX - Not all programs need all of these, surely.
|
|
X_LIBS="$X_LIBS -lXext -lXmu -lXt -lX11"
|
|
# XXX - Ask Motif what it wants
|
|
MOTIF_LIBS="-lXm"
|
|
|
|
### --------------------------------------------------------------------------
|
|
### Motif libs -- these are needed for the motif builds only
|
|
# Let the user specify motif paths:
|
|
AC_ARG_WITH( motif,
|
|
[ --with-motif=PATH specify where to look for motif includes and libs],
|
|
X_LIBS="${X_LIBS} -L$with_motif/lib" X_CFLAGS="$X_CFLAGS -I$with_motif/include" )
|
|
|
|
AC_ARG_WITH( motif-includes,
|
|
[ --with-motif-includes=DIR specify where to look for motif includes],
|
|
X_CFLAGS="${X_CFLAGS} -I$with_motif_includes" )
|
|
|
|
AC_ARG_WITH( motif-libraries,
|
|
[ --with-motif-libraries=DIR specify where to look for motif libs],
|
|
X_LIBS="${X_LIBS} -L$with_motif_libraries" )
|
|
|
|
### --------------------------------------------------------------------------
|
|
### Gnome libs -- these are needed for the gnome builds only
|
|
# Let the user specify gnome paths:
|
|
# -I...libgnomesupport is to fix bug in gnome-1.3 release
|
|
#
|
|
# I believe all the gnome configuration can and should be superceded by
|
|
# --with-gnome-config.
|
|
|
|
AC_ARG_WITH( gnome,
|
|
[ --with-gnome=PATH specify where to look for gnome includes and libs],
|
|
X_LIBS="${X_LIBS} -L$with_gnome/lib" X_CFLAGS="$X_CFLAGS -I$with_gnome/include -I$with_gnome/lib/gnome-libs/include" )
|
|
|
|
AC_ARG_WITH( gnome-includes,
|
|
[ --with-gnome-includes=DIR specify where to look for gnome includes],
|
|
X_CFLAGS="${X_CFLAGS} -I$with_gnome_includes -I$with_gnome_includes/libgnomesupport" )
|
|
|
|
AC_ARG_WITH( gnome-libraries,
|
|
[ --with-gnome-libraries=DIR specify where to look for gnome libs],
|
|
X_LIBS="${X_LIBS} -L$with_gnome_libraries" )
|
|
|
|
|
|
# Let the user specify imlib paths:
|
|
AC_ARG_WITH( imlib,
|
|
[ --with-imlib=PATH specify where to look for imlib includes and libs],
|
|
X_LIBS="${X_LIBS} -L$with_imlib/lib" X_CFLAGS="$X_CFLAGS -I$with_imlib/include" )
|
|
|
|
### --------------------------------------------------------------------------
|
|
# The XmHTML widget is used by motif and gnome alike.
|
|
|
|
AC_ARG_WITH( xmhtml-includes,
|
|
[ --with-xmhtml-includes=DIR specify where to look for xmhtml headers],
|
|
X_CFLAGS="-I$with_xmhtml_includes ${X_CFLAGS}" )
|
|
|
|
AC_ARG_WITH( xmhtml-libraries,
|
|
[ --with-xmhtml-libraries=DIR specify where to look for xmhtml libs],
|
|
X_LIBS="-L$with_xmhtml_libraries ${X_LIBS}" )
|
|
|
|
# the XmHTML widget needs libz, libjpeg, libpng and libm
|
|
# it also uses #ifdef's not #if's so DONT #def to zero.
|
|
AC_CHECK_LIB(z, deflateEnd,
|
|
AC_DEFINE(HAVE_ZLIB,1) LIBS="-lz $LIBS")
|
|
AC_CHECK_LIB(jpeg, jpeg_read_scanlines,
|
|
AC_DEFINE(HAVE_JPEG,1) LIBS="-ljpeg $LIBS")
|
|
AC_CHECK_LIB(png, png_read_image,
|
|
AC_DEFINE(HAVE_PNG,1) LIBS="-lpng $LIBS")
|
|
|
|
# This should be done in the OTHER_LIBRARIES argument to AC_CHECK_LIB
|
|
# if it's actually needed and Makefile.in's should be using
|
|
# X_PRE_LIBS, X_LIBS, and X_EXTRA_LIBS, rather than relying on LIBS.
|
|
# LIBS="-lXmu -lXt -lXext $X_PRE_LIBS -lX11 $X_LIBS $X_EXTRA_LIBS $LIBS"
|
|
|
|
AC_CHECK_LIB(Xpm, XpmReadFileToXpmImage,
|
|
AC_DEFINE(HAVE_XPM,1) X_LIBS="-lXpm $X_LIBS",
|
|
AC_DEFINE(HAVE_XPM,0), -L$x_libraries -lX11)
|
|
|
|
# Don't build the xmhtml source if user already has it installed...
|
|
# this is ugly, there must be a nicer way of setting this up ...
|
|
AC_CHECK_LIB(XmHTML, XmHTMLTextScrollToLine,
|
|
MOTIF_LIBS="-lXmHTML $MOTIF_LIBS",
|
|
,
|
|
$X_PRE_LIBS $MOTIF_LIBS $X_EXTRA_LIBS $X_LIBS)
|
|
|
|
AC_SUBST(XMHTML_TARGET)
|
|
AC_SUBST(XMHTML_INC)
|
|
|
|
### --------------------------------------------------------------------------
|
|
## Nana
|
|
# XXX - There should probably be a --without-nana option (e.g., for
|
|
# someone who happens to have it installed on his local machine, but
|
|
# is building GnuCash for people who might not have it).
|
|
|
|
# See if the <nana.h> header file can be found.
|
|
AC_CHECK_HEADERS(nana.h)
|
|
AC_CHECK_LIB(nana, L_buffer_create)
|
|
|
|
### --------------------------------------------------------------------------
|
|
# If readline exists, just assume that guile needs it. It probably does.
|
|
AC_CHECK_LIB(readline, readline)
|
|
|
|
|
|
### --------------------------------------------------------------------------
|
|
### Guile (libraries and executable)
|
|
|
|
# Don't disable this. It's the only reliable way to detect guile's
|
|
# settings on current guile installs. If it doesn't work for you, then
|
|
# don't specify --with-guile-config. (RLB)
|
|
|
|
# In the long run, --with-guile should go away in favor of
|
|
# --with-guile-config. It might make sense to do this now. If you have
|
|
# guile 1.3 installed, but don't have guile-config, your install is
|
|
# most likely broken anyway, and should be fixed. (RLB)
|
|
|
|
# Let the user override the guile-config executable.
|
|
AC_ARG_WITH( guile-config,
|
|
[ --with-guile-config=executable which guile-config to use to find guile ],
|
|
AC_MSG_CHECKING([for guile-config])
|
|
AC_MSG_RESULT([${with_guile_config}])
|
|
GUILE_CONFIG="$with_guile_config"
|
|
LIBS="`${GUILE_CONFIG} link` ${LIBS}"
|
|
CFLAGS="$CFLAGS `${GUILE_CONFIG} compile`")
|
|
|
|
if test x"$GUILE_CONFIG" = x; then
|
|
# Try to find a default guile-config
|
|
AC_PATH_PROG(GUILE_CONFIG,guile-config)
|
|
fi
|
|
|
|
# Still allow the old method (for now).
|
|
AC_ARG_WITH( guile,
|
|
[ --with-guile=PATH specify where to look for guile includes and libs],
|
|
LIBS="-L$with_guile/lib ${LIBS}" CFLAGS="$CFLAGS -I$with_guile/include")
|
|
|
|
# You can't have both...
|
|
if test x"$GUILE_CONFIG" != x && test x"$with_guile" != x ; then
|
|
AC_MSG_ERROR([${GUILE_CONFIG} ================ ${with_guile}])
|
|
AC_MSG_ERROR([You cannot specify both --with-guile and --with-guile-config])
|
|
fi
|
|
|
|
if test x"$GUILE_CONFIG" = x; then
|
|
# If we didn't get GUILE_CONFIG, then do things the old, dumb way.
|
|
|
|
# Have to use AC_TRY_LINK here because AC_CHECK_LIB caches the
|
|
# results, so one failure makes all further attempts fail.
|
|
|
|
GNC_LIBS_SAFE=${LIBS}
|
|
AC_CACHE_CHECK([for guile], ac_cv_lib_guile,
|
|
for GNC_TEST_LIBS in "-lguile" "-lguile -ldl" "-lguile -lqthreads" \
|
|
"-lguile -ltermcap" "-lguile -lqthreads -ltermcap" \
|
|
"-lguile -lreadline -lncurses"; do
|
|
if test x"${GUILELIBS}" != x; then
|
|
ac_cv_lib_guile=${GUILELIBS}
|
|
break
|
|
else
|
|
LIBS="${GNC_TEST_LIBS} ${GNC_LIBS_SAFE}"
|
|
AC_TRY_LINK([#include<guile/gh.h>], [gh_eval_file;],
|
|
GUILELIBS="${GNC_TEST_LIBS}")
|
|
fi
|
|
done)
|
|
|
|
GUILELIBS=${ac_cv_lib_guile}
|
|
else
|
|
# We did find a suitable guile-config. Use that.
|
|
# and use any guile binary in that same directory.
|
|
GUILE_INC=`${GUILE_CONFIG} compile`
|
|
GUILELIBS=`${GUILE_CONFIG} link`
|
|
fi
|
|
|
|
# Find the appropriate guile binary.
|
|
if test x"$GUILE_CONFIG" != x; then
|
|
AC_PATH_PROG(GUILE_BIN, guile,,`dirname ${GUILE_CONFIG}`)
|
|
fi
|
|
|
|
# If that didn't work, try the --with-guile directory, if any.
|
|
if test x"$GUILE_BIN" = x && test x"$with_guile" != x; then
|
|
AC_PATH_PROG(GUILE_BIN, guile,,`${with_guile}/bin`)
|
|
fi
|
|
|
|
# Final stab at locating a guile binary.
|
|
if test x"${GUILE_BIN}" = x; then
|
|
AC_PATH_PROG(GUILE_BIN,guile)
|
|
fi
|
|
|
|
if test x"${GUILELIBS}" = x || test x"${GUILE_BIN}" = x; then
|
|
AC_MSG_ERROR([Cannot configure guile bits. Do you have guile 1.3 installed?])
|
|
fi
|
|
|
|
# Get just the directory for the guile binary.
|
|
GUILE_BIN=`dirname ${GUILE_BIN}`
|
|
|
|
AC_SUBST(GUILE_CONFIG)
|
|
AC_SUBST(GUILE_BIN)
|
|
AC_SUBST(GUILE_INC)
|
|
AC_SUBST(GUILELIBS)
|
|
|
|
### --------------------------------------------------------------------------
|
|
### Plotutils
|
|
|
|
#AC_CHECK_LIB(plot, pl_openpl,
|
|
# AC_DEFINE(HAVE_PLOTUTILS,1)
|
|
# HAVE_PLOTUTILS=1
|
|
# AC_DEFINE(PLOTUTILS_LIBS,"-lXaw -lXt -lplot"),
|
|
# ,
|
|
# $X_PRE_LIBS $MOTIF_LIBS $X_EXTRA_LIBS -lXaw $X_LIBS)
|
|
|
|
# We need this in at least one of the Makefile.in's
|
|
#AC_SUBST(HAVE_PLOTUTILS)
|
|
#AC_SUBST(PLOTUTILS_LIBS)
|
|
|
|
AC_SUBST(MOTIF_LIBS)
|
|
|
|
### --------------------------------------------------------------------------
|
|
#############################################################
|
|
### Set up the install style and all the default paths... ###
|
|
|
|
# some confusion due to FSSTND stuff --
|
|
# the readme's and miscellaneous docs are in /usr/doc (or equivalent)
|
|
# the online help system is in /usr/share/gnucash/Doc and various subdirs
|
|
# the parsed-html report supsystem is in /usr/share/gnucash/Reports
|
|
|
|
if test ${OPT_STYLE_INSTALL} = 1
|
|
then
|
|
GNC_DOCDIR='${prefix}/doc'
|
|
GNC_BINDIR='${prefix}/bin'
|
|
GNC_LIBDIR='${prefix}/lib'
|
|
GNC_CONFIGDIR=${sysconfdir}
|
|
GNC_SHAREDIR=${datadir}
|
|
else
|
|
GNC_DOCDIR='${prefix}/doc/gnucash'
|
|
GNC_BINDIR='${prefix}/bin'
|
|
GNC_LIBDIR='${prefix}/lib/gnucash'
|
|
GNC_CONFIGDIR=${sysconfdir}/gnucash
|
|
GNC_SHAREDIR=${datadir}/gnucash
|
|
fi
|
|
|
|
AC_SUBST(GNC_DOCDIR)
|
|
AC_SUBST(GNC_BINDIR)
|
|
AC_SUBST(GNC_LIBDIR)
|
|
AC_SUBST(GNC_CONFIGDIR)
|
|
AC_SUBST(GNC_SHAREDIR)
|
|
|
|
# We have to handle these here because they are the *runtime* (not install
|
|
# time) defaults, and they're substituted into bootstrap.scm and gnucash.h
|
|
# directly, so:
|
|
# 1) We don't want them to change if you do
|
|
# make prefix=foo install
|
|
# 2) They are normally defined in terms of $prefix so we need to expand
|
|
# that before substituting into those source files. I wish I knew how
|
|
# to force a recursive expansion...
|
|
|
|
GNC_RUNTIME_SHAREDIR=`eval echo ${GNC_SHAREDIR}`
|
|
GNC_RUNTIME_CONFIGDIR=`eval echo ${GNC_CONFIGDIR}`
|
|
|
|
AC_SUBST(GNC_RUNTIME_SHAREDIR)
|
|
AC_SUBST(GNC_RUNTIME_CONFIGDIR)
|
|
|
|
# UGLY HACK
|
|
|
|
GTKSHEET_DIR="gtksheet"
|
|
AC_SUBST(GTKSHEET_DIR)
|
|
|
|
CFLAGS="${CFLAGS} -Werror -Wno-unused"
|
|
|
|
ABSOLUTE_TOP_SRCDIR=`pwd`
|
|
AC_SUBST(ABSOLUTE_TOP_SRCDIR)
|
|
|
|
AC_CONFIG_HEADER(config.h)
|
|
|
|
AC_OUTPUT(Makefile
|
|
Makefile.init
|
|
src/Makefile
|
|
src/engine/Makefile
|
|
src/guile/Makefile
|
|
src/scm/Makefile
|
|
src/g-wrap/Makefile
|
|
src/gnome/Makefile
|
|
src/motif/Makefile
|
|
src/qt/Makefile
|
|
src/register/Makefile
|
|
src/reports/Makefile
|
|
src/swig/Makefile
|
|
src/swig/perl5/Makefile
|
|
lib/Makefile
|
|
lib/${GTKSHEET_DIR}/Makefile
|
|
lib/Xbae-4.6.2-linas/Makefile
|
|
lib/Xbae-4.6.2-linas/src/Makefile
|
|
lib/ComboBox-1.33/Makefile
|
|
lib/gtkfilesel2/Makefile
|
|
lib/gtkfilesel2/config.h)
|
|
|
|
chmod +x gnucash
|
|
|
|
make -f Makefile.config.finish prefix=${prefix} \
|
|
GNC_SHAREDIR=${GNC_SHAREDIR} \
|
|
GNC_CONFIGDIR=${GNC_SHAREDIR}
|