cmake: Bump Protobuf to v28.3 and use shared libraries

This commit is contained in:
Corentin Le Molgat
2024-11-15 14:42:08 +01:00
parent 00885d45bd
commit e670dccdb0
21 changed files with 480 additions and 93 deletions

View File

@@ -13,7 +13,7 @@ jobs:
{generator: "Visual Studio 17 2022", config: Debug, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
]
fail-fast: false
name: Windows • ${{ matrix.cmake.generator }} (${{ matrix.cmake.config }}) • C++
name: Windows • VS 2022 (${{ matrix.cmake.config }}) • C++
runs-on: windows-latest
env:
CTEST_OUTPUT_ON_FAILURE: 1
@@ -27,7 +27,7 @@ jobs:
run: >
cmake -S. -Bbuild
-G "${{ matrix.cmake.generator }}"
-DCMAKE_BUILD_TYPE=${{ matrix.cmake.config }}
-DCMAKE_CONFIGURATION_TYPES=${{ matrix.cmake.config }}
-DBUILD_DEPS=ON
-DCMAKE_INSTALL_PREFIX=install
- name: Build

View File

@@ -12,7 +12,7 @@ jobs:
{generator: "Visual Studio 17 2022", config: Release, build_target: ALL_BUILD, test_target: RUN_TESTS, install_target: INSTALL},
]
fail-fast: false
name: Windows • ${{ matrix.cmake.generator }} • .Net
name: Windows • VS 2022 • .Net
runs-on: windows-latest
env:
CTEST_OUTPUT_ON_FAILURE: 1

View File

@@ -28,7 +28,7 @@ jobs:
{distrib: 'microsoft', version: '21'}, # 2028/09
]
fail-fast: false
name: Windows • ${{ matrix.cmake.generator }} • ${{ matrix.java.distrib }}-${{ matrix.java.version }}
name: Windows • VS 2022 • ${{ matrix.java.distrib }}-${{ matrix.java.version }}
runs-on: windows-latest
env:
CTEST_OUTPUT_ON_FAILURE: 1

View File

@@ -19,7 +19,7 @@ jobs:
{version: "3.13", dir: Python313},
]
fail-fast: false
name: Windows • ${{ matrix.cmake.generator }} • Python-${{ matrix.python.version }}
name: Windows • VS 2022 • Python-${{ matrix.python.version }}
runs-on: windows-latest
env:
CTEST_OUTPUT_ON_FAILURE: 1

View File

@@ -14,7 +14,7 @@ jobs:
]
fail-fast: false
name: MacOS • ${{ matrix.cmake.generator }} • C++
runs-on: macos-latest # macos arm64 based runner
runs-on: macos-latest # macos M1 based runner
steps:
- uses: actions/checkout@v4
- name: Check cmake

View File

@@ -1,6 +1,6 @@
ZLIB=1.3.1
abseil-cpp=20240722.0
Protobuf=v26.1
Protobuf=v28.3
Eigen=3.4.0
Re2=2024-04-01
CoinUtils=2.11.6

View File

@@ -246,6 +246,8 @@ cmake -S. -Bbuild -LH
| `USE_DOTNET_CORE_31` | OFF | Enable .Net Core 3.1 LTS support<br>Only available if `BUILD_DOTNET=ON` and not targeting arm64 platform |
| `USE_DOTNET_6` | ON | Enable .Net 6 LTS support<br>Only available if `BUILD_DOTNET=ON` |
| `USE_DOTNET_7` | OFF | Enable .Net 7 support<br>Only available if `BUILD_DOTNET=ON` |
| `USE_DOTNET_8` | OFF | Enable .Net 8 LTS support<br>Only available if `BUILD_DOTNET=ON` |
| `USE_DOTNET_9` | OFF | Enable .Net 9 support<br>Only available if `BUILD_DOTNET=ON` |
| `UNIVERSAL_DOTNET_PACKAGE` | OFF | Build a multi platform package (i.e. `Google.OrTools` will depends on all runtime packages)<br>Only available if `BUILD_DOTNET=ON` |
| | | |
| `SKIP_GPG` | ON | Disable GPG sign<br>Only available if `BUILD_JAVA=ON` |

View File

