--- /dev/null
+# This file is part of Autoconf. -*- Autoconf -*-
+
+# ViennaRNA Package 2011 Ronny Lorenz
+#
+
+##-----------------##
+## Private macros. ##
+##-----------------##
+
+AC_DEFUN([AC_RNA_TEST_FILE],[
+AC_MSG_CHECKING([for $1])
+if test -f $1 ; then
+ AC_MSG_RESULT([yes])
+ $2
+else
+ AC_MSG_RESULT([no])
+ $3
+fi
+])
+
+AC_DEFUN([AC_RNA_PACKAGE_IF_ENABLED],[
+if test "x$with_$1" != xno; then
+ $2
+fi
+])
+
+#
+# AC_RNA_ADD_PACKAGE( package-name,
+# package-description,
+# default-on,
+# [action-if-not-default],
+# [action-if-default],
+# [files to check for])
+#
+# This macro handles additional package inclusion
+# Parameters:
+# package-name: a lowercase name of the optional package
+# which is used for $with_package_name variables
+# and --with[out]-package-name options in
+# configure script
+# The package_name must consist of alphanumeric
+# characters including the dash only! Every
+# occuring dash will be replaced by a '-' char
+# in the --with[out]-package-name option
+#
+# package-desciption: a very brief description used for the package
+# specific help output in configure script
+#
+# default-on: package build | installed by default
+# Values: "yes" or "no"
+#
+# Example: AC_RNA_ADD_PACKAGE([foo], [the incredible Foo program], [yes], [with_foo=no], [with_foo=yes], [file1 file2])
+#
+
+AC_DEFUN([AC_RNA_ADD_PACKAGE],[
+
+# announce the option to include it in configure script
+AC_ARG_WITH(m4_translit([[$1]], [_], [-]),
+ [ifelse([$3], [yes],
+ [AS_HELP_STRING([--without-m4_translit([$1], [_], [-])], [do not build | install $2])],
+ [AS_HELP_STRING([--with-m4_translit([$1], [_], [-])], [build | install $2])])],
+ [$4],
+ [$5])
+
+# check if enabling the package makes sense at configure-time
+# and deactivate it if not
+
+AC_RNA_PACKAGE_IF_ENABLED([$1],[
+ for i in $6; do
+ AC_RNA_TEST_FILE([$i],
+ [with_$1=$with_$1],
+ [with_$1=no])
+ done
+])
+
+])
+
+
+# AC_RNA_DOCUMENTATION_INIT(PROJECT_NAME, [config-file], [documentation-output-directory])
+#
+#
+AC_DEFUN([AC_RNA_DOCUMENTATION_INIT],[
+
+AC_PATH_PROG(doxygen, [doxygen],no)
+AC_PATH_PROG(pdflatex,[pdflatex],no)
+AC_PATH_PROG(latex,[latex],no)
+AC_PATH_PROG(makeindex,[makeindex],no)
+AC_PATH_PROG(dot,[dot],no)
+AC_PATH_PROG(egrep,[egrep],no)
+AC_PATH_PROG(perl,[perl],no)
+
+DOXYGEN_PDFLATEX_WORKARROUND=yes
+
+# check whether we are able to generate the doxygen documentation
+AC_RNA_PACKAGE_IF_ENABLED([doc],[
+ if test "x$doxygen" != xno;
+ then
+ # test for programs necessary in order to use doxygen
+
+ if test "x$DOXYGEN_PDFLATEX_WORKARROUND" = xno;
+ then
+ # this is a workarround for older versions of doxygen as installed e.g. in fc12 where
+ # pdflatex usage does not work
+
+ if test "x$pdflatex" = xno;
+ then
+ if test "x$latex" = xno;
+ then
+ AC_MSG_WARN([neither latex or pdflatex exists on your system!])
+ AC_MSG_WARN([deactivating automatic (re)generation of reference manual!])
+ doxygen=no
+ else
+ _latex_cmd=$latex
+ fi
+ else
+ _latex_cmd=$pdflatex
+ fi
+ else
+ if test "x$latex" = xno;
+ then
+ AC_MSG_WARN([neither latex or pdflatex exists on your system!])
+ AC_MSG_WARN([deactivating automatic (re)generation of reference manual!])
+ doxygen=no
+ _latex_cmd=
+ else
+ AC_MSG_WARN([due to a bug in older versions of doxygen, latex will be used for reference manual generation even if pdflatex is available])
+ _latex_cmd=$latex
+ pdflatex=no
+ fi
+ fi
+
+ if test "x$makeindex" = xno;
+ then
+ AC_MSG_WARN([makeindex command not found on your system!])
+ AC_MSG_WARN([deactivating automatic (re)generation of reference manual!])
+ doxygen=no
+ fi
+
+ if test "x$egrep" = xno;
+ then
+ AC_MSG_WARN([egrep command not found on your system!])
+ AC_MSG_WARN([deactivating automatic (re)generation of reference manual!])
+ doxygen=no
+ fi
+
+ if test "x$dot" = xno;
+ then
+ AC_MSG_WARN([dot command not found on your system!])
+ AC_MSG_WARN([deactivating graph output in reference manual!])
+ fi
+
+ if test "x$perl" = xno;
+ then
+ AC_MSG_WARN([perl command not found on your system!])
+ AC_MSG_WARN([deactivating automatic (re)generation of reference manual!])
+ doxygen=no
+ fi
+
+ fi
+])
+
+
+# setup everything in order to generate the doxygen configfile
+
+AC_RNA_PACKAGE_IF_ENABLED([doc],[
+
+ AC_SUBST([DOXYGEN_PROJECT_NAME], [$1-$PACKAGE_VERSION])
+ AC_SUBST([DOXYGEN_SRCDIR], [$srcdir])
+ AC_SUBST([DOXYGEN_DOCDIR], [ifelse([$3], [], [doc], [$3])])
+ AC_SUBST([DOXYGEN_CONF], [ifelse([$2], [], [doxygen.conf], [$2])])
+
+
+# prepare the config file for doxygen if we are able to generate a reference manual
+ if test "x$doxygen" != xno;
+ then
+
+ AC_SUBST([DOXYGEN_CMD_LATEX], [$_latex_cmd])
+ AC_SUBST([DOXYGEN_CMD_MAKEINDEX], [$makeindex])
+ AC_SUBST([DOXYGEN_HAVE_DOT],[ifelse([$dot], [no], [NO], [YES])])
+ AC_SUBST([DOXYGEN_WITH_PDFLATEX], [ifelse([$pdflatex],[no],[NO],[YES])])
+ AC_SUBST([DOXYGEN_GENERATE_HTML], [ifelse([$with_doc_html], [no], [NO], [YES])])
+ AC_SUBST([DOXYGEN_GENERATE_LATEX], [ifelse([$with_doc_pdf], [no], [NO], [YES])])
+
+ AC_CONFIG_FILES([${DOXYGEN_DOCDIR}/${DOXYGEN_CONF}])
+
+ else
+
+# otherwise check if a generated reference manual already exists
+
+ AC_RNA_PACKAGE_IF_ENABLED([doc_pdf],[
+ AC_RNA_TEST_FILE( [$DOXYGEN_DOCDIR/$DOXYGEN_PROJECT_NAME.pdf],
+ [with_doc_pdf=yes],
+ [with_doc_pdf=no])])
+
+ AC_RNA_PACKAGE_IF_ENABLED([doc_html],[
+ AC_RNA_TEST_FILE( [$DOXYGEN_DOCDIR/html/index.html],
+ [with_doc_html=yes],
+ [with_doc_html=no])])
+
+ if test "x$with_doc_pdf" = "x$with_doc_html";
+ then
+ if test "x$with_doc_pdf" = xno;
+ then
+ with_doc=no
+ fi
+ fi
+ fi
+])
+
+AC_SUBST([REFERENCE_MANUAL_PDF_NAME], [ifelse([$with_doc_pdf],
+ [no],
+ [],
+ [$DOXYGEN_PROJECT_NAME.pdf])])
+AC_SUBST([REFERENCE_MANUAL_TAGFILE], [ifelse([$doxygen],
+ [no],
+ [],
+ [$DOXYGEN_PROJECT_NAME.tag])])
+
+
+# setup variables used in Makefile.am
+AM_CONDITIONAL(WITH_REFERENCE_MANUAL, test "x$with_doc" != xno)
+AM_CONDITIONAL(WITH_REFERENCE_MANUAL_BUILD, test "x$doxygen" != xno)
+AM_CONDITIONAL(WITH_REFERENCE_MANUAL_PDF, test "x$with_doc_pdf" != xno)
+AM_CONDITIONAL(WITH_REFERENCE_MANUAL_HTML, test "x$with_doc_html" != xno)
+
+])
+
+##----------------##
+## Public macros. ##
+##----------------##
+
+AC_DEFUN([AC_RNA_INIT],[
+
+SVM_VERSION=2.91
+with_pf_float=no
+
+dnl add packages to the configure process
+
+AC_RNA_ADD_PACKAGE( [perl],
+ [Perl interface],
+ [yes],
+ [with_perl=no],
+ [with_perl=yes],
+ [interfaces/Perl/Makefile.am])
+AC_RNA_ADD_PACKAGE( [python],
+ [Python interface],
+ [no],
+ [with_python=yes],
+ [with_python=no],
+ [interfaces/Python/Makefile.am])
+AC_RNA_ADD_PACKAGE( [ruby],
+ [Ruby interface],
+ [no],
+ [with_ruby=yes],
+ [with_ruby=no],
+ [interfaces/Ruby/Makefile.am])
+AC_RNA_ADD_PACKAGE( [kinfold],
+ [Kinfold program],
+ [yes],
+ [with_kinfold=no],
+ [with_kinfold=yes],
+ [Kinfold/Makefile.am])
+AC_RNA_ADD_PACKAGE( [forester],
+ [RNAforester program],
+ [yes],
+ [with_forester=no],
+ [with_forester=yes],
+ [RNAforester/Makefile.am])
+AC_RNA_ADD_PACKAGE( [cluster],
+ [AnalyseSeqs and AnalyseDists],
+ [no],
+ [with_cluster=yes],
+ [with_cluster=no],
+ [Cluster/Makefile.am])
+AC_RNA_ADD_PACKAGE( [svm],
+ [svm classifiers],
+ [yes],
+ [with_svm=no],
+ [with_svm=yes],
+ [libsvm-${SVM_VERSION}/svm.cpp libsvm-${SVM_VERSION}/svm.h])
+AC_RNA_ADD_PACKAGE( [doc_pdf],
+ [PDF RNAlib reference manual],
+ [yes],
+ [with_doc_pdf=no],
+ [with_doc_pdf=yes])
+AC_RNA_ADD_PACKAGE( [doc_html],
+ [HTML RNAlib reference manual],
+ [yes],
+ [with_doc_html=no],
+ [with_doc_html=yes])
+AC_RNA_ADD_PACKAGE( [doc],
+ [RNAlib reference manual],
+ [yes],
+ [ with_doc=no
+ with_doc_pdf=no
+ with_doc_html=no],
+ [with_doc=yes])
+
+## begin with initialization according to configure-time specific options
+
+## The following test ensures the right type for FLT_OR_DBL in the SWIG RNAlib interface
+AC_MSG_CHECKING([whether float precision is used for partition function arrays instead of double precision])
+bla=`${GREP} "^#define LARGE_PF" H/data_structures.h`
+if test "x$bla" = "x";
+then
+ with_pf_float=yes
+fi
+AC_MSG_RESULT([$with_pf_float])
+
+# check prerequisites for Perl interface
+AC_PATH_PROG(PerlCmd, perl)
+ifelse([$PerlCmd], [],[
+ AC_MSG_WARN([No suitable Perl found -- will not build Perl module])
+ AC_MSG_WARN([You may set the PerlCmd environment variable to point to
+ a suitable perl binary])
+ with_perl="no"
+],[
+ if $PerlCmd -e 'require 5.004'; then :
+ else
+ AC_MSG_WARN([You need Perl version 5.004 or higher for the Perl module])
+ with_perl="no"
+ fi
+])
+
+
+# prepare all files for perl interface
+AC_RNA_PACKAGE_IF_ENABLED([perl],[
+ AC_DEFINE([WITH_PERL_INTERFACE], [1], [Create the perl interface to RNAlib])
+ AC_SUBST([PERL_INTERFACE], [Perl])
+ AC_CONFIG_FILES([interfaces/Perl/Makefile interfaces/Perl/Makefile.PL])
+])
+
+# check prerequisites for Python interface
+AC_PATH_PROG(PythonCmd, python)
+ifelse([$PythonCmd], [], [
+ AC_MSG_WARN([No suitable Python found -- will not build Python extension])
+ AC_MSG_WARN([You may set the PythonCmd environment variable to point to
+ a suitable python binary])
+ with_python="no"
+],[
+ version_test=`$PythonCmd interfaces/Python/version_test.py`
+ if test "x$version_test" = "xok"; then :
+ else
+ AC_MSG_WARN([You need Python >= 2.5 and < 3.0 to build the Python extension])
+ AC_MSG_WARN([You may set the PythonCmd environment variable to point to
+ a suitable python binary])
+ with_python="no"
+ fi
+])
+
+# prepare all files for python interface
+AC_RNA_PACKAGE_IF_ENABLED([python],[
+ AC_DEFINE([WITH_PYTHON_INTERFACE], [1], [Create the python interface to RNAlib])
+ AC_SUBST([PYTHON_INTERFACE], [Python])
+ AC_CONFIG_FILES([interfaces/Python/Makefile interfaces/Python/setup.py])
+])
+
+
+AC_RNA_PACKAGE_IF_ENABLED([kinfold],[
+ AC_CONFIG_SUBDIRS([Kinfold])
+])
+
+AC_RNA_PACKAGE_IF_ENABLED([forester],[
+ AC_CONFIG_SUBDIRS([RNAforester])
+])
+
+AC_RNA_PACKAGE_IF_ENABLED([cluster],[
+ AC_DEFINE([WITH_CLUSTER], [1], [Analyse{Dists,Seqs}])
+ AC_SUBST([CLUSTER_DIR], [Cluster])
+ AC_CONFIG_FILES([Cluster/Makefile])
+])
+
+AC_RNA_PACKAGE_IF_ENABLED([svm],[
+ AC_SUBST([LIBSVM_DIR], [libsvm-${SVM_VERSION}])
+ AC_SUBST([CXXLD],[${CXX}]) # this is rather a hack for RNALfold.c linking correctly
+ AC_DEFINE([USE_SVM], [1], [Compute z-scores for RNALfold])
+])
+
+AM_CONDITIONAL(WITH_LARGE_PF, test "$with_pf_float" != "yes")
+AM_CONDITIONAL(MAKE_KINFOLD, test "$with_kinfold" != "no")
+AM_CONDITIONAL(MAKE_FORESTER, test "$with_forester" != "no")
+AM_CONDITIONAL(MAKE_CLUSTER, test "$with_cluster" = "yes")
+AM_CONDITIONAL(WITH_LIBSVM, test "$with_svm" != "no")
+
+AC_RNA_DOCUMENTATION_INIT([RNAlib])
+
+AC_CONFIG_FILES([misc/Makefile misc/ViennaRNA.spec misc/PKGBUILD])
+AC_CONFIG_FILES([interfaces/Makefile])
+AC_CONFIG_FILES([Makefile RNAlib2.pc Utils/Makefile Progs/Makefile lib/Makefile man/Makefile H/Makefile doc/Makefile])
+
+AC_CONFIG_FILES([man/cmdlopt.sh],[chmod +x man/cmdlopt.sh])
+
+])
+
+AC_DEFUN([AC_RNA_NOTICE],[
+
+# get directory paths
+
+eval _bindir=$(eval printf "%s" $bindir)
+eval _libdir=$(eval printf "%s" $libdir)
+eval _includedir=$(eval printf "%s" $includedir)
+eval _datadir=$(eval printf "%s" $datadir)
+eval _mandir=$(eval printf "%s" $mandir)
+eval _docdir=$(eval printf "%s" $docdir)
+eval _htmldir=$(eval printf "%s" $htmldir)
+eval _pdfdir=$(eval printf "%s" $pdfdir)
+
+# Notify the user
+
+AC_MSG_NOTICE(
+[
+Configure successful with the following options:
+
+RNAlib Interfaces:
+ Perl Interface: ${with_perl:-yes}
+ Python Interface: ${with_python:-yes}
+ Ruby Interface: ${with_ruby:-yes}
+
+Extra Programs:
+ Analyse{Dists,Seqs}: ${with_cluster:-no}
+ Kinfold: ${with_kinfold:-yes}
+ RNAforester: ${with_forester:-yes}
+
+Other Options:
+ SVM: ${with_svm:-yes}
+ Documentation: ${with_doc:-no}
+ (HTML): ${with_doc_html:-no}
+ (PDF): ${with_doc_pdf:-no}
+-
+Files will be installed in the following directories:
+
+ Executables: $_bindir
+ Libraries: $_libdir
+ Header files: $_includedir
+ Extra Data: $_datadir
+ Man pages: $_mandir
+ Documentation: $_docdir
+ (HTML): $(eval printf "%s" $_htmldir)/html
+ (PDF): $(eval printf "%s" $_pdfdir)
+])
+
+])
+
+
+