3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 09:05:31 +00:00
Commit graph

340 commits

Author SHA1 Message Date
Dan Liew
251527603d Implement a CMake build system.
This is a large rework of my first attempt at this (#459).

This implementation calls into the recently implemented python scripts
to generate the necessary generated ``.h`` and ``.cpp`` files but is
independent from Python building system otherwise.  Unlike the Python
build system, the generated files are emitted into the build tree to
avoid polluting the source tree. The build system is setup to refuse to
configure if it detects generated files in the source tree. If your
source tree is dirty you can run ``git clean -fx`` to clean your working
directory.

Currently the build succeeds on Linux using CMake 3.4.3 using
the "Unix Makefiles" generator with gcc or clang.

The following notable features are implemented:

* Building of the C and C++ examples and the ``test-z3`` executable.
  These are included from the ``all`` target so you have to tell the
  build system (e.g. make) to build them manually.

* Install (``make install``) and uninstall (``make uninstall``) of libz3
  and its header files. This supports ``DESTDIR`` out of the box because
  CMake supports it.

* An option (``BUILD_LIBZ3_SHARED``) to build libz3 as a static or dynamic library.

* Support for using/not using OpenMP (``USE_OPENMP``)

* Support for using/not using libgmp (``USE_LIB_GMP``)

* Setting the SOVERSION for libz3. I'm not sure if I'm setting the
* number correctly though. This is required by Linux distrubtions that
  wills ship libz3. This needs discussion.

The following notable features are currently not implemented
and are left for future work.

* Support for ARM.
* Support for the foci2 library.
* Support for creating/installing/uninstalling the dotnet, java, python and ml
  bindings.
* Full support for MSVC. Although I've tried to write the CMake code
  with MSVC in mind not all the correct flags are passed to it.
* Support for using the git hash.

This new build system has several advantages other the old build system.

* It is easier for outside contributors to contribute to Z3 when the
  build system is something more standard.
* Incremental builds work properly. With the old build system when
  new code is pulled down the old build directory would need to thrown
  out and a new fresh build had to be performed because the build system
  didn't know how to correctly rebuild the project (e.g. couldn't handle
  new sources being added/removed, compiler flags changing, generated
  files changing, etc...). This is a MASSIVE boost to productivity!
* We now have access rich array of features that CMake provides for
  building C/C++ projects. This means less time spent implementing
  custom build system logic in Python that is already supported by
  CMake.
* CMake supports many IDEs out of the box so it should be fairly
  straight forward to build Z3 with Visual Studio (once support for MSVC
  is added), Xcode, Eclipse CDT, CLion, ..etc.
2016-03-04 15:26:09 +00:00
Christoph M. Wintersteiger
c171170bed Fixed FP string input conversions.
Fixes #464
2016-03-01 15:31:33 +00:00
Nikolaj Bjorner
6cf76f2113 remove references to _DEBUG use Z3DEBUG instead
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-02-29 20:23:20 -08:00
Michael Sullivan
fa598edf43 Fix gcc build failure on ARM caused by including <emmintrin.h>
src/util/hwf.cpp tries to use <emmintrin.h> to directly use SSE
intrinsics. Make sure to only use those when actually on x86 or
x86_64.
2016-02-10 20:47:08 +00:00
Nikolaj Bjorner
5ce85aba40 removing const qualifiers, perhaps this helps for #420 and adding assert to enable Clang analysis earlier for issue #440
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-02-09 22:23:37 +00:00
Jonathan Wakely
f02d273ee3 Convert stream to bool explicitly
In C++11 there is no implicit conversion from iostream classes to `void*`, just an explicit conversion to bool.
2016-02-02 23:39:11 +00:00
Nuno Lopes
ee2bae898a remove unused exceeded_memory_allocations class 2016-01-27 18:09:24 +00:00
Christoph M. Wintersteiger
357ec9e7d1 Changed FP significand/exponent functions to return non-normalized results. Clarified function remarks. Relates to #383. 2016-01-13 16:32:32 +00:00
Christoph M. Wintersteiger
f093ebe44c Optimization for initialization of mpf's from tiny reals. 2016-01-12 19:06:53 +00:00
Christoph M. Wintersteiger
d4efa3753c Optimization for real to float conversion. Relates to #383. 2016-01-11 18:54:07 +00:00
Christoph M. Wintersteiger
e53b580cb4 added compiler macro to disable invocation of the debugger upon failure. 2016-01-07 15:58:10 +00:00
Christoph M. Wintersteiger
8b47a84598 Merge branch 'master' of https://github.com/Z3Prover/z3 into jan4 2016-01-05 11:34:35 +00:00
Christoph M. Wintersteiger
677ff221f8 Internal consistency: FP exponents are always passed before significands. 2016-01-04 18:57:15 +00:00
Nikolaj Bjorner
8e80fb830b merge fixes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-01-03 14:12:45 -08:00
Nikolaj Bjorner
e2fab0a555 seq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-28 18:15:48 -08:00
Nikolaj Bjorner
65d147106e automata
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-24 12:01:59 -08:00
Nikolaj Bjorner
995d66c6f2 remove print statements
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-22 10:46:33 -08:00
Nikolaj Bjorner
9c6271dded add debugging facilities for github issues #384 #367
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-22 10:43:18 -08:00
Nikolaj Bjorner
65da0f9f3a updated seq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-21 06:07:50 -08:00
Nikolaj Bjorner
284fcc2c04 seq
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-20 09:43:56 +02:00
Nikolaj Bjorner
f3d94db889 bild on gcc #376
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-13 23:47:45 -08:00
Nikolaj Bjorner
72883df134 fix build, add seq features
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-13 16:02:17 -08:00
Nikolaj Bjorner
2ecbe26be1 ensure limit children are safe for race conditions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-12 10:24:19 -08:00
Nikolaj Bjorner
54ac71cada ensure limit children are safe for race conditions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-12 10:23:56 -08:00
Nikolaj Bjorner
4132fc2d91 ensure limit children are safe for race conditions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-12 10:18:51 -08:00
Nikolaj Bjorner
2a051719d8 cleanup deprecated critical sections, fix cancellation for par_or_else tactic
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-12 09:43:00 -08:00
Nikolaj Bjorner
521271e559 moving to resource managed cancellation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-11 17:46:22 -08:00
Nikolaj Bjorner
32b6b2da44 moving to resource managed cancellation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-11 13:13:11 -08:00
Nikolaj Bjorner
61dbb6168e cleanup cancelation logic
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-11 12:35:35 -08:00
Nuno Lopes
4b0f2cae0d fix compiler warning in scoped_timer.cpp on linux
2 secs in nanosec representation still fit in 31 bits, so no need for ULL

