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

127 commits

Author SHA1 Message Date
Nikolaj Bjorner
f3b0ede6e8 update lookahead to include extensions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-06-07 16:35:35 -07:00
Nikolaj Bjorner
3ce82ea8ce merge
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-06-02 10:37:22 -07:00
Nikolaj Bjorner
e0a86ccc1a add lrb/chb and experiment with them
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-28 10:48:31 -07:00
Nikolaj Bjorner
d2b2aedef3 Merge branch 'dev' of https://github.com/nikolajbjorner/z3 2017-05-25 08:54:00 -07:00
Nikolaj Bjorner
fc53c5b638 adding nra solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-24 14:41:02 -07:00
Nikolaj Bjorner
f1ca1de408 initial skeletons for nra solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-23 16:12:46 -07:00
Nikolaj Bjorner
edb164587f get rid of a simplifier dependency
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-23 10:12:32 -07:00
Nikolaj Bjorner
f698efa403 Merge branch 'master' of https://github.com/z3prover/z3 into opt 2017-05-22 12:59:36 -07:00
Nikolaj Bjorner
f90ae40480 Merge branch 'master' of https://github.com/NikolajBjorner/z3 into opt 2017-05-22 12:53:19 -07:00
Nikolaj Bjorner
f1f0f78617 remove foci reference from cmakelist.txt
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-19 18:31:34 -07:00
Lev Nachmanson
9a58eb63cb resurrect lp_tst in its own director lp
Signed-off-by: Lev Nachmanson <levnach@microsoft.com>
2017-05-17 11:01:04 -07:00
Lev Nachmanson
06e1151ca0 add int_solver class
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2017-05-16 12:01:16 -07:00
Lev Nachmanson
4eec8cbadd introduce int_solver.h
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2017-05-15 15:32:31 -07:00
Nikolaj Bjorner
64f3b3e316 remove lp_main from test branch to ensure test build only builds a single entry point
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-12 07:59:16 -07:00
Nikolaj Bjorner
905cf08e5d missing files
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-09 14:11:33 -07:00
Nikolaj Bjorner
911b24784a merge LRA
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-09 10:46:11 -07:00
Nikolaj Bjorner
b915f78281 merge with master
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-07 17:05:57 -07:00
Nikolaj Bjorner
8eb26e25c2 add new files to cmakelist.txt files
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-05 17:03:03 -04:00
Dan Liew
1db07f1189 [CMake] Remove BYPRODUCTS declaration for api_docs target.
This breaks the `clean` rule when using Ninja as the CMake
generator. Unfortunately this means `clean` doesn't try to
remove the generated documentation anymore when using Ninja.
2017-05-04 15:29:47 +01:00
Dan Liew
6e07d6dd2d [CMake] Override CMake's default flags for GCC/Clang as we were doing
before 4cc2b292c0.

It's useful to be able to control the defaults and CMake's internal
logic for GCC/Clang is simple enough that doing this makes sense.

It would be nice to do the same for MSVC but CMake's internal
logic is more complicated so for now it's better that we just use
CMake's default.
2017-04-29 17:45:02 +01:00
Dan Liew
2a919cf16e [CMake] Duplicate the remaining linker flags from the old build system. 2017-04-29 16:22:46 +01:00
Dan Liew
d032dbcbb2 [CMake] When using MSVC set the /SUBSYSTEM: argument given to
the linker. This mimics the behaviour of the old build system.
2017-04-29 16:22:46 +01:00
Dan Liew
364bcde6c1 [CMake] When building with MSVC pass the /STACK: argument to the
linker like the old build system does.
2017-04-29 16:22:46 +01:00
Dan Liew
c9aac0ba77 [CMake] When building with MSVC try to disable incremental linking
for all builds.
2017-04-29 16:22:46 +01:00
Dan Liew
5893aea602 [CMake] When building with MSVC and without WARNINGS_AS_ERRORS
pass `/WX-` to MSVC. Although this is not necessary this duplicates
the behaviour of the old build system.
2017-04-29 16:22:46 +01:00
Dan Liew
870be706e9 [CMake] Try to do a better job of matching the old build system's
compiler defines and flags when using MSVC.

There are lots of defines and flags that I'm unsure about so in
some cases I've changed the behaviour slightly (if I'm confident
the behaviour in the old build system is wrong) or not added the
flag/define at all but just left comments noting what the old build
system did and why I disagree with the old build system's choices.
2017-04-29 16:22:46 +01:00
Dan Liew
0e1343e78d [CMake] Add support for link time optimization (LTO).
This analogous to the `--optimize` flag in the Python/Makefile
build system except that we now support doing LTO with Clang/GCC
as well. However it is probably best to avoid doing LTO with
Clang or GCC for now because I see a bunch of warnings about
ODR violations when building with LTO.

LTO can be enabled with the new `LINK_TIME_OPTIMIZATION` option
which is off by default.
2017-04-29 16:22:46 +01:00
Dan Liew
fb403229bd [CMake] CMake's default value for CMAKE_CXX_FLAGS includes /W3
remove this so we can have fine grained control of warnings.
2017-04-29 16:22:46 +01:00
Dan Liew
fe1af4bcdb [CMake] Teach build system to pass /fp:precise to compiler when
using MSVC. This is set by the old build system but we weren't setting
it. This actually MSVC's default but in an effort to try to behave
more like the old build system we will set it anyway.
2017-04-29 16:22:46 +01:00
Dan Liew
4cc2b292c0 [CMake] Remove compiler flag overrides and support for C language.
The setting of overrides was broken (the CXX flags were not set but
the C flags were) and we aren't even using the C compiler any more.

The C compiler is used by the example C project but that is built
as an external project now so we don't need C support anymore.

