From 20d08cbef08993340d15855941fa7fe2c86d9f59 Mon Sep 17 00:00:00 2001 From: Julian Büning Date: Sun, 31 May 2020 15:45:20 +0200 Subject: fix building klee-cxxabi Co-authored-by: Felix Rath --- CMakeLists.txt | 12 +++++++----- runtime/Makefile.cmake.bitcode.config.in | 4 ++-- runtime/klee-eh-cxx/Makefile.cmake.bitcode | 2 +- scripts/build/p-klee.inc | 1 + 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8aaae43b..916c2d74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -647,17 +647,19 @@ if (ENABLE_KLEE_LIBCXX) "${KLEE_LIBCXX_PATH} does not exist. Try passing -DKLEE_LIBCXX_DIR=") endif() - if (NOT IS_DIRECTORY "${KLEE_LIBCXX_INCLUDE_DIR}") + set(KLEE_LIBCXX_INCLUDE_DIR "" CACHE PATH "Path to libcxx include directory") + if (NOT EXISTS "${KLEE_LIBCXX_INCLUDE_DIR}") message(FATAL_ERROR "${KLEE_LIBCXX_INCLUDE_DIR} does not exist. Try passing -DKLEE_LIBCXX_INCLUDE_DIR=") endif() message(STATUS "Use libc++ include path: \"${KLEE_LIBCXX_INCLUDE_DIR}\"") - if (NOT IS_DIRECTORY "${KLEE_LIBCXXABI_DIR}") + set(KLEE_LIBCXXABI_SRC_DIR "" CACHE PATH "Path to libcxxabi source directory") + if (NOT EXISTS "${KLEE_LIBCXXABI_SRC_DIR}") message(FATAL_ERROR - "${KLEE_LIBCXXABI_DIR} does not exist. Try passing -DKLEE_LIBCXXABI_DIR=") + "${KLEE_LIBCXXABI_SRC_DIR} does not exist. Try passing -DKLEE_LIBCXXABI_SRC_DIR=") endif() - message(STATUS "Use libc++abi path: \"${KLEE_LIBCXXABI_DIR}\"") + message(STATUS "Use libc++abi source path: \"${KLEE_LIBCXXABI_SRC_DIR}\"") # Find the library bitcode archive @@ -679,7 +681,7 @@ if (ENABLE_KLEE_LIBCXX) endif() message(STATUS "Found libc++ library: \"${KLEE_LIBCXX_BC_PATH}\"") - # Make a symlink to KLEE_LIBCXX_EXTERNAL_OBJECT so KLEE can find it where it + # Make a symlink to KLEE_LIBCXX_BC_PATH so KLEE can find it where it # is expected. file(MAKE_DIRECTORY "${KLEE_RUNTIME_DIRECTORY}") execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink diff --git a/runtime/Makefile.cmake.bitcode.config.in b/runtime/Makefile.cmake.bitcode.config.in index 4e2354b8..99faa647 100644 --- a/runtime/Makefile.cmake.bitcode.config.in +++ b/runtime/Makefile.cmake.bitcode.config.in @@ -32,9 +32,9 @@ RUNTIME_CONFIG_STRING := @KLEE_RUNTIME_BUILD_TYPE@ # Optional features ENABLE_POSIX_RUNTIME := @BUILD_POSIX_RUNTIME@ -BUILD_KLEE_CXXABI := @BUILD_KLEE_CXXABI@ +BUILD_KLEE_EH_CXX := @BUILD_KLEE_EH_CXX@ KLEE_LIBCXX_INCLUDE_DIR := @KLEE_LIBCXX_INCLUDE_DIR@ -KLEE_LIBCXXABI_DIR := @KLEE_LIBCXXABI_DIR@ +KLEE_LIBCXXABI_SRC_DIR := @KLEE_LIBCXXABI_SRC_DIR@ KLEE_INCLUDE_DIR := @CMAKE_SOURCE_DIR@/include # Commands diff --git a/runtime/klee-eh-cxx/Makefile.cmake.bitcode b/runtime/klee-eh-cxx/Makefile.cmake.bitcode index f29b947d..aa314613 100644 --- a/runtime/klee-eh-cxx/Makefile.cmake.bitcode +++ b/runtime/klee-eh-cxx/Makefile.cmake.bitcode @@ -7,7 +7,7 @@ ARCHIVE_FILE=$(ARCHIVE_DEST)/libklee-eh-cxx.bca all: $(ARCHIVE_FILE) klee_eh_cxx.bc: $(SRC_DIR)/klee_eh_cxx.cpp - $(LLVMCXX) -nostdinc++ -emit-llvm -c -I$(KLEE_INCLUDE_DIR) -I $(KLEE_LIBCXXABI_DIR)/include -I $(KLEE_LIBCXXABI_DIR)/src -I $(KLEE_LIBCXX_INCLUDE_DIR) $(SRC_DIR)/klee_eh_cxx.cpp -o $@ + $(LLVMCXX) -nostdinc++ -emit-llvm -c -I$(KLEE_INCLUDE_DIR) -I $(KLEE_LIBCXXABI_SRC_DIR)/src -I $(KLEE_LIBCXXABI_SRC_DIR)/include -I $(KLEE_LIBCXX_INCLUDE_DIR) $(SRC_DIR)/klee_eh_cxx.cpp -o $@ $(ARCHIVE_FILE): klee_eh_cxx.bc $(LLVM_AR) rcs $@ $< diff --git a/scripts/build/p-klee.inc b/scripts/build/p-klee.inc index b6c4604c..9608fe89 100644 --- a/scripts/build/p-klee.inc +++ b/scripts/build/p-klee.inc @@ -53,6 +53,7 @@ if [ "${USE_LIBCXX}" -eq 1 ]; then "-DENABLE_KLEE_LIBCXX=TRUE" "-DKLEE_LIBCXX_DIR=${LIBCXX_INSTALL}" "-DKLEE_LIBCXX_INCLUDE_DIR=${LIBCXX_INSTALL}/include/c++/v1" + "-DKLEE_LIBCXXABI_SRC_DIR=${LIBCXX_SRC}/libcxxabi" ) else CMAKE_ARGUMENTS+=( -- cgit 1.4.1