linux-parental-controls/CMakeLists.txt

82 lines
2.3 KiB
CMake

# SPDX-FileCopyrightText: Matteo Settenvini <matteo.settenvini@montecristosoftware.eu>
# SPDX-License-Identifier: EUPL-1.2
cmake_minimum_required(VERSION 3.30)
list(PREPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
include(cmake/helpers)
get_project_version(project_version ${CMAKE_CURRENT_SOURCE_DIR})
project(linux-parental-controls
VERSION ${project_version})
# -------------------------------
# Options
option(BUILD_DOCUMENTATION "Whether to build and install the documentation" ON)
# -------------------------------
# Import crates
include(FetchContent)
FetchContent_Declare(Corrosion
GIT_REPOSITORY https://github.com/corrosion-rs/corrosion.git
GIT_TAG v0.5.1)
FetchContent_MakeAvailable(Corrosion)
ensure_rust_utils(
cargo-nextest
cargo-llvm-cov)
setup_crates(${CMAKE_CURRENT_SOURCE_DIR})
# -------------------------------
# Install Rust libraries or binaries
# libclang is required for bindgen, just check here
# for an early failure
unset(libclang_names)
foreach(clang_ver RANGE 9 100)
list(PREPEND libclang_names "clang-${clang_ver}")
endforeach()
list(REVERSE libclang_names)
find_library(LIBCLANG NAMES clang ${libclang_names} REQUIRED)
set(libname "libnss_parental_ctrls.so")
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libnss_parental_ctrls.so
TYPE LIB
RENAME "${libname}.2") # NSSv3 requires the .2 soname
# -------------------------------
# Additional non-rust files to build and/or install
if(BUILD_DOCUMENTATION)
add_subdirectory(doc)
endif()
# ------ Export targets ---------
# TODO: Still not needed as of now.
#
# include(CMakePackageConfigHelpers)
# write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-version.cmake
# VERSION ${PROJECT_VERSION}
# COMPATIBILITY AnyNewerVersion)
# configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake.in
# ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
# INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}
# NO_SET_AND_CHECK_MACRO
# NO_CHECK_REQUIRED_COMPONENTS_MACRO)
# include(GNUInstallDirs)
# install(
# FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.cmake
# ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
# DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
# -------------------------------
include(CTest)
print_summary()