@@ -49,7 +49,7 @@ endif()
include(FetchContent)
set(FETCHCONTENT_QUIET OFF)
set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
set(BUILD_SHARED_LIBS OFF)
set(BUILD_SHARED_LIBS ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(BUILD_TESTING OFF)
set(CMAKE_Fortran_COMPILER OFF)
@@ -101,17 +101,17 @@ if(BUILD_Protobuf)
message(CHECK_START "Fetching Protobuf")
list(APPEND CMAKE_MESSAGE_INDENT " ")
set(protobuf_BUILD_TESTS OFF)
set(protobuf_BUILD_SHARED_LIBS OFF)
set(protobuf_BUILD_SHARED_LIBS ON)
set(protobuf_BUILD_EXPORT OFF)
set(protobuf_MSVC_STATIC_RUNTIME OFF)
#set(protobuf_BUILD_LIBUPB ON)
FetchContent_Declare(
Protobuf
GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git"
GIT_TAG "v26.1"
GIT_TAG "v28.3"
GIT_SHALLOW TRUE
GIT_SUBMODULES ""
PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/protobuf-v26.1.patch"
PATCH_COMMAND git apply --ignore-whitespace "${CMAKE_CURRENT_LIST_DIR}/../../patches/protobuf-v28.3.patch"
)
FetchContent_MakeAvailable(Protobuf)
list(POP_BACK CMAKE_MESSAGE_INDENT)
@@ -295,6 +295,9 @@ endif()
# ##############################################################################
# Coin-OR does not support C++17/C++20 (use of 'register' storage class specifier)
set(CMAKE_CXX_STANDARD 11)
if(WIN32)
set(BUILD_SHARED_LIBS OFF)
endif()
if(BUILD_CoinUtils)
message(CHECK_START "Fetching CoinUtils")
@@ -388,6 +391,9 @@ if(BUILD_Cbc)
message(CHECK_PASS "fetched")
endif()
if(WIN32)
set(BUILD_SHARED_LIBS ON)
endif()
if(MSVC)
set(CMAKE_CXX_STANDARD 20)
else()
@@ -412,7 +418,14 @@ if(BUILD_googletest)
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
set(INSTALL_GTEST OFF)
set(GTEST_HAS_ABSL ON)
if(WIN32)
set(BUILD_SHARED_LIBS OFF)
endif()
FetchContent_MakeAvailable(googletest)
if(WIN32)
set(BUILD_SHARED_LIBS ON)
endif()
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
endif()
@@ -430,7 +443,13 @@ if(BUILD_benchmark)
set(BENCHMARK_ENABLE_TESTING OFF)
set(BENCHMARK_ENABLE_WERROR OFF)
set(BENCHMARK_ENABLE_INSTALL OFF)
if(WIN32)
set(BUILD_SHARED_LIBS OFF)
endif()
FetchContent_MakeAvailable(benchmark)
if(WIN32)
set(BUILD_SHARED_LIBS ON)
endif()
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")
endif()

View File

@@ -121,9 +121,9 @@ set(protobuf_WITH_ZLIB OFF)
FetchContent_Declare(
protobuf
GIT_REPOSITORY "https://github.com/protocolbuffers/protobuf.git"
GIT_TAG "v26.1"
GIT_TAG "v28.3"
GIT_SUBMODULES ""
PATCH_COMMAND git apply "${CMAKE_CURRENT_LIST_DIR}/@PATCHES_PATH@/protobuf-v26.1.patch")
PATCH_COMMAND git apply "${CMAKE_CURRENT_LIST_DIR}/@PATCHES_PATH@/protobuf-v28.3.patch")
FetchContent_MakeAvailable(protobuf)
list(POP_BACK CMAKE_MESSAGE_INDENT)
message(CHECK_PASS "fetched")

View File

