svf-tools
Version:
* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.
91 lines (74 loc) • 4.08 kB
Plain Text
# Initialise the package config helper (sets the install prefix in a relocatable way)
@PACKAGE_INIT@
# Ensure the CMake files in this package's directory can be found
list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}" "${CMAKE_CURRENT_LIST_DIR}/Modules")
# Ensure SVF's targets & settings are available publicly
include("${CMAKE_CURRENT_LIST_DIR}/SVFTargets.cmake")
# Set basic variables from this SVF build
set(SVF_VERSION @SVF_VERSION@)
set(SVF_BUILD_TYPE @SVF_BUILD_TYPE@)
set(SVF_SHARED_LIBS @SVF_SHARED_LIBS@)
set(SVF_C_STANDARD @CMAKE_C_STANDARD@)
set(SVF_CXX_STANDARD @CMAKE_CXX_STANDARD@)
set(SVF_C_EXTENSIONS @CMAKE_C_EXTENSIONS@)
set(SVF_CXX_EXTENSIONS @CMAKE_CXX_EXTENSIONS@)
set(SVF_C_STANDARD_REQUIRED @CMAKE_C_STANDARD_REQUIRED@)
set(SVF_CXX_STANDARD_REQUIRED @CMAKE_CXX_STANDARD_REQUIRED@)
# Expose SVF's build opts
set(SVF_USE_PIC @SVF_USE_PIC@)
set(SVF_USE_LTO @SVF_USE_LTO@)
set(SVF_USE_LLD @SVF_USE_LLD@)
set(SVF_COVERAGE @SVF_COVERAGE@)
set(SVF_DEBUG_INFO @SVF_DEBUG_INFO@)
set(SVF_WARN_AS_ERROR @SVF_WARN_AS_ERROR@)
set(SVF_EXPORT_DYNAMIC @SVF_EXPORT_DYNAMIC@)
set(SVF_ENABLE_ASSERTIONS @SVF_ENABLE_ASSERTIONS@)
set(SVF_ENABLE_EXCEPTIONS @SVF_ENABLE_EXCEPTIONS@)
set(SVF_ENABLE_RTTI @SVF_ENABLE_RTTI@)
# Set the basic SVF paths based on the installed location (relocatable)
set_and_check(SVF_INSTALL_ROOT "${PACKAGE_PREFIX_DIR}")
set_and_check(SVF_INSTALL_PREFIX "${PACKAGE_PREFIX_DIR}")
set_and_check(SVF_INSTALL_BINDIR "@PACKAGE_SVF_INSTALL_BINDIR@")
set_and_check(SVF_INSTALL_LIBDIR "@PACKAGE_SVF_INSTALL_LIBDIR@")
set_and_check(SVF_INSTALL_EXTAPIDIR "@PACKAGE_SVF_INSTALL_EXTAPIDIR@")
set_and_check(SVF_INSTALL_INCLUDEDIR "@PACKAGE_SVF_INSTALL_INCLUDEDIR@")
set_and_check(SVF_INSTALL_PKGCONFDIR "@PACKAGE_SVF_INSTALL_PKGCONFDIR@")
set_and_check(SVF_INSTALL_CMAKECONFIGDIR "@PACKAGE_SVF_INSTALL_CMAKECONFIGDIR@")
# If SVF is used directly from a build-from-scratch directory (not installed),
# append the source include paths (SVF_INCLUDE_PATH and SVF_LLVM_INCLUDE_PATH)
# to SVF_INSTALL_INCLUDEDIR. This allows users to debug with in-tree headers.
set(SVF_INCLUDE_PATH "@PACKAGE_SVF_INSTALL_INCLUDEDIR@/../../svf/include")
set(SVF_LLVM_INCLUDE_PATH "@PACKAGE_SVF_INSTALL_INCLUDEDIR@/../../svf-llvm/include")
if(EXISTS ${SVF_INCLUDE_PATH} AND EXISTS ${SVF_LLVM_INCLUDE_PATH})
set(SVF_INSTALL_INCLUDEDIR "${SVF_INCLUDE_PATH};${SVF_LLVM_INCLUDE_PATH};@PACKAGE_SVF_INSTALL_INCLUDEDIR@")
endif()
# For legacy support, also allow the "*_DIR" suffix for the above paths
set(SVF_INSTALL_BIN_DIR "${SVF_INSTALL_BINDIR}")
set(SVF_INSTALL_LIB_DIR "${SVF_INSTALL_LIBDIR}")
set(SVF_INSTALL_EXTAPI_DIR "${SVF_INSTALL_EXTAPIDIR}")
set(SVF_INSTALL_INCLUDE_DIR "${SVF_INSTALL_INCLUDEDIR}")
set(SVF_INSTALL_PKGCONF_DIR "${SVF_INSTALL_PKGCONFDIR}")
set(SVF_INSTALL_CMAKECONFIG_DIR "${SVF_INSTALL_CMAKECONFIGDIR}")
# Expose the installed location of the extapi.bc file (plus some legacy aliases)
set_and_check(SVF_INSTALL_EXTAPI_BC "@PACKAGE_SVF_INSTALL_EXTAPI_BC@")
set(SVF_INSTALL_EXTAPI_FILE "${SVF_INSTALL_EXTAPI_BC}")
# Shouldn't be used, but also expose source tree location
set(SVF_SOURCE_DIR "@SVF_SOURCE_DIR@")
set(SVF_BUILD_DIR "@SVF_BINARY_DIR@")
# Similarly expose the location of extapi.bc in the build tree
set(SVF_BUILD_EXTAPI_BC "@SVF_BUILD_EXTAPI_BC@")
set(SVF_EXTAPI_BC_NAME "@SVF_EXTAPI_BC_NAME@")
# Add the absolute paths of the extapi.bc bitcode file to the imported target's compiler definitions interface
target_compile_definitions(SVF::SvfFlags INTERFACE SVF_INSTALL_EXTAPI_BC="${SVF_INSTALL_EXTAPI_BC}")
# Make `find_dependency()` available
include(CMakeFindDependencyMacro)
# Find Z3 (required)
find_dependency(Z3 REQUIRED)
# Find upstream LLVM (required)
find_dependency(LLVM CONFIG REQUIRED)
# Make the include/link directories & definitions available globally for users of SVF
separate_arguments(_LLVM_DEFINITIONS NATIVE_COMMAND ${LLVM_DEFINITIONS})
include_directories(SYSTEM ${LLVM_INCLUDE_DIRS})
link_directories(${LLVM_LIBRARY_DIRS})
add_definitions(${_LLVM_DEFINITIONS})
check_required_components("@PROJECT_NAME@")