From 9644c835b38d211ee17b5de0bb0ae62fe188eca0 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Wed, 12 Dec 2018 07:31:12 +0900 Subject: FindLibLZMA: add imported target - Add imported target LibLZMA::LibLZMA - Show found message with library path - Add test for FindLibLZMA Fixes: #18680, #18679 Signed-off-by: Hiroshi Miura --- Help/release/dev/FindLibLZMA-target.rst | 4 ++++ Modules/FindLibLZMA.cmake | 26 ++++++++++++++++++++++---- Tests/CMakeLists.txt | 4 ++++ Tests/FindLibLZMA/CMakeLists.txt | 10 ++++++++++ Tests/FindLibLZMA/Test/CMakeLists.txt | 14 ++++++++++++++ Tests/FindLibLZMA/Test/main.c | 15 +++++++++++++++ 6 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 Help/release/dev/FindLibLZMA-target.rst create mode 100644 Tests/FindLibLZMA/CMakeLists.txt create mode 100644 Tests/FindLibLZMA/Test/CMakeLists.txt create mode 100644 Tests/FindLibLZMA/Test/main.c diff --git a/Help/release/dev/FindLibLZMA-target.rst b/Help/release/dev/FindLibLZMA-target.rst new file mode 100644 index 0000000..a13c45f --- /dev/null +++ b/Help/release/dev/FindLibLZMA-target.rst @@ -0,0 +1,4 @@ +FindLibLZMA-target +------------------ + +* The :module:`FindLibLZMA` module now provides an imported target. diff --git a/Modules/FindLibLZMA.cmake b/Modules/FindLibLZMA.cmake index 6d30e57..b7e5815 100644 --- a/Modules/FindLibLZMA.cmake +++ b/Modules/FindLibLZMA.cmake @@ -9,6 +9,18 @@ Find LibLZMA Find LibLZMA headers and library + +IMPORTED Targets +^^^^^^^^^^^^^^^^ + +This module defines :prop_tgt:`IMPORTED` target ``LibLZMA::LibLZMA``, if +LibLZMA has been found. + +Result variables +^^^^^^^^^^^^^^^^ + +This module will set the following variables in your project: + :: LIBLZMA_FOUND - True if liblzma is found. @@ -51,17 +63,23 @@ if (LIBLZMA_LIBRARY) endif () include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibLZMA REQUIRED_VARS LIBLZMA_INCLUDE_DIR - LIBLZMA_LIBRARY +find_package_handle_standard_args(LibLZMA REQUIRED_VARS LIBLZMA_LIBRARY + LIBLZMA_INCLUDE_DIR LIBLZMA_HAS_AUTO_DECODER LIBLZMA_HAS_EASY_ENCODER LIBLZMA_HAS_LZMA_PRESET VERSION_VAR LIBLZMA_VERSION_STRING ) +mark_as_advanced( LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY ) if (LIBLZMA_FOUND) set(LIBLZMA_LIBRARIES ${LIBLZMA_LIBRARY}) set(LIBLZMA_INCLUDE_DIRS ${LIBLZMA_INCLUDE_DIR}) + if(NOT TARGET LibLZMA::LibLZMA) + add_library(LibLZMA::LibLZMA UNKNOWN IMPORTED) + set_target_properties(LibLZMA::LibLZMA PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${LIBLZMA_INCLUDE_DIR} + IMPORTED_LINK_INTERFACE_LANGUAGES C + IMPORTED_LOCATION ${LIBLZMA_LIBRARY}) + endif() endif () - -mark_as_advanced( LIBLZMA_INCLUDE_DIR LIBLZMA_LIBRARY ) diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 408c941..2a8d3e6 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1417,6 +1417,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release add_subdirectory(FindJsonCpp) endif() + if(CMake_TEST_FindLibLZMA) + add_subdirectory(FindLibLZMA) + endif() + if(CMake_TEST_FindLibRHash) add_subdirectory(FindLibRHash) endif() diff --git a/Tests/FindLibLZMA/CMakeLists.txt b/Tests/FindLibLZMA/CMakeLists.txt new file mode 100644 index 0000000..6dff0ef --- /dev/null +++ b/Tests/FindLibLZMA/CMakeLists.txt @@ -0,0 +1,10 @@ +add_test(NAME FindLibLZMA.Test COMMAND + ${CMAKE_CTEST_COMMAND} -C $ + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindLibLZMA/Test" + "${CMake_BINARY_DIR}/Tests/FindLibLZMA/Test" + ${build_generator_args} + --build-project TestFindLibLZMA + --build-options ${build_options} + --test-command ${CMAKE_CTEST_COMMAND} -V -C $ + ) diff --git a/Tests/FindLibLZMA/Test/CMakeLists.txt b/Tests/FindLibLZMA/Test/CMakeLists.txt new file mode 100644 index 0000000..c59dcdb --- /dev/null +++ b/Tests/FindLibLZMA/Test/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 3.4) +project(TestFindLZMA C) +include(CTest) + +find_package(LibLZMA REQUIRED) + +add_executable(test_tgt main.c) +target_link_libraries(test_tgt LibLZMA::LibLZMA) +add_test(NAME test_tgt COMMAND test_tgt) + +add_executable(test_var main.c) +target_include_directories(test_var PRIVATE ${LIBLZMA_INCLUDE_DIRS}) +target_link_libraries(test_var PRIVATE ${LIBLZMA_LIBRARIES}) +add_test(NAME test_var COMMAND test_var) diff --git a/Tests/FindLibLZMA/Test/main.c b/Tests/FindLibLZMA/Test/main.c new file mode 100644 index 0000000..06e8065 --- /dev/null +++ b/Tests/FindLibLZMA/Test/main.c @@ -0,0 +1,15 @@ +#include +#include +#include + +static const uint8_t test_string[9] = "123456789"; + +int main() +{ + static const uint32_t test_vector = 0xCBF43926; + + uint32_t crc = lzma_crc32(test_string, sizeof(test_string), 0); + assert(crc == test_vector); + + return 0; +} -- cgit v0.12