@@ -306,6 +306,145 @@ add_custom_command(
$<TARGET_FILE:jni${JAVA_ARTIFACT}>
$<${is_ortools_shared}:$<TARGET_SONAME_FILE:ortools>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:$<BOOL:${BUILD_ZLIB}>,copy,true>
$<${need_unix_zlib_lib}:$<TARGET_SONAME_FILE:ZLIB::ZLIB>>
$<${need_windows_zlib_lib}:$<TARGET_FILE:ZLIB::ZLIB>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:$<BOOL:${BUILD_absl}>,copy,true>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::base>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::bad_any_cast_impl>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::bad_optional_access>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::bad_variant_access>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::city>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::civil_time>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cord>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cord_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cordz_functions>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cordz_handle>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cordz_info>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::crc32c>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::crc_cord_state>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::crc_cpu_detect>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::crc_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::debugging_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::decode_rust_punycode>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::demangle_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::demangle_rust>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::die_if_null>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::examine_stack>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::exponential_biased>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_commandlineflag>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_commandlineflag_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_config>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_marshalling>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_parse>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_private_handle_accessor>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_program_name>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_reflection>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_usage>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_usage_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::graphcycles_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::hash>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::hashtablez_sampler>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::int128>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::kernel_timeout_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::leak_check>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_entry>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_flags>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_globals>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_initialize>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_check_op>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_conditions>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_fnmatch>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_format>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_globals>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_log_sink_set>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_message>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_nullguard>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_proto>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_severity>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_sink>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::low_level_hash>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::malloc_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_distributions>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_platform>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_pool_urbg>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_randen>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_randen_hwaes>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_randen_hwaes_impl>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_randen_slow>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_seed_material>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_seed_gen_exception>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_seed_sequences>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::raw_hash_set>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::raw_logging_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::spinlock_wait>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::stacktrace>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::status>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::statusor>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::str_format_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::strerror>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::string_view>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::strings>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::strings_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::symbolize>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::synchronization>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::throw_delegate>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::time>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::time_zone>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::utf8_for_code_point>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::vlog_config_internal>>
$<${need_windows_absl_lib}:$<TARGET_FILE:absl::abseil_dll>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:$<BOOL:${BUILD_re2}>,copy,true>
$<${need_unix_re2_lib}:$<TARGET_SONAME_FILE:re2::re2>>
$<${need_windows_re2_lib}:$<TARGET_FILE:re2::re2>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:$<BOOL:${BUILD_Protobuf}>,copy,true>
$<${need_unix_protobuf_lib}:$<TARGET_SONAME_FILE:protobuf::libprotobuf>>
$<${need_unix_protobuf_lib}:$<TARGET_SONAME_FILE:utf8_validity>>
$<${need_windows_protobuf_lib}:$<TARGET_FILE:protobuf::libprotobuf>>
$<${need_windows_protobuf_lib}:$<TARGET_FILE:utf8_validity>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_coinutils_lib},copy,true>
$<${need_unix_coinutils_lib}:$<TARGET_SONAME_FILE:Coin::CoinUtils>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_osi_lib},copy,true>
$<${need_unix_osi_lib}:$<TARGET_SONAME_FILE:Coin::Osi>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_clp_lib},copy,true>
$<${need_unix_clp_lib}:$<TARGET_SONAME_FILE:Coin::Clp>>
$<${need_unix_clp_lib}:$<TARGET_SONAME_FILE:Coin::OsiClp>>
$<${need_unix_clp_lib}:$<TARGET_SONAME_FILE:Coin::ClpSolver>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_cgl_lib},copy,true>
$<${need_unix_cgl_lib}:$<TARGET_SONAME_FILE:Coin::Cgl>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_cbc_lib},copy,true>
$<${need_unix_cbc_lib}:$<TARGET_SONAME_FILE:Coin::Cbc>>
$<${need_unix_cbc_lib}:$<TARGET_SONAME_FILE:Coin::OsiCbc>>
$<${need_unix_cbc_lib}:$<TARGET_SONAME_FILE:Coin::CbcSolver>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${CMAKE_COMMAND} -E
$<IF:$<BOOL:${BUILD_HIGHS}>,copy,true>
$<${need_unix_highs_lib}:$<TARGET_SONAME_FILE:highs>>
$<${need_windows_highs_lib}:$<TARGET_FILE:highs>>
${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/
COMMAND ${MAVEN_EXECUTABLE} compile -B
COMMAND ${MAVEN_EXECUTABLE} package -B $<$<BOOL:${BUILD_FAT_JAR}>:-Dfatjar=true>
COMMAND ${MAVEN_EXECUTABLE} install -B $<$<BOOL:${SKIP_GPG}>:-Dgpg.skip=true>

View File

@@ -456,9 +456,147 @@ add_custom_command(
COMMAND ${CMAKE_COMMAND} -E remove -f ortools_timestamp
COMMAND ${CMAKE_COMMAND} -E make_directory ${PYTHON_PROJECT}/.libs
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>>
${PYTHON_PROJECT}/.libs
$<IF:$<BOOL:${BUILD_ZLIB}>,copy,true>
$<${need_unix_zlib_lib}:$<TARGET_SONAME_FILE:ZLIB::ZLIB>>
$<${need_windows_zlib_lib}:$<TARGET_FILE:ZLIB::ZLIB>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:$<BOOL:${BUILD_absl}>,copy,true>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::base>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::bad_any_cast_impl>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::bad_optional_access>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::bad_variant_access>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::city>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::civil_time>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cord>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cord_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cordz_functions>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cordz_handle>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::cordz_info>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::crc32c>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::crc_cord_state>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::crc_cpu_detect>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::crc_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::debugging_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::decode_rust_punycode>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::demangle_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::demangle_rust>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::die_if_null>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::examine_stack>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::exponential_biased>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_commandlineflag>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_commandlineflag_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_config>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_marshalling>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_parse>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_private_handle_accessor>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_program_name>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_reflection>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_usage>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::flags_usage_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::graphcycles_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::hash>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::hashtablez_sampler>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::int128>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::kernel_timeout_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::leak_check>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_entry>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_flags>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_globals>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_initialize>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_check_op>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_conditions>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_fnmatch>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_format>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_globals>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_log_sink_set>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_message>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_nullguard>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_internal_proto>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_severity>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::log_sink>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::low_level_hash>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::malloc_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_distributions>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_platform>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_pool_urbg>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_randen>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_randen_hwaes>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_randen_hwaes_impl>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_randen_slow>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_internal_seed_material>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_seed_gen_exception>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::random_seed_sequences>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::raw_hash_set>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::raw_logging_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::spinlock_wait>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::stacktrace>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::status>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::statusor>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::str_format_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::strerror>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::string_view>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::strings>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::strings_internal>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::symbolize>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::synchronization>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::throw_delegate>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::time>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::time_zone>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::utf8_for_code_point>>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::vlog_config_internal>>
$<${need_windows_absl_lib}:$<TARGET_FILE:absl::abseil_dll>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_re2_lib},copy,true>
$<${need_unix_re2_lib}:$<TARGET_SONAME_FILE:re2::re2>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:$<BOOL:${BUILD_Protobuf}>,copy,true>
$<${need_unix_protobuf_lib}:$<TARGET_SONAME_FILE:protobuf::libprotobuf>>
$<${need_unix_protobuf_lib}:$<TARGET_SONAME_FILE:utf8_validity>>
$<${need_windows_protobuf_lib}:$<TARGET_FILE:protobuf::libprotobuf>>
$<${need_windows_protobuf_lib}:$<TARGET_FILE:utf8_validity>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_coinutils_lib},copy,true>
$<${need_unix_coinutils_lib}:$<TARGET_SONAME_FILE:Coin::CoinUtils>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_osi_lib},copy,true>
$<${need_unix_osi_lib}:$<TARGET_SONAME_FILE:Coin::Osi>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_clp_lib},copy,true>
$<${need_unix_clp_lib}:$<TARGET_SONAME_FILE:Coin::Clp>>
$<${need_unix_clp_lib}:$<TARGET_SONAME_FILE:Coin::OsiClp>>
$<${need_unix_clp_lib}:$<TARGET_SONAME_FILE:Coin::ClpSolver>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_cgl_lib},copy,true>
$<${need_unix_cgl_lib}:$<TARGET_SONAME_FILE:Coin::Cgl>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:${need_unix_cbc_lib},copy,true>
$<${need_unix_cbc_lib}:$<TARGET_SONAME_FILE:Coin::Cbc>>
$<${need_unix_cbc_lib}:$<TARGET_SONAME_FILE:Coin::OsiCbc>>
$<${need_unix_cbc_lib}:$<TARGET_SONAME_FILE:Coin::CbcSolver>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:$<BOOL:${BUILD_HIGHS}>,copy,true>
$<${need_unix_highs_lib}:$<TARGET_SONAME_FILE:highs>>
$<${need_windows_highs_lib}:$<TARGET_FILE:highs>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:${is_ortools_shared},copy,true>
$<${is_ortools_shared}:$<TARGET_SONAME_FILE:ortools>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E touch ${PROJECT_BINARY_DIR}/python/ortools_timestamp
MAIN_DEPENDENCY
ortools/python/setup.py.in

