From eabde1635a230b9fd7b96e41e451d32bc90a11e4 Mon Sep 17 00:00:00 2001
From: Even Rouault <[EMAIL REDACTED]>
Date: Wed, 19 Jul 2023 22:05:15 +0000
Subject: [PATCH] TiffConfig.cmake.in: set TIFF_INCLUDE_DIR, TIFF_INCLUDE_DIRS
and...
---
build/gitlab-ci | 5 +++++
build/test_cmake_no_target/CMakeLists.txt | 8 ++++++++
build/test_cmake_no_target/test.c | 7 +++++++
cmake/TiffConfig.cmake.in | 24 ++++++++++++++++++++++-
4 files changed, 43 insertions(+), 1 deletion(-)
create mode 100644 build/test_cmake_no_target/CMakeLists.txt
create mode 100644 build/test_cmake_no_target/test.c
diff --git a/build/gitlab-ci b/build/gitlab-ci
index accacc63..234a9302 100644
--- a/build/gitlab-ci
+++ b/build/gitlab-ci
@@ -57,6 +57,11 @@ cmake_build()
cd cmake-test-build
cmake -G "$1" -DCMAKE_BUILD_TYPE="$2" "-DTiff_DIR=$PWD/../cmake-install/lib/cmake/tiff" -S ../build/test_cmake -B .
cmake --build .
+ cd ..
+ mkdir cmake-test-no-target-build
+ cd cmake-test-no-target-build
+ cmake -G "$1" -DCMAKE_BUILD_TYPE="$2" "-DTiff_DIR=$PWD/../cmake-install/lib/cmake/tiff" -S ../build/test_cmake_no_target -B .
+ cmake --build .
# Return to cmake-build for coverity_build()
cd ../cmake-build
}
diff --git a/build/test_cmake_no_target/CMakeLists.txt b/build/test_cmake_no_target/CMakeLists.txt
new file mode 100644
index 00000000..2fe1f141
--- /dev/null
+++ b/build/test_cmake_no_target/CMakeLists.txt
@@ -0,0 +1,8 @@
+cmake_minimum_required(VERSION 3.9.0)
+project(test)
+
+find_package(Tiff CONFIG REQUIRED)
+
+add_executable(test test.c)
+target_include_directories(test PRIVATE ${TIFF_INCLUDE_DIR})
+target_link_libraries(test PRIVATE ${TIFF_LIBRARIES})
diff --git a/build/test_cmake_no_target/test.c b/build/test_cmake_no_target/test.c
new file mode 100644
index 00000000..011b53e1
--- /dev/null
+++ b/build/test_cmake_no_target/test.c
@@ -0,0 +1,7 @@
+#include "tiffio.h"
+
+int main()
+{
+ TIFFGetVersion();
+ return 0;
+}
diff --git a/cmake/TiffConfig.cmake.in b/cmake/TiffConfig.cmake.in
index 8e0fada2..fad966cf 100644
--- a/cmake/TiffConfig.cmake.in
+++ b/cmake/TiffConfig.cmake.in
@@ -1,6 +1,28 @@
if(NOT "@BUILD_SHARED_LIBS@")
# TODO: import dependencies
endif()
+
+function(set_variable_from_rel_or_absolute_path var root rel_or_abs_path)
+ if(IS_ABSOLUTE "${rel_or_abs_path}")
+ set(${var} "${rel_or_abs_path}" PARENT_SCOPE)
+ else()
+ set(${var} "${root}/${rel_or_abs_path}" PARENT_SCOPE)
+ endif()
+endfunction()
+
+# Tell the user project where to find our headers and libraries
+get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" ABSOLUTE)
+get_filename_component(_DIR "${_DIR}" DIRECTORY)
+get_filename_component(_ROOT "${_DIR}/@PROJECT_ROOT_DIR@" ABSOLUTE)
+# Use _ROOT as prefix here for the possibility of relocation after installation.
+set_variable_from_rel_or_absolute_path("TIFF_INCLUDE_DIR" "${_ROOT}" "@CMAKE_INSTALL_INCLUDEDIR@")
+set(TIFF_INCLUDE_DIRS ${TIFF_INCLUDE_DIR})
+
+set(TIFF_LIBRARIES TIFF::tiff)
+
if(NOT TARGET TIFF::tiff)
- include("${CMAKE_CURRENT_LIST_DIR}/TiffTargets.cmake")
+ include("${_DIR}/TiffTargets.cmake")
endif()
+
+unset (_ROOT)
+unset (_DIR)