cmake: build zlib manually in internal build

This commit is contained in:
Eidolon 2022-11-06 01:31:10 -05:00
parent 00179e44ed
commit 4a3dfae2a3

View file

@ -57,30 +57,52 @@ if(NOT "${SRB2_CONFIG_SYSTEM_LIBRARIES}")
VERSION 1.2.13
URL "https://github.com/madler/zlib/archive/refs/tags/v1.2.13.zip"
EXCLUDE_FROM_ALL
OPTIONS
# The assembly optimizations are unmaintained and slated to be removed
"ASM686 Off"
"AMD64 Off"
"SKIP_INSTALL_ALL ON"
DOWNLOAD_ONLY YES
)
file(MAKE_DIRECTORY "${zlib_BINARY_DIR}/include")
file(COPY "${zlib_SOURCE_DIR}/zlib.h" DESTINATION "${zlib_BINARY_DIR}/include")
file(COPY "${zlib_BINARY_DIR}/zconf.h" DESTINATION "${zlib_BINARY_DIR}/include")
# honestly this should probably be built like png is
set_target_properties(zlib PROPERTIES EXCLUDE_FROM_ALL ON)
set_target_properties(minigzip PROPERTIES EXCLUDE_FROM_ALL ON)
set_target_properties(example PROPERTIES EXCLUDE_FROM_ALL ON)
# zlib cmake also adds these 64 targets separately
if(HAVE_OFF64_T)
set_target_properties(minigzip64 PROPERTIES EXCLUDE_FROM_ALL ON)
set_target_properties(example64 PROPERTIES EXCLUDE_FROM_ALL ON)
if(ZLIB_ADDED)
set(ZLIB_SRCS
crc32.h
deflate.h
gzguts.h
inffast.h
inffixed.h
inflate.h
inftrees.h
trees.h
zutil.h
adler32.c
compress.c
crc32.c
deflate.c
gzclose.c
gzlib.c
gzread.c
gzwrite.c
inflate.c
infback.c
inftrees.c
inffast.c
trees.c
uncompr.c
zutil.c
)
list(TRANSFORM ZLIB_SRCS PREPEND "${ZLIB_SOURCE_DIR}/")
configure_file("${ZLIB_SOURCE_DIR}/zlib.pc.cmakein" "${ZLIB_BINARY_DIR}/zlib.pc" @ONLY)
configure_file("${ZLIB_SOURCE_DIR}/zconf.h.cmakein" "${ZLIB_BINARY_DIR}/include/zconf.h" @ONLY)
add_library(ZLIB ${SRB2_INTERNAL_LIBRARY_TYPE} ${ZLIB_SRCS})
set_target_properties(ZLIB PROPERTIES
VERSION 1.2.13
OUTPUT_NAME "z"
)
target_include_directories(ZLIB PRIVATE "${ZLIB_SOURCE_DIR}")
target_include_directories(ZLIB PUBLIC "${ZLIB_BINARY_DIR}/include")
if(MSVC)
target_compile_definitions(ZLIB PRIVATE -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
endif()
target_include_directories(zlib INTERFACE "${zlib_BINARY_DIR}/include")
target_include_directories(zlibstatic INTERFACE "${zlib_BINARY_DIR}/include")
if(SRB2_CONFIG_SHARED_INTERNAL_LIBRARIES)
add_library(ZLIB::ZLIB ALIAS zlib)
else()
add_library(ZLIB::ZLIB ALIAS zlibstatic)
add_library(ZLIB::ZLIB ALIAS ZLIB)
endif()
endif()