build: Add a CMake config file compatible with the FindPNG module
Co-authored-by: Cosmin Truta <ctruta@gmail.com>
Signed-off-by: Cosmin Truta <ctruta@gmail.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e154002..e0d0369 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1129,6 +1129,30 @@
FILE libpng${PNGLIB_ABI_VERSION}.cmake)
endif()
+# Create a CMake Config File that can be used via find_package(PNG CONFIG)
+if(NOT SKIP_INSTALL_CONFIG_FILE AND NOT SKIP_INSTALL_ALL)
+ install(TARGETS ${PNG_LIBRARY_TARGETS}
+ EXPORT PNGTargets
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+ include(CMakePackageConfigHelpers)
+ write_basic_package_version_file(PNGConfigVersion.cmake
+ VERSION ${PNGLIB_VERSION}
+ COMPATIBILITY SameMinorVersion)
+
+ install(EXPORT PNGTargets
+ FILE PNGTargets.cmake
+ NAMESPACE PNG::
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG)
+
+ install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/scripts/cmake/PNGConfig.cmake
+ ${CMAKE_CURRENT_BINARY_DIR}/PNGConfigVersion.cmake
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/PNG)
+endif()
+
# TODO: Create MSVC import lib for MinGW-compiled shared lib.
# pexports libpng.dll > libpng.def
# lib /def:libpng.def /machine:x86
diff --git a/scripts/cmake/PNGConfig.cmake b/scripts/cmake/PNGConfig.cmake
new file mode 100644
index 0000000..3b6f646
--- /dev/null
+++ b/scripts/cmake/PNGConfig.cmake
@@ -0,0 +1,15 @@
+include(CMakeFindDependencyMacro)
+
+find_dependency(ZLIB REQUIRED)
+
+include("${CMAKE_CURRENT_LIST_DIR}/PNGTargets.cmake")
+
+if(NOT TARGET PNG::PNG)
+ if(TARGET PNG::png_shared)
+ add_library(PNG::PNG INTERFACE IMPORTED)
+ target_link_libraries(PNG::PNG INTERFACE PNG::png_shared)
+ elseif(TARGET PNG::png_static)
+ add_library(PNG::PNG INTERFACE IMPORTED)
+ target_link_libraries(PNG::PNG INTERFACE PNG::png_static)
+ endif()
+endif()
diff --git a/scripts/cmake/README.md b/scripts/cmake/README.md
index ca41889..18e7107 100644
--- a/scripts/cmake/README.md
+++ b/scripts/cmake/README.md
@@ -20,6 +20,7 @@
CMakeLists.txt ==> The main CMake lists file
scripts/cmake/AUTHORS.md ==> The Authors file
scripts/cmake/README.md ==> This file
+ scripts/cmake/PNGConfig.cmake ==> Config file for FindPNG
scripts/cmake/genchk.cmake.in ==> Template for genchk.cmake
scripts/cmake/genout.cmake.in ==> Template for genout.cmake
scripts/cmake/gensrc.cmake.in ==> Template for gensrc.cmake