From e9ce050342c34b92e0eaa281a4e454c9b78a41d9 Mon Sep 17 00:00:00 2001 From: Roger Leigh Date: Thu, 8 Sep 2016 21:16:09 +0100 Subject: [PATCH 1/3] FindBZip2: Add imported target --- Modules/FindBZip2.cmake | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/Modules/FindBZip2.cmake b/Modules/FindBZip2.cmake index b6700258e..152d81292 100644 --- a/Modules/FindBZip2.cmake +++ b/Modules/FindBZip2.cmake @@ -4,7 +4,16 @@ # # Try to find BZip2 # -# Once done this will define +# IMPORTED Targets +# ^^^^^^^^^^^^^^^^ +# +# This module defines :prop_tgt:`IMPORTED` target ``BZip2::BZip2``, if +# BZip2 has been found. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module defines the following variables: # # :: # @@ -64,6 +73,31 @@ if (BZIP2_FOUND) set(CMAKE_REQUIRED_LIBRARIES ${BZIP2_LIBRARIES}) CHECK_SYMBOL_EXISTS(BZ2_bzCompressInit "bzlib.h" BZIP2_NEED_PREFIX) cmake_pop_check_state() + + if(NOT TARGET BZip2::BZip2) + add_library(BZip2::BZip2 UNKNOWN IMPORTED) + set_target_properties(BZip2::BZip2 PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${BZIP2_INCLUDE_DIRS}") + + if(BZIP2_LIBRARY_RELEASE) + set_property(TARGET BZip2::BZip2 APPEND PROPERTY + IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(BZip2::BZip2 PROPERTIES + IMPORTED_LOCATION_RELEASE "${BZIP2_LIBRARY_RELEASE}") + endif() + + if(BZIP2_LIBRARY_DEBUG) + set_property(TARGET BZip2::BZip2 APPEND PROPERTY + IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(BZip2::BZip2 PROPERTIES + IMPORTED_LOCATION_DEBUG "${BZIP2_LIBRARY_DEBUG}") + endif() + + if(NOT BZIP2_LIBRARY_RELEASE AND NOT BZIP2_LIBRARY_DEBUG) + set_property(TARGET BZip2::BZip2 APPEND PROPERTY + IMPORTED_LOCATION "${BZIP2_LIBRARY}") + endif() + endif() endif () mark_as_advanced(BZIP2_INCLUDE_DIR) From 069cac584f3fccfad54b4fcce8d7e8584a009c51 Mon Sep 17 00:00:00 2001 From: Roger Leigh Date: Thu, 8 Sep 2016 21:28:17 +0100 Subject: [PATCH 2/3] Tests: Add FindBZip2 unit tests --- Tests/CMakeLists.txt | 4 ++++ Tests/FindBZip2/CMakeLists.txt | 10 ++++++++++ Tests/FindBZip2/Test/CMakeLists.txt | 16 ++++++++++++++++ Tests/FindBZip2/Test/main.c | 23 +++++++++++++++++++++++ 4 files changed, 53 insertions(+) create mode 100644 Tests/FindBZip2/CMakeLists.txt create mode 100644 Tests/FindBZip2/Test/CMakeLists.txt create mode 100644 Tests/FindBZip2/Test/main.c diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 8293286c3..aeff249c5 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1356,6 +1356,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release add_subdirectory(FindBoost) endif() + if(CMake_TEST_FindBZip2) + add_subdirectory(FindBZip2) + endif() + if(CMake_TEST_FindGSL) add_subdirectory(FindGSL) endif() diff --git a/Tests/FindBZip2/CMakeLists.txt b/Tests/FindBZip2/CMakeLists.txt new file mode 100644 index 000000000..0eb3b99ac --- /dev/null +++ b/Tests/FindBZip2/CMakeLists.txt @@ -0,0 +1,10 @@ +add_test(NAME FindBZip2.Test COMMAND + ${CMAKE_CTEST_COMMAND} -C $ + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindBZip2/Test" + "${CMake_BINARY_DIR}/Tests/FindBZip2/Test" + ${build_generator_args} + --build-project TestFindBZip2 + --build-options ${build_options} + --test-command ${CMAKE_CTEST_COMMAND} -V -C $ + ) diff --git a/Tests/FindBZip2/Test/CMakeLists.txt b/Tests/FindBZip2/Test/CMakeLists.txt new file mode 100644 index 000000000..e9cb6187f --- /dev/null +++ b/Tests/FindBZip2/Test/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.4) +project(TestFindBZip2 C) +include(CTest) + +find_package(BZip2 REQUIRED) + +add_definitions(-DCMAKE_EXPECTED_BZip2_VERSION="${BZip2_VERSION_STRING}") + +add_executable(test_tgt main.c) +target_link_libraries(test_tgt BZip2::BZip2) +add_test(NAME test_tgt COMMAND test_tgt) + +add_executable(test_var main.c) +target_include_directories(test_var PRIVATE ${BZIP2_INCLUDE_DIRS}) +target_link_libraries(test_var PRIVATE ${BZIP2_LIBRARIES}) +add_test(NAME test_var COMMAND test_var) diff --git a/Tests/FindBZip2/Test/main.c b/Tests/FindBZip2/Test/main.c new file mode 100644 index 000000000..8e24c94e6 --- /dev/null +++ b/Tests/FindBZip2/Test/main.c @@ -0,0 +1,23 @@ +#include +#include +#include + +int main() +{ + int chunksize = 1024; + FILE* file = fopen("test.bzip2", "wb"); + char* buf = malloc(sizeof(char) * chunksize); + int error, rsize; + unsigned int in, out; + BZFILE* bzfile = BZ2_bzWriteOpen(&error, file, 64, 1, 10); + + /* Don't actually write anything for the purposes of the test */ + + BZ2_bzWriteClose(&error, bzfile, 1, &in, &out); + free(buf); + fclose(file); + + remove("test.bzip2"); + + return 0; +} From 79eba4b7abf940501a5b2060e8aaa3048d743652 Mon Sep 17 00:00:00 2001 From: Brad King Date: Fri, 9 Sep 2016 11:37:25 -0400 Subject: [PATCH 3/3] Help: Add notes for topic 'bzip2-imported-targets' --- Help/release/dev/bzip2-imported-targets.rst | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 Help/release/dev/bzip2-imported-targets.rst diff --git a/Help/release/dev/bzip2-imported-targets.rst b/Help/release/dev/bzip2-imported-targets.rst new file mode 100644 index 000000000..be58b96a9 --- /dev/null +++ b/Help/release/dev/bzip2-imported-targets.rst @@ -0,0 +1,4 @@ +bzip2-imported-targets +---------------------- + +* The :module:`FindBZip2` module now provides imported targets.