libtiff: Merge branch 'fix-cmake-subproject' into 'master'

From 814a2441e76b54bfc2d4dd8961a9b43d996bcc0c Mon Sep 17 00:00:00 2001
From: Jeremy Maitin-Shepard <[EMAIL REDACTED]>
Date: Wed, 21 Sep 2022 13:42:08 -0700
Subject: [PATCH 1/2] Fix CMake build to be compatible with FetchContent

Recent versions of CMake have improved support for including
dependencies, using the FetchContent module, which allows a dependency
to be imported as a subproject and then later found automatically by
calls to `find_package`.

This change makes libtiff's CMake better behaved when used as a
sub-project:

- CMake has a single global namespace for all target names in all
  sub-projects.  This commit renames the following CMake targets:

  - port -> tiff_port
  - mkg3states -> tiff_mkg3states
  - faxtable -> tiff_faxtable
  - release -> tiff_release

- When building TIFF as a sub-project, it is not normally useful to
  create install rules for its targets.  This commit adds a
  `tiff-install` option that controls whether the install rules are
  added and defaults to OFF when libtiff is included as a sub-project.

- Previously, libtiff set `BUILD_SHARED_LIBS` to ON by default.  With
  this commit, that default is only set if libtiff is the top-level
  project.

- When using `find_package(TIFF)`, the targets `TIFF::TIFF` and
  `TIFF::CXX` are defined.  This commit makes libtiff itself define
  those targets as aliases, to allow other cmake projects to use
  either `find_package` or `FetchContent` interchangeably.

- Adds ZSTD_HAVE_DECOMPRESS_STREAM variable which may be set to bypass
  `check_symbol_exists` call.  Fixes
  https://gitlab.com/libtiff/libtiff/-/issues/472.
---
 CMakeLists.txt                  | 21 ++++++++----
 cmake/Release.cmake             |  2 +-
 cmake/ZSTDCodec.cmake           | 17 ++++++----
 contrib/addtiffo/CMakeLists.txt |  2 +-
 contrib/dbs/CMakeLists.txt      |  8 ++---
 contrib/iptcutil/CMakeLists.txt |  2 +-
 libtiff/CMakeLists.txt          | 59 ++++++++++++++++++---------------
 port/CMakeLists.txt             | 10 +++---
 test/CMakeLists.txt             | 28 ++++++++--------
 tools/CMakeLists.txt            | 42 +++++++++++------------
 10 files changed, 104 insertions(+), 87 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 26acca80..02e3ed83 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -39,26 +39,33 @@ message(STATUS "libtiff library version ${SO_VERSION}")
 string(TIMESTAMP BUILD_DATE "%Y%m%d")
 message(STATUS "libtiff build date: ${BUILD_DATE}")
 
+# Project definition
+set(CMAKE_C_STANDARD 99)
+project(tiff
+        VERSION "${LIBTIFF_VERSION}"
+        LANGUAGES C CXX)
 
-set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
+if(NOT "^${CMAKE_SOURCE_DIR}$" STREQUAL "^${PROJECT_SOURCE_DIR}$")
+  # libtiff is being included as a subproject of some other project.
+  set(tiff-install-default OFF)
+  set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
+else()
+  set(tiff-install-default ON)
+  set(tiff-install ON)
+endif()
 
 option(tiff-tools "build TIFF tools" ON)
 option(tiff-tests "build TIFF tests" ON)
 option(tiff-contrib "build TIFF contrib" ON)
 option(tiff-docs "build TIFF documentation" ON)
 option(tiff-deprecated "build TIFF deprecated features" OFF)
+option(tiff-install "install TIFF targets" ${tiff-install-default})
 
 # Disable deprecated features to ensure clean build
 if (tiff-deprecated)
   add_definitions(-DTIFF_DISABLE_DEPRECATED)
 endif()
 
-# Project definition
-set(CMAKE_C_STANDARD 99)
-project(tiff
-        VERSION "${LIBTIFF_VERSION}"
-        LANGUAGES C CXX)
-
 # Autotools compatibility
 include(AutotoolsCompat)
 
