summaryrefslogtreecommitdiff
path: root/cmake
AgeCommit message (Collapse)Author
2021-03-31Refactor GMP and Poly dependencies (#6245)Gereon Kremer
Refactors GMP and libpoly to also use external projects and be available within cmake as proper targets.
2021-03-31Refactor dependencies for external SAT solvers (#6215)Gereon Kremer
This PR refactors how we obtain, build and use the external SAT solvers used by CVC4: CaDiCaL, CryptoMiniSat and Kissat. All three contrib scripts are removed and instead an external project is integrated into the cmake find scripts.
2021-03-31Refactor SymFPU dependency (#6218)Gereon Kremer
This PR refactors the contrib script to download SymFPU to a cmake external project.
2021-03-29Add external project to install gtest (#6229)Gereon Kremer
This PR enables us to build gtest ourselves if it is not already installed.
2021-03-29Fix configuration printing. (#6236)Aina Niemetz
2021-03-27When building ANTLR via CMake, do not require javac #6224 (#6225)Andrew V. Jones
As title; attempts to correct #6224. Signed-off-by: Andrew V. Jones andrewvaughanj@gmail.com
2021-03-27Refactor ANTLR3 dependency (#6202)Gereon Kremer
This PR refactors our first, and arguably most fragile, dependency. Right now all dependencies need to be manually installed (by calling the appropriate contrib/get-X script). For optional dependencies, we additionally need to enable them when calling the configure script (or via ccmake). This PR is the first step in refactoring all dependencies to be automatically build (if required) as an external project. Note that this not only eliminates the need to call contrib scripts, but also simplifies cross compilation: as all dependencies are now built within the build folders, every build folder has its own copy which may use different toolchains.
2021-03-26Use color output to print configuration. (#6219)Aina Niemetz
2021-03-24Refactor our integration of LFSC (#6201)Gereon Kremer
This PR further decouples LFSC from the remaining build system, but makes it more convenient to use at the same time. The contrib/get-lfsc-checker script is now completely standalone and installs LFSC and the necessary signatures to deps/, as well as wrapper scripts to conveniently run lfscc from there and directly check cvc4 proofs. The goal would be to automatically use LFSC in our regressions as well.
2021-03-20Generate cvc/Kind.java for the java API (#6143)mudathirmahgoub
PR changes: Refactor python/genkinds.py by separating parsing from file generation. Add java/genkinds.py to generate file Kind.java. Enable java API in ./configure.sh with "under development" warning.
2021-03-16cmake: Generate cvc4_export.h and set visibility to hidden. (#6139)Mathias Preiner
The build system (cmake) will automatically generate an export header cvc4_export.h, which makes sure that the correct export features are defined depending on the compiler and target platform. The macro CVC4_EXPORT replaces CVC4_PUBLIC and its usage is reduced by 2/3. Co-authored-by: Gereon Kremer <nafur42@gmail.com>
2021-03-10cmake: Fix optimization level for debug builds. (#6097)Mathias Preiner
Further cleans up some unused variables and moves the configuration of best to configure.sh.
2021-03-09Update copyright headers to 2021. (#6081)Aina Niemetz
2021-03-05Reimplement time limit mechanism for windows (#6049)Gereon Kremer
As noted in #5034, --tlimit is not working properly on windows. It turns out that the timer mechanism provided by the windows API are not suitable for our use case. Thus, this PR implements a generic std::thread-based timer mechanism which is used whenever the POSIX timers (setitimer) are not available. It also adds some documentation on the timer options and the reasons we ended up with this. Fixes #5034.
2021-03-04Add proper define for libpoly usage (#6050)Gereon Kremer
When adding libpoly, we forgot to add a proper define to cvc4autoconfig and included real_algebraic_number.h everywhere to get this define. This PR introduces the CVC4_POLY_IMP define and removes all obsolete includes to real_algebraic_number.h.
2021-03-04Add cmake scripts for iwyu targets. (#6042)Gereon Kremer
This PR adds some utility targets that simplify the usage of iwyu (include-what-you-use) on our code base.
2021-03-02Remove obsolete dependency on CxxTest. (#6038)Aina Niemetz
2021-03-02Add aarch64 (ARM64) cross-compile support. (#6033)Mathias Preiner
This commit adds support for cross-compiling for aarch64 platforms and simplifies cross-compilation handling for Windows. The configure script now automatically downloads and cross-compiles the required dependencies ANTLR3 and GMP when passing option --arm64 or --win64. Fixes #1479 #5769.
2020-09-22Update copyright header script to support CMake and Python files (#5067)Mathias Preiner
This PR updates the update-copyright.pl script to also update/add copyright headers to CMake specific files. It further fixes a small typo in the header.
2020-09-02Use SMT-COMP configuration for competition build (#4995)Andres Noetzli
This commit changes our `competition` build to include the libraries that we have used for SMT-COMP by default. This makes it easier for users to reproduce our SMT-COMP configuration for performance measurements. We are using GPL libraries for this build type, so the commit adds color to highlight the fact that this build type produces a GPL build.
2020-09-01[API] Fix Python Examples (#4943)Andres Noetzli
When testing the API examples, Python examples were not included. This commit changes that and fixes multiple minor issues that came up once the tests were enabled: - It adds `Solver::supportsFloatingPoint()` as an API method that returns whether CVC4 is configured to support floating-point numbers or not (this is useful for failing gracefully when floating-point support is not available, e.g. in the case of our floating-point example). - It updates the `expections.py` example to use the new API. - It fixes the `sygus-fun.py` example. The example was passing a _set_ of non-terminals to `Solver::mkSygusGrammar()` but the order in which the non-terminals are passed in matters because the first non-terminal is considered to be the starting terminal. The commit also updates the documentation of that function. - It fixes the Python API for datatypes. The `__getitem__` function had a typo and the `datatypes.py` example was crashing as a result.
2020-07-30When linking Editline, use 'pkg-config' to correctly find the link-time ↵Andrew V. Jones
dependencies (#4809) Signed-off-by: Andrew V. Jones <andrew.jones@vector.com>
2020-07-17Support for using 'libedit' over 'readline' #4571 (#4579)Andrew V. Jones
Signed-off-by: Andrew V. Jones <andrew.jones@vector.com>
2020-07-17Integration of libpoly (#4679)Gereon Kremer
This commit integrates LibPoly into CVC4. It adds `contrib/get-poly`, adds it to the configure script, cmake and places where CVC4 inspects its own build configuration. Furthermore, it adds `CVC4::RealAlgebraicNumber` (which wraps `poly::AlgebraicNumber`) including some basic unit tests and some utilities.
2020-07-01Add testing infrastructure for LFSC signatures (#4678)Andres Noetzli
This commit adds testing infrastructure for LFSC signatures that is enabled when CVC4 is configured with LFSC. The testing infrastructure adopts run_test.py from https://github.com/CVC4/LFSC with minor modifications (mainly adding support for a list of include directories that are searched to resolve *.plf dependencies). The commit uses the existing examples and test files from proofs/signatures as the initial set of tests. Co-authored-by: Alex Ozdemir aozdemir@hmc.edu
2020-06-09Language bindings: Enable catching of exceptions (#2813)Andres Noetzli
Fixes #2810. SWIG relies on throw specifiers to determine which exceptions a method can throw. The wrappers generated by SWIG catch those C++ exceptions and turn them into exceptions for the target language. However, we have removed throw specifiers because they have been deprecated in C++11, so SWIG did not know about any of our exceptions. This commit fixes the issue using the %catches directive, declaring that all methods may throw a CVC4::Exception or a general exception. Note: This means that users of the language bindings will just receive a general CVC4::Exception instead of more specific exceptions like TypeExceptions. Given that we are planning to have a single exception type for the new CVC4 API, this seemed like a natural choice. Additionally, the commit (significantly) simplifies the mapping of C++ to Java exceptions and fixes an issue with Python exceptions not inheriting from BaseException. Finally, the commit adds API examples for Java and Python, which demonstrate catching exceptions, and adds Python examples as tests in our build system.
2020-06-08Fix Java target and Relations example (#4583)Andres Noetzli
Currently, our CVC4Config file is never including the CVC4 Java targets because of a typo in `cmake/CVC4Config.cmake.in`. For this reason, our build system for the examples would never actually build the examples. Fixing this issue brought up another issue in our Relations Java example that was using an outdated `System.loadLibrary()` call. This commit fixes the typo and the example. Note: Most changes in `Relations.java` were caused by ClangFormat.
2020-05-22Add support for SAT solver Kissat. (#4514)Aina Niemetz
2020-03-31Remove replay and use-theory options and idl (#4186)Andrew Reynolds
Towards disentangling Options / NodeManager / SmtEngine. This PR removes options --use-theory=NAME and --replay/--replay-log. Both of these options are highly complex, unused, and lead to complications when implementing the way options and our build system work. The first is motivated by making TheoryEngine use an "alternate" theory, which appears to e.g. make it so that TheoryIdl could entirely replace TheoryArith. I believe this is too heavy handed of a solution: there should a consistent TheoryArith class, and options should be used to enable/disable alternate modules within it. The second attempts to replay low level decisions from the SAT solver. It is documented as not working (in 1.0). I do not believe this is worth salvaging. It also removes the solver in src/theory/idl, which cannot be enabled after this commit.
2020-02-19Add Python bindings using Cython -- see below for more details (#2879)makaimann
2020-02-11cmake: Remove unused ENABLE_OPTIMIZED option. (#3749)Mathias Preiner
2019-12-06contrib: Setup all dependencies in deps/ directory. (#3534)Mathias Preiner
2019-11-14Use Shebang in cxxtestgen when appropriate (#3458)Alex Ozdemir
CxxTest's generator has one of three names, depending on the CxxTest version: * `cxxtestgen.py`, a python program * `cxxtestgen`, some kind of program with a shebang * `cxxtestgen.pl`, a perl program We were mistakenly assuming that the `cxxtestgen` form was always a python program. Now, if we find that form on the system, we assume that it is has a shebang, and is executable.
2019-10-08cmake: Fix include of CVC4JavaTargets.cmake. (#3373)Mathias Preiner
Only include Java targets if Java bindings are enabled.
2019-09-25Use separate CMake project for CVC4 examples. (#3196)Mathias Preiner
2019-09-06Remove portfolio (#3236)Andrew Reynolds
2019-08-30Undo unintential change to FindCxxTest (#3240)Andrew Reynolds
2019-08-29Infer conflicts based on regular expression inclusion (#3234)Andres Noetzli
We have a conflict if we have `str.in.re(x, R1)` and `~str.in.re(x, R2)` and `R2` includes `R1` because there is no possible value for `x` that satisfies both memberships. This commit adds code to detect regular expression inclusion for a small fragment of regular expressions: string literals with single char (`re.allchar`) and multichar wildcards (`re.*(re.allchar)`). Signed-off-by: Andres Noetzli <anoetzli@amazon.com>
2019-08-14cmake: Export CVC4 library interface. (#3179)Mathias Preiner
2019-08-02Update CaDiCaL to version 1.0.3. (#3137)Mathias Preiner
* Removes incremental API check (#3011) * Fixes toSatValueLit to use the new semantics of CaDiCaL's val() Fixes #3011
2019-05-17Support for incremental bit-blasting with CaDiCaL (#3006)Andres Noetzli
This commit adds support for eager bit-blasting with CaDiCaL on incremental benchmarks. Since not all CaDiCaL versions support incremental solving, the commit adds a CMake check that checks whether `CaDiCaL::Solver::assume()` exists. Note: The check uses `check_cxx_source_compiles`, which is not very elegant but I could not find a better solution (e.g. `check_cxx_symbol_exists()` does not seem to support methods in classes and `check_struct_has_member()` only seems to support data members).
2019-04-15Check for rt library in configuration -- support for glibc<2.17 (#2854)makaimann
This is a minor fix for systems with glibc version < 2.17. In that case, we need to link with `-lrt` according to the clock_gettime man page.
2019-01-11Fixed linking against drat2er, and use drat2er (#2785)Alex Ozdemir
* Fixed linking against drat2er/drat-trim We have machinery for linking against drat2er. However, this machinery didn't quite work because libdrat2er.a contains an (undefined) reference to `run_drat_trim` from libdrat-trim.a. Thus, when linking against libdrat2er.a, we also need to link against libdrat-trim.a. I made this change, and then tested it by actually calling a function from the drat2er library (CheckAndConvertToLRAT) which relies on `run_drat_trim`. Since this invocation compiles, we know that the linking is working properly now. * Combined the two libs, per Mathias * drat2er configured gaurds
2018-12-17 Configured for linking against drat2er (#2754)Alex Ozdemir
drat2er is a C/C++ project which includes support for * Checking DRAT proofs * Converting DRAT proofs to LRAT proofs * Converting DRAT proofs to ER proofs It does the first 2 by using drat-trim under the hood. I've modified our CMake configuration to allow drat2er to be linked into CVC4, and I added a contrib script.
2018-10-22Only build CryptoMiniSat library, no binary (#2657)Andres Noetzli
This commit changes the contrib/get-cryptominisat script to only build the CryptoMiniSat library instead of both the library and the binary. The advantage of this is that we can compile a static version of the CryptoMiniSat library without having a static version of glibc or libstdc++ (this is fine as long as we do a shared library build of CVC4). This is an issue on Fedora (tested on version 25) where the contrib/get-cryptominisat script was failing when building the CryptoMiniSat binary due to the static version of these libraries not being available. Since we just want to build the library, the commit also changes the script to not install CryptoMiniSat anymore and updates the CMake find script to accomodate the new folder structure. Side note: the folder structure generated after this commit is a bit more uniform with, e.g. the CaDiCaL script: The source files are directly in the cryptominisat5 folder, not in a subfolder.
2018-10-20Remove antlr_undefines.h. (#2664)Mathias Preiner
Is not required anymore since we don't use autotools anymore.
2018-09-27cmake: Add CxxTest finder module to allow custom paths. (#2542)Mathias Preiner
2018-09-26cmake: Only print dumping warning if not disabled by user. (#2543)Mathias Preiner
2018-09-24cmake: Fix and simplify git version info. (#2516)Aina Niemetz
2018-09-22cmake: Build fully static binaries with option --static.Mathias Preiner
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback