cmake: BZip2 fixup

This commit is contained in:
Corentin Le Molgat
2025-04-07 17:46:43 +02:00
parent 1f27694ab8
commit a5bbbcbcff
8 changed files with 58 additions and 22 deletions

View File

@@ -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"

View File

@@ -379,6 +379,9 @@ 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_bzip2_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_BZip2}>>")
set(need_windows_bzip2_lib "$<AND:${is_windows},$<BOOL:${BUILD_BZip2}>>")
set(need_unix_absl_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_absl}>>")
set(need_windows_absl_lib "$<AND:${is_windows},$<BOOL:${BUILD_absl}>>")

View File

@@ -282,6 +282,9 @@ 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_bzip2_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_BZip2}>>")
set(need_windows_bzip2_lib "$<AND:${is_windows},$<BOOL:${BUILD_BZip2}>>")
set(need_unix_absl_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_absl}>>")
set(need_windows_absl_lib "$<AND:${is_windows},$<BOOL:${BUILD_absl}>>")
@@ -316,6 +319,11 @@ add_custom_command(
$<${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_BZip2}>,copy,true>
$<${need_unix_bzip2_lib}:$<TARGET_SONAME_FILE:BZip2::BZip2>>
$<${need_windows_bzip2_lib}:$<TARGET_FILE:BZip2::BZip2>>
${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>>

View File

@@ -442,6 +442,9 @@ 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_bzip2_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_BZip2}>>")
set(need_windows_bzip2_lib "$<AND:${is_windows},$<BOOL:${BUILD_BZip2}>>")
set(need_unix_absl_lib "$<AND:${is_not_windows},$<BOOL:${BUILD_absl}>>")
set(need_windows_absl_lib "$<AND:${is_windows},$<BOOL:${BUILD_absl}>>")
@@ -476,6 +479,11 @@ add_custom_command(
$<${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_BZip2}>,copy,true>
$<${need_unix_bzip2_lib}:$<TARGET_SONAME_FILE:BZip2::BZip2>>
$<${need_windows_bzip2_lib}:$<TARGET_FILE:BZip2::BZip2>>
${PYTHON_PROJECT}/.libs
COMMAND ${CMAKE_COMMAND} -E
$<IF:$<BOOL:${BUILD_absl}>,copy,true>
$<${need_unix_absl_lib}:$<TARGET_SONAME_FILE:absl::base>>

View File

@@ -29,6 +29,9 @@
$<@need_unix_zlib_lib@:;$<TARGET_SONAME_FILE:ZLIB::ZLIB>>
$<@need_windows_zlib_lib@:;$<TARGET_FILE:ZLIB::ZLIB>>
$<@need_unix_bzip2_lib@:;$<TARGET_SONAME_FILE:BZip2::BZip2>>
$<@need_windows_bzip2_lib@:;$<TARGET_FILE:BZip2::BZip2>>
$<@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>>

View File

@@ -145,7 +145,9 @@ public class Loader {
Path tempPath = unpackNativeResources(resourceURI);
// libraries order does matter <LibraryName, isMandatory> !
List<Map.Entry<String, Boolean>> 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)),

View File

@@ -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"]:

View File

@@ -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
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>
+ $<INSTALL_INTERFACE:include>
+ )
# 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()