about summary refs log tree commit diff homepage
path: root/CMakeLists.txt
AgeCommit message (Collapse)Author
2019-03-05workaround for LLVM PR39177Julian Büning
provides a workaround for LLVM bug PR39177, which affects LLVM versions 3.9 - 7.0.0: https://bugs.llvm.org/show_bug.cgi?id=39177 This commit is intended to be reverted once support for LLVM versions <= 7 is dropped from KLEE.
2018-12-14Enable C++14 supportMartin Nowack
2018-10-10cmake/lit: add asan/non-asan, ubsan/non-ubsan flagsFrank Busse
2018-10-08add support for klee-replay on OSXFrank Busse
* also adds klee-replay as dependency for systemtests
2018-09-14llvm39: switch KLEE_RUNTIME_BUILD_TYPE to Debug+AssertsJiri Slaby
So that we do not optimize the library during build. It should be optimized only on runtime, depending on the -optimize parameter. It could cause various failures like: inlinable function call in a function with debug info must have a !dbg location call void @klee_overshift_check(i64 64, i64 %int_cast_to_i64) Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-08-03Disabled unit testing in default buildAndrea Mattavelli
2018-07-10Enabled tcmalloc by defaultTimotej Kapus
2018-07-04Link dynamic libraries with specific paths instead of resolving them during ↵Martin Nowack
runtime
2018-07-04Add missing out-of-tree include files directory for TCMallocMartin Nowack
2018-07-04Support sanitizer suppression files with lit-based testingMartin Nowack
2018-07-02CMake: use cmake_{push,pop}_check_stateJulian Büning
2018-07-02CMake: check for ctype and mallinfo functions with CXX instead of C compilerJulian Büning
2017-10-26[cmake]Fix detection of non-standard path for tcmallocMartin Nowack
2017-10-05enforce c++11Jörg Thalheim
fixes #314
2017-10-04[CMake] Add global clean target `clean_all`. Fixes #718.Dan Liew
This target invokes the `clean` target but is also intended for use by other cleaning targets. The `clean_runtime` target is now declared as a dependency of `clean-all` so that the runtime is cleaned as well.
2017-10-04[CMake] Fix bug when doing non-assert builds.Dan Liew
It seems we need to pass `-D` to CMake explicitly.
2017-10-03[CMake] Report the value of some important variables during configureDan Liew
to aid debugging.
2017-10-03[CMake] Fix initialisation order of `KLEE_COMPONENT_*` andDan Liew
`KLEE_SOLVER_LIBRARIES` variables. The code to add `NDEBUG` to `KLEE_COMPONENT_CXX_DEFINES` did so before initialisation and would be silently overwritten.
2017-07-31Fix build for FreeBSD.Tatiana Tikhomirova
On FreeBSD <sys/capabilities.h> is present in libc, so we don't require libcap there. Close and write functions are located in <unistd.h>.
2017-07-28[CMake] Change the default value of `ENABLE_SOLVER_METASMT` to be setDan Liew
dynamically based on whether MetaSMT is available. Previously the default was always off.
2017-07-28[CMake] Add `ENABLE_ZLIB` option to control whether KLEE usesDan Liew
zlib. The default is `ON` if zlib is found on first configure and `OFF` if zlib is not found on first configure.
2017-07-28[CMake] Refactor Z3 detection and change the default value ofDan Liew
`ENABLE_SOLVER_Z3` to be set dynamically based on whether Z3 is available. Previously the default was always off.
2017-07-28[CMake] Refactor STP detection and change the default value ofDan Liew
`ENABLE_SOLVER_STP` to be set dynamically based on whether STP is available. Previously the default was always off.
2017-07-25[CMake] Emit warning when mixing assert and non assert builds.Dan Liew
This could lead to lots of problems. If we discover that these configurations don't work at all we should make this an error.
2017-07-20Switching version to 1.4.0Cristian Cadar
2017-05-02[CMake] change WARNING to FATAL_ERROR when building with a non-RTTI LLVM ↵Hoang M. Le
version and a metaSMT version that requires RTTI
2017-05-02use METASMT_REQUIRE_RTTI flag to decide whether we need RTTIHoang M. Le
2017-03-30[CMake] When supported pass `USES_TERMINAL` argument toDan Liew
`ExternalProject_Add_Step()` so that when using Ninja the output of the bitcode build system is shown immediately.
2017-01-18[CMake] Remove `ENABLE_TESTS` CMake cache option.Dan Liew
The intention of this option was to provide a switch that can be used to globally enable/disable tests. This option ended up causing a lot of confusion as can be seen on the discussion on writing documention for the new build system. https://github.com/klee/klee.github.io/pull/53 So it was decided to remove this option. This fixes #568 .
2017-01-16[CMake] If CMP0037 policy is available set it to NEW so that weDan Liew
disallow using reserved target names.
2017-01-16[CMake] Only add dependencies to `check` if the target is enabled.Dan Liew
Surprisingly the old code still worked even when the target didn't exist.
2017-01-16[CMake] Rename "integrationtests" to "systemtests".Dan Liew
This was a proposal from #500. @andreamattavelli pointed out that the lit tests are really system tests rather than integration tests so this commit fixes the inappropriate naming that I chose.
2016-12-19[CMake] Fix linker warning about mixed linking modes when LLVM wasDan Liew
built with `-fvisibility-inlines-hidden`. This was observed when using a bottled version of LLVM 3.4 on macOS that appears to have been built with this option.
2016-12-09[CMake] Fix bug where if KLEE was built with `ENABLE_TCMALLOC`Dan Liew
and then re-configured with `ENABLE_TCMALLOC` set to OFF then `klee/Config/config.h` was not correctly re-generated.
2016-12-01Merge pull request #523 from delcypher/remove_klee_tag_outputCristian Cadar
Remove support for reporting the approximate git tag.
2016-11-30Remove support for reporting the approximate git tag.Dan Liew
This was confusing because it would emit something like `v1.0.0-290-g08d4716` because the 1.1.0 and 1.2.0 releases didn't have a tag on the master branch so `git describe --tags` would just find the `v1.0.0` tag and report based on that tag.
2016-11-30Increasing version to 1.3.0Cristian Cadar
2016-11-23[CMake] Fix some indentation issues.Dan Liew
2016-11-23[CMake] Fix bug where the wrong path is checked for when checkingDan Liew
to see if we can find klee-uclibc's C library.
2016-11-20[CMake] Fix the old Autoconf/Makefile build system files in source tree ↵Dan Liew
interfering with CMake build. We now raise a fatal error if we detect certain files in the source tree. This is a heuristic but it's good enough for now. The order of includes has also been changed so that the build tree include directory has priority over the source tree include directory so that even if the added check was missing the right header file (i.e. `${CMAKE_BINARY_DIR}/include/klee/Config/config.h` would be picked up at build time.
2016-11-07[CMake] Report git revision information if available.Dan Liew
This is done as a separate commit because it imports third party code. It's under the Boost license though so it "should be" fine.
2016-11-07Implement a CMake based build system for KLEE.Dan Liew
This is based off intial work by @jirislaby in #481. However it has been substantially modified. Notably it includes a separate build sytem to build the runtimes which is inspired by the old build system. The reason for doing this is because CMake is not well suited for building the runtime: * CMake is configured to use the host compiler, not the bitcode compiler. These are not the same thing. * Building the runtime using `add_custom_command()` is flawed because we can't automatically get transitive depencies (i.e. header file dependencies) unless the CMake generator is makefiles. (See `IMPLICIT_DEPENDS` of `add_custom_command()` in CMake). So for now we have a very simple build system for building the runtimes. In the future we can replace this with something more sophisticated if we need it. Support for all features of the old build system are implemented apart from recording the git revision and showing it in the output of `klee --help`. Another notable change is the CMake build system works much better with LLVM installs which don't ship with testing tools. The build system will download the sources for `FileCheck` and `not` tools if the corresponding binaries aren't available and will build them. However `lit` (availabe via `pip install lit`) and GTest must already be installed. Apart from better support for testing a significant advantage of the new CMake build system compared to the existing "Autoconf/Makefile" build system is that it is **not** coupled to LLVM's build system (unlike the existing build system). This means that LLVM's autoconf/Makefiles don't need to be installed somewhere on the system. Currently all tests pass. Support has been implemented in TravisCI and the Dockerfile for building with CMake. The existing "Autoconf/Makefile" build system has been left intact and so both build systems can coexist for a short while. We should remove the old build system as soon as possible though because it creates an unnecessary maintance burden.