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}" -a -z "${with_abc+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 if test -n "${with_abc+set}"; then
212 if test "$with_abc" = yes; then
216 AC_MSG_RESULT([$with_build])
218 AM_INIT_AUTOMAKE([1.11 no-define tar-pax parallel-tests color-tests subdir-objects])
219 AC_CONFIG_HEADERS([cvc4autoconfig.h])
221 # automake 1.12 changes the test driver mechanism in a way that is
222 # completely incompatible with 1.11. We figure out here which version
223 # we're using in order to set up test makefiles correctly.
224 # See http://lists.gnu.org/archive/html/automake/2012-04/msg00060.html
225 if test -z "$am__api_version"; then
226 AC_MSG_ERROR([Cannot determine automake API version ?!])
228 case "$am__api_version" in
229 1.11*) automake111=true ;;
230 *) automake111=false ;;
232 AM_CONDITIONAL([AUTOMAKE_1_11], [$automake111])
234 # Initialize libtool's configuration options.
235 # we're not DLL-clean yet (i.e., don't properly use dllexport and dllimport)
236 # _LT_SET_OPTION([LT_INIT],[win32-dll])
239 # Checks for programs.
253 [use CLN instead of GMP]
256 y|ye|yes|Y|YE|YES) cvc4_use_cln=1 ;;
257 n|no|N|NO) cvc4_use_cln=0 ;;
266 [use GMP instead of CLN]
269 y|ye|yes|Y|YE|YES) cvc4_use_gmp=1 ;;
270 n|no|N|NO) cvc4_use_gmp=0 ;;
275 if test $cvc4_use_cln = 1 -a $cvc4_use_gmp = 1 || test $cvc4_use_cln = 0 -a $cvc4_use_gmp = 0; then
276 AC_MSG_ERROR([You must use either CLN and GMP. Please pick one.])
278 if test $cvc4_use_gmp = 1; then
280 elif test $cvc4_use_gmp = 0; then
282 elif test $cvc4_use_cln = 1; then
284 elif test $cvc4_use_cln = 0; then
288 # try GMP, fail if not found; GMP is required for both CLN and for GMP
290 AC_CHECK_LIB(gmp, __gmpz_init, , [AC_MSG_ERROR([GNU MP (libgmp) not found, see http://gmplib.org/])])
292 if test $cvc4_use_cln = 2; then
293 if test "$CVC4_BSD_LICENSED_CODE_ONLY" = 1 -o "$with_portfolio" = yes; then
299 if test $cvc4_use_cln != 0; then
300 # [mdeters] The PKG_CHECK_MODULES macro isn't customizable and doesn't fail
301 # gracefully. You can only specify it once for a given library name. That
302 # is, even on separate if/else branches, you can't put
303 # PKG_CHECK_MODULES([CLN], ...). That's why things are so convoluted here,
304 # we have to have PKG_CHECK_MODULES _exactly_ once in configure.ac !
305 PKG_CHECK_MODULES([CLN], [cln >= 1.2.2],
308 LIBS="$CLN_LIBS $LIBS"
309 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cln/cln.h>]], [[cln::cl_F pi = "3.1415926";]])], [
312 if test $cvc4_use_cln = 1; then
314 AC_MSG_ERROR([CLN installation missing, too old, or not functional for this architecture])
317 AC_MSG_NOTICE([CLN installation missing, too old, or not functional for this architecture, will use gmp instead])
325 [if test $cvc4_use_cln = 1; then
327 AC_MSG_ERROR([CLN not installed (or too old) or pkgconfig missing])
330 AC_MSG_NOTICE([CLN not installed (or too old) or pkgconfig missing, will use gmp])
337 if test $cvc4_use_cln = 0; then
338 # try GMPXX, fail if not found
339 AC_CHECK_LIB(gmpxx, __gmpz_init, , [AC_MSG_ERROR([GNU MP C++ library (libgmpxx) not found, see http://gmplib.org/])])
342 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }$CLN_CFLAGS"
343 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }$CLN_CFLAGS"
344 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }$CLN_CFLAGS"
345 LIBS="$CLN_LIBS${LIBS:+ $LIBS}"
349 if test $cvc4_cln_or_gmp = cln; then
350 AC_DEFINE_UNQUOTED(CVC4_CLN_IMP, [], [Defined if using the CLN multi-precision arithmetic library.])
352 AC_DEFINE_UNQUOTED(CVC4_GMP_IMP, [], [Defined if using the GMP multi-precision arithmetic library.])
354 AM_CONDITIONAL([CVC4_CLN_IMP], [test $cvc4_cln_or_gmp = cln])
355 AM_CONDITIONAL([CVC4_GMP_IMP], [test $cvc4_cln_or_gmp = gmp])
357 # construct the build string
358 AC_MSG_CHECKING([for appropriate build string])
359 if test -z "$ac_confdir"; then
362 build_type=`$ac_confdir/config/build-type $with_build $btargs $cvc4_cln_or_gmp`
363 AC_MSG_RESULT($build_type)
365 # Require building in target and build-specific build directory:
367 # If the configure script is invoked from the top-level source
368 # directory, it creates a suitable build directory (based on the build
369 # architecture and build profile from $build_type), changes into it,
370 # and reinvokes itself. CVC4_CONFIGURE_IN_BUILDS is an envariable
371 # that breaks any possibility of infinite recursion in this process.
372 AC_MSG_CHECKING([what dir to configure])
373 if test "$CVC4_CONFIGURE_IN_BUILDS" = yes; then
374 AC_MSG_RESULT([this one (in builds/)])
375 elif test "$CVC4_CONFIGURE_AT_TOP_LEVEL" = yes; then
376 AC_MSG_RESULT([builds/$target/$build_type])
378 if test -z "$ac_srcdir"; then
379 mkbuilddir=./config/mkbuilddir
381 mkbuilddir=$ac_srcdir/config/mkbuilddir
383 $as_echo "$mkbuilddir $target $build_type"
384 source $mkbuilddir "$target" "$build_type"
385 $as_echo "cd builds/$target/$build_type"
386 cd "builds/$target/$build_type"
387 CVC4_CONFIGURE_IN_BUILDS=yes; export CVC4_CONFIGURE_IN_BUILDS
388 echo "$SHELL ../../../configure ${config_cmdline[[@]]}"
389 "$SHELL" "`pwd`/../../../configure" "${config_cmdline[[@]]}"
392 if test $exitval -eq 0; then
393 cat >config.reconfig <<EOF
395 # Generated by configure, `date`
396 # This script is part of CVC4.
398 cd "\`dirname \\"\$0\\"\`"
400 if test -d builds; then :; else echo 'No builds/ directory!' >&2; exit; fi
402 current=(\`grep '^CURRENT_BUILD' builds/current | sed 's,^CURRENT_BUILD *= *\([^/]*\\)/\\(.*\\),\\1 \\2,'\`)
406 echo "reconfiguring in builds/\$arch/\$build..."
407 cd "builds/\$arch/\$build"
408 echo ./config.status "\$@"
409 ./config.status "\$@"]
411 chmod +x config.reconfig
413 ln -sf "$target/$build_type/config.log" "builds/config.log"
416 AC_MSG_RESULT([this one (user-specified)])
421 # Unpack standard build types. Any particular options can be overriden with
422 # --enable/disable-X options
423 case "$with_build" in
424 production) # highly optimized, no assertions, no tracing, dumping
429 FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
430 if test -z "${OPTLEVEL+set}" ; then OPTLEVEL=3 ; fi
431 if test -z "${enable_optimized+set}" ; then enable_optimized=yes ; fi
432 if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes ; fi
433 if test -z "${enable_statistics+set}" ; then enable_statistics=yes ; fi
434 if test -z "${enable_replay+set}" ; then enable_replay=no ; fi
435 if test -z "${enable_assertions+set}" ; then enable_assertions=no ; fi
436 if test -z "${enable_proof+set}" ; then enable_proof=no ; fi
437 if test -z "${enable_tracing+set}" ; then enable_tracing=no ; fi
438 if test -z "${enable_dumping+set}" ; then enable_dumping=yes ; fi
439 if test -z "${enable_muzzle+set}" ; then enable_muzzle=no ; fi
441 debug) # unoptimized, debug symbols, assertions, tracing, dumping
442 CVC4CPPFLAGS='-DCVC4_DEBUG'
443 CVC4CXXFLAGS='-fno-inline'
444 CVC4CFLAGS='-fno-inline'
446 FLAG_VISIBILITY_HIDDEN=
447 if test -z "${enable_optimized+set}" ; then enable_optimized=no ; fi
448 if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes ; fi
449 if test -z "${enable_statistics+set}" ; then enable_statistics=yes ; fi
450 if test -z "${enable_replay+set}" ; then enable_replay=yes ; fi
451 if test -z "${enable_assertions+set}" ; then enable_assertions=yes ; fi
452 if test -z "${enable_proof+set}" ; then enable_proof=no ; fi
453 if test -z "${enable_tracing+set}" ; then enable_tracing=yes ; fi
454 if test -z "${enable_dumping+set}" ; then enable_dumping=yes ; fi
455 if test -z "${enable_muzzle+set}" ; then enable_muzzle=no ; fi
457 default) # moderately optimized, assertions, tracing, dumping
462 FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
463 if test -z "${OPTLEVEL+set}" ; then OPTLEVEL=2 ; fi
464 if test -z "${enable_optimized+set}" ; then enable_optimized=yes ; fi
465 if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=yes ; fi
466 if test -z "${enable_statistics+set}" ; then enable_statistics=yes ; fi
467 if test -z "${enable_replay+set}" ; then enable_replay=yes ; fi
468 if test -z "${enable_assertions+set}" ; then enable_assertions=yes ; fi
469 if test -z "${enable_proof+set}" ; then enable_proof=no ; fi
470 if test -z "${enable_tracing+set}" ; then enable_tracing=yes ; fi
471 if test -z "${enable_dumping+set}" ; then enable_dumping=yes ; fi
472 if test -z "${enable_muzzle+set}" ; then enable_muzzle=no ; fi
474 competition) # maximally optimized, no assertions, no tracing, no dumping, muzzled
475 CVC4CPPFLAGS='-DCVC4_COMPETITION_MODE'
476 CVC4CXXFLAGS='-funroll-all-loops -fexpensive-optimizations -fno-enforce-eh-specs'
477 CVC4CFLAGS='-funroll-all-loops -fexpensive-optimizations -fno-enforce-eh-specs'
479 FLAG_VISIBILITY_HIDDEN='-fvisibility=hidden'
480 if test -z "${OPTLEVEL+set}" ; then OPTLEVEL=9 ; fi
481 if test -z "${enable_optimized+set}" ; then enable_optimized=yes ; fi
482 if test -z "${enable_debug_symbols+set}"; then enable_debug_symbols=no ; fi
483 if test -z "${enable_statistics+set}" ; then enable_statistics=no ; fi
484 if test -z "${enable_replay+set}" ; then enable_replay=no ; fi
485 if test -z "${enable_assertions+set}" ; then enable_assertions=no ; fi
486 if test -z "${enable_proof+set}" ; then enable_proof=no ; fi
487 if test -z "${enable_tracing+set}" ; then enable_tracing=no ; fi
488 if test -z "${enable_dumping+set}" ; then enable_dumping=no ; fi
489 if test -z "${enable_muzzle+set}" ; then enable_muzzle=yes ; fi
490 if test -z "${user_specified_enable_or_disable_shared}"; then enable_shared=no; fi
491 if test -z "${user_specified_enable_or_disable_static}"; then enable_static=yes; fi
492 if test -z "${enable_static_binary+set}"; then enable_static_binary=yes ; fi
495 AC_MSG_FAILURE([unknown build profile: $with_build])
498 if test -z "${OPTLEVEL+set}"; then OPTLEVEL=3; fi
500 AM_CONDITIONAL([CVC4_BUILD_PROFILE_PRODUCTION], [test "$with_build" = production])
501 AM_CONDITIONAL([CVC4_BUILD_PROFILE_DEBUG], [test "$with_build" = debug])
502 AM_CONDITIONAL([CVC4_BUILD_PROFILE_DEFAULT], [test "$with_build" = default])
503 AM_CONDITIONAL([CVC4_BUILD_PROFILE_COMPETITION], [test "$with_build" = competition])
505 # permit a static binary
506 AC_MSG_CHECKING([whether to build a static binary])
507 AC_ARG_ENABLE([static-binary],
508 [AS_HELP_STRING([--enable-static-binary],
509 [build a fully statically-linked binary [default=no]])])
510 if test -z "${enable_static_binary+set}"; then
511 enable_static_binary=no
513 AC_MSG_RESULT([$enable_static_binary])
514 if test "$enable_static_binary" = yes; then
515 if test "$target_vendor" = apple; then
516 if test -z "$MAC_STATIC_BINARY_MANUAL_OVERRIDE"; then
517 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)]])
519 AC_MSG_WARN([MAC_STATIC_BINARY_MANUAL_OVERRIDE was set!])
520 AC_MSG_WARN([Will make a static binary during this build. Note that it may fail!])
523 if test "$enable_static" != yes; then
525 AC_MSG_WARN([forcing static-library building, --enable-static-binary given])
529 AC_MSG_CHECKING([whether to support proofs in libcvc4])
531 AC_ARG_ENABLE([proof],
532 [AS_HELP_STRING([--enable-proof],
533 [support proof generation])])
534 if test -z "${enable_proof+set}"; then
537 AC_MSG_RESULT([$enable_proof])
539 if test "$enable_proof" = yes; then
540 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PROOF"
542 AM_CONDITIONAL([CVC4_PROOF], [test "$enable_proof" = yes])
544 AC_MSG_CHECKING([whether to optimize libcvc4])
546 AC_ARG_ENABLE([optimized],
547 [AS_HELP_STRING([--enable-optimized],
548 [optimize the build])])
550 if test -z "${enable_optimized+set}"; then
554 AC_MSG_RESULT([$enable_optimized])
556 if test "$enable_optimized" = yes; then
557 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-O$OPTLEVEL"
558 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-O$OPTLEVEL"
560 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-O0"
561 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-O0"
564 AC_MSG_CHECKING([whether to include debugging symbols in libcvc4])
566 AC_ARG_ENABLE([debug-symbols],
567 [AS_HELP_STRING([--disable-debug-symbols],
568 [do not include debug symbols in libcvc4])])
570 if test -z "${enable_debug_symbols+set}"; then
571 enable_debug_symbols=yes
574 AC_MSG_RESULT([$enable_debug_symbols])
576 if test "$enable_debug_symbols" = yes; then
577 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-ggdb3"
578 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-ggdb3"
581 AC_MSG_CHECKING([whether to include statistics are turned on in libcvc4])
583 AC_ARG_ENABLE([statistics],
584 [AS_HELP_STRING([--disable-statistics],
585 [do not include statistics in libcvc4])])
587 if test -z "${enable_statistics+set}"; then
588 enable_statistics=yes
591 AC_MSG_RESULT([$enable_statistics])
593 if test "$enable_statistics" = yes; then
594 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_STATISTICS_ON"
597 AC_MSG_CHECKING([whether the replay feature should be turned on in libcvc4])
599 AC_ARG_ENABLE([replay],
600 [AS_HELP_STRING([--disable-replay],
601 [turn off the replay feature in libcvc4])])
603 if test -z "${enable_replay+set}"; then
607 AC_MSG_RESULT([$enable_replay])
609 if test "$enable_replay" = yes; then
610 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_REPLAY"
613 AC_MSG_CHECKING([whether to include assertions in build])
615 AC_ARG_ENABLE([assertions],
616 [AS_HELP_STRING([--disable-assertions],
617 [turn off assertions in build])])
619 if test -z "${enable_assertions+set}"; then
620 enable_assertions=yes
623 AC_MSG_RESULT([$enable_assertions])
625 if test "$enable_assertions" = yes; then
626 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_ASSERTIONS"
628 # turn off regular C assert() also
629 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DNDEBUG"
632 AC_MSG_CHECKING([whether to do a traceable build of CVC4])
633 AC_ARG_ENABLE([tracing],
634 [AS_HELP_STRING([--disable-tracing],
635 [remove all tracing code from CVC4])])
637 if test -z "${enable_tracing+set}"; then
641 AC_MSG_RESULT([$enable_tracing])
643 if test "$enable_tracing" = yes; then
644 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_TRACING"
647 AC_MSG_CHECKING([whether to do a dump-capable build of CVC4])
648 AC_ARG_ENABLE([dumping],
649 [AS_HELP_STRING([--disable-dumping],
650 [remove all dumping code from CVC4])])
652 if test -z "${enable_dumping+set}"; then
656 AC_MSG_RESULT([$enable_dumping])
658 if test "$enable_dumping" = yes; then
659 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_DUMPING"
662 AC_MSG_CHECKING([whether to do a muzzled build of CVC4])
663 AC_ARG_ENABLE([muzzle],
664 [AS_HELP_STRING([--enable-muzzle],
665 [completely silence CVC4; remove ALL non-result output from build])])
667 if test -z "${enable_muzzle+set}"; then
671 AC_MSG_RESULT([$enable_muzzle])
673 if test "$enable_muzzle" = yes; then
674 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_MUZZLE"
677 AC_MSG_CHECKING([whether to do a gcov-enabled build of CVC4])
678 AC_ARG_ENABLE([coverage],
679 [AS_HELP_STRING([--enable-coverage],
680 [build with support for gcov coverage testing])])
682 if test -z "${enable_coverage+set}"; then
686 AC_MSG_RESULT([$enable_coverage])
688 if test "$enable_coverage" = yes; then
689 # For coverage testing, we prefer:
690 # --enable-static --disable-shared --disable-static-binary
691 # If the user didn't specify these, we force them here. If the
692 # user specified them in opposite phase, give warnings that they
693 # shouldn't do that, or bomb out.
694 if test "$user_specified_enable_or_disable_shared" != yes; then
696 AC_MSG_WARN([turning off shared library building due to --enable-coverage])
697 elif test "$enable_shared" = yes; then
699 AC_MSG_WARN([It is not recommended to configure with --enable-coverage --enable-shared])
700 AC_MSG_WARN([gcov does not support shared libraries, so only your static libraries will be coverage-testable.])
701 AC_MSG_WARN([Your cvc4 driver and testing binaries will not be coverage-testable.])
704 if test "${enable_static_binary+set}" = set -a "$enable_static_binary" = yes; then
706 AC_MSG_WARN([It is not recommended to configure with --enable-coverage --enable-static-binary])
707 AC_MSG_WARN([Your cvc4 driver and testing binaries will be fully-statically linked and may not be coverage-testable.])
710 if test "$user_specified_enable_or_disable_static" != yes; then
712 AC_MSG_WARN([turning on static library building due to --enable-coverage])
713 elif test "$enable_static" != yes; then
714 AC_MSG_ERROR([--enable-coverage and --disable-static are incompatible; gcov only supports static libraries.])
717 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_COVERAGE"
718 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }--coverage"
719 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }--coverage"
720 CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }--coverage"
723 AC_MSG_CHECKING([whether to do a profiling-enabled build of CVC4])
725 AC_ARG_ENABLE([profiling],
726 [AS_HELP_STRING([--enable-profiling],
727 [build with support for gprof profiling])])
729 if test -z "${enable_profiling+set}"; then
733 AC_MSG_RESULT([$enable_profiling])
735 if test "$enable_profiling" = yes; then
736 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PROFILING"
737 CVC4CXXFLAGS="${CVC4CXXFLAGS:+$CVC4CXXFLAGS }-pg"
738 CVC4CFLAGS="${CVC4CFLAGS:+$CVC4CFLAGS }-pg"
739 CVC4LDFLAGS="${CVC4LDFLAGS:+$CVC4LDFLAGS }-pg"
742 # Check for libglpk (defined in config/glpk.m4)
744 [AS_HELP_STRING([--with-glpk],
745 [use GLPK simplex solver])], [], [with_glpk=])
747 if test $have_libglpk -eq 1; then
748 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_USE_GLPK"
750 AM_CONDITIONAL([CVC4_USE_GLPK], [test $have_libglpk -eq 1])
751 AC_SUBST([GLPK_LDFLAGS])
752 AC_SUBST([GLPK_LIBS])
754 # Build with libabc (defined in config/abc.m4)
756 [AS_HELP_STRING([--with-abc],
757 [use the ABC AIG library])], [], [with_abc=])
759 if test $have_libabc -eq 1; then
760 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_USE_ABC"
762 AM_CONDITIONAL([CVC4_USE_ABC], [test $have_libabc -eq 1])
763 AC_SUBST([ABC_LDFLAGS])
766 # Check to see if this version/architecture of GNU C++ explicitly
767 # instantiates __gnu_cxx::hash<uint64_t> or not. Some do, some don't.
768 # See src/util/hash.h.
769 AC_MSG_CHECKING([whether __gnu_cxx::hash<uint64_t> is already specialized])
771 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
773 #include <ext/hash_map>
774 namespace __gnu_cxx { template<> struct hash<uint64_t> {}; }])],
775 [AC_MSG_RESULT([no]); CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_NEED_HASH_UINT64_T"],
776 [AC_MSG_RESULT([yes])])
779 # Check whether "long" and "int64_t" are distinct types w.r.t. overloading.
780 # Even if they have the same size, they can be distinct, and some platforms
781 # can have problems with ambiguous function calls when auto-converting
782 # int64_t to long, and others will complain if you overload a function
783 # that takes an int64_t with one that takes a long (giving a redefinition
784 # error). So we have to keep both happy. Probably the same underlying
785 # issue as the hash specialization above, but let's check separately
787 AC_MSG_CHECKING([for the relationship between long and int64_t])
789 AC_COMPILE_IFELSE([AC_LANG_SOURCE([
792 void foo(int64_t) {}])],
793 [AC_MSG_RESULT([no relationship detected]); CVC4_NEED_INT64_T_OVERLOADS=1],
794 [AC_MSG_RESULT([typedef or similar]); CVC4_NEED_INT64_T_OVERLOADS=0])
796 AC_SUBST([CVC4_NEED_INT64_T_OVERLOADS])
798 # Check for ANTLR runantlr script (defined in config/antlr.m4)
801 CVC4_CXX_OPTION([-Werror], [WERROR])
802 CVC4_C_OPTION([-Werror], [C_WERROR])
803 CVC4_CXX_OPTION([-Wno-deprecated], [WNO_DEPRECATED])
804 CVC4_C_OPTION([-Wno-deprecated], [C_WNO_DEPRECATED])
805 CVC4_CXX_OPTION([-Wno-conversion-null], [WNO_CONVERSION_NULL])
806 CVC4_CXX_OPTION([-Wno-tautological-compare], [WNO_TAUTOLOGICAL_COMPARE])
807 CVC4_CXX_OPTION([-Wno-parentheses], [WNO_PARENTHESES])
808 CVC4_CXX_OPTION([-Wno-uninitialized], [WNO_UNINITIALIZED])
809 CVC4_CXX_OPTION([-Wno-unused-variable], [WNO_UNUSED_VARIABLE])
810 CVC4_CXX_OPTION([-fno-strict-aliasing], [FNO_STRICT_ALIASING])
812 AC_SUBST([WNO_CONVERSION_NULL])
813 AC_SUBST([WNO_TAUTOLOGICAL_COMPARE])
814 AC_SUBST([WNO_PARENTHESES])
815 AC_SUBST([WNO_UNINITIALIZED])
816 AC_SUBST([WNO_UNUSED_VARIABLE])
817 AC_SUBST([FNO_STRICT_ALIASING])
819 # On Mac, we have to fix the visibility of standard library symbols.
820 # Otherwise, exported template instantiations---even though explicitly
821 # CVC4_PUBLIC, can be generated as symbols with internal-only linkage.
822 # Presumably, Apple is distributing a libstdc++ that is built *without*
823 # --enable-libstdcxx-visibility (?)
824 if test "$target_vendor" = apple; then
825 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-D_GLIBCXX_VISIBILITY_DEFAULT=\"__attribute__((__visibility__(\\\"default\\\")))\""
828 # Tell top-level Makefile to include $(top_srcdir)/personal.mk
829 AC_ARG_ENABLE([personal-make-rules],
830 [AS_HELP_STRING([--enable-personal-make-rules],
831 [include top-level personal.mk (if it exists)])])
832 if test "$enable_personal_make_rules" = yes; then
833 # This allows us to include a personal.mk makefile from every
834 # generated makefile. Named zz_* in order to make sure this
835 # comes last, so it gets other definitions (in particular top_srcdir).
836 zz_cvc4_use_personal_make_rules='yes
839 include $(top_srcdir)/personal.mk
840 $(top_srcdir)/personal.mk:; @touch "$@"'
841 AC_SUBST([zz_cvc4_use_personal_make_rules])
844 # Doxygen configuration
845 AC_ARG_ENABLE([internals-documentation],
846 [AS_HELP_STRING([--enable-internals-documentation],
847 [build Doxygen documentation for static and private member functions])])
848 if test "$enable_internals_documentation" = yes; then
849 DOXYGEN_EXTRACT_PRIVATE=YES
850 DOXYGEN_EXTRACT_STATIC=YES
852 DOXYGEN_EXTRACT_PRIVATE=NO
853 DOXYGEN_EXTRACT_STATIC=NO
855 AC_SUBST([DOXYGEN_EXTRACT_PRIVATE])
856 AC_SUBST([DOXYGEN_EXTRACT_STATIC])
862 DX_INIT_DOXYGEN($PACKAGE_NAME, config/doxygen.cfg, $srcdir/doc/doxygen)
864 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])
865 AC_ARG_VAR(CXXTEST, [path to CxxTest installation])
869 AC_ARG_WITH([cxxtest-dir],
870 [AS_HELP_STRING([--with-cxxtest-dir=DIR], [path to CxxTest installation])],
871 [CXXTEST="$withval"])
873 # In the case of "./configure --with-cxxtest-dir=../cxxtest" (or other
874 # relative path) and having switched the configure directory (see above),
875 # search with respect to the top source dir, not the build dir
876 if test "$CVC4_CONFIGURE_IN_BUILDS" = yes -a -n "$CXXTEST"; then
879 *) CXXTEST="$srcdir/$CXXTEST" ;;
885 if test "$enable_proof" = yes; then
886 RUN_REGRESSION_ARGS="${RUN_REGRESSION_ARGS:+$RUN_REGRESSION_ARGS }--proof"
888 AC_SUBST([TESTS_ENVIRONMENT])
889 AC_SUBST([RUN_REGRESSION_ARGS])
892 AC_PATH_PROG(CXXTESTGEN, cxxtestgen.pl, [], [$CXXTEST:$PATH])
893 if test -z "$CXXTESTGEN"; then
894 AC_PATH_PROG(CXXTESTGEN, cxxtestgen.py, [], [$CXXTEST:$PATH])
896 if test -z "$CXXTESTGEN"; then
897 AC_PATH_PROG(CXXTESTGEN, cxxtestgen, [], [$CXXTEST:$PATH])
899 if test "$enable_unit_testing" = "no"; then
900 AC_MSG_NOTICE([unit tests disabled by user request.])
903 elif test -z "$CXXTESTGEN"; then
904 AC_MSG_NOTICE([unit tests disabled, could not find cxxtestgen.pl or cxxtestgen.py or cxxtestgen])
905 elif test -z "$CXXTEST"; then
906 CXXTEST=`dirname "$CXXTESTGEN"`
907 AC_MSG_CHECKING([for location of CxxTest headers])
908 if test -e "$CXXTEST/cxxtest/TestRunner.h"; then
909 AC_MSG_RESULT([$CXXTEST])
911 if test -e "/usr/include/cxxtest/TestRunner.h"; then
912 AC_MSG_RESULT([/usr/include])
914 AC_MSG_RESULT([not found])
915 AC_MSG_WARN([unit tests disabled, CxxTest headers not found.])
922 if test "$enable_unit_testing" = yes -a -z "$CXXTESTGEN"; then
923 AC_MSG_ERROR([--enable-unit-testing given but cxxtest not found.])
926 AM_CONDITIONAL([HAVE_CXXTESTGEN], [test -n "$CXXTESTGEN"])
928 AC_ARG_VAR(TEST_CPPFLAGS, [CPPFLAGS to use when testing (default=$CPPFLAGS)])
929 AC_ARG_VAR(TEST_CXXFLAGS, [CXXFLAGS to use when testing (default=$CXXFLAGS)])
930 AC_ARG_VAR(TEST_LDFLAGS, [LDFLAGS to use when testing (default=$LDFLAGS)])
932 AC_ARG_VAR(PERL, [PERL interpreter (used when testing)])
934 if test -n "$CXXTEST"; then
935 if test -z "$PERL"; then
936 AC_CHECK_PROGS(PERL, perl, perl, [])
938 AC_CHECK_PROG(PERL, "$PERL", "$PERL", [])
941 if test -z "$PERL"; then
942 AC_MSG_WARN([unit tests disabled, perl not found.])
948 AC_ARG_VAR(PYTHON, [PYTHON interpreter (used for building legacy Java library interface)])
950 if test -z "$PYTHON"; then
951 AC_CHECK_PROGS(PYTHON, python, python, [])
953 AC_CHECK_PROG(PYTHON, "$PYTHON", "$PYTHON", [])
956 if test -z "$PYTHON"; then
957 AC_MSG_WARN([python not found, cannot build libcvc4compat_java (the legacy Java interface).])
962 # Checks for libraries.
964 AC_SEARCH_LIBS([clock_gettime], [rt],
965 [AC_DEFINE([HAVE_CLOCK_GETTIME], [1],
966 [Defined to 1 if clock_gettime() is supported by the platform.])],
967 [AC_LIBOBJ([clock_gettime])])
968 AC_CHECK_FUNC([strtok_r], [AC_DEFINE([HAVE_STRTOK_R], [1],
969 [Defined to 1 if strtok_r() is supported by the platform.])],
970 [AC_LIBOBJ([strtok_r])])
971 AC_CHECK_FUNC([ffs], [AC_DEFINE([HAVE_FFS], [1],
972 [Defined to 1 if ffs() is supported by the platform.])],
975 # Check for antlr C++ runtime (defined in config/antlr.m4)
978 # Check for user preferences for language bindings to build, and for
979 # build support. The arg list is the default set if unspecified by
980 # the user (the actual built set is the subset that appears to be
981 # supported by the build host).
982 CVC4_CHECK_BINDINGS([c java])dnl csharp perl php python ruby tcl ocaml])
984 # Checks for header files and their contents.
985 AC_CHECK_HEADERS([getopt.h unistd.h])
987 # Checks for typedefs, structures, and compiler characteristics.
989 # these are bad macros, they clash with system header <stdint.h> !!
995 # guard against double-inclusion of the autoheader
996 AH_TOP([#ifndef __CVC4__CVC4AUTOCONFIG_H
997 #define __CVC4__CVC4AUTOCONFIG_H])
998 AH_BOTTOM([#endif /* __CVC4__CVC4AUTOCONFIG_H */])
1000 AC_CHECK_DECLS([optreset], [], [], [#include <getopt.h>])
1002 # check with which standard strerror_r() complies
1005 # require boost library
1008 # look for boost threading library
1009 AC_ARG_WITH([portfolio],
1010 AS_HELP_STRING([--with-portfolio], [build the multithreaded portfolio version of CVC4 (pcvc4)]))
1011 cvc4_save_LDFLAGS="$LDFLAGS"
1012 if test "$enable_static_binary" = yes; then
1013 LDFLAGS="-static $LDFLAGS"
1015 cvc4_has_threads=yes
1016 AC_ARG_ENABLE([thread-support],
1017 AS_HELP_STRING([--disable-thread-support], [do not support multithreaded-capable library]))
1018 if test "$enable_thread_support" = no; then
1020 if test "$with_portfolio" = yes; then
1021 AC_MSG_ERROR([user gave both --with-portfolio and --disable-thread-support, which are contradictory])
1024 BOOST_THREADS([], [AC_MSG_WARN([disabling multithreaded support])
1025 cvc4_has_threads=no])
1027 LDFLAGS="$cvc4_save_LDFLAGS"
1028 if test $cvc4_has_threads = no; then
1029 if test "$enable_thread_support" = yes; then
1030 AC_MSG_ERROR([user gave --enable-thread-support but could not build with threads; maybe boost threading library is missing?])
1032 if test "$with_portfolio" = yes; then
1033 AC_MSG_ERROR([user gave --with-portfolio but could not build with threads; maybe boost threading library is missing?])
1037 if test "$with_portfolio" != yes; then
1040 AM_CONDITIONAL([CVC4_BUILD_PCVC4], [test "$with_portfolio" = yes])
1041 if test "$with_portfolio" = yes; then
1042 CVC4CPPFLAGS="${CVC4CPPFLAGS:+$CVC4CPPFLAGS }-DCVC4_PORTFOLIO"
1045 # Check for libreadline (defined in config/readline.m4)
1046 AC_ARG_WITH([readline], [AS_HELP_STRING([--with-readline], [support the readline library])], [], [with_readline=check])
1047 # make the flags as close as possible to the final flags, because the Boost
1048 # flags can bring in a different, incompatible readline library than we'd
1049 # get otherwise (e.g. on Mac, where there are commonly two different readlines,
1050 # one in /usr and one in /opt/local)
1051 cvc4_rlcheck_save_CPPFLAGS="$CPPFLAGS"
1052 cvc4_rlcheck_save_CXXFLAGS="$CXXFLAGS"
1053 cvc4_rlcheck_save_CFLAGS="$CFLAGS"
1054 cvc4_rlcheck_save_LDFLAGS="$LDFLAGS"
1055 CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }${BOOST_CPPFLAGS:+$BOOST_CPPFLAGS }$CVC4CPPFLAGS"
1056 CXXFLAGS="${CXXFLAGS:+$CXXFLAGS }$CVC4CXXFLAGS $WNO_DEPRECATED"
1057 CFLAGS="${CFLAGS:+$CFLAGS }$CVC4CFLAGS $C_WNO_DEPRECATED -fexceptions"
1058 LDFLAGS="${LDFLAGS:+$LDFLAGS }$CVC4LDFLAGS"
1059 CVC4_CHECK_FOR_READLINE
1060 CPPFLAGS="$cvc4_rlcheck_save_CPPFLAGS"
1061 CXXFLAGS="$cvc4_rlcheck_save_CXXFLAGS"
1062 CFLAGS="$cvc4_rlcheck_save_CFLAGS"
1063 LDFLAGS="$cvc4_rlcheck_save_LDFLAGS"
1064 AC_DEFINE_UNQUOTED([HAVE_LIBREADLINE], $have_libreadline, [Define to 1 to use libreadline])
1065 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])
1066 AC_SUBST([READLINE_LIBS])
1068 # Whether to build compatibility library
1069 CVC4_BUILD_LIBCOMPAT=yes
1070 AC_ARG_WITH([compat],
1071 AS_HELP_STRING([--with-compat], [build compatibility library (CVC3 API layer)]),
1072 [if test "$withval" = no; then CVC4_BUILD_LIBCOMPAT=no; fi])
1073 AC_MSG_CHECKING([whether to build compatibility library (CVC3 API layer)])
1074 if test "$CVC4_BUILD_LIBCOMPAT" = yes; then
1075 AC_MSG_RESULT([yes])
1077 AC_MSG_RESULT([no, disabled by user])
1079 AC_SUBST(CVC4_BUILD_LIBCOMPAT)
1080 AM_CONDITIONAL([CVC4_BUILD_LIBCOMPAT], [test "$CVC4_BUILD_LIBCOMPAT" = yes])
1082 # Check for availability of TLS support (e.g. __thread storage class)
1083 AC_MSG_CHECKING([whether to use compiler-supported TLS if available])
1084 AC_ARG_ENABLE([tls], AS_HELP_STRING([--disable-tls], [don't use compiler-native TLS]))
1085 if test $cvc4_has_threads = no; then
1086 # We disable TLS entirely by simply telling the build system that
1087 # the empty string is the __thread keyword.
1088 AC_MSG_RESULT([multithreading disabled])
1089 CVC4_TLS_SUPPORTED=1
1091 CVC4_TLS_explanation='disabled (no multithreading support)'
1093 if test -z "${enable_tls+set}" || test "$enable_tls" = "yes"; then
1094 AC_MSG_RESULT([yes])
1095 AX_TLS([CVC4_TLS=$ac_cv_tls], [CVC4_TLS=])
1100 if test -n "$CVC4_TLS"; then
1101 CVC4_TLS_SUPPORTED=1
1102 CVC4_TLS_explanation="$CVC4_TLS"
1104 CVC4_TLS_explanation='pthread_getspecific()'
1105 CVC4_TLS_SUPPORTED=0
1108 AC_SUBST([CVC4_TLS])
1109 AC_SUBST([CVC4_TLS_SUPPORTED])
1111 # Whether to compile with google profiling tools
1112 cvc4_use_google_perftools=0
1116 [--with-google-perftools],
1117 [use Google Performance Tools]
1119 [if test "$withval" != no; then
1120 cvc4_use_google_perftools=1
1124 AC_MSG_CHECKING([whether to link in google perftools libraries])
1125 if test $cvc4_use_google_perftools = 1; then
1126 AC_MSG_RESULT([yes])
1127 AC_CHECK_LIB([tcmalloc], [MallocExtension_GetAllocatedSize], , [AC_MSG_ERROR([cannot link google-perftools test program with -ltcmalloc])], [-lpthread])
1128 AC_CHECK_LIB([profiler], [ProfilerStart], , [AC_MSG_ERROR([cannot link google-perftools test program with -lprofiler])], [-lpthread])
1130 AC_MSG_RESULT([no (user didn't request it)])
1134 AC_ARG_VAR(JAVA, [Java interpreter (used when testing Java interface)])
1135 AC_ARG_VAR(JAVAC, [Java compiler (used when building and testing Java interface)])
1136 AC_ARG_VAR(JAVAH, [Java compiler (used when building and testing Java interface)])
1137 AC_ARG_VAR(JAR, [Jar archiver (used when building Java interface)])
1138 if test "$cvc4_build_java_bindings"; then
1140 if test -z "$JAVA"; then
1141 AC_CHECK_PROGS(JAVA, java, java, [])
1143 AC_CHECK_PROG(JAVA, "$JAVA", "$JAVA", [])
1145 if test -z "$JAVAC"; then
1146 AC_CHECK_PROGS(JAVAC, javac gcj, javac, [])
1147 if test "$JAVAC" = gcj; then JAVAC='gcj -C'; fi
1149 AC_CHECK_PROG(JAVAC, "$JAVAC", "$JAVAC", [])
1151 if test -z "$JAVAH"; then
1152 AC_CHECK_PROGS(JAVAH, javah gcjh, javah, [])
1154 AC_CHECK_PROG(JAVAH, "$JAVAH", "$JAVAH", [])
1156 if test -z "$JAR"; then
1157 AC_CHECK_PROGS(JAR, jar, jar, [])
1159 AC_CHECK_PROG(JAR, "$JAR", "$JAR", [])
1163 # on Mac OS X, Java doesn't like the .so module extension; it wants .dylib
1164 module=no eval CVC4_JAVA_MODULE_EXT="$shrext_cmds"
1165 if test -z "$CVC4_JAVA_MODULE_EXT"; then
1166 CVC4_JAVA_MODULE_EXT=.so
1168 AC_SUBST([CVC4_JAVA_MODULE_EXT])
1170 # Prepare configure output
1172 if test "$enable_shared" = yes; then BUILDING_SHARED=1; else BUILDING_SHARED=0; fi
1173 if test "$enable_static" = yes; then BUILDING_STATIC=1; else BUILDING_STATIC=0; fi
1174 if test "$enable_static_binary" = yes; then STATIC_BINARY=1; else STATIC_BINARY=0; fi
1175 AC_SUBST(BUILDING_SHARED)
1176 AC_SUBST(BUILDING_STATIC)
1177 AC_SUBST(STATIC_BINARY)
1178 AM_CONDITIONAL([STATIC_BINARY], [test "$enable_static_binary" = yes])
1179 AM_CONDITIONAL([COVERAGE_ENABLED], [test "$enable_coverage" = yes])
1181 AM_CONDITIONAL([CVC4_DEBUG], [test "$with_build" = debug])
1182 AM_CONDITIONAL([CVC4_TRACING], [test "$enable_tracing" = yes])
1184 AC_SUBST(CVC4_LIBRARY_VERSION)
1185 AC_SUBST(CVC4_PARSER_LIBRARY_VERSION)
1186 AC_SUBST(CVC4_COMPAT_LIBRARY_VERSION)
1187 AC_SUBST(CVC4_BINDINGS_LIBRARY_VERSION)
1189 AC_DEFINE_UNQUOTED(CVC4_MAJOR, ${CVC4_MAJOR}, [Major component of the version of CVC4.])
1190 AC_DEFINE_UNQUOTED(CVC4_MINOR, ${CVC4_MINOR}, [Minor component of the version of CVC4.])
1191 AC_DEFINE_UNQUOTED(CVC4_RELEASE, ${CVC4_RELEASE}, [Release component of the version of CVC4.])
1192 AC_DEFINE_UNQUOTED(CVC4_EXTRAVERSION, ["${CVC4_EXTRAVERSION}"], [Extraversion component of the version of CVC4.])
1193 AC_DEFINE_UNQUOTED(CVC4_RELEASE_STRING, ["${CVC4_RELEASE_STRING}"], [Full release string for CVC4.])
1195 CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }${BOOST_CPPFLAGS:+$BOOST_CPPFLAGS }$CVC4CPPFLAGS"
1196 CXXFLAGS="${CXXFLAGS:+$CXXFLAGS }$CVC4CXXFLAGS -Wno-deprecated"
1197 CFLAGS="${CFLAGS:+$CFLAGS }$CVC4CFLAGS -Wno-deprecated -fexceptions"
1198 LDFLAGS="${LDFLAGS:+$LDFLAGS }$CVC4LDFLAGS"
1200 # visibility flag not supported for Windows builds
1201 # also increase default stack size for Windows binaries
1203 (*mingw*) FLAG_VISIBILITY_HIDDEN=
1204 cvc4_LDFLAGS=-Wl,--stack,134217728
1205 pcvc4_LDFLAGS=-Wl,--stack,134217728
1208 AC_SUBST(FLAG_VISIBILITY_HIDDEN)
1209 AC_SUBST(cvc4_LDFLAGS)
1210 AC_SUBST(pcvc4_LDFLAGS)
1212 AM_CONDITIONAL(WHITE_AND_BLACK_TESTS, [test -z "$FLAG_VISIBILITY_HIDDEN"])
1214 # remember the command line used for configure
1215 AC_SUBST(cvc4_config_cmdline)
1219 # When automake scans Makefiles, it complains about non-standard make
1220 # features (including GNU extensions), and breaks GNU Make's
1221 # "if/endif" construct, replacing the "if" with AM_CONDITIONAL if
1222 # constructs. automake even follows "include" and messes with
1223 # included Makefiles.
1225 # CVC4 assumes GNU Make and we want to use GNU Make if/endifs, so we
1226 # have to hide some included Makefiles with GNU extensions. We do
1227 # this by defining mk_include as an autoconf substitution and then
1228 # using "@mk_include@ other_makefile" in Makefile.am to include
1229 # makefiles with GNU extensions; this hides them from automake.
1231 AC_SUBST(mk_include)
1232 # Similar trickery for "if"
1240 # This is used to _always_ comment out rules in automake makefiles, but
1241 # still trigger certain automake behavior; see test/unit/Makefile.am.
1242 AM_CONDITIONAL([CVC4_FALSE], [false])
1244 # set up substitutions for src/util/{rational,integer}.h.in
1245 if test $cvc4_cln_or_gmp = cln; then
1252 AC_SUBST(CVC4_USE_CLN_IMP)
1253 AC_SUBST(CVC4_USE_GMP_IMP)
1255 # month/year for man pages
1256 MAN_DATE=`date '+%B %Y'`
1262 proofs/signatures/Makefile]
1263 m4_esyscmd([find contrib src test examples -name Makefile.am | grep -v '^contrib/theoryskel/' | grep -v '^contrib/alttheoryskel/' | sort | sed 's,\.am$,,'])
1266 if test $cvc4_has_threads = yes; then
1267 support_multithreaded='with boost threading library'
1268 AM_CONDITIONAL([CVC4_HAS_THREADS], [true])
1269 AC_SUBST([CVC4_HAS_THREADS], 1)
1271 support_multithreaded='no'
1272 AM_CONDITIONAL([CVC4_HAS_THREADS], [false])
1273 AC_SUBST([CVC4_HAS_THREADS], 0)
1276 AM_CONDITIONAL([CVC4_NEEDS_REPLACEMENT_FUNCTIONS], [test -n "$LIBOBJS"])
1278 # Final information to the user
1282 if test "$custom_build_profile" = yes; then
1283 with_build="$with_build (customized)"
1286 support_unit_tests='cxxtest not found; unit tests not supported'
1287 if test -n "$CXXTEST"; then
1288 support_unit_tests='unit testing infrastructure enabled in build directory'
1289 elif test "$enable_unit_testing" = no; then
1290 support_unit_tests='unit testing disabled by user'
1293 if test "$enable_optimized" = yes; then
1294 optimized="yes, at level $OPTLEVEL"
1299 if test $have_libglpk -eq 1; then
1301 gpllibs="${gpllibs} glpk"
1304 if test $have_libreadline -eq 1; then
1306 gpllibs="${gpllibs} readline"
1309 if test $cvc4_cln_or_gmp = cln; then
1310 mplibrary='cln (GPL)'
1312 gpllibs="${gpllibs} cln"
1313 if test $with_portfolio = yes; then
1314 AC_ERROR([Bad configuration detected: cannot build portfolio with CLN.
1315 Please specify only one of --with-portfolio and --with-cln.])
1321 if test "$gpl" = yes; then
1322 if test "$CVC4_BSD_LICENSED_CODE_ONLY" = 1; then
1323 AC_ERROR([Bad configuration detected: BSD-licensed code only, but also requested GPLed libraries:$gpllibs
1324 To permit GPL'ed dependences, use the configure flag --enable-gpl])
1327 licensewarn="${licensewarn}"'****************************************************************************
1328 Please note that CVC4 will be built against the following GPLed libraries:
1330 As these libraries are covered under the GPLv3, so is this build of CVC4.
1331 CVC4 is also available to you under the terms of the (modified) BSD license.
1332 If you prefer to license CVC4 under those terms, please configure with the
1333 option "--bsd", which will disable all optional GPLed library dependences.
1334 ****************************************************************************
1337 license="GPLv3 (due to optional libraries; see below)"
1339 licensewarn="${licensewarn}Please note that this configuration is NOT built against any GPL'ed
1340 libraries, so it is covered by the (modified) BSD license. This is,
1341 however, not the best-performing configuration of CVC4. To build
1342 against GPL'ed libraries which improve CVC4's performance, re-configure
1343 with '--best --enable-gpl'.
1346 license="modified BSD"
1349 if test "$gpl" = yes; then isgpl=1; else isgpl=0; fi
1350 AC_DEFINE_UNQUOTED(CVC4_GPL_DEPS, $isgpl, [Whether CVC4 is built with the (optional) GPLed library dependences.])
1352 CVC4_COMPAT_LIBRARY_VERSION_or_nobuild="$CVC4_COMPAT_LIBRARY_VERSION"
1353 CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild="$CVC4_BINDINGS_LIBRARY_VERSION"
1354 if test "$CVC4_BUILD_LIBCOMPAT" = no; then
1355 CVC4_COMPAT_LIBRARY_VERSION_or_nobuild="N/A"
1357 if test -z "$CVC4_LANGUAGE_BINDINGS"; then
1358 CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild="N/A"
1361 bindings_to_be_built=none
1362 if test -n "$CVC4_LANGUAGE_BINDINGS"; then
1363 bindings_to_be_built="$CVC4_LANGUAGE_BINDINGS"
1364 if test -z "$SWIG"; then
1365 bindings_to_be_built="$bindings_to_be_built (for CVC3 compatibility layer only; SWIG not found)"
1369 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([src/util/rational.h])
1370 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([src/util/integer.h])
1371 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([src/util/tls.h])
1373 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/cvc4.1_template])
1374 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/cvc4.5])
1375 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/libcvc4.3_template])
1376 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/SmtEngine.3cvc_template])
1377 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/options.3cvc_template])
1378 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/libcvc4parser.3])
1379 CVC4_CONFIG_FILE_ONLY_IF_CHANGED([doc/libcvc4compat.3])
1387 Build profile: $with_build
1388 Build ID : $build_type
1389 Optimized : $optimized
1390 Debug symbols: $enable_debug_symbols
1391 Proofs : $enable_proof
1392 Statistics : $enable_statistics
1393 Replay : $enable_replay
1394 Assertions : $enable_assertions
1395 Tracing : $enable_tracing
1396 Dumping : $enable_dumping
1397 Muzzle : $enable_muzzle
1399 Unit tests : $support_unit_tests
1400 gcov support : $enable_coverage
1401 gprof support: $enable_profiling
1403 Static libs : $enable_static
1404 Shared libs : $enable_shared
1405 Static binary: $enable_static_binary
1406 Compat lib : $CVC4_BUILD_LIBCOMPAT
1407 Bindings : $bindings_to_be_built
1409 Multithreaded: $support_multithreaded
1410 TLS support : $CVC4_TLS_explanation
1411 Portfolio : $with_portfolio
1413 MP library : $mplibrary
1416 Readline : $with_readline
1418 CPPFLAGS : $CPPFLAGS
1419 CXXFLAGS : $CXXFLAGS
1424 libcvc4 version : $CVC4_LIBRARY_VERSION
1425 libcvc4parser version : $CVC4_PARSER_LIBRARY_VERSION
1426 libcvc4compat version : $CVC4_COMPAT_LIBRARY_VERSION_or_nobuild
1427 libcvc4bindings version: $CVC4_BINDINGS_LIBRARY_VERSION_or_nobuild
1429 Install into : $prefix
1431 CVC4 license : $license
1433 ${licensewarn}Now just type make, followed by make check or make install, as you like.
1437 if test -n "$CVC4_UNSUPPORTED_LANGUAGE_BINDINGS"; then
1439 AC_MSG_WARN([You are electing to build unsupported language binding(s): $CVC4_UNSUPPORTED_LANGUAGE_BINDINGS])
1440 AC_MSG_WARN([Please be aware that these bindings may not compile, or work, and the interface to CVC4 via])
1441 AC_MSG_WARN([these bindings may change drastically in upcoming releases of CVC4.])
1445 if test -n "$CVC4_INTEGRITY_WARNING"; then
1447 AC_MSG_WARN($CVC4_INTEGRITY_WARNING)
1448 AC_MSG_WARN([Please run "make check" after building to ensure integrity of the binary and library])