summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoger Leigh <rleigh@codelibre.net>2015-12-02 17:20:24 (GMT)
committerBrad King <brad.king@kitware.com>2015-12-07 14:20:08 (GMT)
commitebaca6290d2c0be7dec22452389632949a700d28 (patch)
tree52e2bc935c10f90e5eb61c12031335502e5ca9b0
parent4ffeab0e3c451854a4a9d424b47b2179c6cf6c6b (diff)
downloadCMake-ebaca6290d2c0be7dec22452389632949a700d28.zip
CMake-ebaca6290d2c0be7dec22452389632949a700d28.tar.gz
CMake-ebaca6290d2c0be7dec22452389632949a700d28.tar.bz2
FindTIFF: Add imported targets and update documentation
- Add TIFF::TIFF imported target - Document imported target - Add testcase to test the standard variables and the imported target Also: - Add TIFF_INCLUDE_DIRS to match common practice - Update documentation generally, including documenting TIFF_INCLUDE_DIRS
-rw-r--r--Help/release/dev/FindTIFF-imported-targets.rst4
-rw-r--r--Modules/FindTIFF.cmake67
-rw-r--r--Tests/CMakeLists.txt4
-rw-r--r--Tests/FindTIFF/CMakeLists.txt10
-rw-r--r--Tests/FindTIFF/Test/CMakeLists.txt17
-rw-r--r--Tests/FindTIFF/Test/main.c12
6 files changed, 104 insertions, 10 deletions
diff --git a/Help/release/dev/FindTIFF-imported-targets.rst b/Help/release/dev/FindTIFF-imported-targets.rst
new file mode 100644
index 0000000..f8bbc14
--- /dev/null
+++ b/Help/release/dev/FindTIFF-imported-targets.rst
@@ -0,0 +1,4 @@
+FindTIFF-imported-targets
+-------------------------
+
+* The :module:`FindTIFF` module now provides imported targets.
diff --git a/Modules/FindTIFF.cmake b/Modules/FindTIFF.cmake
index ed092ea..e600498 100644
--- a/Modules/FindTIFF.cmake
+++ b/Modules/FindTIFF.cmake
@@ -2,24 +2,43 @@
# FindTIFF
# --------
#
-# Find TIFF library
+# Find the TIFF library (libtiff).
#
-# Find the native TIFF includes and library This module defines
+# Imported targets
+# ^^^^^^^^^^^^^^^^
#
-# ::
+# This module defines the following :prop_tgt:`IMPORTED` targets:
#
-# TIFF_INCLUDE_DIR, where to find tiff.h, etc.
-# TIFF_LIBRARIES, libraries to link against to use TIFF.
-# TIFF_FOUND, If false, do not try to use TIFF.
+# ``TIFF::TIFF``
+# The TIFF library, if found.
#
-# also defined, but not for general use are
+# Result variables
+# ^^^^^^^^^^^^^^^^
#
-# ::
+# This module will set the following variables in your project:
#
-# TIFF_LIBRARY, where to find the TIFF library.
+# ``TIFF_FOUND``
+# true if the TIFF headers and libraries were found
+# ``TIFF_INCLUDE_DIR``
+# the directory containing the TIFF headers
+# ``TIFF_INCLUDE_DIRS``
+# the directory containing the TIFF headers
+# ``TIFF_LIBRARIES``
+# TIFF libraries to be linked
+#
+# Cache variables
+# ^^^^^^^^^^^^^^^
+#
+# The following cache variables may also be set:
+#
+# ``TIFF_INCLUDE_DIR``
+# the directory containing the TIFF headers
+# ``TIFF_LIBRARY``
+# the path to the TIFF library
#=============================================================================
# Copyright 2002-2009 Kitware, Inc.
+# Copyright 2015 University of Dundee
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
@@ -65,7 +84,35 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(TIFF
VERSION_VAR TIFF_VERSION_STRING)
if(TIFF_FOUND)
- set( TIFF_LIBRARIES ${TIFF_LIBRARY} )
+ set(TIFF_LIBRARIES ${TIFF_LIBRARY})
+ set(TIFF_INCLUDE_DIRS "${TIFF_INCLUDE_DIR}")
+
+ if(NOT TARGET TIFF::TIFF)
+ add_library(TIFF::TIFF UNKNOWN IMPORTED)
+ if(TIFF_INCLUDE_DIRS)
+ set_target_properties(TIFF::TIFF PROPERTIES
+ INTERFACE_INCLUDE_DIRECTORIES "${TIFF_INCLUDE_DIRS}")
+ endif()
+ if(EXISTS "${TIFF_LIBRARY}")
+ set_target_properties(TIFF::TIFF PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
+ IMPORTED_LOCATION "${TIFF_LIBRARY}")
+ endif()
+ if(EXISTS "${TIFF_LIBRARY_DEBUG}")
+ set_property(TARGET TIFF::TIFF APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS DEBUG)
+ set_target_properties(TIFF::TIFF PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
+ IMPORTED_LOCATION_DEBUG "${TIFF_LIBRARY_DEBUG}")
+ endif()
+ if(EXISTS "${TIFF_LIBRARY_RELEASE}")
+ set_property(TARGET TIFF::TIFF APPEND PROPERTY
+ IMPORTED_CONFIGURATIONS RELEASE)
+ set_target_properties(TIFF::TIFF PROPERTIES
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
+ IMPORTED_LOCATION_RELEASE "${TIFF_LIBRARY_RELEASE}")
+ endif()
+ endif()
endif()
mark_as_advanced(TIFF_INCLUDE_DIR TIFF_LIBRARY)
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 5fd7159..a040ec0 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1367,6 +1367,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
add_subdirectory(FindOpenSSL)
endif()
+ if(CMake_TEST_FindTIFF)
+ add_subdirectory(FindTIFF)
+ endif()
+
if(CMake_TEST_FindXercesC)
add_subdirectory(FindXercesC)
endif()
diff --git a/Tests/FindTIFF/CMakeLists.txt b/Tests/FindTIFF/CMakeLists.txt
new file mode 100644
index 0000000..c4e0c6a
--- /dev/null
+++ b/Tests/FindTIFF/CMakeLists.txt
@@ -0,0 +1,10 @@
+add_test(NAME FindTIFF.Test COMMAND
+ ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+ --build-and-test
+ "${CMake_SOURCE_DIR}/Tests/FindTIFF/Test"
+ "${CMake_BINARY_DIR}/Tests/FindTIFF/Test"
+ ${build_generator_args}
+ --build-project TestFindTIFF
+ --build-options ${build_options}
+ --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+ )
diff --git a/Tests/FindTIFF/Test/CMakeLists.txt b/Tests/FindTIFF/Test/CMakeLists.txt
new file mode 100644
index 0000000..f17cda7
--- /dev/null
+++ b/Tests/FindTIFF/Test/CMakeLists.txt
@@ -0,0 +1,17 @@
+cmake_minimum_required(VERSION 3.1)
+project(TestFindTIFF C)
+include(CTest)
+
+# CMake does not actually provide FindTIFF publicly.
+set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../Source/Modules)
+
+find_package(TIFF REQUIRED)
+
+add_executable(test_xercesc_tgt main.c)
+target_link_libraries(test_xercesc_tgt TIFF::TIFF)
+add_test(NAME test_xercesc_tgt COMMAND test_xercesc_tgt)
+
+add_executable(test_xercesc_var main.c)
+target_include_directories(test_xercesc_var PRIVATE ${TIFF_INCLUDE_DIRS})
+target_link_libraries(test_xercesc_var PRIVATE ${TIFF_LIBRARIES})
+add_test(NAME test_xercesc_var COMMAND test_xercesc_var)
diff --git a/Tests/FindTIFF/Test/main.c b/Tests/FindTIFF/Test/main.c
new file mode 100644
index 0000000..fc4f337
--- /dev/null
+++ b/Tests/FindTIFF/Test/main.c
@@ -0,0 +1,12 @@
+#include <assert.h>
+#include <tiffio.h>
+
+int main()
+{
+ /* Without any TIFF file to open, test that the call fails as
+ expected. This tests that linking worked. */
+ TIFF *tiff = TIFFOpen("invalid.tiff", "r");
+ assert(!tiff);
+
+ return 0;
+}