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