diff --git a/cmake/dependencies/CMakeLists.txt b/cmake/dependencies/CMakeLists.txt index 04a6cc5f60..4833bffdc7 100644 --- a/cmake/dependencies/CMakeLists.txt +++ b/cmake/dependencies/CMakeLists.txt @@ -80,6 +80,7 @@ if(BUILD_BZip2) message(CHECK_START "Fetching BZip2") list(APPEND CMAKE_MESSAGE_INDENT " ") set(ENABLE_LIB_ONLY ON) + set(ENABLE_TESTS OFF) FetchContent_Declare( BZip2 GIT_REPOSITORY "https://gitlab.com/bzip2/bzip2.git" diff --git a/cmake/dotnet.cmake b/cmake/dotnet.cmake index 6af7747151..82c42cc56e 100644 --- a/cmake/dotnet.cmake +++ b/cmake/dotnet.cmake @@ -379,6 +379,9 @@ set(is_not_windows "$>") set(need_unix_zlib_lib "$>") set(need_windows_zlib_lib "$>") +set(need_unix_bzip2_lib "$>") +set(need_windows_bzip2_lib "$>") + set(need_unix_absl_lib "$>") set(need_windows_absl_lib "$>") diff --git a/cmake/java.cmake b/cmake/java.cmake index 2cc98cecd8..c6a80fb29e 100644 --- a/cmake/java.cmake +++ b/cmake/java.cmake @@ -282,6 +282,9 @@ set(is_not_windows "$>") set(need_unix_zlib_lib "$>") set(need_windows_zlib_lib "$>") +set(need_unix_bzip2_lib "$>") +set(need_windows_bzip2_lib "$>") + set(need_unix_absl_lib "$>") set(need_windows_absl_lib "$>") @@ -316,6 +319,11 @@ add_custom_command( $<${need_unix_zlib_lib}:$> $<${need_windows_zlib_lib}:$> ${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/ + COMMAND ${CMAKE_COMMAND} -E + $,copy,true> + $<${need_unix_bzip2_lib}:$> + $<${need_windows_bzip2_lib}:$> + ${JAVA_RESSOURCES_PATH}/${JAVA_NATIVE_PROJECT}/ COMMAND ${CMAKE_COMMAND} -E $,copy,true> $<${need_unix_absl_lib}:$> diff --git a/cmake/python.cmake b/cmake/python.cmake index 799b85c013..5b4ecc2461 100644 --- a/cmake/python.cmake +++ b/cmake/python.cmake @@ -442,6 +442,9 @@ set(is_not_windows "$>") set(need_unix_zlib_lib "$>") set(need_windows_zlib_lib "$>") +set(need_unix_bzip2_lib "$>") +set(need_windows_bzip2_lib "$>") + set(need_unix_absl_lib "$>") set(need_windows_absl_lib "$>") @@ -476,6 +479,11 @@ add_custom_command( $<${need_unix_zlib_lib}:$> $<${need_windows_zlib_lib}:$> ${PYTHON_PROJECT}/.libs + COMMAND ${CMAKE_COMMAND} -E + $,copy,true> + $<${need_unix_bzip2_lib}:$> + $<${need_windows_bzip2_lib}:$> + ${PYTHON_PROJECT}/.libs COMMAND ${CMAKE_COMMAND} -E $,copy,true> $<${need_unix_absl_lib}:$> diff --git a/ortools/dotnet/Google.OrTools.runtime.csproj.in b/ortools/dotnet/Google.OrTools.runtime.csproj.in index 69b2318a9a..62c8e1db01 100644 --- a/ortools/dotnet/Google.OrTools.runtime.csproj.in +++ b/ortools/dotnet/Google.OrTools.runtime.csproj.in @@ -29,6 +29,9 @@ $<@need_unix_zlib_lib@:;$> $<@need_windows_zlib_lib@:;$> + $<@need_unix_bzip2_lib@:;$> + $<@need_windows_bzip2_lib@:;$> + $<@need_unix_absl_lib@:;$> $<@need_unix_absl_lib@:;$> $<@need_unix_absl_lib@:;$> diff --git a/ortools/java/com/google/ortools/Loader.java b/ortools/java/com/google/ortools/Loader.java index d2cafcf889..2802668814 100644 --- a/ortools/java/com/google/ortools/Loader.java +++ b/ortools/java/com/google/ortools/Loader.java @@ -145,7 +145,9 @@ public class Loader { Path tempPath = unpackNativeResources(resourceURI); // libraries order does matter ! List> dlls = - Arrays.asList((new AbstractMap.SimpleEntry("zlib1", true)), + Arrays.asList( + (new AbstractMap.SimpleEntry("zlib1", true)), + (new AbstractMap.SimpleEntry("bz2", true)), (new AbstractMap.SimpleEntry("abseil_dll", true)), (new AbstractMap.SimpleEntry("re2", true)), (new AbstractMap.SimpleEntry("libutf8_validity", true)), diff --git a/ortools/python/__init__.py.in b/ortools/python/__init__.py.in index b71385b3ab..7a6500a38c 100644 --- a/ortools/python/__init__.py.in +++ b/ortools/python/__init__.py.in @@ -57,7 +57,7 @@ def _load_ortools_libs(): except: logger.error(f"ImportError: Cannot import WinDLL") else: - for dll in ["zlib1.dll", + for dll in ["zlib1.dll", "bz2.dll", "abseil_dll.dll", "utf8_validity.dll", "re2.dll", "libprotobuf.dll", "highs.dll", "libscip.dll", "ortools.dll"]: diff --git a/patches/bzip2.patch b/patches/bzip2.patch index ba1dc7f09a..ace4852290 100644 --- a/patches/bzip2.patch +++ b/patches/bzip2.patch @@ -1,5 +1,5 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index c4b0b6e..bd3aca3 100644 +index c4b0b6e..30f7652 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,10 @@ @@ -24,39 +24,48 @@ index c4b0b6e..bd3aca3 100644 # Windows resource file set(BZ2_RES "") -@@ -301,10 +306,14 @@ if(ENABLE_SHARED_LIB) +@@ -299,21 +304,30 @@ endif() + + if(ENABLE_SHARED_LIB) # The libbz2 shared library. - add_library(bz2 SHARED ${BZ2_RES}) - target_sources(bz2 +- add_library(bz2 SHARED ${BZ2_RES}) +- target_sources(bz2 - PRIVATE ${BZ2_SOURCES} - ${CMAKE_CURRENT_SOURCE_DIR}/libbz2.def - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/bzlib_private.h - INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/bzlib.h) ++ add_library(BZip2 SHARED ${BZ2_RES}) ++ target_sources(BZip2 + PRIVATE ${BZ2_SOURCES} + libbz2.def + bzlib_private.h + bzlib.h) -+ target_include_directories(bz2 PUBLIC ++ target_include_directories(BZip2 PUBLIC + $ + $ + ) # Always use '-fPIC'/'-fPIE' option for shared libraries. - set_property(TARGET bz2 PROPERTY POSITION_INDEPENDENT_CODE ON) -@@ -312,8 +321,11 @@ if(ENABLE_SHARED_LIB) - set_target_properties(bz2 PROPERTIES +- set_property(TARGET bz2 PROPERTY POSITION_INDEPENDENT_CODE ON) ++ set_property(TARGET BZip2 PROPERTY POSITION_INDEPENDENT_CODE ON) + +- set_target_properties(bz2 PROPERTIES ++ set_target_properties(BZip2 PROPERTIES COMPILE_FLAGS "${WARNCFLAGS}" - VERSION ${LT_VERSION} SOVERSION ${LT_SOVERSION}) +- VERSION ${LT_VERSION} SOVERSION ${LT_SOVERSION}) - install(TARGETS bz2 DESTINATION ${CMAKE_INSTALL_LIBDIR}) -+ install(TARGETS bz2 ++ VERSION ${LT_VERSION} SOVERSION ${LT_SOVERSION} ++ OUTPUT_NAME bz2 ++ ) ++ install(TARGETS BZip2 + EXPORT ${PROJECT_NAME}Targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES bzlib.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -+ add_library(BZip2::BZip2 ALIAS bz2) ++ add_library(BZip2::BZip2 ALIAS BZip2) if(USE_OLD_SONAME) # Hack to support the old libbz2.so.1.0 version by including an extra copy. -@@ -323,16 +335,22 @@ if(ENABLE_SHARED_LIB) +@@ -323,16 +337,22 @@ if(ENABLE_SHARED_LIB) add_library(bz2_old_soname SHARED ${BZ2_RES}) target_sources(bz2_old_soname PRIVATE ${BZ2_SOURCES} @@ -83,7 +92,7 @@ index c4b0b6e..bd3aca3 100644 endif() endif() endif() -@@ -341,9 +359,13 @@ if(ENABLE_STATIC_LIB) +@@ -341,9 +361,13 @@ if(ENABLE_STATIC_LIB) # The libbz2 static library. add_library(bz2_static STATIC) target_sources(bz2_static @@ -100,7 +109,7 @@ index c4b0b6e..bd3aca3 100644 # Use '-fPIC'/'-fPIE' option for static libraries by default. # You may build with ENABLE_STATIC_LIB_IS_PIC=OFF to disable PIC for the static library. -@@ -357,8 +379,13 @@ if(ENABLE_STATIC_LIB) +@@ -357,8 +381,13 @@ if(ENABLE_STATIC_LIB) SOVERSION ${LT_SOVERSION} ARCHIVE_OUTPUT_NAME bz2_static) target_compile_definitions(bz2_static PUBLIC BZ2_STATICLIB) @@ -109,13 +118,13 @@ index c4b0b6e..bd3aca3 100644 + EXPORT ${PROJECT_NAME}Targets + DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES bzlib.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -+ if(NOT TARGET bz2) ++ if(NOT TARGET BZip2) + add_library(BZip2::BZip2 ALIAS bz2_static) + endif() endif() if(ENABLE_APP) -@@ -373,7 +400,9 @@ if(ENABLE_APP) +@@ -373,7 +402,9 @@ if(ENABLE_APP) else() target_compile_definitions(bzip2 PUBLIC BZ_LCCWIN32=0 BZ_UNIX) endif() @@ -126,7 +135,7 @@ index c4b0b6e..bd3aca3 100644 # Create bzip2 copies bzcat and bunzip. # The default behavior is altered in bzip2.c code by checking the program name. -@@ -391,7 +420,9 @@ if(ENABLE_APP) +@@ -391,7 +422,9 @@ if(ENABLE_APP) else() target_compile_definitions(bzip2recover PUBLIC BZ_LCCWIN32=0 BZ_UNIX) endif() @@ -137,18 +146,20 @@ index c4b0b6e..bd3aca3 100644 if(ENABLE_EXAMPLES) if(ENABLE_SHARED_LIB) -@@ -400,7 +431,9 @@ if(ENABLE_APP) +@@ -399,8 +432,10 @@ if(ENABLE_APP) + add_executable(dlltest) target_sources(dlltest PRIVATE dlltest.c) - target_link_libraries(dlltest bz2) +- target_link_libraries(dlltest bz2) - install(TARGETS dlltest DESTINATION ${CMAKE_INSTALL_BINDIR}) ++ target_link_libraries(dlltest BZip2) + install(TARGETS dlltest + EXPORT ${PROJECT_NAME}Targets + DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() endif() -@@ -419,6 +452,10 @@ if(ENABLE_APP) +@@ -419,6 +454,10 @@ if(ENABLE_APP) endif()