mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-02-11 18:00:51 +08:00
release of tvmet (inactive for 2 years and developer unreachable) as the basis for eigen2, because it provides seemingly good expression template mechanisms, we want that, and it would take years to reinvent that wheel. We'll see. So this commit imports the last tvmet release.
343 lines
9.3 KiB
Plaintext
343 lines
9.3 KiB
Plaintext
dnl $Id: configure.ac,v 1.47 2005/04/26 15:07:00 opetzold Exp $
|
|
dnl Configure script for the Tiny Vector Matrix Expression Template Library
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
|
|
dnl autoconf 2.50 or higher to rebuild aclocal.m4, because the
|
|
dnl AC_CREATE_PREFIX_CONFIG_H macro needs the AS_DIRNAME macro.
|
|
AC_PREREQ(2.59)
|
|
|
|
|
|
dnl Copy revision stamp into the `configure' script,
|
|
AC_REVISION($Revision: 1.47 $)
|
|
|
|
|
|
dnl Disable caching.
|
|
define([AC_CACHE_LOAD], )
|
|
define([AC_CACHE_SAVE], )
|
|
|
|
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
AC_INIT([tvmet],[1.7.1],[opetzold@users.sourceforge.net])
|
|
|
|
|
|
dnl inform about
|
|
AC_MSG_RESULT([Configure Tiny Vector Matrix using Expression Templates library AC_PACKAGE_VERSION])
|
|
|
|
|
|
dnl config and versioning, the config.h header is in config - we use a prefixed
|
|
dnl config header, see below
|
|
AC_CONFIG_AUX_DIR(config)
|
|
AC_CONFIG_HEADERS([config/config.h])
|
|
|
|
|
|
dnl Getting the Canonical System Type
|
|
AC_CANONICAL_HOST
|
|
|
|
|
|
dnl require gnu style, automake 1.8 or better, etc.
|
|
AM_INIT_AUTOMAKE([gnu 1.8 no-define dist-bzip2])
|
|
|
|
|
|
dnl --enable-maintainer-mode for configure
|
|
AM_MAINTAINER_MODE
|
|
|
|
|
|
# Declare variables which we want substituted in the Makefile.in's
|
|
AC_SUBST(CXX_OPTIMIZE_FLAGS)
|
|
AC_SUBST(CXX_DEBUG_FLAGS)
|
|
AC_SUBST(CXX_WARN_FLAGS)
|
|
|
|
|
|
dnl Manual configuration options of oopattern.
|
|
AC_ARG_ENABLE(tvmet, [
|
|
Options of tvmet:])
|
|
|
|
|
|
dnl Process command-line arguments for compiler (parts borrowed from blitz++)
|
|
AC_MSG_CHECKING([for compiler])
|
|
AC_ARG_WITH(cxx,
|
|
[ --with-cxx=compiler set specific C++ compiler and options (e.g. g++ (default), KCC, icc, pgCC)],
|
|
[case "$withval" in
|
|
KCC*) # KAI C++ http://www.kai.com/
|
|
AC_MSG_RESULT([KAI C++])
|
|
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE +K3 -O3 -fast --inline_keyword_space_time=10000"
|
|
CXX_DEBUG_FLAGS="-g +K0 -DTVMET_DEBUG"
|
|
CXX_WARN_FLAGS=""
|
|
;;
|
|
g++*|gcc*) # gcc http://gcc.gnu.org/
|
|
AC_MSG_RESULT([GNU C++])
|
|
AC_SET_COMPILER($withval,"g++","")
|
|
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE -O2 -finline-limit=5000 -ftemplate-depth-200 -fomit-frame-pointer"
|
|
CXX_DEBUG_FLAGS="-g -O1 -DTVMET_DEBUG"
|
|
CXX_WARN_FLAGS="-W -Wall -Winline"
|
|
|
|
# paranoia on older gcc versions
|
|
gxx_version=`$CXX -v 2>&1 | grep "^.*g.. version" | \
|
|
sed -e 's/^.*g.. version *//' -e 's/cygnus-//' -e 's/egcs-//'`
|
|
|
|
case "$gxx_version" in
|
|
1.* | 2.[[0123456789]].*)
|
|
AC_MSG_ERROR([g++ version $gxx_version will probably fail to compile tvmet])
|
|
;;
|
|
esac
|
|
;;
|
|
icc) # Intel C++ compiler http://www.intel.com/
|
|
AC_MSG_RESULT([Intel C++])
|
|
AC_SET_COMPILER($withval,"icc","")
|
|
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE -O2 -fp_port -Qoption,c,-ip_ninl_max_total_stats=3000"
|
|
CXX_DEBUG_FLAGS="-g -O0 -DTVMET_DEBUG"
|
|
CXX_WARN_FLAGS="-Wall"
|
|
;;
|
|
pgCC*) # Portland group http://www.pgroup.com/
|
|
AC_MSG_RESULT([Portland Group C++])
|
|
AC_SET_COMPILER($withval,"pgCC","")
|
|
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE -O4 -Mnoframe -Mnodepchk -Minline=levels:25"
|
|
CXX_DEBUG_FLAGS="-g -O0 -DTVMET_DEBUG"
|
|
CXX_WARN_FLAGS=""
|
|
;;
|
|
*)
|
|
AC_MSG_WARN([--with-cxx: unknown c++ compiler $withval])
|
|
;;
|
|
esac],[
|
|
AC_MSG_RESULT([GNU C++ (default)])
|
|
AC_SET_COMPILER($withval,"g++","")
|
|
CXX_OPTIMIZE_FLAGS="-DTVMET_OPTIMIZE -O2 -finline-limit=5000 -ftemplate-depth-200 -fomit-frame-pointer"
|
|
CXX_DEBUG_FLAGS="-g -O1 -DTVMET_DEBUG"
|
|
CXX_WARN_FLAGS="-W -Wall -Winline"
|
|
])
|
|
|
|
|
|
dnl Check if the script was called with --enable-optimize, and if so
|
|
dnl modify the compilation flags.
|
|
AC_MSG_CHECKING([for compiler optimizations])
|
|
tvmet_optimize=0
|
|
AC_ARG_ENABLE(optimize,
|
|
[ --enable-optimize enable compiler optimization flags],
|
|
[if test "$enableval" = yes; then
|
|
AC_MSG_RESULT([yes])
|
|
CXXFLAGS="$CXXFLAGS $CXX_OPTIMIZE_FLAGS"
|
|
tvmet_optimize=1
|
|
else
|
|
AC_MSG_RESULT([no])
|
|
fi], [
|
|
AC_MSG_RESULT([no])
|
|
])
|
|
|
|
|
|
dnl Set platform-specific optimization settings
|
|
if test $tvmet_optimize -eq 1; then
|
|
AC_MSG_CHECKING([for compiler platform-specific optimizations])
|
|
case "$build_os" in
|
|
*linux*)
|
|
case "$CXX" in
|
|
g++)
|
|
AC_MSG_RESULT([GNU/Linux (CPU=$build_cpu) using GNU GCC])
|
|
# specifying -march=cpu-type implies -mcpu=cpu-type.
|
|
case "$build_cpu" in
|
|
i386|i486)
|
|
CXXFLAGS="$CXXFLAGS -malign-double -march=i386"
|
|
;;
|
|
i586)
|
|
CXXFLAGS="$CXXFLAGS -malign-double -march=i586 -msse"
|
|
;;
|
|
i686)
|
|
CXXFLAGS="$CXXFLAGS -malign-double -march=i686 -msse2"
|
|
;;
|
|
k6*)
|
|
CXXFLAGS="$CXXFLAGS -malign-double -march=k6 -m3dnow"
|
|
esac
|
|
;;
|
|
icc)
|
|
AC_MSG_RESULT([GNU/Linux (CPU=$build_cpu) using Intel CC])
|
|
case "$build_cpu" in
|
|
i586)
|
|
# Intel Pentium Pro, Intel Pentium II, and Intel Pentium III processors
|
|
CXXFLAGS="$CXXFLAGS -tpp6"
|
|
;;
|
|
i686)
|
|
# Intel Pentium 4 processors
|
|
CXXFLAGS="$CXXFLAGS -tpp7"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT([tvmet has not been tuned for this platform])
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
|
|
dnl Check if the script was called with --enable-debug, and if so
|
|
dnl modify the compilation flags.
|
|
AC_MSG_CHECKING([for compiler debug flags])
|
|
AC_ARG_ENABLE(debug,
|
|
[ --enable-debug enable compiler debug flags],
|
|
[if test "$enableval" = yes; then
|
|
AC_MSG_RESULT([yes])
|
|
CXXFLAGS="$CXXFLAGS $CXX_DEBUG_FLAGS"
|
|
fi], [
|
|
AC_MSG_RESULT([no])
|
|
])
|
|
|
|
|
|
dnl Check if the script was called with --enable-warnings, and if so
|
|
dnl modify the compilation flags.
|
|
AC_MSG_CHECKING([for compiler warn flags])
|
|
AC_ARG_ENABLE(warnings,
|
|
[ --enable-warnings enable compiler warning flags],
|
|
[if test "$enableval" = yes; then
|
|
AC_MSG_RESULT([yes])
|
|
CXXFLAGS="$CXXFLAGS $CXX_WARN_FLAGS"
|
|
fi], [
|
|
AC_MSG_RESULT([no])
|
|
])
|
|
|
|
|
|
dnl doxygen docs
|
|
OP_DOXYGEN_DOC
|
|
|
|
|
|
dnl cppunit support
|
|
oopattern_config_cppunit=yes
|
|
AC_ARG_ENABLE(cppunit,
|
|
[ --disable-cppunit disable unit tests using cppunit],
|
|
oopattern_config_cppunit=$enableval)
|
|
|
|
|
|
dnl check for cppunit for unit tests
|
|
if test x"$oopattern_config_cppunit" = xyes; then
|
|
|
|
dnl Check if we have libcppunit
|
|
AM_PATH_CPPUNIT(1.8.0)
|
|
|
|
if test "x$no_cppunit" = xyes; then
|
|
CONFIG_CPPUNIT=no
|
|
else
|
|
CONFIG_CPPUNIT=yes
|
|
fi
|
|
|
|
fi
|
|
AC_MSG_CHECKING(for libcppunit support)
|
|
if test "x${oopattern_config_cppunit}" = xyes -a "x$CONFIG_CPPUNIT" = xyes; then
|
|
CONFIG_CPPUNIT=yes
|
|
AC_MSG_RESULT([yes])
|
|
else
|
|
CONFIG_CPPUNIT=no
|
|
AC_MSG_RESULT([no])
|
|
fi
|
|
AM_CONDITIONAL(CONFIG_CPPUNIT,[test x"$CONFIG_CPPUNIT" = xyes])
|
|
|
|
|
|
dnl Checks for programs.
|
|
AC_PROG_INSTALL
|
|
AC_PROG_MAKE_SET
|
|
AC_LANG([C++])
|
|
AC_PROG_CXX
|
|
AC_PROG_LN_S
|
|
|
|
|
|
dnl don't be confused, we don't build shared/static libs; it's
|
|
dnl for the head install process only (for build and install
|
|
dnl process from separate build directory)
|
|
AC_PROG_LIBTOOL
|
|
|
|
|
|
dnl Checks for libraries.
|
|
AC_CHECK_LIB(dl, main)
|
|
|
|
|
|
dnl Checks for header files.
|
|
AC_HEADER_STDC
|
|
AC_HEADER_STDBOOL dnl for unit tests
|
|
AC_CHECK_HEADERS([sys/time.h unistd.h])
|
|
|
|
|
|
# Checks for library functions.
|
|
AC_CHECK_FUNCS([floor pow rint sqrt])
|
|
|
|
|
|
dnl Checks for typedefs, structures, and compiler characteristics.
|
|
AC_C_CONST
|
|
AC_C_INLINE
|
|
AC_TYPE_SIZE_T
|
|
AC_STRUCT_TM
|
|
|
|
AC_C_LONG_DOUBLE
|
|
AC_C_LONG_LONG
|
|
AC_C_RESTRICT
|
|
AC_CXX_HAVE_MUTABLE
|
|
AC_CXX_TYPENAME
|
|
AC_CXX_PARTIAL_SPECIALIZATION
|
|
AC_CXX_NAMESPACES
|
|
AC_CXX_HAVE_IEEE_MATH
|
|
AC_CXX_HAVE_SYSV_MATH
|
|
AC_CXX_HAVE_COMPLEX
|
|
AC_CXX_HAVE_COMPLEX_MATH1
|
|
AC_CXX_HAVE_COMPLEX_MATH2
|
|
|
|
|
|
dnl create makefiles
|
|
AC_CONFIG_FILES([
|
|
Makefile
|
|
tvmet-config
|
|
tvmet.spec
|
|
include/Makefile
|
|
include/tvmet/Makefile
|
|
include/tvmet/config/Makefile
|
|
include/tvmet/meta/Makefile
|
|
include/tvmet/loop/Makefile
|
|
include/tvmet/util/Makefile
|
|
include/tvmet/xpr/Makefile
|
|
include/tvmet/config/config-vc71.h
|
|
doc/Makefile
|
|
doc/Doxyfile
|
|
doc/footer.html
|
|
doc/tvmet.sty
|
|
testsuite/Makefile
|
|
tests/Makefile
|
|
examples/Makefile
|
|
benchmark/Makefile
|
|
])
|
|
AC_CONFIG_COMMANDS([default],[[chmod a+x tvmet-config]],[[]])
|
|
AC_OUTPUT
|
|
|
|
|
|
dnl prefixed config header
|
|
AC_CREATE_PREFIX_CONFIG_H([include/tvmet/config.h], $PACKAGE, [config/config.h])
|
|
|
|
|
|
dnl -------------------
|
|
dnl tvmet's user epilog
|
|
dnl -------------------
|
|
echo "
|
|
Configuration for $PACKAGE $VERSION:
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The following optional features are enabled:
|
|
|
|
Source code location : $srcdir
|
|
tvmet's unit-tests available : `if test "x$CONFIG_CPPUNIT" = xyes; then echo yes; else echo no; fi`
|
|
build documentation : `if test "x$CONFIG_DOC" = xyes; then echo yes; else echo no; fi`
|
|
using LaTeX non-stop mode : `if test "x$CONFIG_DOC_LATEX_NONSTOP" = xyes; then echo yes; else echo no; fi`
|
|
graphs and diagrams : `if test "x$DOXYGEN_HAVE_DOT" = xyes; then echo -n yes; else echo no; fi`
|
|
Install path : $prefix
|
|
|
|
Compiler Flags used:
|
|
|
|
CXX : $CXX
|
|
CXXFLAGS : $CXXFLAGS
|
|
|
|
The configure script has generated makefiles for your platform.
|
|
You have several options now:
|
|
|
|
make Depends on configure's flags given, build the docs,
|
|
build $PACKAGE $VERSION and run the regression tests.
|
|
make docs Makes the docs using doxygen (if enabled).
|
|
make check Make the unit tests (if CppUnit available).
|
|
make install Install tvmet.
|
|
make uninstall Uninstall tvmet.
|
|
"
|