View File

@@ -184,7 +184,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.26.1"/>
<PackageReference Include="Google.Protobuf" Version="3.28.3"/>
</ItemGroup>
<!-- Need to add required runtime dependencies so Meta-Project will pull runtime Nuget(s) -->

View File

@@ -172,7 +172,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.26.1"/>
<PackageReference Include="Google.Protobuf" Version="3.28.3"/>
</ItemGroup>
<!-- Need to add required runtime dependencies so Meta-Project will pull runtime Nuget(s) -->

View File

@@ -26,7 +26,113 @@
<!-- If ortools is built as a STATIC_LIBRARY (e.g. Windows) then we don't have to include it -->
<Content Include="
$<TARGET_FILE:google-ortools-native>
$<$<STREQUAL:$<TARGET_PROPERTY:@PROJECT_NAME@,TYPE>,SHARED_LIBRARY>:;$<TARGET_SONAME_FILE:@PROJECT_NAME@>>
$<@is_ortools_shared@:;$<TARGET_SONAME_FILE:ortools>>
$<@need_unix_zlib_lib@:;$<TARGET_SONAME_FILE:ZLIB::ZLIB>>
$<@need_windows_zlib_lib@:;$<TARGET_FILE:ZLIB::ZLIB>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::base>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::bad_any_cast_impl>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::bad_optional_access>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::bad_variant_access>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::city>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::civil_time>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::cord>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::cord_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::cordz_functions>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::cordz_handle>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::cordz_info>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::crc32c>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::crc_cord_state>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::crc_cpu_detect>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::crc_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::debugging_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::decode_rust_punycode>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::demangle_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::demangle_rust>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::die_if_null>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::examine_stack>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::exponential_biased>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_commandlineflag>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_commandlineflag_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_config>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_marshalling>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_parse>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_private_handle_accessor>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_program_name>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_reflection>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_usage>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::flags_usage_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::graphcycles_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::hash>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::hashtablez_sampler>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::int128>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::kernel_timeout_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::leak_check>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_entry>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_flags>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_globals>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_initialize>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_internal_check_op>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_internal_conditions>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_internal_fnmatch>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_internal_format>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_internal_globals>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_internal_log_sink_set>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_internal_message>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_internal_nullguard>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_internal_proto>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_severity>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::log_sink>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::low_level_hash>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::malloc_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_distributions>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_internal_platform>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_internal_pool_urbg>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_internal_randen>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_internal_randen_hwaes>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_internal_randen_hwaes_impl>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_internal_randen_slow>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_internal_seed_material>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_seed_gen_exception>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::random_seed_sequences>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::raw_hash_set>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::raw_logging_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::spinlock_wait>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::stacktrace>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::status>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::statusor>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::str_format_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::strerror>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::string_view>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::strings>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::strings_internal>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::symbolize>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::synchronization>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::throw_delegate>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::time>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::time_zone>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::utf8_for_code_point>>
$<@need_unix_absl_lib@:;$<TARGET_SONAME_FILE:absl::vlog_config_internal>>
$<@need_windows_absl_lib@:;$<TARGET_FILE:absl::abseil_dll>>
$<@need_unix_re2_lib@:;$<TARGET_SONAME_FILE:re2::re2>>
$<@need_windows_re2_lib@:;$<TARGET_FILE:re2::re2>>
$<@need_unix_protobuf_lib@:;$<TARGET_SONAME_FILE:protobuf::libprotobuf>>
$<@need_unix_protobuf_lib@:;$<TARGET_SONAME_FILE:utf8_validity>>
$<@need_windows_protobuf_lib@:;$<TARGET_FILE:protobuf::libprotobuf>>
$<@need_windows_protobuf_lib@:;$<TARGET_FILE:utf8_validity>>
$<@need_coinutils_lib@:;$<TARGET_SONAME_FILE:Coin::CoinUtils>>
$<@need_osi_lib@:;$<TARGET_SONAME_FILE:Coin::Osi>>
$<@need_clp_lib@:;$<TARGET_SONAME_FILE:Coin::Clp>;$<TARGET_SONAME_FILE:Coin::OsiClp>;$<TARGET_SONAME_FILE:Coin::ClpSolver>>
$<@need_cgl_lib@:;$<TARGET_SONAME_FILE:Coin::Cgl>>
$<@need_cbc_lib@:;$<TARGET_SONAME_FILE:Coin::Cbc>;$<TARGET_SONAME_FILE:Coin::OsiCbc>;$<TARGET_SONAME_FILE:Coin::CbcSolver>>
$<@need_unix_highs_lib@:;$<TARGET_SONAME_FILE:highs>>
$<@need_windows_highs_lib@:;$<TARGET_FILE:highs>>
">
<PackagePath>runtimes/@DOTNET_RID@/native/%(Filename)%(Extension)</PackagePath>
<Pack>true</Pack>

