about summary refs log tree commit diff homepage
path: root/cmake
AgeCommit message (Collapse)Author
2023-06-05CMake: use check_c_source_compiles() for FSTATAT_PATH_ACCEPTS_NULLJulian Büning
is a bit more convenient and avoids an extra file
2023-06-05CMake: use built-in FindSQLite3 moduleJulian Büning
available since CMake version 3.14
2023-06-05CMake: remove obsolete commentsJulian Büning
obsoleted by changes in 3ef5c9d0cd51babb7c4ec2d7bb76d0cb7e47a65c
2023-03-17[cmake] Use LLVM's CMake functionality onlyMartin Nowack
LLVM became more complex, use LLVM's CMake functionality directly instead of replicating this behaviour in KLEE's build system. Use the correct build flags provided by LLVM itself. This is influenced by the way LLVM is built in the first place. Remove older CMake support (< 3.0).
2022-07-07POSIX runtime: fstatat: check for nonnull path APIsFrank Busse
2022-06-30remove LLVM < 9Frank Busse
2022-03-17LLVM < 6 leftoversJulian Büning
2022-03-17remove LLVM < 6 from build/test scriptsFrank Busse
2021-03-05Add cmake custom target `uninstall`jiseongg
`make uninstall` is enabled. Without this, uninstalling was done manually with `rm` command.
2020-11-04[cmake] Add support to generate arbitrary runtime library configurationsMartin Nowack
Every runtime library can be build with multiple configurations. Replace the Makefile-based setup by cmake one. Currently, we generate 32bit and 64bit libraries simultaneously and can link against them.
2020-11-04[cmake] Switch to "newer" cmake version 3.5.0Martin Nowack
Ubuntu 16.04 supports cmake 3.5.0 as default. Cmake 2.8.12 was the default in 14.04. Use cmake 3 to simplify cmake files.
2020-09-30[CMake][Z3] Check if function `Z3_get_error_msg` needs `context` using C++Martin Nowack
Linking with Z3 might fail if Z3 is built with UBSan as parts of Z3 are written in C++. Check explicitly with a C++ compiler.
2020-08-07Tweak LLVM version string parser: support rustAlastair Reid
This change allows KLEE to be configured to use the LLVM version that comes with the Rust compiler instead of a standard version. e.g., one might configure with -DLLVM_CONFIG_BINARY=${RUST_SRC}/build/x86_64-unknown-linux-gnu/llvm/bin/llvm-config For which typical output might be 10.0.1-rust-dev
2020-06-17remove cmake warningFrank Busse
* rename SQLITE3 to SQLite3 CMake Warning (dev) at /usr/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:272 (message): The package name passed to `find_package_handle_standard_args` (SQLITE3) does not match the name of the calling package (SQLite3). This can lead to problems in calling code that expects `find_package` result variables (e.g., `_FOUND`) to follow a certain pattern. Call Stack (most recent call first): cmake/modules/FindSQLite3.cmake:26 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) CMakeLists.txt:430 (find_package) This warning is for project developers. Use -Wno-dev to suppress it.
2020-02-24find_llvm.cmake: enable parsing for git versionJulian Büning
2019-07-30CMake: fix LLVM_DEFINITIONS with find_package()Julian Büning
2019-07-30CMake: enable reuse of LLVM's googletest src and targetsJulian Büning
Fixes an issue that occurs with USE_CMAKE_FIND_PACKAGE_LLVM=ON and LLVM compiled from sources, which then exports gtest and gtest_main targets. In case gtest and gtest_main targets are not imported from LLVM and GTEST_SRC_DIR is not set, CMake can now reuse the googletest sources from LLVM_BUILD_MAIN_SRC_DIR (if available) with USE_CMAKE_FIND_PACKAGE_LLVM=ON. This last limitation is due to LLVM making modifications to the CMakeLists.txt of googletest that requires add_llvm_library() from AddLLVM.cmake.
2019-04-04Clean klee-stats, StatsTracker and cmakeTimotej Kapus
2019-03-21drop support for LLVM <= 3.7Julian Büning
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-09-14cmake: find_llvm, fix libraries with llvm-config 3.9Jiri Slaby
llvm-config from llvm 3.9 was broken. Fix handling of improperly returned libraries. From: liblibLLVM-3.9.so.so To: libLLVM-3.9.so Fixes #895. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2018-07-02CMake: use cmake_{push,pop}_check_stateJulian Büning
2018-06-11cmake: find_llvm, handle libLLVM-version.so properlyJiri Slaby
Some builds of llvm contain a lib like this: /usr/lib64/libLLVM-3.9.so Extend the regular expression, so that we really return what we are supposed to. Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
2017-10-17[cmake] detect available metaSMT backends using a pre-defined flag and raise ↵Hoang M. Le
compile flags accordingly
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] 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] Fix bug where we would inherit LLVM's `-DNDEBUG` defineDan Liew
when LLVM was built without assertions. This prevented `ENABLE_KLEE_ASSERTS` from working correctly. Reported by @MartinNowack .
2017-03-30[CMake] Try to fix bug reported by #633.Dan Liew
It looks like older LLVM versions that were built from SVN/git didn't have a patch version number (i.e. `3.4svn` rather than `3.4.0svn`).
2017-03-23remove special handling of metaSMT_CXXFLAGS (unnecessary now as we use a ↵Hoang M. Le
fixed version of metaSMT with this flag being properly set)
2017-01-28[cmake] add PATH_SUFFIXES needed to find z3 on FedoraKevin Laeufer
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-18CMake: Fixed the LLVM version regexAdrian Herrera
When trying to KLEE with a version of LLVM (specifically, 3.5) built from Github (https://github.com/llvm-mirror/llvm/tree/release_35) the regex in find_llvm.cmake failed to match the LLVM version string because it was suffixed with "svn" - i.e. "3.5.2svn". Added the optional "svn" suffix to the CMake regex to fix this.
2016-11-22[CMake] Fix determining the system libraries needed by LLVM fromDan Liew
`llvm-config` when using LLVM 3.5 and newer. In newer versions of `llvm-config`, `--ldflags` doesn't give the system libraries anymore. Instead we need to use `--system-libs`. Issue reported by @ryosa .
2016-11-22[CMake] Fix link order of LLVM libraries and required system libraries.Dan Liew
Now LLVM libraries are added as imported targets and their link dependencies are explicitly stated so CMake can get the link order correct.
2016-11-21[CMake] Fix the build when `-DBUILD_SHARED_LIBS=ON` is passed.Dan Liew
This fixes issue #507. We can't build the components as shared libraries right now due to cyclic dependencies (see #502 for a fix) and there are a few other patches needed too (see #507). Building the components as shared libraries isn't really desirable anyway because it would require us to ship KLEE's libraries which don't have a stable API.
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.