Signed-off-by: Nuno Lopes <nlopes@microsoft.com>
2015-12-08 17:03:18 +00:00
Nikolaj Bjorner
485ac9c39d add macro for converting std::vectors to pointers (leaking abstraction)
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-01 16:35:03 -08:00
Nuno Lopes
2739930900 fix build with clang
Signed-off-by: Nuno Lopes <nlopes@microsoft.com>
2015-11-27 12:13:44 +00:00
Nuno Lopes
d9bafc3fba rewrite scoped_timer for linux
The previous version was racy and could lead to crashes.
The timer could be deleted before the callback was called, making it execute on already freed memory

This new version is similar to Mac's. It spawns its own thread and uses pthread_cond_wait.
Care is taken for small timeouts to avoid races in the thread creation and timer destruction.

Signed-off-by: Nuno Lopes <nlopes@microsoft.com>
2015-11-22 11:40:52 +00:00
Nikolaj Bjorner
9cba63c31f remove deprecated iz3 example. Remove deprecated process control
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-11-18 12:32:15 -08:00
Nikolaj Bjorner
fc592fc856 fix for #291. The root issue is that the set of antecedents is recycled as a fixed object between routines. Antecedents that were already allocated for a Gomory cut got reset by the internalizer. This causes unsound bounds axioms to be created
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-11-05 15:08:42 -08:00
Nikolaj Bjorner
ac3edbbaaa add line/position information to unsupported command reports per zeph pull request
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-10-30 19:23:31 -07:00
Christoph M. Wintersteiger
6749c19ab1 Merge branch 'static_analysis' of https://github.com/daniel-j-h/z3
# Conflicts:
#	src/ast/ast.h
#	src/interp/iz3foci.cpp
#	src/muz/duality/duality_dl_interface.cpp
#	src/util/hwf.h
2015-10-19 15:14:45 +01:00
Nuno Lopes
0e387b2abe use Z3_fallthrough instead of __falthrough directly to avoid messing with reserved identifiers
Signed-off-by: Nuno Lopes <nlopes@microsoft.com>
2015-10-09 18:06:49 +01:00
Christoph M. Wintersteiger
b60f30c802 Merge pull request #236 from wintersteiger/i68
Fixes for issue #68
2015-10-07 20:56:35 +01:00
Christoph M. Wintersteiger
8a026c355f Corrected unspecified behavior of corner cases in fp.min/fp.max.
Partially addresses #68.
2015-10-07 20:39:36 +01:00
Christoph M. Wintersteiger
fcf036695e Bugfix for mpf to_ieee_bv 2015-10-07 20:37:12 +01:00
Nikolaj Bjorner
2912c355e2 remove reinterpret_cast. Issue #229, issue #24
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-10-04 10:54:19 -07:00
Christoph M. Wintersteiger
f11502e0ac reinterpret_cast fixes for the Windows compiler. 2015-10-04 16:41:28 +01:00
Christoph M. Wintersteiger
4626196907 Eliminated reinterpret_casts. Partially fixes #24, #229. 2015-10-04 15:52:20 +01:00
Nikolaj Bjorner
50993582ec put break statement in else branh. Issue #230 (broken loop)
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-10-03 17:15:54 -07:00
Nikolaj Bjorner
89f1541d83 put break statement in else branh. Issue #230 (broken loop)
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-10-03 17:15:45 -07:00
Nikolaj Bjorner
d9b6623400 include rlimit in nlsat, include dedicated error message, for issue #216
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-09-29 09:16:46 -07:00
Nikolaj Bjorner
1f9d5249a3 fix build break regarind z3test.py and added rlimit
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-09-28 14:05:57 -07:00
Nikolaj Bjorner
f3b8fe130a adding rlimit resource limit facility to provide platform and architecture independent method for canceling activities. This is to address issue #216
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-09-28 13:40:54 -07:00
Nikolaj Bjorner
9b3e242990 adding rlimit resource limit facility to provide platform and architecture independent method for canceling activities
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-09-28 13:37:59 -07:00