# -*-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 ### -------------------------------------------------------------------------- ### 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 header file can be found. AC_CHECK_HEADERS(nana.h) AC_CHECK_LIB(nana,L_buffer_create, LIBS="${LIBS} -lnana") ### -------------------------------------------------------------------------- # 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], [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}