82 lines
2.3 KiB
CMake
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()
|