2 # Process this file with autoconf to produce a configure script.
4 m4_define(_CVC4_MAJOR, 1) dnl version (major)
5 m4_define(_CVC4_MINOR, 4) dnl version (minor)
6 m4_define(_CVC4_RELEASE, 0) dnl version (alpha)
7 m4_define(_CVC4_EXTRAVERSION, [-prerelease]) dnl version (extra)
8 m4_define(_CVC4_RELEASE_STRING, _CVC4_MAJOR[.]_CVC4_MINOR[]m4_if(_CVC4_RELEASE,[0],,[.]_CVC4_RELEASE)_CVC4_EXTRAVERSION) dnl version string
10 dnl Preprocess CL args. Defined in config/cvc4.m4
14 AC_INIT([cvc4], _CVC4_RELEASE_STRING, [cvc-bugs@cs.nyu.edu])
15 AC_CONFIG_SRCDIR([src/include/cvc4_public.h])
16 AC_CONFIG_AUX_DIR([config])
17 AC_CONFIG_MACRO_DIR([config])
18 AC_CONFIG_LIBOBJ_DIR([src/lib])
19 AC_CONFIG_SUBDIRS([proofs/lfsc_checker])
21 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])
23 CVC4_MAJOR=_CVC4_MAJOR
24 CVC4_MINOR=_CVC4_MINOR
25 CVC4_RELEASE=_CVC4_RELEASE
26 CVC4_EXTRAVERSION=_CVC4_EXTRAVERSION
27 CVC4_RELEASE_STRING=_CVC4_RELEASE_STRING
29 # Libtool version numbers for libraries
30 # Version numbers are in the form current:revision:age
33 # increment if interfaces have been added, removed or changed
35 # increment if source code has changed
36 # set to zero if current is incremented
38 # increment if interfaces have been added
39 # set to zero if interfaces have been removed
42 # For more information, see:
43 # http://www.gnu.org/software/libtool/manual/libtool.html#Versioning
44 # For guidance on when to change the version number, refer to the
47 m4_define([library_version], [m4_esyscmd([grep -F "$(grep -v '^#' library_versions | awk '{print$][1}' | sed 's,\\,\\\\\\,g' | (while read r; do if echo "]_CVC4_RELEASE_STRING[" | grep -q "^$r\$"; then echo "$r"; exit; fi; done; echo NO_MATCH_FOUND)) " library_versions | awk 'BEGIN {FS=":";OFS=":";RS=" "} /^$1:/ {print$][2,$][3,$][4}' | head -1])])
49 m4_define(_CVC4_LIBRARY_VERSION, library_version([libcvc4]))dnl
50 m4_define(_CVC4_PARSER_LIBRARY_VERSION, library_version([libcvc4parser]))dnl
51 m4_define(_CVC4_COMPAT_LIBRARY_VERSION, library_version([libcvc4compat]))dnl
52 m4_define(_CVC4_BINDINGS_LIBRARY_VERSION, library_version([libcvc4bindings]))dnl
54 m4_define([fatal_error], [m4_errprint(__program__:__file__:__line__[: fatal error: $*
57 m4_ifblank(_CVC4_LIBRARY_VERSION,[fatal_error([no CVC4_LIBRARY_VERSION defined for release version "]_CVC4_RELEASE_STRING[" in library_versions file])])dnl
58 m4_ifblank(_CVC4_PARSER_LIBRARY_VERSION,[fatal_error([no CVC4_PARSER_LIBRARY_VERSION defined for release version "]_CVC4_RELEASE_STRING[" in library_versions file])])dnl
59 m4_ifblank(_CVC4_COMPAT_LIBRARY_VERSION,[fatal_error([no CVC4_COMPAT_LIBRARY_VERSION defined for release version "]_CVC4_RELEASE_STRING[" in library_versions file])])dnl
60 m4_ifblank(_CVC4_BINDINGS_LIBRARY_VERSION,[fatal_error([no CVC4_BINDINGS_LIBRARY_VERSION defined for release version "]_CVC4_RELEASE_STRING[" in library_versions file])])dnl
62 CVC4_LIBRARY_VERSION=_CVC4_LIBRARY_VERSION
63 CVC4_PARSER_LIBRARY_VERSION=_CVC4_PARSER_LIBRARY_VERSION
64 CVC4_COMPAT_LIBRARY_VERSION=_CVC4_COMPAT_LIBRARY_VERSION
65 CVC4_BINDINGS_LIBRARY_VERSION=_CVC4_BINDINGS_LIBRARY_VERSION
67 # Using the AC_CANONICAL_* macros destroy the command line you get
68 # from $@, which we want later for determining the build profile. So
69 # we save it. (We can't do our build profile stuff here, or it's not
70 # included in the output... autoconf overrides us on the orderings of
73 cvc4_config_cmdline="${config_cmdline[[@]]}"
75 # remember if the user set these explicitly (or whether autoconf does)
76 user_specified_enable_or_disable_static=${enable_static+yes}
77 user_specified_enable_or_disable_shared=${enable_shared+yes}
79 if test -e src/include/cvc4_public.h; then
80 CVC4_CONFIGURE_AT_TOP_LEVEL=yes
82 CVC4_CONFIGURE_AT_TOP_LEVEL=no
85 # override autoconf: we don't want it giving us CFLAGS/CXXFLAGS, but we do
86 # want to respect the user's flags
87 if test -z "${CFLAGS+set}"; then CFLAGS=; fi
88 if test -z "${CXXFLAGS+set}"; then CXXFLAGS=; fi
91 AM_MAINTAINER_MODE([enable])
93 # turn off static lib building by default
103 if test "$enable_shared" = no -a "$user_specified_enable_or_disable_shared" = yes; then
107 # Features requested by the user
108 AC_MSG_CHECKING([for requested build profile])
110 [AS_HELP_STRING([--with-build=profile],
111 [for profile in {production,debug,competition,personal}])])
113 if test -z "${with_build+set}"; then
114 with_build=production
116 if test -z "${enable_optimized+set}" -a -z "${enable_debug_symbols+set}" -a -z "${enable_assertions+set}" -a -z "${enable_tracing+set}" -a -z "${enable_dumping+set}" -a -z "${enable_muzzle+set}" -a -z "${enable_coverage+set}" -a -z "${enable_profiling+set}" -a -z "${enable_statistics+set}" -a -z "${enable_replay+set}" -a -z "${with_gmp+set}" -a -z "${with_cln+set}" -a -z "${with_glpk+set}"; then
117 custom_build_profile=no
119 custom_build_profile=yes
122 if test -n "${enable_optimized+set}"; then
123 if test "$enable_optimized" = yes; then
124 btargs="$btargs optimized"
126 btargs="$btargs nooptimized"
129 if test -n "${enable_static_binary+set}"; then
130 if test "$enable_static_binary" = yes; then
131 btargs="$btargs staticbinary"
133 btargs="$btargs nostaticbinary"
136 if test -n "${enable_debug_symbols+set}"; then
137 if test "$enable_debug_symbols" = yes; then
138 btargs="$btargs debugsymbols"
140 btargs="$btargs nodebugsymbols"
143 if test -n "${enable_assertions+set}"; then
144 if test "$enable_assertions" = yes; then
145 btargs="$btargs assertions"
147 btargs="$btargs noassertions"
150 if test -n "${enable_proof+set}"; then
151 if test "$enable_proof" = yes; then
152 btargs="$btargs proof"
154 btargs="$btargs noproof"
157 if test -n "${enable_tracing+set}"; then
158 if test "$enable_tracing" = yes; then
159 btargs="$btargs tracing"
161 btargs="$btargs notracing"
164 if test -n "${enable_dumping+set}"; then
165 if test "$enable_dumping" = yes; then
166 btargs="$btargs dumping"
168 btargs="$btargs nodumping"
171 if test -n "${enable_muzzle+set}"; then
172 if test "$enable_muzzle" = yes; then
173 btargs="$btargs muzzle"
175 btargs="$btargs nomuzzle"
178 if test -n "${enable_coverage+set}"; then
179 if test "$enable_coverage" = yes; then
180 btargs="$btargs coverage"
182 btargs="$btargs nocoverage"
185 if test -n "${enable_profiling+set}"; then
186 if test "$enable_profiling" = yes; then
187 btargs="$btargs profiling"
189 btargs="$btargs noprofiling"
192 if test -n "${enable_statistics+set}"; then
193 if test "$enable_statistics" = yes; then
194 btargs="$btargs statistics"
196 btargs="$btargs nostatistics"
199 if test -n "${enable_replay+set}"; then
200 if test "$enable_replay" = yes; then
201 btargs="$btargs replay"
203 btargs="$btargs noreplay"
206 if test -n "${with_glpk+set}"; then
207 if test "$with_glpk" = yes; then
208 btargs="$btargs glpk"
211 AC_MSG_RESULT([$with_build])
213 AM_INIT_AUTOMAKE([1.11 no-define tar-pax parallel-tests color-tests subdir-objects])
214 AC_CONFIG_HEADERS([cvc4autoconfig.h])
216 # automake 1.12 changes the test driver mechanism in a way that is
217 # completely incompatible with 1.11. We figure out here which version
218 # we're using in order to set up test makefiles correctly.
219 # See http://lists.gnu.org/archive/html/automake/2012-04/msg00060.html
220 if test -z "$am__api_version"; then
221 AC_MSG_ERROR([Cannot determine automake API version ?!])
223 case "$am__api_version" in
224 1.11*) automake111=true ;;
225 *) automake111=false ;;
227 AM_CONDITIONAL([AUTOMAKE_1_11], [$automake111])
229 # Initialize libtool's configuration options.
230 # we're not DLL-clean yet (i.e., don't properly use dllexport and dllimport)
231 # _LT_SET_OPTION([LT_INIT],[win32-dll])
234 # Checks for programs.
248 [use CLN instead of GMP]
251 y|ye|yes|Y|YE|YES) cvc4_use_cln=1 ;;
252 n|no|N|NO) cvc4_use_cln=0 ;;
257 # [chris 8/24/2010] --with-gmp has no practical effect, since GMP is
258 # the default. Could be useful if other options are added later.
264 [use GMP instead of CLN]
267 y|ye|yes|Y|YE|YES) cvc4_use_gmp=1 ;;
268 n|no|N|NO) cvc4_use_gmp=0 ;;
273 if test $cvc4_use_cln = 1 -a $cvc4_use_gmp = 1 || test $cvc4_use_cln = 0 -a $cvc4_use_gmp = 0; then
274 AC_MSG_ERROR([You must use either CLN and GMP. Please pick one.])
276 if test $cvc4_use_gmp = 1; then
278 elif test $cvc4_use_gmp = 0; then
280 elif test $cvc4_use_cln = 1; then
282 elif test $cvc4_use_cln = 0; then
286 # try GMP, fail if not found; GMP is required for both CLN and for GMP
288 AC_CHECK_LIB(gmp, __gmpz_init, , [AC_MSG_ERROR([GNU MP (libgmp) not found, see http://gmplib.org/])])
290 if test $cvc4_use_cln = 2; then
291 if test "$CVC4_BSD_LICENSED_CODE_ONLY" = 1 -o "$with_portfolio" = yes; then
297 if test $cvc4_use_cln != 0; then
298 # [mdeters] The PKG_CHECK_MODULES macro isn't customizable and doesn't fail
299 # gracefully. You can only specify it once for a given library name. That
300 # is, even on separate if/else branches, you can't put
301 # PKG_CHECK_MODULES([CLN], ...). That's why things are so convoluted here,
302 # we have to have PKG_CHECK_MODULES _exactly_ once in configure.ac !
303 PKG_CHECK_MODULES([CLN], [cln >= 1.2.2],
306 LIBS="$CLN_LIBS $LIBS"
307 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cln/cln.h>]], [[cln::cl_F pi = "3.1415926";]])], [
310 if test $cvc4_use_cln = 1; then
312 AC_MSG_ERROR([CLN installation missing, too old, or not functional for this architecture])
315 AC_MSG_NOTICE([CLN installation missing, too old, or not functional for this architecture, will use gmp instead])
323 [if test $cvc4_use_cln = 1; then
325 AC_MSG_ERROR([CLN not installed (or too old) or pkgconfig missing])
328 AC_MSG_NOTICE([CLN not installed (or too old) or pkgconfig missing, will use gmp])
335 if test $cvc4_use_cln = 0; then
336 # try GMPXX, fail if not found
337 AC_CHECK_LIB(gmpxx, __gmpz_init, , [AC_MSG_ERROR([GNU MP C++ library (libgmpxx) not found, see http://gmplib.org/])])
340 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }$CLN_CFLAGS"
341 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }$CLN_CFLAGS"
342 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }$CLN_CFLAGS"
343 LIBS="$CLN_LIBS${LIBS:+ $LIBS}"
347 if test $cvc4_cln_or_gmp = cln; then
348 AC_DEFINE_UNQUOTED(CVC4_CLN_IMP, [], [Defined if using the CLN multi-precision arithmetic library.])
350 AC_DEFINE_UNQUOTED(CVC4_GMP_IMP, [], [Defined if using the GMP multi-precision arithmetic library.])
352 AM_CONDITIONAL([CVC4_CLN_IMP], [test $cvc4_cln_or_gmp = cln])
353 AM_CONDITIONAL([CVC4_GMP_IMP], [test $cvc4_cln_or_gmp = gmp])
355 # construct the build string
356 AC_MSG_CHECKING([for appropriate build string])
357 if test -z "$ac_confdir"; then
360 build_type=`$ac_confdir/config/build-type $with_build $btargs $cvc4_cln_or_gmp`
361 AC_MSG_RESULT($build_type)
363 # Require building in target and build-specific build directory:
365 # If the configure script is invoked from the top-level source
366 # directory, it creates a suitable build directory (based on the build
367 # architecture and build profile from $build_type), changes into it,
368 # and reinvokes itself. CVC4_CONFIGURE_IN_BUILDS is an envariable
369 # that breaks any possibility of infinite recursion in this process.
370 AC_MSG_CHECKING([what dir to configure])
371 if test "$CVC4_CONFIGURE_IN_BUILDS" = yes; then
372 AC_MSG_RESULT([this one (in builds/)])
373 elif test "$CVC4_CONFIGURE_AT_TOP_LEVEL" = yes; then
374 AC_MSG_RESULT([builds/$target/$build_type])
376 if test -z "$ac_srcdir"; then
377 mkbuilddir=./config/mkbuilddir
379 mkbuilddir=$ac_srcdir/config/mkbuilddir
381 $as_echo "$mkbuilddir $target $build_type"
382 source $mkbuilddir "$target" "$build_type"
383 $as_echo "cd builds/$target/$build_type"
384 cd "builds/$target/$build_type"
385 CVC4_CONFIGURE_IN_BUILDS=yes; export CVC4_CONFIGURE_IN_BUILDS
386 echo "$SHELL ../../../configure ${config_cmdline[[@]]}"
387 "$SHELL" "`pwd`/../../../configure" "${config_cmdline[[@]]}"
390 if test $exitval -eq 0; then
391 cat >config.reconfig <<EOF
393 # Generated by configure, `date`
394 # This script is part of CVC4.
396 cd "\`dirname \\"\$0\\"\`"
398 if test -d builds; then :; else echo 'No builds/ directory!' >&2; exit; fi
400 current=(\`grep '^CURRENT_BUILD' builds/current | sed 's,^CURRENT_BUILD *= *\([^/]*\\)/\\(.*\\),\\1 \\2,'\`)
404 echo "reconfiguring in builds/\$arch/\$build..."
405 cd "builds/\$arch/\$build"
406 echo ./config.status "\$@"
407 ./config.status "\$@"]
409 chmod +x config.reconfig
411 ln -sf "$target/$build_type/config.log" "builds/config.log"
414 AC_MSG_RESULT([this one (user-specified)])
419 # Unpack standard build types. Any particular options can be overriden with
420 # --enable/disable-X options
421 case "$with_build" in
422 production) # highly optimized, no assertions, no tracing, dumping
427 FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
428 if test -z "${OPTLEVEL+set}" ; then OPTLEVEL=3 ; fi
429 if test -z "${enable_optimized+set}" ; then enable_optimized=yes ; fi
430 if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes ; fi
431 if test -z "${enable_statistics+set}" ; then enable_statistics=yes ; fi
432 if test -z "${enable_replay+set}" ; then enable_replay=no ; fi
433 if test -z "${enable_assertions+set}" ; then enable_assertions=no ; fi
434 if test -z "${enable_proof+set}" ; then enable_proof=no ; fi
435 if test -z "${enable_tracing+set}" ; then enable_tracing=no ; fi
436 if test -z "${enable_dumping+set}" ; then enable_dumping=yes ; fi
437 if test -z "${enable_muzzle+set}" ; then enable_muzzle=no ; fi
439 debug) # unoptimized, debug symbols, assertions, tracing, dumping
440 CVC4CPPFLAGS='-DCVC4_DEBUG'
441 CVC4CXXFLAGS='-fno-inline'
442 CVC4CFLAGS='-fno-inline'
444 FLAG_VISIBILITY_HIDDEN=
445 if test -z "${enable_optimized+set}" ; then enable_optimized=no ; fi
446 if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes ; fi
447 if test -z "${enable_statistics+set}" ; then enable_statistics=yes ; fi
448 if test -z "${enable_replay+set}" ; then enable_replay=yes ; fi
449 if test -z "${enable_assertions+set}" ; then enable_assertions=yes ; fi
450 if test -z "${enable_proof+set}" ; then enable_proof=no ; fi
451 if test -z "${enable_tracing+set}" ; then enable_tracing=yes ; fi
452 if test -z "${enable_dumping+set}" ; then enable_dumping=yes ; fi
453 if test -z "${enable_muzzle+set}" ; then enable_muzzle=no ; fi
455 default) # moderately optimized, assertions, tracing, dumping
460 FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
461 if test -z "${OPTLEVEL+set}" ; then OPTLEVEL=2 ; fi
462 if test -z "${enable_optimized+set}" ; then enable_optimized=yes ; fi
463 if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes ; fi
464 if test -z "${enable_statistics+set}" ; then enable_statistics=yes ; fi
465 if test -z "${enable_replay+set}" ; then enable_replay=yes ; fi
466 if test -z "${enable_assertions+set}" ; then enable_assertions=yes ; fi
467 if test -z "${enable_proof+set}" ; then enable_proof=no ; fi
468 if test -z "${enable_tracing+set}" ; then enable_tracing=yes ; fi
469 if test -z "${enable_dumping+set}" ; then enable_dumping=yes ; fi
470 if test -z "${enable_muzzle+set}" ; then enable_muzzle=no ; fi
472 competition) # maximally optimized, no assertions, no tracing, no dumping, muzzled
473 CVC4CPPFLAGS='-DCVC4_COMPETITION_MODE'
474 CVC4CXXFLAGS='-funroll-all-loops -fexpensive-optimizations -fno-enforce-eh-specs'
475 CVC4CFLAGS='-funroll-all-loops -fexpensive-optimizations -fno-enforce-eh-specs'
477 FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
478 if test -z "${OPTLEVEL+set}" ; then OPTLEVEL=9 ; fi
479 if test -z "${enable_optimized+set}" ; then enable_optimized=yes ; fi
480 if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=no ; fi
481 if test -z "${enable_statistics+set}" ; then enable_statistics=no ; fi
482 if test -z "${enable_replay+set}" ; then enable_replay=no ; fi
483 if test -z "${enable_assertions+set}" ; then enable_assertions=no ; fi
484 if test -z "${enable_proof+set}" ; then enable_proof=no ; fi
485 if test -z "${enable_tracing+set}" ; then enable_tracing=no ; fi
486 if test -z "${enable_dumping+set}" ; then enable_dumping=no ; fi
487 if test -z "${enable_muzzle+set}" ; then enable_muzzle=yes ; fi
488 if test -z "${user_specified_enable_or_disable_shared}"; then enable_shared=no; fi
489 if test -z "${user_specified_enable_or_disable_static}"; then enable_static=yes; fi
490 if test -z "${enable_static_binary+set}"; then enable_static_binary=yes ; fi
493 AC_MSG_FAILURE([unknown build profile: $with_build])
496 if test -z "${OPTLEVEL+set}"; then OPTLEVEL=3; fi
498 AM_CONDITIONAL([CVC4_BUILD_PROFILE_PRODUCTION], [test "$with_build" = production])
499 AM_CONDITIONAL([CVC4_BUILD_PROFILE_DEBUG], [test "$with_build" = debug])
500 AM_CONDITIONAL([CVC4_BUILD_PROFILE_DEFAULT], [test "$with_build" = default])
501 AM_CONDITIONAL([CVC4_BUILD_PROFILE_COMPETITION], [test "$with_build" = competition])
503 # permit a static binary
504 AC_MSG_CHECKING([whether to build a static binary])
505 AC_ARG_ENABLE([static-binary],
506 [AS_HELP_STRING([--enable-static-binary],
507 [build a fully statically-linked binary [default=no]])])
508 if test -z "${enable_static_binary+set}"; then
509 enable_static_binary=no
511 AC_MSG_RESULT([$enable_static_binary])
512 if test "$enable_static_binary" = yes; then
513 if test "$target_vendor" = apple; then
514 if test -z "$MAC_STATIC_BINARY_MANUAL_OVERRIDE"; then
515 AC_MSG_ERROR([[Statically-linked binaries are not supported on Mac OS. See https://developer.apple.com/library/mac/#qa/qa2001/qa1118.html . (If you ABSOLUTELY insist on this going forward and you know what you are doing, set MAC_STATIC_BINARY_MANUAL_OVERRIDE=1)]])
517 AC_MSG_WARN([MAC_STATIC_BINARY_MANUAL_OVERRIDE was set!])
518 AC_MSG_WARN([Will make a static binary during this build. Note that it may fail!])
521 if test "$enable_static" != yes; then
523 AC_MSG_WARN([forcing static-library building, --enable-static-binary given])
527 AC_MSG_CHECKING([whether to support proofs in libcvc4])
529 AC_ARG_ENABLE([proof],
530 [AS_HELP_STRING([--enable-proof],
531 [support proof generation])])
532 if test -z "${enable_proof+set}"; then
535 AC_MSG_RESULT([$enable_proof])
537 if test "$enable_proof" = yes; then
538 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PROOF"
540 AM_CONDITIONAL([CVC4_PROOF], [test "$enable_proof" = yes])
542 AC_MSG_CHECKING([whether to optimize libcvc4])
544 AC_ARG_ENABLE([optimized],
545 [AS_HELP_STRING([--enable-optimized],
546 [optimize the build])])
548 if test -z "${enable_optimized+set}"; then
552 AC_MSG_RESULT([$enable_optimized])
554 if test "$enable_optimized" = yes; then
555 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-O$OPTLEVEL"
556 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-O$OPTLEVEL"
558 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-O0"
559 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-O0"
562 AC_MSG_CHECKING([whether to include debugging symbols in libcvc4])
564 AC_ARG_ENABLE([debug-symbols],
565 [AS_HELP_STRING([--disable-debug-symbols],
566 [do not include debug symbols in libcvc4])])
568 if test -z "${enable_debug_symbols+set}"; then
569 enable_debug_symbols=yes
572 AC_MSG_RESULT([$enable_debug_symbols])
574 if test "$enable_debug_symbols" = yes; then
575 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-ggdb3"
576 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-ggdb3"
579 AC_MSG_CHECKING([whether to include statistics are turned on in libcvc4])
581 AC_ARG_ENABLE([statistics],
582 [AS_HELP_STRING([--disable-statistics],
583 [do not include statistics in libcvc4])])
585 if test -z "${enable_statistics+set}"; then
586 enable_statistics=yes
589 AC_MSG_RESULT([$enable_statistics])
591 if test "$enable_statistics" = yes; then
592 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_STATISTICS_ON"
595 AC_MSG_CHECKING([whether the replay feature should be turned on in libcvc4])
597 AC_ARG_ENABLE([replay],
598 [AS_HELP_STRING([--disable-replay],
599 [turn off the replay feature in libcvc4])])
601 if test -z "${enable_replay+set}"; then
605 AC_MSG_RESULT([$enable_replay])
607 if test "$enable_replay" = yes; then
608 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_REPLAY"
611 AC_MSG_CHECKING([whether to include assertions in build])
613 AC_ARG_ENABLE([assertions],
614 [AS_HELP_STRING([--disable-assertions],
615 [turn off assertions in build])])
617 if test -z "${enable_assertions+set}"; then
618 enable_assertions=yes
621 AC_MSG_RESULT([$enable_assertions])
623 if test "$enable_assertions" = yes; then
624 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_ASSERTIONS"
626 # turn off regular C assert() also
627 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DNDEBUG"
630 AC_MSG_CHECKING([whether to do a traceable build of CVC4])
631 AC_ARG_ENABLE([tracing],
632 [AS_HELP_STRING([--disable-tracing],
633 [remove all tracing code from CVC4])])
635 if test -z "${enable_tracing+set}"; then
639 AC_MSG_RESULT([$enable_tracing])
641 if test "$enable_tracing" = yes; then
642 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_TRACING"
645 AC_MSG_CHECKING([whether to do a dump-capable build of CVC4])
646 AC_ARG_ENABLE([dumping],
647 [AS_HELP_STRING([--disable-dumping],
648 [remove all dumping code from CVC4])])
650 if test -z "${enable_dumping+set}"; then
654 AC_MSG_RESULT([$enable_dumping])
656 if test "$enable_dumping" = yes; then
657 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_DUMPING"
660 AC_MSG_CHECKING([whether to do a muzzled build of CVC4])
661 AC_ARG_ENABLE([muzzle],
662 [AS_HELP_STRING([--enable-muzzle],
663 [completely silence CVC4; remove ALL non-result output from build])])
665 if test -z "${enable_muzzle+set}"; then
669 AC_MSG_RESULT([$enable_muzzle])
671 if test "$enable_muzzle" = yes; then
672 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_MUZZLE"
675 AC_MSG_CHECKING([whether to do a gcov-enabled build of CVC4])
676 AC_ARG_ENABLE([coverage],
677 [AS_HELP_STRING([--enable-coverage],
678 [build with support for gcov coverage testing])])
680 if test -z "${enable_coverage+set}"; then
684 AC_MSG_RESULT([$enable_coverage])
686 if test "$enable_coverage" = yes; then
687 # For coverage testing, we prefer:
688 # --enable-static --disable-shared --disable-static-binary
689 # If the user didn't specify these, we force them here. If the
690 # user specified them in opposite phase, give warnings that they
691 # shouldn't do that, or bomb out.
692 if test "$user_specified_enable_or_disable_shared" != yes; then
694 AC_MSG_WARN([turning off shared library building due to --enable-coverage])
695 elif test "$enable_shared" = yes; then
697 AC_MSG_WARN([It is not recommended to configure with --enable-coverage --enable-shared])
698 AC_MSG_WARN([gcov does not support shared libraries, so only your static libraries will be coverage-testable.])
699 AC_MSG_WARN([Your cvc4 driver and testing binaries will not be coverage-testable.])
702 if test "${enable_static_binary+set}" = set -a "$enable_static_binary" = yes; then
704 AC_MSG_WARN([It is not recommended to configure with --enable-coverage --enable-static-binary])
705 AC_MSG_WARN([Your cvc4 driver and testing binaries will be fully-statically linked and may not be coverage-testable.])
708 if test "$user_specified_enable_or_disable_static" != yes; then
710 AC_MSG_WARN([turning on static library building due to --enable-coverage])
711 elif test "$enable_static" != yes; then
712 AC_MSG_ERROR([--enable-coverage and --disable-static are incompatible; gcov only supports static libraries.])
715 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_COVERAGE"
716 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }--coverage"
717 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }--coverage"
718 CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }--coverage"
721 AC_MSG_CHECKING([whether to do a profiling-enabled build of CVC4])
723 AC_ARG_ENABLE([profiling],
724 [AS_HELP_STRING([--enable-profiling],
725 [build with support for gprof profiling])])
727 if test -z "${enable_profiling+set}"; then
731 AC_MSG_RESULT([$enable_profiling])
733 if test "$enable_profiling" = yes; then
734 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PROFILING"
735 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-pg"
736 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-pg"
737 CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }-pg"
740 # Check for libglpk (defined in config/glpk.m4)
742 [AS_HELP_STRING([--with-glpk],
743 [use GLPK simplex solver])], [], [with_glpk=])
745 if test $have_libglpk -eq 1; then
746 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_USE_GLPK"
748 AM_CONDITIONAL([CVC4_USE_GLPK], [test $have_libglpk -eq 1])
749 AC_SUBST([GLPK_LIBS])
755 [use the ABC AIG library]
758 y|ye|yes|Y|YE|YES) cvc4_use_abc=1 ;;
759 n|no|N|NO) cvc4_use_abc=0 ;;
764 if test $cvc4_use_abc -eq 1; then
765 # must add dl and pthread separately and before abc
766 AC_CHECK_LIB(dl, dlopen, , [AC_MSG_ERROR([dl not found])], [])
767 AC_CHECK_LIB(pthread, pthread_create, , [AC_MSG_ERROR([pthread not found])], [])
768 AC_CHECK_LIB(abc, Abc_Start, , [AC_MSG_ERROR([abc not found])], [-lm -ldl -rdynamic -lreadline -ltermcap -lpthread -lrt -ldl])
769 AC_DEFINE_UNQUOTED(CVC4_USE_ABC, [], [Defined if linked against the ABC AIG library.])
772 # Check to see if this version/architecture of GNU C++ explicitly
773 # instantiates __gnu_cxx::hash<uint64_t> or not. Some do, some don't.
774 # See src/util/hash.h.
775 AC_MSG_CHECKING([whether __gnu_cxx::hash<uint64_t> is already specialized])
777 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
779 #include <ext/hash_map>
780 namespace __gnu_cxx { template<> struct hash<uint64_t> {}; }])],
781 [AC_MSG_RESULT([no]); CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_NEED_HASH_UINT64_T"],
782 [AC_MSG_RESULT([yes])])
785 # Check whether "long" and "int64_t" are distinct types w.r.t. overloading.
786 # Even if they have the same size, they can be distinct, and some platforms
787 # can have problems with ambiguous function calls when auto-converting
788 # int64_t to long, and others will complain if you overload a function
789 # that takes an int64_t with one that takes a long (giving a redefinition
790 # error). So we have to keep both happy. Probably the same underlying
791 # issue as the hash specialization above, but let's check separately
793 AC_MSG_CHECKING([for the relationship between long and int64_t])
795 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
798 void foo(int64_t) {}])],
799 [AC_MSG_RESULT([no relationship detected]); CVC4_NEED_INT64_T_OVERLOADS=1],
800 [AC_MSG_RESULT([typedef or similar]); CVC4_NEED_INT64_T_OVERLOADS=0])
802 AC_SUBST([CVC4_NEED_INT64_T_OVERLOADS])
804 AC_MSG_CHECKING([for the pb_ds namespace])
806 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
807 #include <ext/pb_ds/priority_queue.hpp>
808 typedef pb_ds::priority_queue<void, void, void> pq;])],
809 [CVC4_PB_DS_NAMESPACE=pb_ds],
810 [AC_COMPILE_IFELSE([AC_LANG_SOURCE([
811 #include <ext/pb_ds/priority_queue.hpp>
812 typedef __gnu_pbds::priority_queue<void, void, void> pq;])],
813 [CVC4_PB_DS_NAMESPACE=__gnu_pbds],
814 [AC_MSG_ERROR([cannot find required priority_queue in either __gnu_pbds or pb_ds namespace.
816 If you're using a non-GCC compiler (such as clang), you may need to explicitly
817 use the GNU standard C++ library by passing:
818 CXXFLAGS='-stdlib=libstdc++' CPPFLAGS='-stdlib=libstdc++'
819 as arguments to this configure script.
820 This is the case on Mac OS Mavericks, for example.])])])
822 AC_MSG_RESULT([$CVC4_PB_DS_NAMESPACE])
823 AC_DEFINE_UNQUOTED(CVC4_PB_DS_NAMESPACE, ${CVC4_PB_DS_NAMESPACE}, [The namespace for pb_ds data structures.])
825 # for information: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36612
826 AC_MSG_CHECKING([whether pb_ds has bug 36612])
828 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
829 #define __throw_container_error inline __throw_container_error
830 #define __throw_insert_error inline __throw_insert_error
831 #define __throw_join_error inline __throw_join_error
832 #define __throw_resize_error inline __throw_resize_error
833 #include <ext/pb_ds/exception.hpp>
835 [CVC4_GCC_HAS_PB_DS_BUG=1; bugverb=is],
836 [CVC4_GCC_HAS_PB_DS_BUG=0; bugverb="is not"])
838 AC_MSG_RESULT([bug $bugverb present])
839 AC_DEFINE_UNQUOTED(CVC4_GCC_HAS_PB_DS_BUG, ${CVC4_GCC_HAS_PB_DS_BUG}, [Whether libstdc++ has a certain bug; see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36612])
841 # Check for ANTLR runantlr script (defined in config/antlr.m4)
844 CVC4_CXX_OPTION([-Werror], [WERROR])
845 CVC4_C_OPTION([-Werror], [C_WERROR])
846 CVC4_CXX_OPTION([-Wno-deprecated], [WNO_DEPRECATED])
847 CVC4_C_OPTION([-Wno-deprecated], [C_WNO_DEPRECATED])
848 CVC4_CXX_OPTION([-Wno-conversion-null], [WNO_CONVERSION_NULL])
849 CVC4_CXX_OPTION([-Wno-tautological-compare], [WNO_TAUTOLOGICAL_COMPARE])
850 CVC4_CXX_OPTION([-Wno-parentheses], [WNO_PARENTHESES])
851 CVC4_CXX_OPTION([-Wno-uninitialized], [WNO_UNINITIALIZED])
852 CVC4_CXX_OPTION([-Wno-unused-variable], [WNO_UNUSED_VARIABLE])
853 CVC4_CXX_OPTION([-fno-strict-aliasing], [FNO_STRICT_ALIASING])
855 AC_SUBST([WNO_CONVERSION_NULL])
856 AC_SUBST([WNO_TAUTOLOGICAL_COMPARE])
857 AC_SUBST([WNO_PARENTHESES])
858 AC_SUBST([WNO_UNINITIALIZED])
859 AC_SUBST([WNO_UNUSED_VARIABLE])
860 AC_SUBST([FNO_STRICT_ALIASING])
862 # On Mac, we have to fix the visibility of standard library symbols.
863 # Otherwise, exported template instantiations---even though explicitly
864 # CVC4_PUBLIC, can be generated as symbols with internal-only linkage.
865 # Presumably, Apple is distributing a libstdc++ that is built *without*
866 # --enable-libstdcxx-visibility (?)
867 if test "$target_vendor" = apple; then
868 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-D_GLIBCXX_VISIBILITY_DEFAULT=\"__attribute__((__visibility__(\\\"default\\\")))\""
871 # Tell top-level Makefile to include $(top_srcdir)/personal.mk
872 AC_ARG_ENABLE([personal-make-rules],
873 [AS_HELP_STRING([--enable-personal-make-rules],
874 [include top-level personal.mk (if it exists)])])
875 if test "$enable_personal_make_rules" = yes; then
876 # This allows us to include a personal.mk makefile from every
877 # generated makefile. Named zz_* in order to make sure this
878 # comes last, so it gets other definitions (in particular top_srcdir).
879 zz_cvc4_use_personal_make_rules='yes
882 include $(top_srcdir)/personal.mk
883 $(top_srcdir)/personal.mk:; @touch "$@"'
884 AC_SUBST([zz_cvc4_use_personal_make_rules])
887 # Doxygen configuration
888 AC_ARG_ENABLE([internals-documentation],
889 [AS_HELP_STRING([--enable-internals-documentation],
890 [build Doxygen documentation for static and private member functions])])
891 if test "$enable_internals_documentation" = yes; then
892 DOXYGEN_EXTRACT_PRIVATE=YES
893 DOXYGEN_EXTRACT_STATIC=YES
895 DOXYGEN_EXTRACT_PRIVATE=NO
896 DOXYGEN_EXTRACT_STATIC=NO
898 AC_SUBST([DOXYGEN_EXTRACT_PRIVATE])
899 AC_SUBST([DOXYGEN_EXTRACT_STATIC])
905 DX_INIT_DOXYGEN($PACKAGE_NAME, config/doxygen.cfg, $srcdir/doc/doxygen)
907 AC_ARG_ENABLE([unit-testing], AS_HELP_STRING([--disable-unit-testing], [don't build support for unit testing, even if available]), , [enable_unit_testing=check])
908 AC_ARG_VAR(CXXTEST, [path to CxxTest installation])
912 AC_ARG_WITH([cxxtest-dir],
913 [AS_HELP_STRING([--with-cxxtest-dir=DIR], [path to CxxTest installation])],
914 [CXXTEST="$withval"])
916 # In the case of "./configure --with-cxxtest-dir=../cxxtest" (or other
917 # relative path) and having switched the configure directory (see above),
918 # search with respect to the top source dir, not the build dir
919 if test "$CVC4_CONFIGURE_IN_BUILDS" = yes -a -n "$CXXTEST"; then
922 *) CXXTEST="$srcdir/$CXXTEST" ;;
928 if test "$enable_proof" = yes; then
929 RUN_REGRESSION_ARGS="${RUN_REGRESSION_ARGS:+$RUN_REGRESSION_ARGS }--proof"
931 AC_SUBST([TESTS_ENVIRONMENT])
932 AC_SUBST([RUN_REGRESSION_ARGS])
935 AC_PATH_PROG(CXXTESTGEN, cxxtestgen.pl, [], [$CXXTEST:$PATH])
936 if test -z "$CXXTESTGEN"; then
937 AC_PATH_PROG(CXXTESTGEN, cxxtestgen.py, [], [$CXXTEST:$PATH])
939 if test -z "$CXXTESTGEN"; then
940 AC_PATH_PROG(CXXTESTGEN, cxxtestgen, [], [$CXXTEST:$PATH])
942 if test "$enable_unit_testing" = "no"; then
943 AC_MSG_NOTICE([unit tests disabled by user request.])
946 elif test -z "$CXXTESTGEN"; then
947 AC_MSG_NOTICE([unit tests disabled, could not find cxxtestgen.pl or cxxtestgen.py or cxxtestgen])
948 elif test -z "$CXXTEST"; then
949 CXXTEST=`dirname "$CXXTESTGEN"`
950 AC_MSG_CHECKING([for location of CxxTest headers])
951 if test -e "$CXXTEST/cxxtest/TestRunner.h"; then
952 AC_MSG_RESULT([$CXXTEST])
954 if test -e "/usr/include/cxxtest/TestRunner.h"; then
955 AC_MSG_RESULT([/usr/include])
957 AC_MSG_RESULT([not found])
958 AC_MSG_WARN([unit tests disabled, CxxTest headers not found.])
965 if test "$enable_unit_testing" = yes -a -z "$CXXTESTGEN"; then
966 AC_MSG_ERROR([--enable-unit-testing given but cxxtest not found.])
969 AM_CONDITIONAL([HAVE_CXXTESTGEN], [test -n "$CXXTESTGEN"])
971 AC_ARG_VAR(TEST_CPPFLAGS, [CPPFLAGS to use when testing (default=$CPPFLAGS)])
972 AC_ARG_VAR(TEST_CXXFLAGS, [CXXFLAGS to use when testing (default=$CXXFLAGS)])
973 AC_ARG_VAR(TEST_LDFLAGS, [LDFLAGS to use when testing (default=$LDFLAGS)])
975 AC_ARG_VAR(PERL, [PERL interpreter (used when testing)])
977 if test -n "$CXXTEST"; then
978 if test -z "$PERL"; then
979 AC_CHECK_PROGS(PERL, perl, perl, [])
981 AC_CHECK_PROG(PERL, "$PERL", "$PERL", [])
984 if test -z "$PERL"; then
985 AC_MSG_WARN([unit tests disabled, perl not found.])
991 AC_ARG_VAR(PYTHON, [PYTHON interpreter (used for building legacy Java library interface)])
993 if test -z "$PYTHON"; then
994 AC_CHECK_PROGS(PYTHON, python, python, [])
996 AC_CHECK_PROG(PYTHON, "$PYTHON", "$PYTHON", [])
999 if test -z "$PYTHON"; then
1000 AC_MSG_WARN([python not found, cannot build libcvc4compat_java (the legacy Java interface).])
1005 # Checks for libraries.
1007 AC_SEARCH_LIBS([clock_gettime], [rt],
1008 [AC_DEFINE([HAVE_CLOCK_GETTIME], [1],
1009 [Defined to 1 if clock_gettime() is supported by the platform.])],
1010 [AC_LIBOBJ([clock_gettime])])
1011 AC_CHECK_FUNC([strtok_r], [AC_DEFINE([HAVE_STRTOK_R], [1],
1012 [Defined to 1 if strtok_r() is supported by the platform.])],
1013 [AC_LIBOBJ([strtok_r])])
1014 AC_CHECK_FUNC([ffs], [AC_DEFINE([HAVE_FFS], [1],
1015 [Defined to 1 if ffs() is supported by the platform.])],
1018 # Check for antlr C++ runtime (defined in config/antlr.m4)
1021 # Check for user preferences for language bindings to build, and for
1022 # build support. The arg list is the default set if unspecified by
1023 # the user (the actual built set is the subset that appears to be
1024 # supported by the build host).
1025 CVC4_CHECK_BINDINGS([c java])dnl csharp perl php python ruby tcl ocaml])
1027 # Checks for header files and their contents.
1028 AC_CHECK_HEADERS([getopt.h unistd.h])
1030 # Checks for typedefs, structures, and compiler characteristics.
1032 # these are bad macros, they clash with system header <stdint.h> !!
1038 # guard against double-inclusion of the autoheader
1039 AH_TOP([#ifndef __CVC4__CVC4AUTOCONFIG_H
1040 #define __CVC4__CVC4AUTOCONFIG_H])
1041 AH_BOTTOM([#endif /* __CVC4__CVC4AUTOCONFIG_H */])
1043 AC_CHECK_DECLS([optreset], [], [], [#include <getopt.h>])
1045 # check with which standard strerror_r() complies
1048 # require boost library
1051 # look for boost threading library
1052 AC_ARG_WITH([portfolio],
1053 AS_HELP_STRING([--with-portfolio], [build the multithreaded portfolio version of CVC4 (pcvc4)]))
1054 cvc4_save_LDFLAGS="$LDFLAGS"
1055 if test "$enable_static_binary" = yes; then
1056 LDFLAGS="-static $LDFLAGS"
1058 cvc4_has_threads=yes
1059 AC_ARG_ENABLE([thread-support],
1060 AS_HELP_STRING([--disable-thread-support], [do not support multithreaded-capable library]))
1061 if test "$enable_thread_support" = no; then
1063 if test "$with_portfolio" = yes; then
1064 AC_MSG_ERROR([user gave both --with-portfolio and --disable-thread-support, which are contradictory])
1067 BOOST_THREADS([], [AC_MSG_WARN([disabling multithreaded support])
1068 cvc4_has_threads=no])
1070 LDFLAGS="$cvc4_save_LDFLAGS"
1071 if test $cvc4_has_threads = no; then
1072 if test "$enable_thread_support" = yes; then
1073 AC_MSG_ERROR([user gave --enable-thread-support but could not build with threads; maybe boost threading library is missing?])
1075 if test "$with_portfolio" = yes; then
1076 AC_MSG_ERROR([user gave --with-portfolio but could not build with threads; maybe boost threading library is missing?])
1080 if test "$with_portfolio" != yes; then
1083 AM_CONDITIONAL([CVC4_BUILD_PCVC4], [test "$with_portfolio" = yes])
1084 if test "$with_portfolio" = yes; then
1085 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PORTFOLIO"
1088 # Check for libreadline (defined in config/readline.m4)
1089 AC_ARG_WITH([readline], [AS_HELP_STRING([--with-readline], [support the readline library])], [], [with_readline=check])
1090 # make the flags as close as possible to the final flags, because the Boost
1091 # flags can bring in a different, incompatible readline library than we'd
1092 # get otherwise (e.g. on Mac, where there are commonly two different readlines,
1093 # one in /usr and one in /opt/local)
1094 cvc4_rlcheck_save_CPPFLAGS="$CPPFLAGS"
1095 cvc4_rlcheck_save_CXXFLAGS="$CXXFLAGS"
1096 cvc4_rlcheck_save_CFLAGS="$CFLAGS"
1097 cvc4_rlcheck_save_LDFLAGS="$LDFLAGS"
1098 CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }${BOOST_CPPFLAGS:+$BOOST_CPPFLAGS }$CVC4CPPFLAGS"
1099 CXXFLAGS="${CXXFLAGS:+$CXXFLAGS }$CVC4CXXFLAGS $WNO_DEPRECATED"
1100 CFLAGS="${CFLAGS:+$CFLAGS }$CVC4CFLAGS $C_WNO_DEPRECATED -fexceptions"
1101 LDFLAGS="${LDFLAGS:+$LDFLAGS }$CVC4LDFLAGS"
1102 CVC4_CHECK_FOR_READLINE
1103 CPPFLAGS="$cvc4_rlcheck_save_CPPFLAGS"
1104 CXXFLAGS="$cvc4_rlcheck_save_CXXFLAGS"
1105 CFLAGS="$cvc4_rlcheck_save_CFLAGS"
1106 LDFLAGS="$cvc4_rlcheck_save_LDFLAGS"
1107 AC_DEFINE_UNQUOTED([HAVE_LIBREADLINE], $have_libreadline, [Define to 1 to use libreadline])
1108 AC_DEFINE_UNQUOTED([READLINE_COMPENTRY_FUNC_RETURNS_CHARP], $readline_compentry_func_returns_charp, [Define to 1 if rl_completion_entry_function is declared to return pointer to char])
1109 AC_SUBST([READLINE_LIBS])
1111 # Whether to build compatibility library
1112 CVC4_BUILD_LIBCOMPAT=yes
1113 AC_ARG_WITH([compat],
1114 AS_HELP_STRING([--with-compat], [build compatibility library (CVC3 API layer)]),
1115 [if test "$withval" = no; then CVC4_BUILD_LIBCOMPAT=no; fi])
1116 AC_MSG_CHECKING([whether to build compatibility library (CVC3 API layer)])
1117 if test "$CVC4_BUILD_LIBCOMPAT" = yes; then
1118 AC_MSG_RESULT([yes])
1120 AC_MSG_RESULT([no, disabled by user])
1122 AC_SUBST(CVC4_BUILD_LIBCOMPAT)
1123 AM_CONDITIONAL([CVC4_BUILD_LIBCOMPAT], [test "$CVC4_BUILD_LIBCOMPAT" = yes])
1125 # Check for availability of TLS support (e.g. __thread storage class)
1126 AC_MSG_CHECKING([whether to use compiler-supported TLS if available])
1127 AC_ARG_ENABLE([tls], AS_HELP_STRING([--disable-tls], [don't use compiler-native TLS]))
1128 if test $cvc4_has_threads = no; then
1129 # We disable TLS entirely by simply telling the build system that
1130 # the empty string is the __thread keyword.
1131 AC_MSG_RESULT([multithreading disabled])
1132 CVC4_TLS_SUPPORTED=1
1134 CVC4_TLS_explanation='disabled (no multithreading support)'
1136 if test -z "${enable_tls+set}" || test "$enable_tls" = "yes"; then
1137 AC_MSG_RESULT([yes])
1138 AX_TLS([CVC4_TLS=$ac_cv_tls], [CVC4_TLS=])
1143 if test -n "$CVC4_TLS"; then
1144 CVC4_TLS_SUPPORTED=1
1145 CVC4_TLS_explanation="$CVC4_TLS"
1147 CVC4_TLS_explanation='pthread_getspecific()'
1148 CVC4_TLS_SUPPORTED=0
1151 AC_SUBST([CVC4_TLS])
1152 AC_SUBST([CVC4_TLS_SUPPORTED])
1154 # Whether to compile with google profiling tools
1155 cvc4_use_google_perftools=0
1159 [--with-google-perftools],
1160 [use Google Performance Tools]
1162 [if test "$withval" != no; then
1163 cvc4_use_google_perftools=1
1167 AC_MSG_CHECKING([whether to link in google perftools libraries])
1168 if test $cvc4_use_google_perftools = 1; then
1169 AC_MSG_RESULT([yes])
1170 AC_CHECK_LIB([tcmalloc], [MallocExtension_GetAllocatedSize], , [AC_MSG_ERROR([cannot link google-perftools test program with -ltcmalloc])], [-lpthread])
1171 AC_CHECK_LIB([profiler], [ProfilerStart], , [AC_MSG_ERROR([cannot link google-perftools test program with -lprofiler])], [-lpthread])
1173 AC_MSG_RESULT([no (user didn't request it)])
1177 AC_ARG_VAR(JAVA, [Java interpreter (used when testing Java interface)])
1178 AC_ARG_VAR(JAVAC, [Java compiler (used when building and testing Java interface)])
1179 AC_ARG_VAR(JAVAH, [Java compiler (used when building and testing Java interface)])
1180 AC_ARG_VAR(JAR, [Jar archiver (used when building Java interface)])
1181 if test "$cvc4_build_java_bindings"; then
1183 if test -z "$JAVA"; then
1184 AC_CHECK_PROGS(JAVA, java, java, [])
1186 AC_CHECK_PROG(JAVA, "$JAVA", "$JAVA", [])
1188 if test -z "$JAVAC"; then
1189 AC_CHECK_PROGS(JAVAC, javac gcj, javac, [])
1190 if test "$JAVAC" = gcj; then JAVAC='gcj -C'; fi
1192 AC_CHECK_PROG(JAVAC, "$JAVAC", "$JAVAC", [])
1194 if test -z "$JAVAH"; then
1195 AC_CHECK_PROGS(JAVAH, javah gcjh, javah, [])
1197 AC_CHECK_PROG(JAVAH, "$JAVAH", "$JAVAH", [])
1199 if test -z "$JAR"; then
1200 AC_CHECK_PROGS(JAR, jar, jar, [])
1202 AC_CHECK_PROG(JAR, "$JAR", "$JAR", [])
1206 # on Mac OS X, Java doesn't like the .so module extension; it wants .dylib
1207 module=no eval CVC4_JAVA_MODULE_EXT="$shrext_cmds"
1208 if test -z "$CVC4_JAVA_MODULE_EXT"; then
1209 CVC4_JAVA_MODULE_EXT=.so
1211 AC_SUBST([CVC4_JAVA_MODULE_EXT])
1213 # Prepare configure output
1215 if test "$enable_shared" = yes; then BUILDING_SHARED=1; else BUILDING_SHARED=0; fi
1216 if test "$enable_static" = yes; then BUILDING_STATIC=1; else BUILDING_STATIC=0; fi
1217 if test "$enable_static_binary" = yes; then STATIC_BINARY=1; else STATIC_BINARY=0; fi
1218 AC_SUBST(BUILDING_SHARED)
1219 AC_SUBST(BUILDING_STATIC)
1220 AC_SUBST(STATIC_BINARY)
1221 AM_CONDITIONAL([STATIC_BINARY], [test "$enable_static_binary" = yes])
1222 AM_CONDITIONAL([COVERAGE_ENABLED], [test "$enable_coverage" = yes])
1224 AM_CONDITIONAL([CVC4_DEBUG], [test "$with_build" = debug])
1225 AM_CONDITIONAL([CVC4_TRACING], [test "$enable_tracing" = yes])
1227 AC_SUBST(CVC4_LIBRARY_VERSION)
1228 AC_SUBST(CVC4_PARSER_LIBRARY_VERSION)
1229 AC_SUBST(CVC4_COMPAT_LIBRARY_VERSION)
1230 AC_SUBST(CVC4_BINDINGS_LIBRARY_VERSION)
1232 AC_DEFINE_UNQUOTED(CVC4_MAJOR, ${CVC4_MAJOR}, [Major component of the version of CVC4.])
1233 AC_DEFINE_UNQUOTED(CVC4_MINOR, ${CVC4_MINOR}, [Minor component of the version of CVC4.])
1234 AC_DEFINE_UNQUOTED(CVC4_RELEASE, ${CVC4_RELEASE}, [Release component of the version of CVC4.])
1235 AC_DEFINE_UNQUOTED(CVC4_EXTRAVERSION, ["${CVC4_EXTRAVERSION}"], [Extraversion component of the version of CVC4.])
1236 AC_DEFINE_UNQUOTED(CVC4_RELEASE_STRING, ["${CVC4_RELEASE_STRING}"], [Full release string for CVC4.])
1238 CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }${BOOST_CPPFLAGS:+$BOOST_CPPFLAGS }$CVC4CPPFLAGS"
1239 CXXFLAGS="${CXXFLAGS:+$CXXFLAGS }$CVC4CXXFLAGS -Wno-deprecated"
1240 CFLAGS="${CFLAGS:+$CFLAGS }$CVC4CFLAGS -Wno-deprecated -fexceptions"
1241 LDFLAGS="${LDFLAGS:+$LDFLAGS }$CVC4LDFLAGS -ldl"
1243 # visibility flag not supported for Windows builds
1244 # also increase default stack size for Windows binaries
1246 (*mingw*) FLAG_VISIBILITY_HIDDEN=
1247 cvc4_LDFLAGS=-Wl,--stack,134217728
1248 pcvc4_LDFLAGS=-Wl,--stack,134217728
1251 AC_SUBST(FLAG_VISIBILITY_HIDDEN)
1252 AC_SUBST(cvc4_LDFLAGS)
1253 AC_SUBST(pcvc4_LDFLAGS)
1255 AM_CONDITIONAL(WHITE_AND_BLACK_TESTS, [test -z "$FLAG_VISIBILITY_HIDDEN"])
1257 # remember the command line used for configure
1258 AC_SUBST(cvc4_config_cmdline)
1262 # When automake scans Makefiles, it complains about non-standard make
1263 # features (including GNU extensions), and breaks GNU Make's
1264 # "if/endif" construct, replacing the "if" with AM_CONDITIONAL if
1265 # constructs. automake even follows "include" and messes with
1266 # included Makefiles.
1268 # CVC4 assumes GNU Make and we want to use GNU Make if/endifs, so we
1269 # have to hide some included Makefiles with GNU extensions. We do
1270 # this by defining mk_include as an autoconf substitution and then
1271 # using "@mk_include@ other_makefile" in Makefile.am to include
1272 # makefiles with GNU extensions; this hides them from automake.
1274 AC_SUBST(mk_include)
1275 # Similar trickery for "if"
1283 # This is used to _always_ comment out rules in automake makefiles, but
1284 # still trigger certain automake behavior; see test/unit/Makefile.am.
1285 AM_CONDITIONAL([CVC4_FALSE], [false])
1287 # set up substitutions for src/util/{rational,integer}.h.in
1288 if test $cvc4_cln_or_gmp = cln; then
1295 AC_SUBST(CVC4_USE_CLN_IMP)
1296 AC_SUBST(CVC4_USE_GMP_IMP)
1298 # month/year for man pages
1299 MAN_DATE=`date '+%B %Y'`
1305 proofs/signatures/Makefile]
1306 m4_esyscmd([find contrib src test examples -name Makefile.am | grep -v '^contrib/theoryskel/' | grep -v '^contrib/alttheoryskel/' | sort | sed 's,\.am$,,'])
1309 if test $cvc4_has_threads = yes; then
1310 support_multithreaded='with boost threading library'
1311 AM_CONDITIONAL([CVC4_HAS_THREADS], [true])
1312 AC_SUBST([CVC4_HAS_THREADS], 1)
1314 support_multithreaded='no'
1315 AM_CONDITIONAL([CVC4_HAS_THREADS], [false])
1316 AC_SUBST([CVC4_HAS_THREADS], 0)
1319 AM_CONDITIONAL([CVC4_NEEDS_REPLACEMENT_FUNCTIONS], [test -n "$LIBOBJS"])
1321 # Final information to the user
1325 if test "$custom_build_profile" = yes; then
1326 with_build="$with_build (customized)"
1329 support_unit_tests='cxxtest not found; unit tests not supported'
1330 if test -n "$CXXTEST"; then
1331 support_unit_tests='unit testing infrastructure enabled in build directory'
1332 elif test "$enable_unit_testing" = no; then
1333 support_unit_tests='unit testing disabled by user'
1336 if test "$enable_optimized" = yes; then
1337 optimized="yes, at level $OPTLEVEL"
1342 if test $have_libglpk -eq 1; then
1344 gpllibs="${gpllibs} glpk"
1347 if test $have_libreadline -eq 1; then
1349 gpllibs="${gpllibs} readline"
1352 if test $cvc4_cln_or_gmp = cln; then
1353 mplibrary='cln (GPL)'
1355 gpllibs="${gpllibs} cln"
1356 if test $with_portfolio = yes; then
1357 AC_ERROR([Bad configuration detected: cannot build portfolio with CLN.
1358 Please specify only one of --with-portfolio and --with-cln.])
1364 if test "$gpl" = yes; then
1365 if test "$CVC4_BSD_LICENSED_CODE_ONLY" = 1; then
1366 AC_ERROR([Bad configuration detected: BSD-licensed code only, but also requested GPLed libraries:$gpllibs
1367 To permit GPL'ed dependences, use the configure flag --enable-gpl])
1370 licensewarn="${licensewarn}"'****************************************************************************
1371 Please note that CVC4 will be built against the following GPLed libraries:
1373 As these libraries are covered under the GPLv3, so is this build of CVC4.
1374 CVC4 is also available to you under the terms of the (modified) BSD license.
1375 If you prefer to license CVC4 under those terms, please configure with the
1376 option "--bsd", which will disable all optional GPLed library dependences.
1377 ****************************************************************************
1380 license="GPLv3 (due to optional libraries; see below)"
1382 licensewarn="${licensewarn}Please note that this configuration is NOT built against any GPL'ed
1383 libraries, so it is covered by the (modified) BSD license. This is,
1384 however, not the best-performing configuration of CVC4. To build
1385 against GPL'ed libraries which improve CVC4's performance, re-configure
1386 with '--best --enable-gpl'.
1389 license="modified BSD"
1392 if test "$gpl" = yes; then isgpl=1; else isgpl=0; fi
1393 AC_DEFINE_UNQUOTED(CVC4_GPL_DEPS, $isgpl, [Whether CVC4 is built with the (optional) GPLed library dependences.])
1395 CVC4_COMPAT_LIBRARY_VERSION_or_nobuild="$CVC4_COMPAT_LIBRARY_VERSION"
1396 CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild="$CVC4_BINDINGS_LIBRARY_VERSION"
1397 if test "$CVC4_BUILD_LIBCOMPAT" = no; then
1398 CVC4_COMPAT_LIBRARY_VERSION_or_nobuild="N/A"
1400 if test -z "$CVC4_LANGUAGE_BINDINGS"; then
1401 CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild="N/A"
1404 bindings_to_be_built=none
1405 if test -n "$CVC4_LANGUAGE_BINDINGS"; then
1406 bindings_to_be_built="$CVC4_LANGUAGE_BINDINGS"
1407 if test -z "$SWIG"; then
1408 bindings_to_be_built="$bindings_to_be_built (for CVC3 compatibility layer only; SWIG not found)"
1412 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([src/util/rational.h])
1413 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([src/util/integer.h])
1414 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([src/util/tls.h])
1416 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/cvc4.1_template])
1417 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/cvc4.5])
1418 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/libcvc4.3_template])
1419 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/SmtEngine.3cvc_template])
1420 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/options.3cvc_template])
1421 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/libcvc4parser.3])
1422 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/libcvc4compat.3])
1430 Build profile: $with_build
1431 Build ID : $build_type
1432 Optimized : $optimized
1433 Debug symbols: $enable_debug_symbols
1434 Proofs : $enable_proof
1435 Statistics : $enable_statistics
1436 Replay : $enable_replay
1437 Assertions : $enable_assertions
1438 Tracing : $enable_tracing
1439 Dumping : $enable_dumping
1440 Muzzle : $enable_muzzle
1442 Unit tests : $support_unit_tests
1443 gcov support : $enable_coverage
1444 gprof support: $enable_profiling
1446 Static libs : $enable_static
1447 Shared libs : $enable_shared
1448 Static binary: $enable_static_binary
1449 Compat lib : $CVC4_BUILD_LIBCOMPAT
1450 Bindings : $bindings_to_be_built
1452 Multithreaded: $support_multithreaded
1453 TLS support : $CVC4_TLS_explanation
1454 Portfolio : $with_portfolio
1456 MP library : $mplibrary
1458 Readline : $with_readline
1460 CPPFLAGS : $CPPFLAGS
1461 CXXFLAGS : $CXXFLAGS
1466 libcvc4 version : $CVC4_LIBRARY_VERSION
1467 libcvc4parser version : $CVC4_PARSER_LIBRARY_VERSION
1468 libcvc4compat version : $CVC4_COMPAT_LIBRARY_VERSION_or_nobuild
1469 libcvc4bindings version: $CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild
1471 Install into : $prefix
1473 CVC4 license : $license
1475 ${licensewarn}Now just type make, followed by make check or make install, as you like.
1479 if test -n "$CVC4_UNSUPPORTED_LANGUAGE_BINDINGS"; then
1481 AC_MSG_WARN([You are electing to build unsupported language binding(s): $CVC4_UNSUPPORTED_LANGUAGE_BINDINGS])
1482 AC_MSG_WARN([Please be aware that these bindings may not compile, or work, and the interface to CVC4 via])
1483 AC_MSG_WARN([these bindings may change drastically in upcoming releases of CVC4.])
1487 if test -n "$CVC4_INTEGRITY_WARNING"; then
1489 AC_MSG_WARN($CVC4_INTEGRITY_WARNING)
1490 AC_MSG_WARN([Please run "make check" after building to ensure integrity of the binary and library])