Commit 71180fc8 authored by Brad King's avatar Brad King

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.
parent 3216e94c
Pipeline #34578 passed with stage
# 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 <Imported targets>` 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()
......@@ -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()
......
add_test(NAME FindLibRHash.Test COMMAND
${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
--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 $<CONFIGURATION>
)
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)
#include <rhash.h>
int main()
{
rhash_library_init();
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment