mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-11-21 20:11:12 +00:00
69 lines
2 KiB
CMake
69 lines
2 KiB
CMake
CPMAddPackage(
|
|
NAME png
|
|
VERSION 1.6.38
|
|
URL "https://github.com/glennrp/libpng/archive/refs/tags/v1.6.38.zip"
|
|
# png cmake build is broken on msys/mingw32
|
|
DOWNLOAD_ONLY YES
|
|
)
|
|
|
|
if(png_ADDED)
|
|
# Since png's cmake build is broken, we're going to create a target manually
|
|
set(
|
|
PNG_SOURCES
|
|
png.h
|
|
pngconf.h
|
|
pngpriv.h
|
|
pngdebug.h
|
|
pnginfo.h
|
|
pngstruct.h
|
|
png.c
|
|
pngerror.c
|
|
pngget.c
|
|
pngmem.c
|
|
pngpread.c
|
|
pngread.c
|
|
pngrio.c
|
|
pngrtran.c
|
|
pngrutil.c
|
|
pngset.c
|
|
pngtrans.c
|
|
pngwio.c
|
|
pngwrite.c
|
|
pngwtran.c
|
|
pngwutil.c
|
|
)
|
|
list(TRANSFORM PNG_SOURCES PREPEND "${png_SOURCE_DIR}/")
|
|
|
|
add_custom_command(
|
|
OUTPUT "${png_BINARY_DIR}/include/png.h" "${png_BINARY_DIR}/include/pngconf.h"
|
|
COMMAND ${CMAKE_COMMAND} -E copy "${png_SOURCE_DIR}/png.h" "${png_SOURCE_DIR}/pngconf.h" "${png_BINARY_DIR}/include"
|
|
DEPENDS "${png_SOURCE_DIR}/png.h" "${png_SOURCE_DIR}/pngconf.h"
|
|
VERBATIM
|
|
)
|
|
add_custom_command(
|
|
OUTPUT "${png_BINARY_DIR}/include/pnglibconf.h"
|
|
COMMAND ${CMAKE_COMMAND} -E copy "${png_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt" "${png_BINARY_DIR}/include/pnglibconf.h"
|
|
DEPENDS "${png_SOURCE_DIR}/scripts/pnglibconf.h.prebuilt"
|
|
VERBATIM
|
|
)
|
|
list(
|
|
APPEND PNG_SOURCES
|
|
"${png_BINARY_DIR}/include/png.h"
|
|
"${png_BINARY_DIR}/include/pngconf.h"
|
|
"${png_BINARY_DIR}/include/pnglibconf.h"
|
|
)
|
|
add_library(png "${SRB2_INTERNAL_LIBRARY_TYPE}" ${PNG_SOURCES})
|
|
|
|
# Disable ARM NEON since having it automatic breaks libpng external build on clang for some reason
|
|
target_compile_definitions(png PRIVATE -DPNG_ARM_NEON_OPT=0)
|
|
|
|
# The png includes need to be available to consumers
|
|
target_include_directories(png PUBLIC "${png_BINARY_DIR}/include")
|
|
|
|
# ... and these also need to be present only for png build
|
|
target_include_directories(png PRIVATE "${ZLIB_SOURCE_DIR}")
|
|
target_include_directories(png PRIVATE "${ZLIB_BINARY_DIR}")
|
|
target_include_directories(png PRIVATE "${png_BINARY_DIR}")
|
|
target_link_libraries(png PRIVATE ZLIB::ZLIB)
|
|
add_library(PNG::PNG ALIAS png)
|
|
endif()
|