diff --git a/cmake/Release.cmake b/cmake/Release.cmake
index fbf34cc6..5deba03d 100644
--- a/cmake/Release.cmake
+++ b/cmake/Release.cmake
@@ -23,7 +23,7 @@
 # OF THIS SOFTWARE.
 
 
-add_custom_target(release
+add_custom_target(tiff_release
         COMMAND ${CMAKE_COMMAND}
         "-DSOURCE_DIR:PATH=${PROJECT_SOURCE_DIR}"
         "-DLIBTIFF_VERSION=${PROJECT_VERSION}"
diff --git a/cmake/ZSTDCodec.cmake b/cmake/ZSTDCodec.cmake
index d3d2de80..506e53c2 100644
--- a/cmake/ZSTDCodec.cmake
+++ b/cmake/ZSTDCodec.cmake
@@ -31,13 +31,16 @@ set(ZSTD_USABLE FALSE)
 find_package(ZSTD)
 
 if(ZSTD_FOUND)
-    set(CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES})
-    set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${ZSTD_INCLUDE_DIRS})
-    set(CMAKE_REQUIRED_LIBRARIES_SAVE ${CMAKE_REQUIRED_LIBRARIES})
-    set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${ZSTD_LIBRARIES})
-    check_symbol_exists(ZSTD_decompressStream "zstd.h" ZSTD_RECENT_ENOUGH)
-    set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVE})
-    set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_SAVE})
+    if (NOT (DEFINED ZSTD_HAVE_DECOMPRESS_STREAM))
+      set(CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES})
+      set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${ZSTD_INCLUDE_DIRS})
+      set(CMAKE_REQUIRED_LIBRARIES_SAVE ${CMAKE_REQUIRED_LIBRARIES})
+      set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${ZSTD_LIBRARIES})
+      check_symbol_exists(ZSTD_decompressStream "zstd.h" ZSTD_HAVE_DECOMPRESS_STREAM)
+      set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVE})
+      set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_SAVE})
+    endif()
+    set(ZSTD_RECENT_ENOUGH "${ZSTD_HAVE_DECOMPRESS_STREAM}")
 
     if (ZSTD_RECENT_ENOUGH)
         set(ZSTD_USABLE TRUE)
diff --git a/contrib/addtiffo/CMakeLists.txt b/contrib/addtiffo/CMakeLists.txt
index 2f3959bc..7c86e950 100644
--- a/contrib/addtiffo/CMakeLists.txt
+++ b/contrib/addtiffo/CMakeLists.txt
@@ -23,7 +23,7 @@
 # OF THIS SOFTWARE.
 
 add_executable(addtiffo addtiffo.c tif_overview.c tif_ovrcache.c tif_ovrcache.h)
-target_link_libraries(addtiffo tiff port)
+target_link_libraries(addtiffo tiff tiff_port)
 
 if(WEBP_SUPPORT AND EMSCRIPTEN)
   # Emscripten is pretty finnicky about linker flags.
diff --git a/contrib/dbs/CMakeLists.txt b/contrib/dbs/CMakeLists.txt
index b5681777..74b2a02a 100644
--- a/contrib/dbs/CMakeLists.txt
+++ b/contrib/dbs/CMakeLists.txt
@@ -23,16 +23,16 @@
 # OF THIS SOFTWARE.
 
 add_executable(tiff-bi tiff-bi.c)
-target_link_libraries(tiff-bi tiff port)
+target_link_libraries(tiff-bi tiff tiff_port)
 
 add_executable(tiff-grayscale tiff-grayscale.c)
-target_link_libraries(tiff-grayscale tiff port CMath::CMath)
+target_link_libraries(tiff-grayscale tiff tiff_port CMath::CMath)
 
 add_executable(tiff-palette tiff-palette.c)
-target_link_libraries(tiff-palette tiff port)
+target_link_libraries(tiff-palette tiff tiff_port)
 
 add_executable(tiff-rgb tiff-rgb.c)
-target_link_libraries(tiff-rgb tiff port CMath::CMath)
+target_link_libraries(tiff-rgb tiff tiff_port CMath::CMath)
 
 if(WEBP_SUPPORT AND EMSCRIPTEN)
   # Emscripten is pretty finnicky about linker flags.