View File

@@ -131,8 +131,37 @@ public class Loader {
loaded = true;
return;
} catch (IOException | UnsatisfiedLinkError e) {
// Do nothing.
// System.out.println("Can't System.load(jniortools)");
throw new RuntimeException(e);
}
// On windows, try to load each libraries one by one.
// System.out.println("Prefix: " + Platform.RESOURCE_PREFIX);
if (Platform.RESOURCE_PREFIX.equals("win32-x86-64")) {
try {
URI resourceURI = getNativeResourceURI();
Path tempPath = unpackNativeResources(resourceURI);
// libraries order does matter !
List<String> dlls = Arrays.asList(
"zlib1", "abseil_dll", "re2", "utf8_validity", "libprotobuf", "highs", "jniortools");
for (String dll : dlls) {
try {
// System.out.println("System.load(" + dll + ")");
System.load(tempPath.resolve(RESOURCE_PATH)
.resolve(System.mapLibraryName(dll))
.toAbsolutePath()
.toString());
} catch (UnsatisfiedLinkError e) {
System.out.println("System.load(" + dll + ") failed!");
throw new RuntimeException(e);
}
}
loaded = true;
return;
} catch (IOException e) {
// Do nothing.
// System.out.println("unpack failed");
}
}
}
}

View File

@@ -109,7 +109,7 @@
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>4.26.1</version>
<version>4.28.3</version>
</dependency>
</dependencies>

