diff options
author | Roger Leigh <rleigh@codelibre.net> | 2015-12-02 17:20:24 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2015-12-07 14:20:08 (GMT) |
commit | ebaca6290d2c0be7dec22452389632949a700d28 (patch) | |
tree | 52e2bc935c10f90e5eb61c12031335502e5ca9b0 | |
parent | 4ffeab0e3c451854a4a9d424b47b2179c6cf6c6b (diff) | |
download | CMake-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.rst | 4 | ||||
-rw-r--r-- | Modules/FindTIFF.cmake | 67 | ||||
-rw-r--r-- | Tests/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/FindTIFF/CMakeLists.txt | 10 | ||||
-rw-r--r-- | Tests/FindTIFF/Test/CMakeLists.txt | 17 | ||||
-rw-r--r-- | Tests/FindTIFF/Test/main.c | 12 |
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; +} |