diff --git a/contrib/iptcutil/CMakeLists.txt b/contrib/iptcutil/CMakeLists.txt
index 39d908c6..d13319c6 100644
--- a/contrib/iptcutil/CMakeLists.txt
+++ b/contrib/iptcutil/CMakeLists.txt
@@ -23,4 +23,4 @@
 # OF THIS SOFTWARE.
 
 add_executable(iptcutil iptcutil.c)
-target_link_libraries(iptcutil tiff port)
+target_link_libraries(iptcutil tiff tiff_port)
diff --git a/libtiff/CMakeLists.txt b/libtiff/CMakeLists.txt
index 3fab9b67..57f29b1f 100755
--- a/libtiff/CMakeLists.txt
+++ b/libtiff/CMakeLists.txt
@@ -46,6 +46,7 @@ set(tiff_private_HEADERS
 
 
 add_library(tiff libtiff.def)
+add_library(TIFF::TIFF ALIAS tiff)
 
 target_sources(tiff PRIVATE
         ${tiff_public_HEADERS}
@@ -169,21 +170,23 @@ if(HAVE_LD_VERSION_SCRIPT)
                         "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libtiff.map")
 endif()
 
-export(TARGETS tiff NAMESPACE TIFF:: FILE "${CMAKE_CURRENT_BINARY_DIR}/libtiffTargets.cmake")
-install(TARGETS tiff EXPORT TiffTargets
-        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+if (tiff-install)
+  export(TARGETS tiff NAMESPACE TIFF:: FILE "${CMAKE_CURRENT_BINARY_DIR}/libtiffTargets.cmake")
+  install(TARGETS tiff EXPORT TiffTargets
+          RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+          LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+          ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
-install(FILES ${tiff_public_HEADERS}
-        DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+  install(FILES ${tiff_public_HEADERS}
+          DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
 
-set(TIFF_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/tiff)
-install(EXPORT TiffTargets
-        FILE TiffTargets.cmake
-        NAMESPACE TIFF::
-        DESTINATION ${TIFF_CONFIGDIR}
-)
+  set(TIFF_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/tiff)
+  install(EXPORT TiffTargets
+          FILE TiffTargets.cmake
+          NAMESPACE TIFF::
+          DESTINATION ${TIFF_CONFIGDIR}
+  )
+endif()
 
 if(CXX_SUPPORT)
   set(tiffxx_HEADERS
@@ -196,6 +199,8 @@ if(CXX_SUPPORT)
       add_library(tiffxx ../placeholder.h)
   endif()
 
+  add_library(TIFF::CXX ALIAS tiffxx)
+
   target_sources(tiffxx PRIVATE
           ${tiffxx_HEADERS}
           tif_stream.cxx)
@@ -213,24 +218,26 @@ if(CXX_SUPPORT)
                           "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libtiffxx.map")
   endif()
 
-  install(TARGETS tiffxx
-          RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-          LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-          ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
-
-  install(FILES ${tiffxx_HEADERS}
-          DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+  if (tiff-install)
+    install(TARGETS tiffxx
+            RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+            LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 
+    install(FILES ${tiffxx_HEADERS}
+            DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
+  endif()
+      
 endif()
 
 if(NOT CMAKE_CROSSCOMPILING)
-  add_executable(mkg3states ../placeholder.h)
-  target_sources(mkg3states PRIVATE mkg3states.c tif_fax3.h)
-  target_link_libraries(mkg3states tiff port)
+  add_executable(tiff_mkg3states ../placeholder.h)
+  target_sources(tiff_mkg3states PRIVATE mkg3states.c tif_fax3.h)
+  target_link_libraries(tiff_mkg3states tiff tiff_port)
 
-  add_custom_target(faxtable
-          DEPENDS mkg3states
+  add_custom_target(tiff_faxtable
+          DEPENDS tiff_mkg3states
           COMMAND ${CMAKE_COMMAND} -E rm "tif_fax3sm.c"
-          COMMAND mkg3states -b -c const "tif_fax3sm.c"
+          COMMAND tiff_mkg3states -b -c const "tif_fax3sm.c"
           WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
 endif()
diff --git a/port/CMakeLists.txt b/port/CMakeLists.txt
index fd459162..04bd3ea8 100755
--- a/port/CMakeLists.txt
+++ b/port/CMakeLists.txt
@@ -31,21 +31,21 @@ set(port_HEADERS libport.h)
 
 # Only build if any needed features are missing
 if(NOT HAVE_GETOPT)
-  add_library(port STATIC ../placeholder.h)
+  add_library(tiff_port STATIC ../placeholder.h)
 
   # Add getopt if missing
   if(NOT HAVE_GETOPT)
-    target_sources(port PUBLIC
+    target_sources(tiff_port PUBLIC
             ${CMAKE_CURRENT_SOURCE_DIR}/getopt.c)
   endif()
 
-  target_include_directories(port PUBLIC
+  target_include_directories(tiff_port PUBLIC
           ${CMAKE_CURRENT_BINARY_DIR}
           ${CMAKE_CURRENT_SOURCE_DIR})
 else()
   # Dummy interface library
-  add_library(port INTERFACE)
-  target_include_directories(port INTERFACE
+  add_library(tiff_port INTERFACE)
+  target_include_directories(tiff_port INTERFACE
           ${CMAKE_CURRENT_BINARY_DIR}
           ${CMAKE_CURRENT_SOURCE_DIR})
 endif()
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 66de9376..a7ad8ec1 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -102,77 +102,77 @@ set(simple_tests)
 
 add_executable(test_signed_tags ../placeholder.h)
 target_sources(test_signed_tags PRIVATE test_signed_tags.c)
-target_link_libraries(test_signed_tags PRIVATE tiff port)
+target_link_libraries(test_signed_tags PRIVATE tiff tiff_port)
 list(APPEND simple_tests test_signed_tags)
 
 add_executable(ascii_tag ../placeholder.h)
 target_sources(ascii_tag PRIVATE ascii_tag.c)
-target_link_libraries(ascii_tag PRIVATE tiff port)
+target_link_libraries(ascii_tag PRIVATE tiff tiff_port)
 list(APPEND simple_tests ascii_tag)
 
 add_executable(long_tag ../placeholder.h)
 target_sources(long_tag PRIVATE long_tag.c check_tag.c)
-target_link_libraries(long_tag PRIVATE tiff port)
+target_link_libraries(long_tag PRIVATE tiff tiff_port)
 list(APPEND simple_tests long_tag)
 
 add_executable(short_tag ../placeholder.h)
 target_sources(short_tag PRIVATE short_tag.c check_tag.c)
-target_link_libraries(short_tag PRIVATE tiff port)
+target_link_libraries(short_tag PRIVATE tiff tiff_port)
 list(APPEND simple_tests short_tag)
 
 add_executable(strip_rw ../placeholder.h)
 target_sources(strip_rw PRIVATE strip_rw.c strip.c test_arrays.c test_arrays.h)
-target_link_libraries(strip_rw PRIVATE tiff port)
+target_link_libraries(strip_rw PRIVATE tiff tiff_port)
 list(APPEND simple_tests strip_rw)
 
 add_executable(rewrite ../placeholder.h)
 target_sources(rewrite PRIVATE rewrite_tag.c)
-target_link_libraries(rewrite PRIVATE tiff port)
+target_link_libraries(rewrite PRIVATE tiff tiff_port)
 list(APPEND simple_tests rewrite)
 
 if(JPEG_SUPPORT)
   add_executable(raw_decode ../placeholder.h)
   target_sources(raw_decode PRIVATE raw_decode.c)
-  target_link_libraries(raw_decode PRIVATE tiff port JPEG::JPEG)
+  target_link_libraries(raw_decode PRIVATE tiff tiff_port JPEG::JPEG)
   list(APPEND simple_tests raw_decode)
 endif()
 
 add_executable(custom_dir ../placeholder.h)
 target_sources(custom_dir PRIVATE custom_dir.c)
-target_link_libraries(custom_dir PRIVATE tiff port)
+target_link_libraries(custom_dir PRIVATE tiff tiff_port)
 list(APPEND simple_tests custom_dir)
 
 # Uses private functions from static library
 if(NOT BUILD_SHARED_LIBS)
   add_executable(rational_precision2double ../placeholder.h)
   target_sources(rational_precision2double PRIVATE rational_precision2double.c)
-  target_link_libraries(rational_precision2double PRIVATE tiff port)
+  target_link_libraries(rational_precision2double PRIVATE tiff tiff_port)
   list(APPEND simple_tests rational_precision2double)
 endif()
 
 add_executable(custom_dir_EXIF_231 ../placeholder.h)
 target_sources(custom_dir_EXIF_231 PRIVATE custom_dir_EXIF_231.c)
-target_link_libraries(custom_dir_EXIF_231 PRIVATE tiff port)
+target_link_libraries(custom_dir_EXIF_231 PRIVATE tiff tiff_port)
 list(APPEND simple_tests custom_dir_EXIF_231)
 
 add_executable(defer_strile_loading ../placeholder.h)
 target_sources(defer_strile_loading PRIVATE defer_strile_loading.c)
-target_link_libraries(defer_strile_loading PRIVATE tiff port)
+target_link_libraries(defer_strile_loading PRIVATE tiff tiff_port)
 list(APPEND simple_tests defer_strile_loading)
 
 add_executable(defer_strile_writing ../placeholder.h)
 target_sources(defer_strile_writing PRIVATE defer_strile_writing.c)
-target_link_libraries(defer_strile_writing PRIVATE tiff port)
+target_link_libraries(defer_strile_writing PRIVATE tiff tiff_port)
 list(APPEND simple_tests defer_strile_writing)
 
 add_executable(test_directory ../placeholder.h)
 target_sources(test_directory PRIVATE test_directory.c)
-target_link_libraries(test_directory PRIVATE tiff port)
+target_link_libraries(test_directory PRIVATE tiff tiff_port)
 list(APPEND simple_tests test_directory)
 
 add_executable(testtypes ../placeholder.h)
 target_sources(testtypes PRIVATE testtypes.c)
-target_link_libraries(testtypes PRIVATE tiff port)
+target_link_libraries(testtypes PRIVATE tiff tiff_port)
 list(APPEND simple_tests testtypes)
 
 if(WEBP_SUPPORT AND EMSCRIPTEN)
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index e0feaebe..2d203763 100755
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -24,83 +24,83 @@
 
 add_executable(fax2ps ../placeholder.h)
 target_sources(fax2ps PRIVATE fax2ps.c)
-target_link_libraries(fax2ps PRIVATE tiff port)
+target_link_libraries(fax2ps PRIVATE tiff tiff_port)
 
 add_executable(fax2tiff ../placeholder.h)
 target_sources(fax2tiff PRIVATE fax2tiff.c)
-target_link_libraries(fax2tiff PRIVATE tiff port)
+target_link_libraries(fax2tiff PRIVATE tiff tiff_port)
 
 add_executable(pal2rgb ../placeholder.h)
 target_sources(pal2rgb PRIVATE pal2rgb.c)
-target_link_libraries(pal2rgb PRIVATE tiff port)
+target_link_libraries(pal2rgb PRIVATE tiff tiff_port)
 
 add_executable(ppm2tiff ../placeholder.h)
 target_sources(ppm2tiff PRIVATE ppm2tiff.c)
-target_link_libraries(ppm2tiff PRIVATE tiff port)
+target_link_libraries(ppm2tiff PRIVATE tiff tiff_port)
 
 add_executable(raw2tiff ../placeholder.h)
 target_sources(raw2tiff PRIVATE raw2tiff.c)
-target_link_libraries(raw2tiff PRIVATE tiff port CMath::CMath)
+target_link_libraries(raw2tiff PRIVATE tiff tiff_port CMath::CMath)
 
 add_executable(rgb2ycbcr ../placeholder.h)
 target_sources(rgb2ycbcr PRIVATE rgb2ycbcr.c)
-target_link_libraries(rgb2ycbcr PRIVATE tiff port)
+target_link_libraries(rgb2ycbcr PRIVATE tiff tiff_port)
 
 add_executable(thumbnail ../placeholder.h)
 target_sources(thumbnail PRIVATE thumbnail.c)
-target_link_libraries(thumbnail PRIVATE tiff port CMath::CMath)
+target_link_libraries(thumbnail PRIVATE tiff tiff_port CMath::CMath)
 
 add_executable(tiff2bw ../placeholder.h)
 target_sources(tiff2bw PRIVATE tiff2bw.c)
-target_link_libraries(tiff2bw PRIVATE tiff port)
+target_link_libraries(tiff2bw PRIVATE tiff tiff_port)
 
 add_executable(tiff2pdf ../placeholder.h)
 target_sources(tiff2pdf PRIVATE tiff2pdf.c)
-target_link_libraries(tiff2pdf PRIVATE tiff port)
+target_link_libraries(tiff2pdf PRIVATE tiff tiff_port)
 
 add_executable(tiff2ps ../placeholder.h)
 target_sources(tiff2ps PRIVATE tiff2ps.c)
-target_link_libraries(tiff2ps PRIVATE tiff port CMath::CMath)
+target_link_libraries(tiff2ps PRIVATE tiff tiff_port CMath::CMath)
 
 add_executable(tiff2rgba ../placeholder.h)
 target_sources(tiff2rgba PRIVATE tiff2rgba.c)
-target_link_libraries(tiff2rgba PRIVATE tiff port)
+target_link_libraries(tiff2rgba PRIVATE tiff tiff_port)
 
 add_executable(tiffcmp ../placeholder.h)
 target_sources(tiffcmp PRIVATE tiffcmp.c)
-target_link_libraries(tiffcmp PRIVATE tiff port)
+target_link_libraries(tiffcmp PRIVATE tiff tiff_port)
 
 add_executable(tiffcp ../placeholder.h)
 target_sources(tiffcp PRIVATE tiffcp.c)
-target_link_libraries(tiffcp PRIVATE tiff port)
+target_link_libraries(tiffcp PRIVATE tiff tiff_port)
 
 add_executable(tiffcrop ../placeholder.h)
 target_sources(tiffcrop PRIVATE tiffcrop.c)
-target_link_libraries(tiffcrop PRIVATE tiff port CMath::CMath)
+target_link_libraries(tiffcrop PRIVATE tiff tiff_port CMath::CMath)
 
 add_executable(tiffdither ../placeholder.h)
 target_sources(tiffdither PRIVATE tiffdither.c)
-target_link_libraries(tiffdither PRIVATE tiff port)
+target_link_libraries(tiffdither PRIVATE tiff tiff_port)
 
 add_executable(tiffdump ../placeholder.h)
 target_sources(tiffdump PRIVATE tiffdump.c)
-target_link_libraries(tiffdump PRIVATE tiff port)
+target_link_libraries(tiffdump PRIVATE tiff tiff_port)
 
 add_executable(tiffinfo ../placeholder.h)
 target_sources(tiffinfo PRIVATE tiffinfo.c)
-target_link_libraries(tiffinfo PRIVATE tiff port)
+target_link_libraries(tiffinfo PRIVATE tiff tiff_port)
 
 add_executable(tiffmedian ../placeholder.h)
 target_sources(tiffmedian PRIVATE tiffmedian.c)
-target_link_libraries(tiffmedian PRIVATE tiff port)
+target_link_libraries(tiffmedian PRIVATE tiff tiff_port)
 
 add_executable(tiffset ../placeholder.h)
 target_sources(tiffset PRIVATE tiffset.c)
-target_link_libraries(tiffset PRIVATE tiff port)
+target_link_libraries(tiffset PRIVATE tiff tiff_port)
 
 add_executable(tiffsplit ../placeholder.h)
 target_sources(tiffsplit PRIVATE tiffsplit.c)
-target_link_libraries(tiffsplit PRIVATE tiff port)
+target_link_libraries(tiffsplit PRIVATE tiff tiff_port)
 
 # rgb2ycbcr and thumbnail are intended to *NOT* be installed. They are for
 # testing purposes only.
@@ -127,7 +127,7 @@ install(TARGETS fax2ps
 if(OPENGL_SUPPORT)
   add_executable(tiffgt ../placeholder.h)
   target_sources(tiffgt PRIVATE tiffgt.c)
-  target_link_libraries(tiffgt PRIVATE tiff port)
+  target_link_libraries(tiffgt PRIVATE tiff tiff_port)
   target_link_libraries(tiffgt PRIVATE OpenGL::GL GLUT::GLUT)
 
   install(TARGETS tiffgt

From 7d0ed2ed5ed5d0bba1603bdbd098997a881ef255 Mon Sep 17 00:00:00 2001
From: Timothy Lyanguzov <theta682@gmail.com>
Date: Tue, 4 Oct 2022 16:38:06 +0000
Subject: [PATCH 2/2] Apply 9 suggestion(s) to 3 file(s)

---
 CMakeLists.txt         | 10 +++++-----
 cmake/ZSTDCodec.cmake  |  4 ++--
 libtiff/CMakeLists.txt |  4 ++--
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 02e3ed83..0f346627 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -45,12 +45,12 @@ project(tiff
         VERSION "${LIBTIFF_VERSION}"
         LANGUAGES C CXX)
 
-if(NOT "^${CMAKE_SOURCE_DIR}$" STREQUAL "^${PROJECT_SOURCE_DIR}$")
+if(NOT CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
   # libtiff is being included as a subproject of some other project.
-  set(tiff-install-default OFF)
-  set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
+  set(TIFF_INSTALL_DEFAULT OFF)
+  option(BUILD_SHARED_LIBS "Build shared libraries" ON)
 else()
-  set(tiff-install-default ON)
+  set(TIFF_INSTALL_DEFAULT ON)
   set(tiff-install ON)
 endif()
 
@@ -59,7 +59,7 @@ option(tiff-tests "build TIFF tests" ON)
 option(tiff-contrib "build TIFF contrib" ON)
 option(tiff-docs "build TIFF documentation" ON)
 option(tiff-deprecated "build TIFF deprecated features" OFF)
-option(tiff-install "install TIFF targets" ${tiff-install-default})
+option(tiff-install "install TIFF targets" ${TIFF_INSTALL_DEFAULT})
 
 # Disable deprecated features to ensure clean build
 if (tiff-deprecated)
diff --git a/cmake/ZSTDCodec.cmake b/cmake/ZSTDCodec.cmake
index 506e53c2..490d75c4 100644
--- a/cmake/ZSTDCodec.cmake
+++ b/cmake/ZSTDCodec.cmake
@@ -31,7 +31,7 @@ set(ZSTD_USABLE FALSE)
 find_package(ZSTD)
 
 if(ZSTD_FOUND)
-    if (NOT (DEFINED ZSTD_HAVE_DECOMPRESS_STREAM))
+    if(NOT DEFINED ZSTD_HAVE_DECOMPRESS_STREAM)
       set(CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES})
       set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${ZSTD_INCLUDE_DIRS})
       set(CMAKE_REQUIRED_LIBRARIES_SAVE ${CMAKE_REQUIRED_LIBRARIES})
@@ -40,7 +40,7 @@ if(ZSTD_FOUND)
       set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVE})
       set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES_SAVE})
     endif()
-    set(ZSTD_RECENT_ENOUGH "${ZSTD_HAVE_DECOMPRESS_STREAM}")
+    set(ZSTD_RECENT_ENOUGH ${ZSTD_HAVE_DECOMPRESS_STREAM})
 
     if (ZSTD_RECENT_ENOUGH)
         set(ZSTD_USABLE TRUE)
diff --git a/libtiff/CMakeLists.txt b/libtiff/CMakeLists.txt
index 57f29b1f..346c2f0d 100755
--- a/libtiff/CMakeLists.txt
+++ b/libtiff/CMakeLists.txt
@@ -170,7 +170,7 @@ if(HAVE_LD_VERSION_SCRIPT)
                         "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libtiff.map")
 endif()
 
-if (tiff-install)
+if(tiff-install)
   export(TARGETS tiff NAMESPACE TIFF:: FILE "${CMAKE_CURRENT_BINARY_DIR}/libtiffTargets.cmake")
   install(TARGETS tiff EXPORT TiffTargets
           RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
@@ -218,7 +218,7 @@ if(CXX_SUPPORT)
                           "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libtiffxx.map")
   endif()
 
-  if (tiff-install)
+  if(tiff-install)
     install(TARGETS tiffxx
             RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
             LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}