View File

@@ -81,7 +81,7 @@
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>4.26.1</version>
<version>4.28.3</version>
</dependency>
</dependencies>

View File

@@ -43,3 +43,23 @@ This repository contains several component:
__docformat__ = "markdown" # explicitly disable rST processing above.
__version__ = "@PROJECT_VERSION@"
import os
def _load_ortools_libs():
"""Load shared libraries on Windows"""
if os.name == "nt":
try:
from ctypes import WinDLL
basedir = os.path.dirname(__file__)
except:
pass
else:
for dll in ["zlib1.dll", "abseil_dll.dll", "utf8_validity.dll", "libprotobuf.dll", "highs.dll"]:
dll_path = os.path.join(basedir, ".libs", dll)
if os.path.exists(dll_path):
print(f"load {dll_path}...")
WinDLL(dll_path)
_load_ortools_libs()

View File

@@ -46,11 +46,14 @@ setup(
'absl-py >= 2.0.0',
'numpy >= 1.13.3',
'pandas >= 2.0.0',
'protobuf >= 5.26.1,<5.27',
'protobuf >= 5.28.3,<5.29',
'immutabledict >= 3.0.0',
],
package_data={
'@PYTHON_PROJECT@':[$<$<STREQUAL:$<TARGET_PROPERTY:@PROJECT_NAME@,TYPE>,SHARED_LIBRARY>:'.libs/*','../$<TARGET_SONAME_FILE_NAME:@PROJECT_NAME@>'>],
'@PYTHON_PROJECT@':[
'.libs/*',
$<$<STREQUAL:$<TARGET_PROPERTY:@PROJECT_NAME@,TYPE>,SHARED_LIBRARY>:'../$<TARGET_SONAME_FILE_NAME:@PROJECT_NAME@>'>
],
'@PYTHON_PROJECT@.init.python':[
'$<TARGET_FILE_NAME:init_pybind11>',
'*.pyi'

View File

@@ -14,7 +14,6 @@
exports_files([
"abseil-cpp-20240722.0.patch",
"highs-v1.8.0.patch",
"protobuf-v26.1.patch",
"protobuf-v28.3.patch",
"pybind11_abseil.patch",
"pybind11_bazel.patch",

View File

@@ -1,68 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 312eeb928..3e154785b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -41,7 +41,7 @@ else (BUILD_SHARED_LIBS)
endif (BUILD_SHARED_LIBS)
option(protobuf_BUILD_SHARED_LIBS "Build Shared Libraries" ${protobuf_BUILD_SHARED_LIBS_DEFAULT})
include(CMakeDependentOption)
-cmake_dependent_option(protobuf_MSVC_STATIC_RUNTIME "Link static runtime libraries" ON
+cmake_dependent_option(protobuf_MSVC_STATIC_RUNTIME "Link static runtime libraries" OFF
"NOT protobuf_BUILD_SHARED_LIBS" OFF)
set(protobuf_WITH_ZLIB_DEFAULT ON)
option(protobuf_WITH_ZLIB "Build with zlib support" ${protobuf_WITH_ZLIB_DEFAULT})
@@ -158,24 +158,16 @@ endif()
set(_protobuf_FIND_ZLIB)
if (protobuf_WITH_ZLIB)
- find_package(ZLIB)
- if (ZLIB_FOUND)
- set(HAVE_ZLIB 1)
- # FindZLIB module define ZLIB_INCLUDE_DIRS variable
- # Set ZLIB_INCLUDE_DIRECTORIES for compatible
- set(ZLIB_INCLUDE_DIRECTORIES ${ZLIB_INCLUDE_DIRECTORIES} ${ZLIB_INCLUDE_DIRS})
- # Using imported target if exists
- if (TARGET ZLIB::ZLIB)
- set(ZLIB_LIBRARIES ZLIB::ZLIB)
- set(_protobuf_FIND_ZLIB "if(NOT ZLIB_FOUND)\n find_package(ZLIB)\nendif()")
- endif (TARGET ZLIB::ZLIB)
- else (ZLIB_FOUND)
- set(HAVE_ZLIB 0)
- # Explicitly set these to empty (override NOT_FOUND) so cmake doesn't
- # complain when we use them later.
- set(ZLIB_INCLUDE_DIRECTORIES)
- set(ZLIB_LIBRARIES)
- endif (ZLIB_FOUND)
+ if (NOT TARGET ZLIB::ZLIB)
+ find_package(ZLIB REQUIRED)
+ endif()
+ set(HAVE_ZLIB 1)
+ # FindZLIB module define ZLIB_INCLUDE_DIRS variable
+ # Set ZLIB_INCLUDE_DIRECTORIES for compatible
+ set(ZLIB_INCLUDE_DIRECTORIES ${ZLIB_INCLUDE_DIRECTORIES} ${ZLIB_INCLUDE_DIRS})
+ # Using imported target if exists
+ set(ZLIB_LIBRARIES ZLIB::ZLIB)
+ set(_protobuf_FIND_ZLIB "if(NOT ZLIB_FOUND AND NOT TARGET ZLIB::ZLIB)\n find_package(ZLIB REQUIRED)\nendif()")
endif (protobuf_WITH_ZLIB)
# We need to link with libatomic on systems that do not have builtin atomics, or
@@ -277,7 +269,6 @@ else (MSVC)
endif (MSVC)
include_directories(
- ${ZLIB_INCLUDE_DIRECTORIES}
${protobuf_BINARY_DIR}
# Support #include-ing other top-level directories, i.e. upb_generator.
${protobuf_SOURCE_DIR}
diff --git a/cmake/install.cmake b/cmake/install.cmake
index 52914a8ea..d7dc5f232 100644
--- a/cmake/install.cmake
+++ b/cmake/install.cmake
@@ -31,6 +31,7 @@ foreach(_library ${_protobuf_libraries})
set_property(TARGET ${_library}
PROPERTY INTERFACE_INCLUDE_DIRECTORIES
$<BUILD_INTERFACE:${protobuf_SOURCE_DIR}/src>
+ $<BUILD_INTERFACE:${protobuf_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
if (UNIX AND NOT APPLE)
set_property(TARGET ${_library}