UNPKG

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
# 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@")