diff --git a/INSTALL-centos.md b/INSTALL-centos.md index ba3f0319c2..9e82f57a6c 100644 --- a/INSTALL-centos.md +++ b/INSTALL-centos.md @@ -132,6 +132,8 @@ Here is a list of available CMake configure option : |`USE_PRECOMPILED_EXT`| This option must be set if you use precompiled external librairies (default `OFF`)| |`BUILD_TESTING`| Enable test build (default `OFF`)| |`BUILD_OUTPUT_TEST`| Enable test with output compare build (default `OFF`)| +|`USE_XPRESS`| Build with XPress support (default `OFF`)| +|`XPRESS_ROOT`|Define XPress install root (for example `/opt/xpressmp/`)| ``` diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3a28b4708c..2b5c6fc802 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -195,6 +195,14 @@ message(STATUS "CMAKE_PREFIX_PATH : ${CMAKE_PREFIX_PATH}") add_subdirectory(antares-deps) # Define needed external library +option(XPRESS_USE "Compilation with XPRESS use" OFF) + +if (XPRESS_USE) + + list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/xpress) + find_package(XPRESS REQUIRED) + +endif() #libcurl find_package(CURL REQUIRED) diff --git a/src/cmake/xpress/FindXPRESS.cmake b/src/cmake/xpress/FindXPRESS.cmake new file mode 100644 index 0000000000..211e7b18d0 --- /dev/null +++ b/src/cmake/xpress/FindXPRESS.cmake @@ -0,0 +1,75 @@ +#[=======================================================================[.rst: +FindXPRESS +-------- + +This module determines the XPRESS library of the system. + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``XPRESS::XPRESS``, if +XPRESS has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +:: + +XPRESS_FOUND - True if XPRESS found. + +Hints +^^^^^ + +A user may set ``XPRESS_ROOT`` to a XPRESS installation root to tell this +module where to look. +#]=======================================================================] +set(XPRESS_FOUND FALSE) + +if(CMAKE_C_COMPILER_LOADED) + include (CheckIncludeFile) + include (CheckCSourceCompiles) +elseif(CMAKE_CXX_COMPILER_LOADED) + include (CheckIncludeFileCXX) + include (CheckCXXSourceCompiles) +else() + message(FATAL_ERROR "FindXPRESS only works if either C or CXX language is enabled") +endif() + +if(NOT XPRESS_ROOT) + set(XPRESS_ROOT $ENV{XPRESS_ROOT}) +endif() +message(STATUS "XPRESS_ROOT: ${XPRESS_ROOT}") +if(NOT XPRESS_ROOT) + message(FATAL_ERROR "XPRESS_ROOT: not found") +else() + set(XPRESS_FOUND TRUE) +endif() + +if(XPRESS_FOUND AND NOT TARGET XPRESS::XPRESS) + add_library(XPRESS::XPRESS UNKNOWN IMPORTED) + + if(UNIX) + set_target_properties(XPRESS::XPRESS PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${XPRESS_ROOT}/include") + endif() + + if(APPLE) + set_target_properties(XPRESS::XPRESS PROPERTIES + #INSTALL_RPATH_USE_LINK_PATH TRUE + #BUILD_WITH_INSTALL_RPATH TRUE + #INTERFACE_LINK_DIRECTORIES "${XPRESS_ROOT}/lib" + #INSTALL_RPATH "${XPRESS_ROOT}/lib;${INSTALL_RPATH}" + IMPORTED_LOCATION "${XPRESS_ROOT}/lib/libxprs.dylib") + elseif(UNIX) + set_target_properties(XPRESS::XPRESS PROPERTIES + INTERFACE_LINK_DIRECTORIES "${XPRESS_ROOT}/lib" + IMPORTED_LOCATION ${XPRESS_ROOT}/lib/libxprs.so) + elseif(MSVC) + set_target_properties(XPRESS::XPRESS PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${XPRESS_ROOT}\\include" + IMPORTED_LOCATION "${XPRESS_ROOT}\\lib\\xprs.lib") + endif() +endif() +