]> www.ginac.de Git - cln.git/blobdiff - configure.ac
test_I_io now succeeds on native Windows.
[cln.git] / configure.ac
index e1959c751d8ca2bd07c41193a86ed2fd3b472145..4ef40d1b4046d2d3e3c339d255badbe3f39c1e46 100644 (file)
@@ -1,44 +1,41 @@
-dnl  AUTOCONF configuration for CLN
-dnl
-dnl  configure.ac ---<autoconf>--->> configure
-dnl
-dnl  configure    ---<sh>--->> config.status
-dnl                      --->> include/cln/config.h
-dnl        cln-config.in --->> cln-config
-dnl          Makefile.in --->> Makefile
-dnl      src/Makefile.in --->> src/Makefile
-dnl
-dnl  Makefile   ---<make>--->> libcln.a
-dnl
-dnl
-AC_INIT(src/integer/gcd/cl_I_gcd.cc)
-AC_CONFIG_AUX_DIR(autoconf)
-AC_CONFIG_HEADER(include/cln/config.h include/cln/version.h src/base/cl_base_config.h src/base/cl_gmpconfig.h src/float/cl_float_config.h src/timing/cl_t_config.h)
-AC_PROG_MAKE_SET
-dnl This piece of sed script replaces every line containing '@subdir@'
-dnl by several consecutive lines, each referencing one subdir.
-extrasub="$extrasub"'
-/@subdir@/{
-h
-g
-s/@subdir@/src/
-p
-g
-s/@subdir@/tests/
-p
-g
-s/@subdir@/benchmarks/
-p
-g
-s/@subdir@/examples/
-p
-g
-s/@subdir@/doc/
-p
-d
-}
-'
-dnl
+dnl run autoreconf -iv to produce the configure script.
+
+m4_define([cl_version_major], [1])
+m4_define([cl_version_minor], [3])
+m4_define([cl_version_patchlevel], [5])
+m4_define([cl_version], [cl_version_major.cl_version_minor.cl_version_patchlevel])
+
+dnl Libtool's library version information for CLN.
+dnl (Not to be confused with CLN's release version.)
+dnl Making new releases:
+dnl * increment cl_lt_revision,
+dnl * if any interfaces have been added, removed, or changed, then increment
+dnl   cl_lt_current and set cl_lt_revision to 0,
+dnl * if any interfaces have been added, then increment cl_lt_age,
+dnl * if any interfaces have been removed, set cl_lt_age to 0.
+dnl (On many systems, $(cl_lt_current):$(cl_lt_revision):$(cl_lt_age) results in
+dnl libcln.so.$(cl_lt_current)-$(cl_lt_age).)
+m4_define([cl_lt_current], [6])
+m4_define([cl_lt_revision], [5])
+m4_define([cl_lt_age], [0])
+m4_define([cl_lt_version], [cl_lt_current:cl_lt_revision:cl_lt_age])
+
+AC_INIT([cln], cl_version)
+AC_PREREQ(2.59)
+AC_CONFIG_SRCDIR(src/integer/gcd/cl_I_gcd.cc)
+AC_CONFIG_AUX_DIR([build-aux])
+AC_CONFIG_MACRO_DIR([m4])
+AC_CONFIG_HEADERS(autoconf/cl_config.h include/cln/config.h include/cln/host_cpu.h include/cln/version.h src/base/cl_base_config.h src/base/cl_gmpconfig.h src/timing/cl_t_config.h)
+AM_INIT_AUTOMAKE([foreign 1.10 dist-bzip2 subdir-objects])
+AH_TOP([#ifndef _CL_CONFIG_H])
+AH_TOP([#define _CL_CONFIG_H])
+AH_TOP([#include "cln/host_cpu.h"])
+AH_TOP([/* prevents cln/config.h from being included, so no macro gets redefined */])
+AH_TOP([#define _CL_CONFIG_PUBLIC_H])
+AH_TOP([/* prevents cln/version.h from being included, so no macro gets redefined */])
+AH_TOP([#define _CL_VERSION_H])
+AH_BOTTOM([#endif /* _CL_CONFIG_H */])
+
 dnl           checks for programs
 dnl
 AC_PROG_CC
@@ -51,73 +48,58 @@ AC_PROG_CXXCPP
                       dnl sets variable CXXCPP
 CL_AS_UNDERSCORE
                       dnl sets variable AS_UNDERSCORE, DEFS ASM_UNDERSCORE
-CL_PROG_RANLIB
-                      dnl sets variable RANLIB
-CL_PROG_INSTALL
+CL_AS_NOEXECSTACK
+                      dnl sets variable ASMFLAGS
+AC_PROG_INSTALL
                       dnl sets variables INSTALL, INSTALL_DATA, INSTALL_PROGRAM
 dnl
 dnl           check for host type
 dnl
-CL_CANONICAL_HOST(autoconf)
+CL_CANONICAL_HOST
                       dnl sets variables host, host_cpu, host_vendor, host_os
 CL_CANONICAL_HOST_CPU
                       dnl DEFS __${host_cpu}__
-dnl
-dnl           check for build configuration
-dnl
-                      dnl libcln depends on libm
-PACKAGE=cln
-                      dnl libtool wants PACKAGE
+case $host_os in
+    *mingw*)
+     AC_DISABLE_SHARED
+  dnl Shared libraries are not supported on some platforms [yet]
+    ;;
+    *)
+     AC_ENABLE_SHARED
+    ;;
+esac
 AC_PROG_LIBTOOL
                       dnl sets variable LIBTOOL
 
-dnl Libtool's library version information for CLN.
-dnl (Not to be confused with CLN's release version.)
-dnl Making new releases:
-dnl * increment CL_REVISION,
-dnl * if any functions/classes have been added, removed or changed, increment
-dnl   CL_CURRENT and set CL_REVISION to 0,
-dnl * if any functions/classes have been added, increment CL_AGE,
-dnl * if backwards compatibility has been broken, set CL_AGE to 0.
-CL_CURRENT=2
-CL_REVISION=3
-CL_AGE=0
-dnl make substitutions
-AC_SUBST(CL_CURRENT)
-AC_SUBST(CL_REVISION)
-AC_SUBST(CL_AGE)
+LT_VERSION_INFO=cl_lt_version
+AC_SUBST(LT_VERSION_INFO)
+
 dnl release version
-CL_VERSION_MAJOR=1
-CL_VERSION_MINOR=1
-CL_VERSION_PATCHLEVEL=4
+CL_VERSION_MAJOR=cl_version_major
+CL_VERSION_MINOR=cl_version_minor
+CL_VERSION_PATCHLEVEL=cl_version_patchlevel
 dnl release version for cln/config.h, so it can be tested by the preprocessor
-AC_DEFINE_UNQUOTED(CL_VERSION_MAJOR, $CL_VERSION_MAJOR)
-AC_DEFINE_UNQUOTED(CL_VERSION_MINOR, $CL_VERSION_MINOR)
-AC_DEFINE_UNQUOTED(CL_VERSION_PATCHLEVEL, $CL_VERSION_PATCHLEVEL)
+AC_DEFINE_UNQUOTED(CL_VERSION_MAJOR, $CL_VERSION_MAJOR, [Major version number of CLN])
+AC_DEFINE_UNQUOTED(CL_VERSION_MINOR, $CL_VERSION_MINOR, [Minor version number of CLN])
+AC_DEFINE_UNQUOTED(CL_VERSION_PATCHLEVEL, $CL_VERSION_PATCHLEVEL, [Patchlevel version number of CLN])
 dnl concatenated release version
-CL_VERSION=$CL_VERSION_MAJOR.$CL_VERSION_MINOR.$CL_VERSION_PATCHLEVEL
-AC_DEFINE_UNQUOTED(CL_VERSION, $CL_VERSION)
+CL_VERSION=cl_version
+AC_DEFINE_UNQUOTED(CL_VERSION, $CL_VERSION, [CLN release number])
 AC_SUBST(CL_VERSION)
 
-dnl
 dnl           checks for compiler characteristics
 dnl
-AC_LANG_CPLUSPLUS
+AC_LANG([C++])
+AX_CXX_COMPILE_STDCXX([11], [ext], [optional])
 dnl
-CL_BOOL
-                      dnl DEFS HAVE_BOOL, bool
 CL_LONGLONG
                       dnl DEFS HAVE_LONGLONG
 CL_LONGDOUBLE
                       dnl DEFS HAVE_LONGDOUBLE
-CL_TEMPLATE_NULL
-                      dnl DEFS HAVE_TEMPLATE_NULL
-CL_GLOBAL_CONSTRUCTORS
-                      dnl DEFS CL_GLOBAL_CONSTRUCTOR_PREFIX, CL_GLOBAL_DESTRUCTOR_PREFIX
 dnl
 dnl           checks for header files
 dnl
-CL_UNISTD_H
+AC_CHECK_HEADERS([unistd.h])
                       dnl DEFS HAVE_UNISTD_H if exist unistd.h
 dnl
 dnl           checks for typedefs
@@ -127,58 +109,39 @@ dnl           checks for functions and declarations
 dnl
 CL_ALLOCA
                       dnl set variable ALLOCA, DEFS NO_ALLOCA
-CL_FPU_CONTROL
-                      dnl DEFS HAVE_FPU_CONTROL_T, HAVE_SETFPUCW
 CL_GETTIMEOFDAY
                       dnl DEFS HAVE_GETTIMEOFDAY, GETTIMEOFDAY_DOTS, GETTIMEOFDAY_TZP_T
-CL_FTIME
-                      dnl DEFS HAVE_FTIME
-CL_TIMES_CLOCK
-                      dnl DEFS HAVE_TIMES_CLOCK
+ac_cv_func_ftime=no
+                      dnl don't use ftime(3) even if it's available
 CL_RUSAGE
                       dnl DEFS HAVE_SYS_RESOURCE_H, HAVE_GETRUSAGE, HAVE_SYS_TIMES_H
 CL_PERROR
                       dnl DEFS HAVE_PERROR_DECL
+CL_ATTRIBUTE_FLATTEN
+                      dnl DEFS CL_HAVE_ATTRIBUTE_FLATTEN
 dnl
 dnl           checks for compiler characteristics
 dnl
-CL_CHAR_UNSIGNED
+AC_C_CHAR_UNSIGNED
                       dnl DEFS __CHAR_UNSIGNED__ if char is unsigned
-test -d 'include/cln' || mkdir -p 'include/cln'
-CL_MACHINE([integer types and behaviour],${srcdir}/autoconf/intparam.c,include/cln/intparam.h,cl_cv_file_intparam_h)
+
+dnl Create a subdirectory in the ${top_builddir} to hold auto-generated
+dnl headers. This subdirectory does not exist when ${top_builddir} != ${top_srcdir}
+dnl (a.k.a. "VPATH build").
+if test ! -d include/cln; then
+       AS_MKDIR_P([include/cln])
+fi
+CL_MACHINE([integer types and behaviour],${srcdir}/autoconf/intparam.c,[CL_INTPARAM_CROSS],include/cln/intparam.h,cl_cv_file_intparam_h)
                       dnl builds include/cln/intparam.h
-CL_MACHINE([floating-point types and behaviour],${srcdir}/autoconf/floatparam.c,include/cln/floatparam.h,cl_cv_file_floatparam_h)
+CL_MACHINE([floating-point types and behaviour],${srcdir}/autoconf/floatparam.c,[CL_FLOATPARAM_CROSS],include/cln/floatparam.h,cl_cv_file_floatparam_h)
                       dnl builds include/cln/floatparam.h
-dnl
-dnl           interfacing to GNU gmp (must be at least version 3)
-dnl
-AC_ARG_WITH(gmp, [  --with-gmp              use external fast low-level functions from GNU MP 3.
-                          [default=yes]], ,with_gmp="yes")
-if test "$with_gmp" = yes; then
-  CL_GMP_H_VERSION
-  if test "$cl_cv_new_gmp_h" = no; then with_gmp="no"; fi
-  if test "$with_gmp" = yes; then
-    CL_GMP_CHECK
-    if test "$cl_cv_new_libgmp" = no; then with_gmp="no"; fi
-  fi
-fi
-if test "$with_gmp" = yes; then
-  CL_GMP_SET_UINTD
-  AC_DEFINE(CL_USE_GMP)
-else
-  AC_MSG_WARN([disabling external GNU MP library])
-fi
+CL_LIBGMP
+                      dnl DEFS CL_USE_GMP, GMP_DEMANDS_UINTD_*
+
+CLNLIB_LIBS='-L${libdir} -lcln'
+AC_LIB_LINKFLAGS_FROM_LIBS([CLNLIB_RPATH], [$CLNLIB_LIBS])
+
 dnl
 dnl           That's it.
 dnl
-for f in 'tests/.gdbinit'; do
-  if test '!' -f "$f"; then
-    echo "creating $f"
-changequote(,)dnl
-    g=`echo "$f" | sed -e 's,/[^/]*$,,'`
-changequote([,])dnl
-    test "$g" = "$f" || test -d "$g" || mkdir "$g"
-    cp "$srcdir/$f" "$f"
-  fi
-done
-AC_OUTPUT([Makefile src/Makefile tests/Makefile benchmarks/Makefile examples/Makefile doc/Makefile cln-config cln-config.1 cln.spec], [chmod +x cln-config])
+AC_OUTPUT([Makefile src/Makefile tests/Makefile examples/Makefile doc/Makefile benchmarks/Makefile cln.spec cln.pc])