build: Fix wrong symlink created for import library on MinGW and Cygwin This is a cherry-pick of commit 0bb2bb50e36b8f8058c27446e934d9f425b8ffe4 from branch 'libpng18' Resolves: https://github.com/pnggroup/libpng/issues/783 Reviewed-by: Cosmin Truta <ctruta@gmail.com> Signed-off-by: Cosmin Truta <ctruta@gmail.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ab9e47..c5e0667 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt
@@ -1114,10 +1114,17 @@ FRAMEWORK DESTINATION "${CMAKE_INSTALL_LIBDIR}") if(PNG_SHARED) - # Create a symlink for libpng.dll.a => libpng16.dll.a on Cygwin + # Create an unversioned symlink to the shared library's link-time file. if(NOT WIN32 OR CYGWIN OR MINGW) - create_symlink(libpng${CMAKE_SHARED_LIBRARY_SUFFIX} TARGET png_shared) - install(FILES "$<TARGET_LINKER_FILE_DIR:png_shared>/libpng${CMAKE_SHARED_LIBRARY_SUFFIX}" + if(CYGWIN OR MINGW) + # The symlink is for the import library (e.g., libpng.dll.a => libpng16.dll.a). + set(libpng_symlink_name "libpng${CMAKE_IMPORT_LIBRARY_SUFFIX}") + else() + # The symlink is for the shared object (e.g., libpng.so => libpng16.so). + set(libpng_symlink_name "libpng${CMAKE_SHARED_LIBRARY_SUFFIX}") + endif() + create_symlink(${libpng_symlink_name} TARGET png_shared) + install(FILES "$<TARGET_LINKER_FILE_DIR:png_shared>/${libpng_symlink_name}" DESTINATION "${CMAKE_INSTALL_LIBDIR}") endif() endif()
diff --git a/scripts/cmake/AUTHORS.md b/scripts/cmake/AUTHORS.md index 2731095..ea4584e 100644 --- a/scripts/cmake/AUTHORS.md +++ b/scripts/cmake/AUTHORS.md
@@ -12,6 +12,7 @@ * Benjamin Buch * Bernd Kuhls * Cameron Cawley + * Carlo Bramini * Christian Ehrlicher * Christopher Sean Morrison * Claudio Bley