mirror of
https://github.com/Gnucash/gnucash.git
synced 2024-11-26 02:40:43 -06:00
1f4bc1bf10
Date: Sun, 22 Aug 1999 20:59:09 -0500 (CDT) From: Tim Mooney <mooney@dogbert.cc.ndsu.NoDak.edu> 1) adds top_srcdir to Makefile.init.in, since one of the Makefiles that includes it needs top_srcdir but it isn't set in that particular Makefile. This may not be the right call -- it should probably be substituted directly into the Makefile.ins that are missing it. 2) It removes instances where (gcc|egcs)-specific C flags are in configure.in or the Makefile.ins. As long as CFLAGS is substituted into the Makefiles by configure, there shouldn't be any need to augment CFLAGS. 3) It fixes a problem with finding libXpm and later libXmHTML on platforms where $x_libraries (after a call to AC_PATH_X and AC_PATH_XTRA) is empty (i.e. the libraries and header files are in standard places). Using X_PRE_LIBS may not be the right solution here either, so further work may be necessary on this. 4) It makes sure that any CPPFLAGS specified by the person running configure (e.g. -I/path/to/Xpm/headers -I/path/to/XmHTML/headers) is passed into the Motif Makefile.in, so header files are found. 5) It updates the top level Makefile.init.in so that @CXX@ is used in place of @C++@, since that's the common autoconf "variable" for it. I don't think C++ stuff is used anywhere here anyway so it's probably not needed, but I noticed it so I thought I would fix it. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@1915 57a11ea4-9604-0410-9ed3-97b8803252fd
451 lines
15 KiB
Bash
451 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_XTRA
|
|
if test x"$no_x" = xyes; then
|
|
AC_ERROR([Can not find X11 development headers or libraries.])
|
|
fi
|
|
|
|
|
|
# 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), $X_PRE_LIBS -lX11 $X_LIBS $X_EXTRA_LIBS)
|
|
|
|
# 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_HEADER(nana.h, ,
|
|
AC_MSG_ERROR([Can not find nana.h -- do you have nana installed?]))
|
|
AC_CHECK_LIB(nana, L_buffer_create, ,
|
|
AC_MSG_ERROR([Can not find a valid nana library -- do you have nana installed?]))
|
|
|
|
|
|
### --------------------------------------------------------------------------
|
|
# 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}
|