3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00
Commit graph

21 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
3b92128ed8 Fixed old-style C variable declaration problem in interpolation C example. 2016-02-16 12:12:59 +00:00
Ken McMillan
8b90bc9e91 fixed logginf on return of Z3_compute_interpolant and added interpolation example to test_capi.c 2016-02-11 16:09:54 -08:00
Nikolaj Bjorner
6c6da44f8f 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:24:37 +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
Christoph M. Wintersteiger
de3cb7e5dc More FPA exponent/siginficand order consistency 2016-01-05 18:05:21 +00:00
Dan Liew
83e2b1c6e5 Typo in comment in C api example. 2015-12-15 11:52:35 +00:00
Nikolaj Bjorner
995e112a18 fix examples
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-11-20 08:01:59 -08:00
Nikolaj Bjorner
90400ec914 update C example to use new API
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-11-16 15:03:58 -08:00
Christoph M. Wintersteiger
88b027ecce Eliminated unused variable from C example. 2015-10-29 13:32:58 +00:00
Nikolaj Bjorner
d469a16bb8 add more Copyright notes
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-06-10 11:59:21 -07:00
Christoph M. Wintersteiger
48c72d2c38 FPA API: naming consistency
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2015-01-23 18:18:26 +00:00
Christoph M. Wintersteiger
1a6af4385e Fixed C example
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2015-01-21 15:01:50 +00:00
Christoph M. Wintersteiger
b46d76cddb New FPA C-API example
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2015-01-01 19:16:44 +00:00
Christoph M. Wintersteiger
261fe01cea FPA API bug and consistency fixes
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2014-11-11 12:38:59 +00:00
Christoph M. Wintersteiger
8b40d4a735 FPA theory bug fixes.
Also removed unnecessary intermediate variables.

Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2014-08-04 17:00:04 +01:00
Christoph M. Wintersteiger
129e2f5e23 FPA API fixes and examples
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2014-06-11 17:55:31 +01:00
Christoph M. Wintersteiger
a8b65ebb36 added stubs for theory_fpa
Signed-off-by: Christoph M. Wintersteiger <cwinter@microsoft.com>
2014-04-23 20:10:53 +01:00
Leonardo de Moura
92a29b1e43 added Z3_global_param_reset_all API
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2012-12-04 11:55:12 -08:00
Leonardo de Moura
7f0fcefbe2 C examples
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2012-10-28 11:56:27 -07:00
Leonardo de Moura
91cc6bb768 renamed test_capi
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2012-10-28 10:51:50 -07:00