diff --git a/CMakeLists.txt b/CMakeLists.txt index 894f184a5f..f0d6ca8f43 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -232,6 +232,7 @@ check_type_size("int *" SIZEOF_INT_P LANGUAGE CXX) message(STATUS "Found int * size: ${SIZEOF_INT_P}") cmake_pop_check_state() +include(deps) include(cpp) include(python) diff --git a/cmake/cpp.cmake b/cmake/cpp.cmake index 2e085a8de5..b3f33a08f6 100644 --- a/cmake/cpp.cmake +++ b/cmake/cpp.cmake @@ -2,95 +2,6 @@ if(NOT BUILD_CXX) return() endif() -# Check dependencies -set(CMAKE_THREAD_PREFER_PTHREAD TRUE) -set(THREAD_PREFER_PTHREAD_FLAG TRUE) -find_package(Threads REQUIRED) - -# Tell find_package() to try “Config” mode before “Module” mode if no mode was specified. -# This should avoid find_package() to first find our FindXXX.cmake modules if -# distro package already provide a CMake config file... -set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) - -# libprotobuf force us to depends on ZLIB::ZLIB target -if(NOT BUILD_ZLIB) - find_package(ZLIB REQUIRED) -endif() -if(NOT TARGET ZLIB::ZLIB) - message(FATAL_ERROR "Target ZLIB::ZLIB not available.") -endif() - -if(NOT BUILD_absl) - find_package(absl REQUIRED) -endif() -set(ABSL_DEPS - absl::base - absl::flags - absl::flags_commandlineflag - absl::flags_parse - absl::flags_usage - absl::cord - absl::random_random - absl::raw_hash_set - absl::hash - absl::memory - absl::meta - absl::stacktrace - absl::status - absl::statusor - absl::str_format - absl::strings - absl::synchronization - absl::any - ) - -if(NOT BUILD_Protobuf) - find_package(Protobuf REQUIRED) -endif() -if(NOT TARGET protobuf::libprotobuf) - message(FATAL_ERROR "Target protobuf::libprotobuf not available.") -endif() - -if(USE_SCIP) - if(NOT BUILD_SCIP) - find_package(SCIP REQUIRED) - endif() - set(GSCIP_DIR gscip) -endif() - -if(USE_COINOR) - if(NOT BUILD_CoinUtils) - find_package(CoinUtils REQUIRED) - endif() - - if(NOT BUILD_Osi) - find_package(Osi REQUIRED) - endif() - - if(NOT BUILD_Clp) - find_package(Clp REQUIRED) - endif() - - if(NOT BUILD_Cgl) - find_package(Cgl REQUIRED) - endif() - - if(NOT BUILD_Cbc) - find_package(Cbc REQUIRED) - endif() - - set(COINOR_DEPS Coin::CbcSolver Coin::OsiCbc Coin::ClpSolver Coin::OsiClp) -endif() - -# Check optional Dependencies -if(USE_CPLEX) - find_package(CPLEX REQUIRED) -endif() - -if(USE_XPRESS) - find_package(XPRESS REQUIRED) -endif() - # Main Target add_library(${PROJECT_NAME} "") # Xcode fails to build if library doesn't contains at least one source file. @@ -272,10 +183,11 @@ foreach(PROTO_FILE IN LISTS proto_files) endforeach() #add_library(${PROJECT_NAME}_proto STATIC ${PROTO_SRCS} ${PROTO_HDRS}) add_library(${PROJECT_NAME}_proto OBJECT ${PROTO_SRCS} ${PROTO_HDRS}) -set_target_properties(${PROJECT_NAME}_proto PROPERTIES POSITION_INDEPENDENT_CODE ON) -set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_STANDARD 17) -set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_STANDARD_REQUIRED ON) -set_target_properties(${PROJECT_NAME}_proto PROPERTIES CXX_EXTENSIONS OFF) +set_target_properties(${PROJECT_NAME}_proto PROPERTIES + POSITION_INDEPENDENT_CODE ON + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CXX_EXTENSIONS OFF) target_include_directories(${PROJECT_NAME}_proto PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR} diff --git a/cmake/deps.cmake b/cmake/deps.cmake new file mode 100644 index 0000000000..c27fd2c570 --- /dev/null +++ b/cmake/deps.cmake @@ -0,0 +1,87 @@ +# Check dependencies +set(CMAKE_THREAD_PREFER_PTHREAD TRUE) +set(THREAD_PREFER_PTHREAD_FLAG TRUE) +find_package(Threads REQUIRED) + +# Tell find_package() to try “Config” mode before “Module” mode if no mode was specified. +# This should avoid find_package() to first find our FindXXX.cmake modules if +# distro package already provide a CMake config file... +set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) + +# libprotobuf force us to depends on ZLIB::ZLIB target +if(NOT BUILD_ZLIB) + find_package(ZLIB REQUIRED) +endif() +if(NOT TARGET ZLIB::ZLIB) + message(FATAL_ERROR "Target ZLIB::ZLIB not available.") +endif() + +if(NOT BUILD_absl) + find_package(absl REQUIRED) +endif() +set(ABSL_DEPS + absl::base + absl::flags + absl::flags_commandlineflag + absl::flags_parse + absl::flags_usage + absl::cord + absl::random_random + absl::raw_hash_set + absl::hash + absl::memory + absl::meta + absl::stacktrace + absl::status + absl::statusor + absl::str_format + absl::strings + absl::synchronization + absl::any + ) + +if(NOT BUILD_Protobuf) + find_package(Protobuf REQUIRED) +endif() +if(NOT TARGET protobuf::libprotobuf) + message(FATAL_ERROR "Target protobuf::libprotobuf not available.") +endif() + +if(USE_SCIP) + if(NOT BUILD_SCIP) + find_package(SCIP REQUIRED) + endif() +endif() + +if(USE_COINOR) + if(NOT BUILD_CoinUtils) + find_package(CoinUtils REQUIRED) + endif() + + if(NOT BUILD_Osi) + find_package(Osi REQUIRED) + endif() + + if(NOT BUILD_Clp) + find_package(Clp REQUIRED) + endif() + + if(NOT BUILD_Cgl) + find_package(Cgl REQUIRED) + endif() + + if(NOT BUILD_Cbc) + find_package(Cbc REQUIRED) + endif() + + set(COINOR_DEPS Coin::CbcSolver Coin::OsiCbc Coin::ClpSolver Coin::OsiClp) +endif() + +# Check optional Dependencies +if(USE_CPLEX) + find_package(CPLEX REQUIRED) +endif() + +if(USE_XPRESS) + find_package(XPRESS REQUIRED) +endif()