dnl Check for required program and exit if non-existant.
dnl LK_AC_CHECK_REQ_PROG( VAR, PROG)
AC_DEFUN([LK_AC_CHECK_REQ_PROG],[
AC_ARG_VAR($1, [Full path to required program $2])
AC_PATH_PROG($1,$2,[])
if test "${$1}x" = "x" ; then
AC_MSG_ERROR( ["Required program $2 not found."])
fi
])
dnl Check for program and set variable if not available
dnl LK_AC_CHECK_OPT_PROG( VAR, PROG)
AC_DEFUN([LK_AC_CHECK_OPT_PROG],[
AC_ARG_VAR($1, [Full path to optional program $2])
AC_PATH_PROG($1,$2,[])
if test "${$1}x" = "x" ; then
AC_MSG_WARN( ["Program $2 not found. Some functionality is disabled."])
[HAVE_$1_FLAG=0]
else
[HAVE_$1_FLAG=1]
fi
AC_SUBST([HAVE_$1_FLAG])
AM_CONDITIONAL([HAVE_$1], test "${$1}x" != "x")
])
dnl Check for latex and supporting programs to be used with latex.mk
dnl LK_AC_CHECK_LATEX_DOCU
AC_DEFUN([LK_AC_CHECK_LATEX_DOCU],[
LK_AC_CHECK_OPT_PROG(LATEX,latex)
LK_AC_CHECK_OPT_PROG(DVIPS,dvips)
LK_AC_CHECK_OPT_PROG(LATEX2HTML,latex2html)
LK_AC_CHECK_OPT_PROG(PDFLATEX,pdflatex)
])
dnl Add a variable containing the path to the installed perl modules. Keep
dnl this syncronized with perl.mk.
dnl AC_PREP_PERL_MODULES
AC_DEFUN([LK_AC_PREP_PERL_MODULES],[
oldprefix="$prefix"
oldexec_prefix="$exec_prefix"
test "x$prefix" = xNONE && prefix="$ac_default_prefix"
test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
PATH_TO_PERL_MODULES=`eval eval echo "${datadir}/${PACKAGE}-${VERSION}/src"`
PATH_TO_PERL_SCRIPTS=`eval eval echo "${bindir}"`
prefix="$oldprefix"
exec_prefix="$oldexec_prefix"
AC_MSG_NOTICE([Perl modules go beneath '${PATH_TO_PERL_MODULES}'. You can't change that using make.])
AC_MSG_NOTICE([Perl scripts go beneath '${PATH_TO_PERL_SCRIPTS}'. You can't change that using make.])
AC_SUBST(PATH_TO_PERL_MODULES)
AC_SUBST(PATH_TO_PERL_SCRIPTS)
])
dnl Try to run a piece of perl code. The code comes from AC_TRY_RUN.
dnl LK_AC_TRY_RUN_PERL( perl-code, [code-if-ok], [code-if-failed])
AC_DEFUN([LK_AC_TRY_RUN_PERL],[
rm -f conftest.pl
cat >conftest.pl <<_ACEOF
$1
exit(0);
_ACEOF
AS_IF([AC_TRY_COMMAND([${PERL} conftest.pl])],[$2],[$3])
rm -f conftest.pl
])
dnl Check whether a specific perl module exists in the general perl path.
dnl LK_AC_CHECK_PERL_MODULE( module-name, code-if-exists, code-if-not-exists)
AC_DEFUN([LK_AC_CHECK_PERL_MODULE],[
LK_AC_TRY_RUN_PERL([use $1;],[$2],[$3])
])
dnl Require a specific perl module and fail if it does not exists.
dnl LK_AC_CHECK_REQ_PERL_MODULE( module-name)
AC_DEFUN([LK_AC_CHECK_REQ_PERL_MODULE],[
AC_MSG_CHECKING([whether perl module $1 is usable])
LK_AC_CHECK_PERL_MODULE([$1],[
AC_MSG_RESULT([yes])
],[
AC_MSG_RESULT([no])
AC_MSG_NOTICE([You may get that module from CPAN. Consult 'man CPAN' to learn how.])
AC_MSG_ERROR([Required perl module $1 not found.])
])
])
dnl Require a library and fail if it does not exists.
AC_DEFUN([LK_AC_CHECK_REQ_LIB],[
AC_CHECK_LIB($1,$2,,[
AC_MSG_ERROR([Required library lib$1 not found.])
],$3)
])
dnl Require a library and fail if it does not exists. Hint about the download location
AC_DEFUN([LK_AC_CHECK_REQ_LIBH],[
AC_CHECK_LIB($1,$2,,[
AC_MSG_ERROR([Required library lib$1 not found. Get it from $4])
],$3)
])
dnl Set the flags according to the selected version.
AC_DEFUN([LK_AC_SET_BUILD_MODE],[
AC_ARG_ENABLE(build,
AC_HELP_STRING([--enable-build={debug|dprof|rprof|fprof|ftest|test|fast|release}],
[Use build mode:
* debug: Debug symbols, no optimisation
* dprof: Debug Profiling, no optimisation
* rprof: Release Profiling, full optimisation
* fprof: Release Profiling, fast optimisation
* ftest: Debug symbols, fast optimisation
* test: Debug symbols, full optimisation
* fast: No debug, fast optimisation
* release: No debug, full optimisation]),
ac_cv_buildmode=$enableval, ac_cv_buildmode=release)
AC_CACHE_CHECK([for build mode], ac_cv_buildmode, ac_cv_buildmode=release)
case $ac_cv_buildmode in
debug)
CFLAGS="-g -Wall"
;;
dprof)
CFLAGS="-g -pg -Wall"
;;
rprof)
CFLAGS="-g -pg -O3 -DNDEBUG"
;;
fprof)
CFLAGS="-g -pg -O2 -DNDEBUG"
;;
test)
CFLAGS="-g -O3 -Wall -DNDEBUG"
;;
ftest)
CFLAGS="-g -O2 -Wall -DNDEBUG"
;;
fast)
CFLAGS="-O2 -Wall -DNDEBUG"
;;
release)
CFLAGS="-O3 -Wall -DNDEBUG"
;;
*)
AC_MSG_ERROR([Unknown build mode $ac_cv_buildmode])
;;
esac
CXXFLAGS=$CFLAGS
])
dnl Check for perl executable
AC_DEFUN([LK_AC_CHECK_PERL],[
LK_AC_CHECK_REQ_PROG(PERL,perl)
])
dnl Helper function to get info from perl
AC_DEFUN([_LK_GETPERL_CONFIGVAR],[
AC_MSG_CHECKING([for perl config variable $2])
eval `\$PERL -V:$2`;
$1="$$2";
AC_MSG_RESULT([$$1])
AC_SUBST($1)
])
dnl Setup all the little things for perl xs compilation
AC_DEFUN([LK_AC_CHECK_PERLXS],[
AC_REQUIRE([LK_AC_CHECK_PERL])
_LK_GETPERL_CONFIGVAR( PERLXS_LD, ld)
_LK_GETPERL_CONFIGVAR( PERLXS_DLEXT, dlext)
_LK_GETPERL_CONFIGVAR( PERLXS_CCDLFLAGS, ccdlflags)
_LK_GETPERL_CONFIGVAR( PERLXS_CCCDLFLAGS, cccdlflags)
_LK_GETPERL_CONFIGVAR( PERLXS_LDDLFLAGS, lddlflags)
_LK_GETPERL_CONFIGVAR( PERLXS_ARCHLIBEXT, archlibexp)
_LK_GETPERL_CONFIGVAR( PERLXS_INSTALLSTYLE, installstyle)
_LK_GETPERL_CONFIGVAR( PERLXS_VERSION, version)
_LK_GETPERL_CONFIGVAR( PERLXS_ARCHNAME, archname)
oldprefix="$prefix"
oldexec_prefix="$exec_prefix"
test "x$prefix" = xNONE && prefix="$ac_default_prefix"
test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
PATH_TO_PERL_XS="$prefix/$PERLXS_INSTALLSTYLE/site_perl/$PERLXS_VERSION/$PERLXS_ARCHNAME";
prefix="$oldprefix"
exec_prefix="$oldexec_prefix"
AC_SUBST( PATH_TO_PERL_XS)
])
dnl Set the install pathes for libraries
AC_DEFUN([LK_AC_SET_LIB_INSTALL_PATHES],[
oldprefix="$prefix"
oldexec_prefix="$exec_prefix"
test "x$prefix" = xNONE && prefix="$ac_default_prefix"
test "x$exec_prefix" = xNONE && exec_prefix="${prefix}"
INSTALL_PATH_INCLUDE=`eval echo "${includedir}"`
prefix="$oldprefix"
exec_prefix="$oldexec_prefix"
AC_MSG_NOTICE([Include files are assumed to go beneath '${INSTALL_PATH_INCLUDE}'. Don't change that using make or other packages won't find this library.])
AC_SUBST(INSTALL_PATH_INCLUDE)
])
dnl Call the config program of a certain package.
dnl _LK_AC_CALL_CONFIG(pkg,outvar,param)
AC_DEFUN([_LK_AC_CALL_CONFIG],[
$2=`$1-config --$3`
])
dnl Check if a config program exists and yields a sufficient package version
dnl LK_AC_CHECK_REQ_PKG(package,version,url)
AC_DEFUN([LK_AC_CHECK_REQ_PKG],[
AC_PATH_PROG($1_PATH,$1-config,[])
AC_MSG_CHECKING([for package $1])
if test "${$1_PATH}x" = "x" ; then
AC_MSG_ERROR( ["Program $1-config not found. Obtain package $1 from $3"])
fi
_LK_AC_CALL_CONFIG($1,$1_VERSION,version)
if [[[ "${$1_VERSION}" < '$2' ]]] ; then
AC_MSG_ERROR( ["Package $1 is too old. Obtain at least version $2 from $3"])
fi
AC_MSG_RESULT([version ${$1_VERSION} from ${$1_PATH}])
])
dnl Check if a config program exists and yields a sufficient package version
dnl LK_AC_CHECK_OPT_PKG(package,version,url)
AC_DEFUN([LK_AC_CHECK_OPT_PKG],[
AC_PATH_PROG($1_PATH,$1-config,[])
AC_MSG_CHECKING([for package $1])
have_package="yes"
if test "${$1_PATH}x" = "x" ; then
have_package="no"
else
_LK_AC_CALL_CONFIG($1,$1_VERSION,version)
if [[[ "${$1_VERSION}" < '$2' ]]] ; then
have_package="no"
fi
fi
if test "$have_package" = "yes" ; then
AC_MSG_RESULT([version ${$1_VERSION} from ${$1_PATH}])
[HAVE_$1_FLAG=1]
else
AC_MSG_RESULT([not available. Obtain $1 >version $2 from $3. Some functionality will be disabled.])
[HAVE_$1_FLAG=0]
fi
AC_SUBST([HAVE_$1_FLAG])
AM_CONDITIONAL([HAVE_$1], test "$have_package" = "yes")
])
dnl Obtain the flags for c++ compilation.
dnl LK_AC_CHECK_REQ_OPT_CXXINFO(package)
AC_DEFUN([LK_AC_CHECK_OPT_PKG_CXXINFO],[
if test "$[HAVE_$1_FLAG]" = "1" ; then
LK_AC_CHECK_REQ_PKG_CXXINFO($1,$2)
fi
])
dnl Obtain the path to the perl modules from the config program of a package.
dnl LK_AC_CHECK_REQ_PKG_PERLPATH(var,package)
AC_DEFUN([LK_AC_CHECK_REQ_PKG_PERLPATH],[
AC_MSG_CHECKING([for perl path of package $2])
_LK_AC_CALL_CONFIG($2,$1,perlpath)
AC_MSG_RESULT($$1)
AC_SUBST($1)
])
dnl Obtain the flags for c++ compilation.
dnl LK_AC_CHECK_REQ_PKG_CXXINFO(package)
AC_DEFUN([LK_AC_CHECK_REQ_PKG_CXXINFO],[
AC_MSG_CHECKING([for c++ info of package $2])
_LK_AC_CALL_CONFIG($1,$1_CXXFLAGS,cxxflags)
_LK_AC_CALL_CONFIG($1,$1_LDFLAGS,ldflags)
_LK_AC_CALL_CONFIG($1,$1_LIBS,libs)
_LK_AC_CALL_CONFIG($1,$1_INCLUDEDIR,includedir)
CXXFLAGS="$CXXFLAGS $$1_CXXFLAGS"
LDFLAGS="$LDFLAGS $$1_LDFLAGS"
LIBS="$LIBS $$1_LIBS"
if test "$1_INCLUDEDIR" != "" ; then
CXXFLAGS="$CXXFLAGS -I$$1_INCLUDEDIR"
fi
AC_MSG_RESULT([CXXFLAGS: $$1_CXXFLAGS, LDFLAGS: $$1_LDFLAGS, LIBS: $$1_LIBS])
])
dnl Check if POSIX regexes are available
dnl LK_AC_CHECK_REQ_REGEX
AC_DEFUN([LK_AC_CHECK_REQ_REGEX],[
AC_CHECK_FUNC( regfree, [], [
AC_MSG_ERROR( ["POSIX regular expressions not available."])
])
])
dnl AC_CHECK_LIB_WITH_INCLUDE(INCLUDES, LIBRARY, FUNCTION,
dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
dnl [OTHER-LIBRARIES])
AC_DEFUN([AC_CHECK_LIB_WITH_INCLUDE],
[m4_ifval([$4], , [AH_CHECK_LIB([$2])])dnl
AS_LITERAL_IF([$2],
[AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$2_$3])],
[AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$2''_$3])])dnl
AC_CACHE_CHECK([for $3 in -l$2], ac_Lib,
[ac_check_lib_save_LIBS=$LIBS
LIBS="-l$2 $6 $LIBS"
AC_TRY_LINK([$1], [extern int $3(); $3();],
[AS_VAR_SET(ac_Lib, yes)],
[AS_VAR_SET(ac_Lib, no)])
LIBS=$ac_check_lib_save_LIBS])
AS_IF([test AS_VAR_GET(ac_Lib) = yes],
[m4_default([$4], [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$2))
LIBS="-l$2 $LIBS"
])],
[$5])dnl
AS_VAR_POPDEF([ac_Lib])dnl
])
dnl Check for lapack
dnl LK_AC_CHECK_REQ_LAPACK
AC_DEFUN([LK_AC_CHECK_REQ_LAPACK],[
for appdir in . $APP_DIRS; do
echo "void MAIN__() { }" > $appdir/dummyMain.c
done
AC_CHECK_LIB_WITH_INCLUDE( [#include "dummyMain.c"], lapack, dgetrf_, [
LIBS="$LIBS -lblas -lf2c"
AC_LIBOBJ(dummyMain)
], [
AC_MSG_ERROR( [lapack not available. Get it from http://www.netlib.org])
], [-lblas -lf2c])
])
dnl Perl module install prefix handling: Find in src dir.
dnl LK_AC_PERL_DEFAULT_PREFIX
AC_DEFUN([LK_AC_PERL_DEFAULT_PREFIX],[
LK_PERL_REMOVE_PREFIX='src';
AC_SUBST(LK_PERL_REMOVE_PREFIX)
])
dnl Perl module install prefix handling: Remove a prefix.
dnl LK_AC_PERL_REMOVE_PREFIX( prefix)
AC_DEFUN([LK_AC_PERL_REMOVE_PREFIX],[
LK_PERL_REMOVE_PREFIX='$1';
AC_SUBST(LK_PERL_REMOVE_PREFIX)
])
dnl ========================== ruby ===========================
dnl Check for ruby executable
AC_DEFUN([LK_AC_CHECK_RUBY],[
LK_AC_CHECK_REQ_PROG(RUBY,ruby)
])
dnl Try to run a piece of ruby code. The code comes from AC_TRY_RUN.
dnl LK_AC_TRY_RUN_RUBY( ruby-code, [code-if-ok], [code-if-failed])
AC_DEFUN([LK_AC_TRY_RUN_RUBY],[
rm -f conftest.rb
cat >conftest.rb <<_ACEOF
$1
exit(0)
_ACEOF
AS_IF([AC_TRY_COMMAND([${RUBY} conftest.rb])],[$2],[$3])
rm -f conftest.rb
])
dnl Helper function to get info from ruby
AC_DEFUN([_LK_GETRUBY_CONFIGVAR],[
AC_MSG_CHECKING([for ruby config variable $2])
$1=`\$RUBY -e 'require "rbconfig"; print Config::CONFIG[["$2"]]'`
AC_MSG_RESULT([$$1])
AC_SUBST($1)
])
dnl Setup all the little things for linking against ruby
AC_DEFUN([LK_AC_CHECK_RUBYLIB],[
AC_REQUIRE([LK_AC_CHECK_RUBY])
_LK_GETRUBY_CONFIGVAR( LIBRUBY_archdir, archdir)
_LK_GETRUBY_CONFIGVAR( LIBRUBY_SO_NAME, RUBY_SO_NAME)
AC_CHECK_LIB($LIBRUBY_SO_NAME, main, , ,)
])
syntax highlighted by Code2HTML, v. 0.9.1