Browse Source
CMAKE: Added option to include and link against Spot
CMAKE: Added option to include and link against Spot
Conflicts: CMakeLists.txttempestpy_adaptions
Tim Quatmann
4 years ago
committed by
Stefan Pranger
5 changed files with 130 additions and 1 deletions
-
8CMakeLists.txt
-
9resources/3rdparty/CMakeLists.txt
-
64resources/3rdparty/include_SPOT.cmake
-
42resources/cmake/find_modules/FindSPOT.cmake
-
8storm-config.h.in
@ -0,0 +1,64 @@ |
|||
set(STORM_HAVE_SPOT OFF) |
|||
|
|||
|
|||
if (STORM_FORCE_SHIPPED_SPOT AND NOT STORM_USE_SPOT) |
|||
message(FATAL_ERROR "Storm - Incompatible cmake options: STORM_FORCE_SHIPPED_SPOT=ON and STORM_USE_SPOT=OFF.") |
|||
endif() |
|||
|
|||
if (STORM_FORCE_LTL_SUPPORT AND NOT STORM_USE_SPOT) |
|||
message(FATAL_ERROR "Storm - Incompatible cmake options: STORM_FORCE_LTL_SUPPORT=ON and STORM_USE_SPOT=OFF. LTL support requires Spot.") |
|||
endif() |
|||
|
|||
if(STORM_USE_SPOT AND NOT STORM_SHIPPED_SPOT AND NOT STORM_FORCE_SHIPPED_SPOT) |
|||
|
|||
# try to find Spot on the system |
|||
if (NOT "${SPOT_ROOT}" STREQUAL "") |
|||
message(STATUS "Storm - searching for Spot in ${SPOT_ROOT}") |
|||
find_package(SPOT QUIET PATHS ${SPOT_ROOT} NO_DEFAULT_PATH) |
|||
endif() |
|||
if (NOT SPOT_FOUND) |
|||
find_package(SPOT QUIET) |
|||
endif() |
|||
|
|||
if (SPOT_FOUND) |
|||
message(STATUS "Storm - Linking with shipped Spot ${SPOT_VERSION} (include: ${SPOT_INCLUDE_DIR}, library: ${SPOT_LIBRARIES}).") |
|||
set(STORM_HAVE_SPOT ON) |
|||
elseif(NOT STORM_FORCE_LTL_SUPPORT) |
|||
message (WARNING "Storm - Could not find Spot. Model checking of LTL formulas (beyond PCTL) will not be supported. You may want to set cmake option STORM_FORCE_LTL_SUPPORT to install Spot automatically. If you already installed Spot, consider setting cmake option SPOT_ROOT") |
|||
endif() |
|||
elseif() |
|||
endif() |
|||
|
|||
set(STORM_SHIPPED_SPOT OFF) |
|||
if(STORM_FORCE_SHIPPED_SPOT OR (STORM_FORCE_LTL_SUPPORT AND NOT STORM_HAVE_SPOT)) |
|||
|
|||
# download and install shipped Spot |
|||
ExternalProject_Add(spot |
|||
URL http://www.lrde.epita.fr/dload/spot/spot-2.9.6.tar.gz # When updating, also change version output below |
|||
DOWNLOAD_NO_PROGRESS TRUE |
|||
DOWNLOAD_DIR ${STORM_3RDPARTY_BINARY_DIR}/spot_src |
|||
SOURCE_DIR ${STORM_3RDPARTY_BINARY_DIR}/spot_src |
|||
PREFIX ${STORM_3RDPARTY_BINARY_DIR}/spot |
|||
CONFIGURE_COMMAND ${STORM_3RDPARTY_BINARY_DIR}/spot_src/configure --prefix=${STORM_3RDPARTY_BINARY_DIR}/spot --disable-python |
|||
BUILD_COMMAND make -j |
|||
INSTALL_COMMAND make install |
|||
LOG_CONFIGURE ON |
|||
LOG_BUILD ON |
|||
LOG_INSTALL ON |
|||
BUILD_BYPRODUCTS ${STORM_3RDPARTY_BINARY_DIR}/spot/lib/libspot${DYNAMIC_EXT} |
|||
) |
|||
add_dependencies(resources spot) |
|||
set(SPOT_INCLUDE_DIR "${STORM_3RDPARTY_BINARY_DIR}/spot/include/") |
|||
set(SPOT_DIR "${STORM_3RDPARTY_BINARY_DIR}/spot/") |
|||
set(SPOT_LIBRARIES ${STORM_3RDPARTY_BINARY_DIR}/spot/lib/libspot${DYNAMIC_EXT}) |
|||
set(STORM_HAVE_SPOT ON) |
|||
set(STORM_SHIPPED_SPOT ON) |
|||
|
|||
message(STATUS "Storm - Linking with shipped Spot 2.9.6 (include: ${SPOT_INCLUDE_DIR}, library ${SPOT_LIBRARIES}).") |
|||
|
|||
endif() |
|||
|
|||
if (STORM_HAVE_SPOT) |
|||
include_directories("${SPOT_INCLUDE_DIR}") |
|||
list(APPEND STORM_LINK_LIBRARIES ${SPOT_LIBRARIES}) |
|||
endif() |
@ -0,0 +1,42 @@ |
|||
# - Try to find libspot |
|||
# Once done this will define |
|||
# SPOT_FOUND - System has glpk |
|||
# SPOT_INCLUDE_DIR - The glpk include directory |
|||
# SPOT_LIBRARIES - The libraries needed to use glpk |
|||
# SPOT_VERSION - The version of spot |
|||
|
|||
# use pkg-config to get the directories and then use these values |
|||
message(STATUS "FIND SPOT") |
|||
|
|||
# in the find_path() and find_library() calls |
|||
find_package(PkgConfig QUIET) |
|||
PKG_CHECK_MODULES(PC_SPOT QUIET spot) |
|||
|
|||
find_path(SPOT_INCLUDE_DIR NAMES spot/misc/_config.h |
|||
HINTS |
|||
${PC_SPOT_INCLUDEDIR} |
|||
${PC_SPOT_INCLUDE_DIRS} |
|||
) |
|||
|
|||
find_library(SPOT_LIBRARIES NAMES spot |
|||
HINTS |
|||
${PC_SPOT_LIBDIR} |
|||
${PC_SPOT_LIBRARY_DIRS} |
|||
) |
|||
|
|||
if(PC_SPOT_VERSION) |
|||
set(SPOT_VERSION ${PC_SPOT_VERSION}) |
|||
elseif(SPOT_INCLUDE_DIR AND EXISTS "${SPOT_INCLUDE_DIR}/spot/misc/_config.h") |
|||
file(STRINGS "${SPOT_INCLUDE_DIR}/spot/misc/_config.h" SPOT_VERSION |
|||
REGEX "^#define[\t ]+SPOT_VERSION[\t ]+\".+\"") |
|||
string(REGEX REPLACE "^#define[\t ]+SPOT_VERSION[\t ]+\"(.+)\"" "\\1" SPOT_VERSION "${SPOT_VERSION}") |
|||
endif() |
|||
|
|||
# handle the QUIETLY and REQUIRED arguments and set SPOT_FOUND to TRUE if |
|||
# all listed variables are TRUE |
|||
include(FindPackageHandleStandardArgs) |
|||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SPOT |
|||
REQUIRED_VARS SPOT_LIBRARIES SPOT_INCLUDE_DIR |
|||
VERSION_VAR SPOT_VERSION) |
|||
|
|||
mark_as_advanced(SPOT_INCLUDE_DIR SPOT_LIBRARIES) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue