download, build, and link missing png and zlib libraries with CMake

This commit is contained in:
Axel Kohlmeyer
2022-05-22 17:45:42 -04:00
parent 7d3d986d18
commit 1959cd7037
5 changed files with 972 additions and 872 deletions

View File

@ -446,14 +446,43 @@ endif()
find_package(PNG QUIET)
find_package(ZLIB QUIET)
if((NOT ZLIB_FOUND) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16))
set(LIBZ_URL http://prdownloads.sourceforge.net/libpng/zlib-1.2.11.tar.gz)
set(LIBZ_MD5 1c9f62f0778697a09d36121ead88e08e)
mark_as_advanced(LIBZ_URL)
mark_as_advanced(LIBZ_MD5)
include(ExternalCMakeProject)
ExternalCmakeProject(libz ${LIBZ_URL} ${LIBZ_MD5} zlib . CMakeLists.zlib)
add_library(ZLIB::ZLIB ALIAS zlibstatic)
target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-src")
target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libz-build")
set(ZLIB_FOUND TRUE)
set(ZLIB_INCLUDE_DIR "${CMAKE_BINARY_DIR}/_deps/libz-src;${CMAKE_BINARY_DIR}/_deps/libz-build")
endif()
if((NOT PNG_FOUND) AND (CMAKE_VERSION VERSION_GREATER_EQUAL 3.16))
set(LIBPNG_URL http://prdownloads.sourceforge.net/libpng/libpng-1.6.37.tar.gz)
set(LIBPNG_MD5 6c7519f6c75939efa0ed3053197abd54)
mark_as_advanced(LIBPNG_URL)
mark_as_advanced(LIBPNG_MD5)
include(ExternalCMakeProject)
ExternalCmakeProject(libpng ${LIBPNG_URL} ${LIBPNG_MD5} libpng . CMakeLists.png)
add_library(PNG::PNG ALIAS png_static)
target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-src")
target_include_directories(lammps PRIVATE "${CMAKE_BINARY_DIR}/_deps/libpng-build")
set(PNG_FOUND TRUE)
endif()
if(PNG_FOUND AND ZLIB_FOUND)
option(WITH_PNG "Enable PNG support" ON)
else()
option(WITH_PNG "Enable PNG support" OFF)
endif()
if(WITH_PNG)
find_package(PNG REQUIRED)
find_package(ZLIB REQUIRED)
if(NOT PNG_FOUND)
find_package(PNG REQUIRED)
endif()
if(NOT ZLIB_FOUND)
find_package(ZLIB REQUIRED)
endif()
target_link_libraries(lammps PRIVATE PNG::PNG ZLIB::ZLIB)
target_compile_definitions(lammps PRIVATE -DLAMMPS_PNG)
endif()