cmake: backport update from main
This commit is contained in:
@@ -192,21 +192,22 @@ message(STATUS "Build eigen3: ${BUILD_Eigen3}")
|
||||
if(BUILD_LP_PARSER OR BUILD_TESTING)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_re2 "Build the re2 dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build re2: ${BUILD_re2}")
|
||||
else()
|
||||
set(BUILD_re2 OFF)
|
||||
endif()
|
||||
message(STATUS "Build re2: ${BUILD_re2}")
|
||||
|
||||
if(BUILD_TESTING)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_googletest "Build googletest" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build googletest: ${BUILD_googletest}")
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_benchmark "Build benchmark" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build benchmark: ${BUILD_benchmark}")
|
||||
else()
|
||||
set(BUILD_googletest OFF)
|
||||
set(BUILD_benchmark OFF)
|
||||
endif()
|
||||
message(STATUS "Build googletest: ${BUILD_googletest}")
|
||||
message(STATUS "Build benchmark: ${BUILD_benchmark}")
|
||||
|
||||
# Optional third party solvers (enabled by default)
|
||||
## BOP
|
||||
@@ -237,6 +238,12 @@ if(USE_COINOR)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_Cbc "Build the Cbc dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build Cbc: ${BUILD_Cbc}")
|
||||
else()
|
||||
set(BUILD_CoinUtils OFF)
|
||||
set(BUILD_Osi OFF)
|
||||
set(BUILD_Clp OFF)
|
||||
set(BUILD_Cgl OFF)
|
||||
set(BUILD_Cbc OFF)
|
||||
endif()
|
||||
|
||||
## GLOP
|
||||
@@ -252,8 +259,10 @@ message(STATUS "GLPK support: ${USE_GLPK}")
|
||||
if(USE_GLPK)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_GLPK "Build the GLPK dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build GLPK: ${BUILD_GLPK}")
|
||||
else()
|
||||
set(BUILD_GLPK OFF)
|
||||
endif()
|
||||
message(STATUS "Build GLPK: ${BUILD_GLPK}")
|
||||
|
||||
## GUROBI
|
||||
# Since it is dynamicaly loaded upon use, OFF is currently not supported.
|
||||
@@ -267,8 +276,10 @@ message(STATUS "HiGHS support: ${USE_HIGHS}")
|
||||
if(USE_HIGHS)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_HIGHS "Build the HiGHS dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build HiGHS: ${BUILD_HIGHS}")
|
||||
else()
|
||||
set(BUILD_HIGHS OFF)
|
||||
endif()
|
||||
message(STATUS "Build HiGHS: ${BUILD_HIGHS}")
|
||||
|
||||
## PDLP
|
||||
CMAKE_DEPENDENT_OPTION(USE_PDLP "Use the PDLP solver" ON "BUILD_CXX" OFF)
|
||||
@@ -276,8 +287,10 @@ message(STATUS "PDLP support: ${USE_PDLP}")
|
||||
if(USE_PDLP)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_PDLP "Build the PDLP dependency Library" ON
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build PDLP: ${BUILD_PDLP}")
|
||||
else()
|
||||
set(BUILD_PDLP OFF)
|
||||
endif()
|
||||
message(STATUS "Build PDLP: ${BUILD_PDLP}")
|
||||
|
||||
## SCIP
|
||||
# see: https://github.com/scipopt/scip
|
||||
@@ -286,8 +299,10 @@ message(STATUS "SCIP support: ${USE_SCIP}")
|
||||
if(USE_SCIP)
|
||||
CMAKE_DEPENDENT_OPTION(BUILD_SCIP "Build the SCIP dependency Library" OFF
|
||||
"NOT BUILD_DEPS" ON)
|
||||
message(STATUS "Build SCIP: ${BUILD_SCIP}")
|
||||
else()
|
||||
set(BUILD_SCIP OFF)
|
||||
endif()
|
||||
message(STATUS "Build SCIP: ${BUILD_SCIP}")
|
||||
|
||||
# Optional third party solvers (disabled by default)
|
||||
## CPLEX
|
||||
@@ -349,6 +364,12 @@ if(BUILD_DOTNET)
|
||||
|
||||
option(USE_DOTNET_7 "Use .Net 7.0 support" OFF)
|
||||
message(STATUS ".Net: Use .Net 7.0 support: ${USE_DOTNET_7}")
|
||||
|
||||
option(USE_DOTNET_8 "Use .Net 8.0 LTS support" OFF)
|
||||
message(STATUS ".Net: Use .Net 8.0 support: ${USE_DOTNET_8}")
|
||||
|
||||
option(USE_DOTNET_9 "Use .Net 9.0 support" OFF)
|
||||
message(STATUS ".Net: Use .Net 9.0 support: ${USE_DOTNET_9}")
|
||||
endif()
|
||||
|
||||
if(BUILD_JAVA)
|
||||
|
||||
@@ -9,7 +9,7 @@ Clp=1.17.7
|
||||
Cgl=0.60.5
|
||||
Cbc=2.10.7
|
||||
GLPK=5.0
|
||||
HiGHS=v1.7.2
|
||||
HiGHS=v1.8.0
|
||||
Scip=v900
|
||||
# Python
|
||||
pybind11=v2.12.0
|
||||
@@ -17,3 +17,4 @@ pybind11_abseil=52f2739
|
||||
pybind11_protobuf=3b11990
|
||||
# Testing
|
||||
googletest=v1.15.2
|
||||
benchmark=v1.8.4
|
||||
|
||||
@@ -117,8 +117,13 @@ if(USE_CPLEX AND NOT TARGET CPLEX::CPLEX)
|
||||
endif()
|
||||
|
||||
# CXX Test
|
||||
if(BUILD_TESTING AND NOT TARGET GTest::gtest_main)
|
||||
message(FATAL_ERROR "Target GTest::gtest_main not available.")
|
||||
if(BUILD_TESTING)
|
||||
if(NOT TARGET GTest::gtest_main)
|
||||
message(FATAL_ERROR "Target GTest::gtest_main not available.")
|
||||
endif()
|
||||
if(NOT TARGET benchmark::benchmark)
|
||||
message(FATAL_ERROR "Target benchmark::benchmark not available.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Check language Dependencies
|
||||
|
||||
@@ -176,6 +176,10 @@ function(ortools_cxx_test)
|
||||
"${multiValueArgs}"
|
||||
${ARGN}
|
||||
)
|
||||
if(NOT BUILD_TESTING)
|
||||
return()
|
||||
endif()
|
||||
|
||||
if(NOT TEST_NAME)
|
||||
message(FATAL_ERROR "no NAME provided")
|
||||
endif()
|
||||
@@ -624,8 +628,7 @@ configure_package_config_file(cmake/${PROJECT_NAME}Config.cmake.in
|
||||
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
|
||||
write_basic_package_version_file(
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
COMPATIBILITY SameMajorVersion)
|
||||
install(
|
||||
FILES
|
||||
"${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
||||
|
||||
@@ -98,6 +98,9 @@ endif()
|
||||
if(USE_DOTNET_8)
|
||||
list(APPEND TFM "net8.0")
|
||||
endif()
|
||||
if(USE_DOTNET_9)
|
||||
list(APPEND TFM "net9.0")
|
||||
endif()
|
||||
|
||||
list(LENGTH TFM TFM_LENGTH)
|
||||
if(TFM_LENGTH EQUAL "0")
|
||||
@@ -284,6 +287,13 @@ function(add_dotnet_test)
|
||||
${DOTNET_EXECUTABLE} test --nologo --framework net8.0 -c Release
|
||||
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
|
||||
endif()
|
||||
if(USE_DOTNET_9)
|
||||
add_test(
|
||||
NAME dotnet_${COMPONENT_NAME}_${TEST_NAME}_net90
|
||||
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
|
||||
${DOTNET_EXECUTABLE} test --nologo --framework net9.0 -c Release
|
||||
WORKING_DIRECTORY ${DOTNET_TEST_DIR})
|
||||
endif()
|
||||
endif()
|
||||
message(STATUS "Configuring test ${TEST_FILE_NAME} ...DONE")
|
||||
endfunction()
|
||||
@@ -360,6 +370,32 @@ file(MAKE_DIRECTORY ${DOTNET_PACKAGES_DIR})
|
||||
# *.csproj.in contains:
|
||||
# CMake variable(s) (@PROJECT_NAME@) that configure_file() can manage and
|
||||
# generator expression ($<TARGET_FILE:...>) that file(GENERATE) can manage.
|
||||
set(is_windows "$<PLATFORM_ID:Windows>")
|
||||
set(is_not_windows "$<NOT:$<PLATFORM_ID:Windows>>")
|
||||
|
||||
set(need_unix_zlib_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_ZLIB}>>")
|
||||
set(need_windows_zlib_lib "$<AND:${is_windows},$<BOOL:${BUILD_ZLIB}>>")
|
||||
|
||||
set(need_unix_absl_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_absl}>>")
|
||||
set(need_windows_absl_lib "$<AND:${is_windows},$<BOOL:${BUILD_absl}>>")
|
||||
|
||||
set(need_unix_re2_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_re2}>>")
|
||||
set(need_windows_re2_lib "$<AND:${is_windows},$<BOOL:${BUILD_re2}>>")
|
||||
|
||||
set(need_unix_protobuf_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Protobuf}>>")
|
||||
set(need_windows_protobuf_lib "$<AND:${is_windows},$<BOOL:${BUILD_Protobuf}>>")
|
||||
|
||||
set(need_coinutils_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_CoinUtils}>>")
|
||||
set(need_osi_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Osi}>>")
|
||||
set(need_clp_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Clp}>>")
|
||||
set(need_cgl_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Cgl}>>")
|
||||
set(need_cbc_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Cbc}>>")
|
||||
|
||||
set(need_unix_highs_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_HIGHS}>>")
|
||||
set(need_windows_highs_lib "$<AND:${is_windows},$<BOOL:${BUILD_HIGHS}>>")
|
||||
|
||||
set(is_ortools_shared "$<STREQUAL:$<TARGET_PROPERTY:ortools,TYPE>,SHARED_LIBRARY>")
|
||||
|
||||
configure_file(
|
||||
${PROJECT_SOURCE_DIR}/ortools/dotnet/${DOTNET_PACKAGE}.runtime.csproj.in
|
||||
${DOTNET_NATIVE_PROJECT_DIR}/${DOTNET_NATIVE_PROJECT}.csproj.in
|
||||
@@ -588,6 +624,13 @@ function(add_dotnet_sample)
|
||||
${DOTNET_EXECUTABLE} run --no-build --framework net8.0 -c Release
|
||||
WORKING_DIRECTORY ${DOTNET_SAMPLE_DIR})
|
||||
endif()
|
||||
if(USE_DOTNET_9)
|
||||
add_test(
|
||||
NAME dotnet_${COMPONENT_NAME}_${SAMPLE_NAME}_net90
|
||||
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
|
||||
${DOTNET_EXECUTABLE} run --no-build --framework net9.0 -c Release
|
||||
WORKING_DIRECTORY ${DOTNET_SAMPLE_DIR})
|
||||
endif()
|
||||
endif()
|
||||
message(STATUS "Configuring sample ${SAMPLE_FILE_NAME} ...DONE")
|
||||
endfunction()
|
||||
@@ -702,6 +745,13 @@ if(NOT EXAMPLE_FILE_NAME)
|
||||
${DOTNET_EXECUTABLE} run --no-build --framework net8.0 -c Release ${EXAMPLE_NAME}.csproj
|
||||
WORKING_DIRECTORY ${DOTNET_EXAMPLE_DIR})
|
||||
endif()
|
||||
if(USE_DOTNET_9)
|
||||
add_test(
|
||||
NAME dotnet_${COMPONENT_NAME}_${EXAMPLE_NAME}_net90
|
||||
COMMAND ${CMAKE_COMMAND} -E env --unset=TARGETNAME
|
||||
${DOTNET_EXECUTABLE} run --no-build --framework net9.0 -c Release ${EXAMPLE_NAME}.csproj
|
||||
WORKING_DIRECTORY ${DOTNET_EXAMPLE_DIR})
|
||||
endif()
|
||||
endif()
|
||||
message(STATUS "Configuring example ${EXAMPLE_FILE_NAME} ...DONE")
|
||||
endfunction()
|
||||
|
||||
@@ -228,6 +228,9 @@ target_compile_options(glop PUBLIC ${GLOP_COMPILE_OPTIONS})
|
||||
# Properties
|
||||
if(NOT APPLE)
|
||||
set_target_properties(glop PROPERTIES VERSION ${PROJECT_VERSION})
|
||||
if(UNIX)
|
||||
set_target_properties(glop PROPERTIES INSTALL_RPATH "$ORIGIN")
|
||||
endif()
|
||||
else()
|
||||
# Clang don't support version x.y.z with z > 255
|
||||
set_target_properties(glop PROPERTIES
|
||||
|
||||
@@ -273,11 +273,38 @@ configure_file(
|
||||
${JAVA_NATIVE_PROJECT_DIR}/pom.xml
|
||||
@ONLY)
|
||||
|
||||
set(is_windows "$<PLATFORM_ID:Windows>")
|
||||
set(is_not_windows "$<NOT:$<PLATFORM_ID:Windows>>")
|
||||
|
||||
set(need_unix_zlib_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_ZLIB}>>")
|
||||
set(need_windows_zlib_lib "$<AND:${is_windows},$<BOOL:${BUILD_ZLIB}>>")
|
||||
|
||||
set(need_unix_absl_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_absl}>>")
|
||||
set(need_windows_absl_lib "$<AND:${is_windows},$<BOOL:${BUILD_absl}>>")
|
||||
|
||||
set(need_unix_re2_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_re2}>>")
|
||||
set(need_windows_re2_lib "$<AND:${is_windows},$<BOOL:${BUILD_re2}>>")
|
||||
|
||||
set(need_unix_protobuf_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Protobuf}>>")
|
||||
set(need_windows_protobuf_lib "$<AND:${is_windows},$<BOOL:${BUILD_Protobuf}>>")
|
||||
|
||||
set(need_unix_coinutils_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_CoinUtils}>>")
|
||||
set(need_unix_osi_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Osi}>>")
|
||||
set(need_unix_clp_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Clp}>>")
|
||||
set(need_unix_cgl_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Cgl}>>")
|
||||
set(need_unix_cbc_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Cbc}>>")
|
||||
|
||||
set(need_unix_highs_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_HIGHS}>>")
|
||||
set(need_windows_highs_lib "$<AND:${is_windows},$<BOOL:${BUILD_HIGHS}>>")
|
||||
|
||||
set(is_ortools_shared "$<STREQUAL:$<TARGET_PROPERTY:ortools,TYPE>,SHARED_LIBRARY>")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${JAVA_NATIVE_PROJECT_DIR}/timestamp
|
||||
COMMAND ${CMAKE_COMMAND} -E remove -f timestamp
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
$<TARGET_FILE:jni${JAVA_ARTIFACT}>
|
||||
$<$<NOT:$<PLATFORM_ID:Windows>>:$<TARGET_SONAME_FILE:${PROJECT_NAME}>>
|
||||
$<${is_ortools_shared}:$<TARGET_SONAME_FILE:ortools>>
|
||||
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
|
||||
COMMAND ${MAVEN_EXECUTABLE} compile -B
|
||||
COMMAND ${MAVEN_EXECUTABLE} package -B $<$<BOOL:${BUILD_FAT_JAR}>:-Dfatjar=true>
|
||||
|
||||
@@ -361,6 +361,7 @@ if(BUILD_MATH_OPT)
|
||||
ortools/math_opt/python/errors.py
|
||||
ortools/math_opt/python/expressions.py
|
||||
ortools/math_opt/python/hash_model_storage.py
|
||||
ortools/math_opt/python/init_arguments.py
|
||||
ortools/math_opt/python/mathopt.py
|
||||
ortools/math_opt/python/message_callback.py
|
||||
ortools/math_opt/python/model.py
|
||||
@@ -424,11 +425,36 @@ configure_file(
|
||||
${PROJECT_BINARY_DIR}/python/LICENSE
|
||||
COPYONLY)
|
||||
|
||||
set(is_windows "$<PLATFORM_ID:Windows>")
|
||||
set(is_not_windows "$<NOT:$<PLATFORM_ID:Windows>>")
|
||||
|
||||
set(need_unix_zlib_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_ZLIB}>>")
|
||||
set(need_windows_zlib_lib "$<AND:${is_windows},$<BOOL:${BUILD_ZLIB}>>")
|
||||
|
||||
set(need_unix_absl_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_absl}>>")
|
||||
set(need_windows_absl_lib "$<AND:${is_windows},$<BOOL:${BUILD_absl}>>")
|
||||
|
||||
set(need_unix_re2_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_re2}>>")
|
||||
set(need_windows_re2_lib "$<AND:${is_windows},$<BOOL:${BUILD_re2}>>")
|
||||
|
||||
set(need_unix_protobuf_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Protobuf}>>")
|
||||
set(need_windows_protobuf_lib "$<AND:${is_windows},$<BOOL:${BUILD_Protobuf}>>")
|
||||
|
||||
set(need_unix_coinutils_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_CoinUtils}>>")
|
||||
set(need_unix_osi_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Osi}>>")
|
||||
set(need_unix_clp_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Clp}>>")
|
||||
set(need_unix_cgl_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Cgl}>>")
|
||||
set(need_unix_cbc_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_Cbc}>>")
|
||||
|
||||
set(need_unix_highs_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_HIGHS}>>")
|
||||
set(need_windows_highs_lib "$<AND:${is_windows},$<BOOL:${BUILD_HIGHS}>>")
|
||||
|
||||
set(is_ortools_shared "$<STREQUAL:$<TARGET_PROPERTY:ortools,TYPE>,SHARED_LIBRARY>")
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT python/ortools_timestamp
|
||||
COMMAND ${CMAKE_COMMAND} -E remove -f ortools_timestamp
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${PYTHON_PROJECT}/.libs
|
||||
# Don't need to copy static lib on Windows.
|
||||
COMMAND ${CMAKE_COMMAND} -E
|
||||
$<IF:$<STREQUAL:$<TARGET_PROPERTY:ortools,TYPE>,SHARED_LIBRARY>,copy,true>
|
||||
$<$<STREQUAL:$<TARGET_PROPERTY:ortools,TYPE>,SHARED_LIBRARY>:$<TARGET_SONAME_FILE:ortools>>
|
||||
|
||||
@@ -92,6 +92,10 @@ if(BUILD_TESTING AND NOT BUILD_googletest)
|
||||
find_package(GTest REQUIRED)
|
||||
endif()
|
||||
|
||||
if(BUILD_TESTING AND NOT BUILD_benchmark)
|
||||
find_package(benchmark REQUIRED)
|
||||
endif()
|
||||
|
||||
# Check language Dependencies
|
||||
if(BUILD_PYTHON)
|
||||
if(NOT BUILD_pybind11)
|
||||
|
||||
Reference in New Issue
Block a user