From 71180fc8aa1db84260552f494578401e3ddb6a84 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 3 Nov 2016 13:29:31 -0400 Subject: FindLibRHash: Add module to find the librhash package Add it to a private source directory that is not installed so that we can use it for building CMake itself. This will allow it to mature before being distributed publicly. --- Source/Modules/FindLibRHash.cmake | 73 ++++++++++++++++++++++++++++++++++ Tests/CMakeLists.txt | 4 ++ Tests/FindLibRHash/CMakeLists.txt | 10 +++++ Tests/FindLibRHash/Test/CMakeLists.txt | 17 ++++++++ Tests/FindLibRHash/Test/main.c | 7 ++++ 5 files changed, 111 insertions(+) create mode 100644 Source/Modules/FindLibRHash.cmake create mode 100644 Tests/FindLibRHash/CMakeLists.txt create mode 100644 Tests/FindLibRHash/Test/CMakeLists.txt create mode 100644 Tests/FindLibRHash/Test/main.c diff --git a/Source/Modules/FindLibRHash.cmake b/Source/Modules/FindLibRHash.cmake new file mode 100644 index 0000000..86c6189 --- /dev/null +++ b/Source/Modules/FindLibRHash.cmake @@ -0,0 +1,73 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#[=======================================================================[.rst: +FindLibRHash +------------ + +Find LibRHash include directory and library. + +Imported Targets +^^^^^^^^^^^^^^^^ + +An :ref:`imported target ` named +``LibRHash::LibRHash`` is provided if LibRHash has been found. + +Result Variables +^^^^^^^^^^^^^^^^ + +This module defines the following variables: + +``LibRHash_FOUND`` + True if LibRHash was found, false otherwise. +``LibRHash_INCLUDE_DIRS`` + Include directories needed to include LibRHash headers. +``LibRHash_LIBRARIES`` + Libraries needed to link to LibRHash. + +Cache Variables +^^^^^^^^^^^^^^^ + +This module uses the following cache variables: + +``LibRHash_LIBRARY`` + The location of the LibRHash library file. +``LibRHash_INCLUDE_DIR`` + The location of the LibRHash include directory containing ``rhash.h``. + +The cache variables should not be used by project code. +They may be set by end users to point at LibRHash components. +#]=======================================================================] + +#----------------------------------------------------------------------------- +find_library(LibRHash_LIBRARY + NAMES rhash + ) +mark_as_advanced(LibRHash_LIBRARY) + +find_path(LibRHash_INCLUDE_DIR + NAMES rhash.h + ) +mark_as_advanced(LibRHash_INCLUDE_DIR) + +#----------------------------------------------------------------------------- +include(${CMAKE_CURRENT_LIST_DIR}/../../Modules/FindPackageHandleStandardArgs.cmake) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibRHash + FOUND_VAR LibRHash_FOUND + REQUIRED_VARS LibRHash_LIBRARY LibRHash_INCLUDE_DIR + ) +set(LIBRHASH_FOUND ${LibRHash_FOUND}) + +#----------------------------------------------------------------------------- +# Provide documented result variables and targets. +if(LibRHash_FOUND) + set(LibRHash_INCLUDE_DIRS ${LibRHash_INCLUDE_DIR}) + set(LibRHash_LIBRARIES ${LibRHash_LIBRARY}) + if(NOT TARGET LibRHash::LibRHash) + add_library(LibRHash::LibRHash UNKNOWN IMPORTED) + set_target_properties(LibRHash::LibRHash PROPERTIES + IMPORTED_LOCATION "${LibRHash_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${LibRHash_INCLUDE_DIRS}" + ) + endif() +endif() diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 5d72e5c..3a3c76c 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -1377,6 +1377,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release add_subdirectory(FindJsonCpp) endif() + if(CMake_TEST_FindLibRHash) + add_subdirectory(FindLibRHash) + endif() + if(CMake_TEST_FindLibUV) add_subdirectory(FindLibUV) endif() diff --git a/Tests/FindLibRHash/CMakeLists.txt b/Tests/FindLibRHash/CMakeLists.txt new file mode 100644 index 0000000..4d3954d --- /dev/null +++ b/Tests/FindLibRHash/CMakeLists.txt @@ -0,0 +1,10 @@ +add_test(NAME FindLibRHash.Test COMMAND + ${CMAKE_CTEST_COMMAND} -C $ + --build-and-test + "${CMake_SOURCE_DIR}/Tests/FindLibRHash/Test" + "${CMake_BINARY_DIR}/Tests/FindLibRHash/Test" + ${build_generator_args} + --build-project TestFindLibRHash + --build-options ${build_options} + --test-command ${CMAKE_CTEST_COMMAND} -V -C $ + ) diff --git a/Tests/FindLibRHash/Test/CMakeLists.txt b/Tests/FindLibRHash/Test/CMakeLists.txt new file mode 100644 index 0000000..37e062a --- /dev/null +++ b/Tests/FindLibRHash/Test/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.7) +project(TestFindLibRHash C) +include(CTest) + +# CMake does not actually provide FindLibRHash publicly. +set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../../Source/Modules) + +find_package(LibRHash REQUIRED) + +add_executable(test_librhash_tgt main.c) +target_link_libraries(test_librhash_tgt LibRHash::LibRHash) +add_test(NAME test_librhash_tgt COMMAND test_librhash_tgt) + +add_executable(test_librhash_var main.c) +target_include_directories(test_librhash_var PRIVATE ${LibRHash_INCLUDE_DIRS}) +target_link_libraries(test_librhash_var PRIVATE ${LibRHash_LIBRARIES}) +add_test(NAME test_librhash_var COMMAND test_librhash_var) diff --git a/Tests/FindLibRHash/Test/main.c b/Tests/FindLibRHash/Test/main.c new file mode 100644 index 0000000..201dced --- /dev/null +++ b/Tests/FindLibRHash/Test/main.c @@ -0,0 +1,7 @@ +#include + +int main() +{ + rhash_library_init(); + return 0; +} -- cgit v0.12