Link bzip2 directly instead of as a static library.

This commit is contained in:
2021-11-12 04:06:16 +00:00
parent 221e7a1438
commit 2fec60c470
3 changed files with 15 additions and 38 deletions

View File

@@ -1,5 +1,3 @@
include(bzip2.cmake)
include(lzip.cmake)
include(lzfse.cmake)

47
3rdparty/bzip2.cmake vendored
View File

@@ -1,22 +1,15 @@
cmake_minimum_required(VERSION 3.12)
project(bzip2
VERSION 1.0.7
DESCRIPTION "This Bzip2/libbz2 a program and library for lossless block-sorting data compression."
LANGUAGES C)
set(LT_CURRENT 1)
set(LT_REVISION 7)
set(LT_AGE 0)
set(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/bzip2/")
set(PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/bzip2/")
set(PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/3rdparty/bzip2/")
set(PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/3rdparty/bzip2/")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/bzip2/cmake")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/bzip2/cmake")
include(Version)
include(SymLink)
set(BZ_VERSION ${PROJECT_VERSION})
set(BZ_VERSION ${LT_CURRENT}.${LT_AGE}.${LT_REVISION})
configure_file (
${PROJECT_SOURCE_DIR}/bz_version.h.in
${PROJECT_BINARY_DIR}/bz_version.h
@@ -25,11 +18,6 @@ include_directories(${PROJECT_BINARY_DIR})
message(STATUS "BZIP2 VERSION: ${BZ_VERSION}")
math(EXPR LT_SOVERSION "${LT_CURRENT} - ${LT_AGE}")
set(LT_VERSION "${LT_SOVERSION}.${LT_AGE}.${LT_REVISION}")
set(PACKAGE_VERSION ${PROJECT_VERSION})
HexVersion(PACKAGE_VERSION_NUM ${PROJECT_VERSION_MAJOR} ${PROJECT_VERSION_MINOR} ${PROJECT_VERSION_PATCH})
# Do not disable assertions based on CMAKE_BUILD_TYPE.
foreach(_build_type Release MinSizeRel RelWithDebInfo)
foreach(_lang C)
@@ -117,26 +105,15 @@ set(BZ2_SOURCES
decompress.c
bzlib.c)
list(TRANSFORM BZ2_SOURCES PREPEND "bzip2/")
list(TRANSFORM BZ2_SOURCES PREPEND "3rdparty/bzip2/")
add_definitions(-DBZ_DEBUG=0)
#if(ENABLE_STATIC_LIB)
# The libbz2 static library.
add_library(bz2_static STATIC)
target_sources(bz2_static
PRIVATE ${BZ2_SOURCES}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/bzip2/bzlib_private.h
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/bzip2/bzlib.h)
set_target_properties(bz2_static PROPERTIES
COMPILE_FLAGS "${WARNCFLAGS}"
VERSION ${LT_VERSION}
SOVERSION ${LT_SOVERSION}
ARCHIVE_OUTPUT_NAME bz2_static)
target_compile_definitions(bz2_static PUBLIC BZ2_STATICLIB)
# install(TARGETS bz2_static DESTINATION ${CMAKE_INSTALL_LIBDIR})
# install(FILES bzlib.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
#endif()
target_sources("Aaru.Compression.Native"
PRIVATE ${BZ2_SOURCES}
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/bzip2/bzlib_private.h
INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/bzip2/bzlib.h)
target_compile_definitions("Aaru.Compression.Native" PUBLIC BZ2_STATICLIB)
set_property(TARGET bz2_static PROPERTY C_VISIBILITY_PRESET hidden)
target_compile_definitions(bz2_static PUBLIC BZ_NO_STDIO)
set_property(TARGET "Aaru.Compression.Native" PROPERTY C_VISIBILITY_PRESET hidden)
target_compile_definitions("Aaru.Compression.Native" PUBLIC BZ_NO_STDIO)

View File

@@ -95,6 +95,8 @@ add_subdirectory(3rdparty)
add_library("Aaru.Compression.Native" SHARED library.c apple_rle.c apple_rle.h adc.c adc.h lzip.c flac.c flac.h)
include(3rdparty/bzip2.cmake)
MACRO(TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE target)
if("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC")
FOREACH(arg IN LISTS ARGN)
@@ -114,7 +116,7 @@ MACRO(TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE target)
ENDIF()
ENDMACRO()
TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE("Aaru.Compression.Native" bz2_static lzlib lzfse libzstd_static lzma m FLAC)
TARGET_LINK_LIBRARIES_WHOLE_ARCHIVE("Aaru.Compression.Native" lzlib lzfse libzstd_static lzma m FLAC)
if(NOT "${CMAKE_C_PLATFORM_ID}" MATCHES "MinGW" OR (NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64"))
set_property(TARGET "Aaru.Compression.Native" PROPERTY POSITION_INDEPENDENT_CODE TRUE)