actual/packages/node-libofx/libofx/configure.ac
2022-04-28 22:44:38 -04:00

415 lines
13 KiB
Text

## -*-m4-*-
dnl Process this file with autoconf to produce a configure script.
# FILE:
# configure.in
#
# FUNCTION:
# implements checks for a variety of system-specific functions
AC_INIT(inc/libofx.h.in)
AM_CONFIG_HEADER(config.h)
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_MACRO_DIR(m4)
AC_PROG_CC
AC_PROG_CXX
m4_include([libcurl.m4])
LIBOFX_MAJOR_VERSION=0
LIBOFX_MINOR_VERSION=9
LIBOFX_MICRO_VERSION=13
# this number is just incremented for every major change in CVS, also across
# releases to emulate the Revision variable of SVN (which isn't available
# with CVS)
LIBOFX_BUILD_VERSION=0
LIBOFX_TAG_VERSION="stable"
case "$LIBOFX_TAG_VERSION" in
cvs|svn|git)
LIBOFX_VERSION_RELEASE_STRING="$LIBOFX_MAJOR_VERSION.$LIBOFX_MINOR_VERSION.$LIBOFX_MICRO_VERSION.$LIBOFX_TAG_VERSION${LIBOFX_BUILD_VERSION}"
;;
stable)
LIBOFX_VERSION_RELEASE_STRING="$LIBOFX_MAJOR_VERSION.$LIBOFX_MINOR_VERSION.$LIBOFX_MICRO_VERSION"
;;
*)
LIBOFX_VERSION_RELEASE_STRING="$LIBOFX_MAJOR_VERSION.$LIBOFX_MINOR_VERSION.$LIBOFX_MICRO_VERSION"
# add TAG
LIBOFX_VERSION_RELEASE_STRING="${LIBOFX_VERSION_RELEASE_STRING}${GWENHYWFAR_VERSION_TAG}"
;;
esac
### Check for GCC symbol visibility extensions
AC_CACHE_CHECK([for symbol visibility extensions],
ac_cv_sym_visibility, [
echo '#pragma GCC visibility push(default)' > conftest.c
echo 'int foo (void) { return 1; }' >> conftest.c
echo '#pragma GCC visibility pop' >> conftest.c
echo 'int bar (void) { return 1; }' >> conftest.c
ac_cv_sym_visibility=no
if AC_TRY_COMMAND(${CXX-cxx} -fvisibility-inlines-hidden -fvisibility=hidden -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD);
then
if grep '\.hidden.*bar' conftest.s > /dev/null && grep -v '\.hidden.*foo' conftest.s >/dev/null;
then
ac_cv_sym_visibility=yes
fi
fi
rm -f conftest.*
])
if test $ac_cv_sym_visibility = yes;
then
AC_DEFINE(HAVE_GCC_VISIBILITY_EXTS, 1,
[Define if GCC visibility extensions are supported])
VISIBILITY_FLAGS="-fvisibility=hidden"
CFLAGS="$VISIBILITY_FLAGS $CFLAGS"
CXXFLAGS="$VISIBILITY_FLAGS -fvisibility-inlines-hidden $CFLAGS"
fi
## Pass -DIN_LIBOFX to the compiler so we can detect it and include config.h
## in libofx.h safely
CFLAGS="-DIN_LIBOFX $CFLAGS"
CXXFLAGS="-DIN_LIBOFX $CXXFLAGS"
LIBOFX_VERSION=$LIBOFX_MAJOR_VERSION.$LIBOFX_MINOR_VERSION.$LIBOFX_MICRO_VERSION
AC_SUBST(LIBOFX_MAJOR_VERSION)
AC_SUBST(LIBOFX_MINOR_VERSION)
AC_SUBST(LIBOFX_MICRO_VERSION)
AC_SUBST(LIBOFX_BUILD_VERSION)
AC_SUBST(LIBOFX_VERSION_RELEASE_STRING)
AC_SUBST(LIBOFX_VERSION)
AM_INIT_AUTOMAKE(libofx,$LIBOFX_VERSION_RELEASE_STRING)
LIBOFX_SO_CURRENT=7
LIBOFX_SO_REVISION=2
LIBOFX_SO_AGE=0
LIBOFX_SO_EFFECTIVE="`echo \$(($LIBOFX_SO_CURRENT-$LIBOFX_SO_AGE))`"
AC_SUBST(LIBOFX_SO_CURRENT)
AC_SUBST(LIBOFX_SO_REVISION)
AC_SUBST(LIBOFX_SO_AGE)
#AM_MAINTAINER_MODE
AC_PROG_INSTALL
AC_PROG_LIBTOOL
AC_LIBTOOL_DLOPEN
AC_LIBTOOL_WIN32_DLL
AC_LIBTOOL_RC
AC_ISC_POSIX
AC_C_BIGENDIAN
AC_PROG_MAKE_SET
AC_HEADER_STDC
AC_ARG_WITH(opensp-includes,
[ --with-opensp-includes=PATH specify where to look for OpenSP includes
- default is /usr/include/OpenSP)],
OPENSPINCLUDES="$with_opensp_includes",
OPENSPINCLUDES="" )
AC_ARG_WITH(opensp-libs,
[ --with-opensp-libs=PATH specify where to look for libosp
- default is /usr/lib],
OPENSPLIBPATH="$with_opensp_libs",
OPENSPLIBPATH="/usr/lib")
echo $OPENSPLIBPATH
for d in /usr/include/OpenSP /usr/local/include/OpenSP /usr/include/sp/generic /usr/local/include/sp/generic; do
if test "x$OPENSPINCLUDES" = x; then
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I$d"
AC_MSG_CHECKING(for ParserEventGenerator.h in $d)
AC_TRY_CPP([#include <ParserEventGeneratorKit.h>],
[ AC_MSG_RESULT(yes); OPENSPINCLUDES=$d ], [ AC_MSG_RESULT(no) ])
CPPFLAGS="$save_CPPFLAGS"
fi
done
##Detect if OpenSP was compiled with SP_MULTI_BYTE, and put the result in config.h
##
#if 0
##This test works for me, but breaks for most distro because the config.h installed isn't really the one that was used to compile OpenSP
## So --with-opensp-multibyte is now the default.
AC_DEFUN([CHECK_SP_MULTI_BYTE],
[
AC_CACHE_VAL(ox_sp_multibyte,
[
for d in $OPENSPINCLUDES/config.h $OPENSPINCLUDES/../config.h $OPENSPINCLUDES/../include/config.h ; do
if test "x$OPENSPCONFIG_H" = x; then
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -DOPENSPCONFIG_H=\"$d\""
AC_MSG_CHECKING(for OpenSP's config.h in $d)
AC_TRY_CPP([#include OPENSPCONFIG_H],
[ AC_MSG_RESULT(yes); OPENSPCONFIG_H=$d ], [ AC_MSG_RESULT(no) ])
CPPFLAGS="$save_CPPFLAGS"
fi
done
if test "x$OPENSPCONFIG_H" = x; then
AC_MSG_ERROR([OpenSP's config.h not found])
fi
AC_MSG_CHECKING(for if OpenSP's was compiled with SP_MULTI_BYTE)
ox_sp_multibyte=`sed 's/^#.*SP_MULTI_BYTE[ \t]*\([01]\)/\1/;t;d' < \
$OPENSPCONFIG_H`])
if test x"$ox_sp_multibyte" != x ;then
AC_DEFINE_UNQUOTED(SP_MULTI_BYTE, $ox_sp_multibyte, [SP_MULTI_BYTE value from when OpenSP was compiled])
AC_MSG_RESULT(yes)
else
AC_MSG_RESULT(no)
fi
])
#endif
AC_ARG_WITH(no-opensp-multibyte,
[ --with-no-opensp-multibyte Force libofx to compile with the assumption that OpenSP was NOT compiled with SP_MULTI_BYTE defined],
,
AC_DEFINE(SP_MULTI_BYTE, 1, [SP_MULTI_BYTE value from when OpenSP was compiled]) )
##if test x"$SP_MULTI_BYTE" == x ;then
##CHECK_SP_MULTI_BYTE
##fi
ac_save_CPPFLAGS="$CPPFLAGS"
if test "x$OPENSPINCLUDES" != x ; then
CPPFLAGS="-I$OPENSPINCLUDES $CPPFLAGS"
fi
AC_LANG_CPLUSPLUS
AC_CHECK_HEADERS([ParserEventGeneratorKit.h SGMLApplication.h EventGenerator.h],
[] ,
[ AC_MSG_ERROR([OpenSP includes not found]) ],
[] )
OPENSPLIBS="-L$OPENSPLIBPATH -losp"
ac_save_LIBS="$LIBS"
LIBS="$OPENSPLIBS $LIBS"
AC_MSG_CHECKING([for libosp])
##dnl This is code from the opensp documentation, I modified it a little
##dnl It is really just a link test rather than a run test, it does nothing
AC_LANG_CPLUSPLUS
AC_TRY_RUN([
#include "ParserEventGeneratorKit.h"
using namespace std;
class OutlineApplication : public SGMLApplication {
public:
OutlineApplication() { }
void startElement(const StartElementEvent &event) {
}
void endElement(const EndElementEvent &) { }
};
int main(int argc, char **argv)
{
ParserEventGeneratorKit parserKit;
EventGenerator *egp = parserKit.makeEventGenerator(argc - 1, argv + 1);
OutlineApplication app;
}
],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_ERROR([unable to link a test program, is OpenSP installed?])],
[AC_MSG_RESULT([unknown, assumed OK])])
CPPFLAGS="$ac_save_CPPFLAGS"
LIBS="$ac_save_LIBS"
# check for doxygen, mostly stolen from http://log4cpp.sourceforge.net/
# ----------------------------------------------------------------------------
AC_DEFUN([BB_ENABLE_DOXYGEN],
[
AC_ARG_ENABLE(doxygen, [ --enable-doxygen enable documentation generation with doxygen (auto)])
AC_ARG_ENABLE(dot, [ --enable-dot use 'dot' to generate graphs in doxygen (auto)])
AC_ARG_ENABLE(html-docs, [ --enable-html-docs enable HTML generation with doxygen (yes)], [], [ enable_html_docs=yes])
AC_ARG_ENABLE(latex-docs, [ --enable-latex-docs enable LaTeX documentation generation with doxygen (no)], [], [ enable_latex_docs=no])
if test "x$enable_doxygen" = xno; then
enable_doc=no
else
AC_PATH_PROG(DOXYGEN, doxygen, , $PATH)
if test x$DOXYGEN = x; then
if test "x$enable_doxygen" = xyes; then
AC_MSG_ERROR([could not find doxygen])
fi
enable_doc=no
else
enable_doc=yes
AC_PATH_PROG(DOT, dot, , $PATH)
fi
fi
AM_CONDITIONAL(DOC, test x$enable_doc = xyes)
if test x$DOT = x; then
if test "x$enable_dot" = xyes; then
AC_MSG_ERROR([could not find dot])
fi
enable_dot=no
else
enable_dot=yes
fi
AM_CONDITIONAL(ENABLE_DOXYGEN, test x$enable_doc = xtrue)
AC_SUBST(enable_dot)
AC_SUBST(enable_html_docs)
AC_SUBST(enable_latex_docs)
])
# check for doxygen
# ----------------------------------------------------------------------------
BB_ENABLE_DOXYGEN
# Check if getopt_long is available
# ----------------------------------------------------------------------------
dnl Available from the GNU Autoconf Macro Archive at:
dnl http://www.gnu.org/software/ac-archive/htmldoc/adl_func_getopt_long.html
dnl
AC_DEFUN([adl_FUNC_GETOPT_LONG],
[AC_PREREQ(2.49)dnl
# clean out junk possibly left behind by a previous configuration
rm -f lib/getopt.h
# Check for getopt_long support
AC_CHECK_HEADERS([getopt.h])
AC_CHECK_FUNCS([getopt_long],,
[# FreeBSD has a gnugetopt library for this
AC_CHECK_LIB([gnugetopt],[getopt_long],[AC_DEFINE([HAVE_GETOPT_LONG])],
[# use the GNU replacement
AC_LIBOBJ(getopt)
AC_LIBOBJ(getopt1)
AC_CONFIG_LINKS([lib/getopt.h:lib/gnugetopt.h])])])])
dnl check for getopt in standard library
adl_FUNC_GETOPT_LONG
AM_CONDITIONAL(NO_GETOPTLONG, test "$ac_cv_func_getopt_long" = no )
# gengetopt command line parser generation
AC_ARG_ENABLE(gengetopt,
AS_HELP_STRING(--disable-gengetopt,Disable rebuilding of command line parser with gengetopt),
[case "${enableval}" in
yes) gengetopt=yes ;;
no) gengetopt=no ;;
*) AC_MSG_ERROR([bad value ${enableval} for --disable-gengetopt]) ;;
esac],[gengetopt=yes])
if test x$gengetopt = xyes ; then
AC_CHECK_PROG(have_gengetopt, gengetopt, yes, no)
if test x$have_gengetopt = xno; then
if test -f "${srcdir}/ofxdump/cmdline.c"; then
AC_MSG_WARN([*** Not rebuilding command line parser as gengetopt is not found ***])
else
AC_MSG_ERROR([*** Gengetopt is not found, and generated files (cmdline.c) are missing (probably because you checked out from git). You need to install gengetopt ***])
fi
gengetopt=no
fi
fi
AM_CONDITIONAL(USE_GENGETOPT, test "x$gengetopt" = xyes)
AC_PATH_PROG([HELP2MAN], [help2man], [no])
AM_CONDITIONAL(HAVE_HELP2MAN, test "x$HELP2MAN" != "xno")
# check for curl
# ----------------------------------------------------------------------------
LIBCURL_CHECK_CONFIG([yes],[7.9.7], [libcurl_available=yes], [libcurl_available=no])
if test "$libcurl_available" = no; then
AC_MSG_WARN([libcurl is not available. ofxconnect (Direct connect samples) will NOT be built.])
fi
PKG_CHECK_MODULES(LIBXMLPP,libxml++-2.6 >= 2.6,
[
AC_DEFINE(HAVE_LIBXMLPP, 1, [Defined if libxml++ is available])
have_libxmlpp=yes],
[AC_MSG_WARN([libxml++ 2.6 is not available. ofxconnect (Direct connect samples) will NOT be built.])
have_libxmlpp=no])
#PKG_CHECK_MODULES(QT,qt-mt >= 3.2,
# [AC_DEFINE(HAVE_QT, 1, [Defined if Qt Gui is available])],
# [AC_MSG_WARN([Qt is not available. Some experimental direct connect samples will not be fully functional.])])
build_ofxconnect=no
if test "$libcurl_available" = yes; then
if test "$have_libxmlpp" = yes; then
build_ofxconnect=yes
fi
fi
AM_CONDITIONAL([BUILD_OFXCONNECT], [test "$build_ofxconnect" = yes])
# check for iconv
# ----------------------------------------------------------------------------
AC_ARG_WITH(iconv,
[ --with-iconv[[=DIR]] add ICONV support (on)])
WITH_ICONV=0
if test "$with_iconv" = "no" ; then
echo Disabling ICONV support
else
if test "$with_iconv" != "yes" -a "$with_iconv" != "" ; then
CPPFLAGS="${CPPFLAGS} -I$with_iconv/include"
# Export this since our headers include iconv.h
XML_INCLUDEDIR="${XML_INCLUDEDIR} -I$with_iconv/include"
ICONV_LIBS="-L$with_iconv/lib"
fi
AC_CHECK_HEADER(iconv.h,
AC_MSG_CHECKING(for iconv)
AC_TRY_LINK([#include <stdlib.h>
#include <iconv.h>],[
iconv_t cd = iconv_open ("","");
iconv (cd, NULL, NULL, NULL, NULL);],[
AC_MSG_RESULT(yes)
WITH_ICONV=1],[
AC_MSG_RESULT(no)
AC_MSG_CHECKING(for iconv in -liconv)
_ldflags="${LDFLAGS}"
_libs="${LIBS}"
LDFLAGS="${LDFLAGS} ${ICONV_LIBS}"
LIBS="${LIBS} -liconv"
AC_TRY_LINK([#include <stdlib.h>
#include <iconv.h>],[
iconv_t cd = iconv_open ("","");
iconv (cd, NULL, NULL, NULL, NULL);],[
AC_MSG_RESULT(yes)
WITH_ICONV=1
ICONV_LIBS="${ICONV_LIBS} -liconv"
LIBS="${_libs}"
LDFLAGS="${_ldflags}"],[
AC_MSG_RESULT(no)
LIBS="${_libs}"
LDFLAGS="${_ldflags}"])]))
fi
AC_DEFINE_UNQUOTED(HAVE_ICONV, $WITH_ICONV, [Defined if libxml++ is available])
AC_SUBST(WITH_ICONV)
AC_SUBST(ICONV_LIBS)
AC_SUBST(ofxconnect)
AC_SUBST(OPENSPINCLUDES)
AC_SUBST(OPENSPLIBS)
AC_SUBST(LIBXMLPP_CFLAGS)
AC_SUBST(LIBXMLPP_LIBS)
AC_SUBST(QT_CFLAGS)
AC_SUBST(QT_CFLAGS)
LIBOFX_DTD_DIR='${datadir}/libofx/dtd'
AC_SUBST(LIBOFX_DTD_DIR)
AC_CONFIG_FILES([Makefile])
AC_OUTPUT(
libofx.spec
libofx.pc
libofx.lsm
m4/Makefile
lib/Makefile
inc/Makefile
inc/libofx.h
dtd/Makefile
doc/Makefile
ofx2qif/Makefile
ofxdump/Makefile
ofxconnect/Makefile
)