The setting of defaults was also very fragile. CMake has quite
complicated support here (e.g. MSVC with a clang based tool chain) which
would likely not work properly with the override approach as it existed.

This means we loose some of the custom linker flags we were setting for
MSVC but we were never doing a great job of replicating the exact set of
flags used in the old build system anyway. Subsequent commits will
gradually fix this.
2017-04-29 16:22:46 +01:00
Nikolaj Bjorner
8205b45839 initial integration of opt
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-04-27 19:13:00 -07:00
Nikolaj Bjorner
69aa5ca877 Merge pull request #984 from delcypher/cmake_doxygen
[CMake][Doxygen] Support building/installing API documentation and fix lots of bugs
2017-04-27 06:58:32 -07:00
Nikolaj Bjorner
8032217fd1 tuning and fixing consequence finding, adding dimacs evaluation
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-04-26 13:53:37 -07:00
Dan Liew
d4b7b489d0 [CMake] Teach CMake to build the documentation for the API bindings
and install them. The target for building the documentation is
`api_docs`.

This is off by default but can be enabled with the
`BUILD_DOCUMENTATION` option. The C and C++ API documentation
is always built but the Python, ".NET", and Java documentation are
only built if they are enabled in the build system. The rationale
for this is that it would be confusing to install documentation
for API bindings that are not installed.

By default `ALWAYS_BUILD_DOCS` is on which will slow down builds
significantly but will ensure that when the `install` target is
invoked the documentation is up-to-date. Unfortunately I couldn't
find a better way to do this. `ALWAYS_BUILD_DOCS` can be disabled
to get faster builds and still have the `api_docs` target available.
2017-04-26 11:02:36 +01:00
Nikolaj Bjorner
e65f106a83 ccc
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-04-19 08:59:49 -07:00
Christoph M. Wintersteiger
95cf1447ea Added maintainers.txt for qprofdiff 2017-04-10 13:18:45 +01:00
Christoph M. Wintersteiger
9a757ffffe Result ordering fix for qprofdiff 2017-04-07 18:12:33 +01:00
Christoph M. Wintersteiger
23f4a0c332 Build fix for qprofdiff 2017-04-07 18:12:26 +01:00
Christoph M. Wintersteiger
f3c990d356 Fixes for qprofdiff 2017-04-07 18:12:16 +01:00
Christoph M. Wintersteiger
d390885757 Added utility to compare quantifier instantiation profiles generated via smt.qi.profile=true 2017-04-06 18:37:29 +01:00
Dan Liew
28493622c2 [CMake] On Windows when building the examples copy the Z3 library
into the directory of the example executable so that it works "out
of the box".
2017-03-13 12:37:29 +00:00
Dan Liew
ac85c68ccb [CMake] Fix examples linking against libz3 when it is built as a
static library on Linux.
2017-03-13 11:53:33 +00:00
Dan Liew
db5520c71d [CMake] Build c_example, cpp_example and z3_tptp5 as external
projects.

This works by giving each example it's own CMake build system and
then consuming Z3 via the Z3 CMake config package from the build
tree.
2017-03-13 11:53:33 +00:00
Dan Liew
d9617841e0 [CMake] Python examples should only be copied over if python bindings
are being built.
2017-03-13 11:53:33 +00:00
Dan Liew
73614abf37 [CMake] Implement generation of Z3Config.cmake and Z3Target.cmake
file for the build and install tree.

These files allow users of CMake to use Z3 via a CMake config package.
Clients can do `find_package(Z3 CONFIG)` to get use the package from
their projects.

When generating the files for the install tree we try to generate
the files so that they are relocatable so that it shouldn't matter
if the installed files aren't in the CMAKE_INSTALL_PREFIX when
a user consumes them. As long as the relative locations of the files
aren't changed things should still work.

A new CMake cache variable `CMAKE_INSTALL_Z3_CMAKE_PACKAGE_DIR` has been
added so that the install location of the Z3 CMake package files can be
controlled.

This addresses #915 .
2017-03-13 11:53:27 +00:00
Dan Liew
2cb4223979 [CMake] Support including Git hash and description into the build.
CMake will automatically pick up changes in git's HEAD so that
the necessary code is rebuilt when the build system is invoked.

Two new options `INCLUDE_GIT_HASH` and `INCLUDE_GIT_DESCRIBE` have been
added that enable/disable including the git hash and the output of `git
describe` respectively. By default if the source tree is a git
repository both options are on, otherwise they are false by default.

To support the `Z3GITHASH` macro a different implementation is used from
the old build system. In that build system the define is passed on the
command line. This would not work well for CMake because CMake
conservatively (and correctly) rebuilds *everything* if the flags given
to the compiler change. This would result in the entire project being
rebuilt everytime git's `HEAD` changed.  Instead in this implementation
a CMake specific version of `version.h.in` (named `version.h.cmake.in`)
is added that uses the `#cmakedefine` feature of CMake's
`configure_file()` command to define `Z3GITHASH` if it is available and
not define it otherwise. This way only object files that depend on
`version.h` get re-built rather than the whole project.

It is unfortunate that the build systems now have different `version.h`
file templates. However they are very simple and I don't want to
modify how templates are handled in the python/Makefile build system.
2017-03-12 22:11:59 +00:00
Nikolaj Bjorner
748ada2acc adding unit test entry point
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-02-22 11:46:47 -08:00
Nikolaj Bjorner
747ff19aba adding skeleton for local search
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-02-21 20:34:39 -08:00
Nikolaj Bjorner
42deeb3498 testing lookahead
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-02-12 11:49:07 -08:00
Nikolaj Bjorner
4220432ac3 Merge branch 'master' of https://github.com/z3prover/z3 into opt 2017-02-11 11:57:47 -05:00