cmake_minimum_required(VERSION 3.12) project(dnslite VERSION 0.1.0) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(PROJECT_NAMESPACE ${PROJECT_NAME}) include(GNUInstallDirs) set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") option(BUILD_RESOLVER "Build dnsl-resolve" ON) option(BUILD_TESTS "Build test program" OFF) add_subdirectory(dnslite) if(BUILD_RESOLVER) add_subdirectory(resolver) endif() if(BUILD_TESTS) add_subdirectory(vendor/Unity EXCLUDE_FROM_ALL) add_subdirectory(tests) endif() include(CMakePackageConfigHelpers) configure_file( "Doxyfile.in" "${CMAKE_CURRENT_BINARY_DIR}/Doxyfile" ) find_package(Doxygen) if (Doxygen_FOUND) doxygen_add_docs(doc WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ALL CONFIG_FILE ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile ) endif() # configure_file( # ${CMAKE_CURRENT_SOURCE_DIR}/cmake/dnslite.pc.in # ${CMAKE_CURRENT_BINARY_DIR}/dnslite.pc # @ONLY # ) configure_package_config_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAMESPACE}Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAMESPACE}Config.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake ) # install( # FILES ${CMAKE_CURRENT_BINARY_DIR}/dnslite.pc # DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig # ) install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAMESPACE}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAMESPACE} ) install(TARGETS dnslite EXPORT ${PROJECT_NAMESPACE}Core COMPONENT Core FILE_SET api_headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAMESPACE} FILE_SET generated_headers DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAMESPACE} ) install(TARGETS dnsl-resolve) install(EXPORT ${PROJECT_NAMESPACE}Core FILE ${PROJECT_NAMESPACE}Core.cmake NAMESPACE ${PROJECT_NAMESPACE}:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAMESPACE} ) if (Doxygen_FOUND) install( DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html" TYPE DOC ) install( DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/man/man3" TYPE MAN ) endif() set(CPACK_PACKAGE_NAME "${PROJECT_NAMESPACE}") set(CPACK_PACKAGE_VENDOR "Samuel Johnson") set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}") set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}") set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}") set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "DnsLite - a simple recursive DNS resolver implementation") set(CPACK_PACKAGE_CONTACT "sjohnson1149@proton.me") set(CPACK_PACKAGE_HOMEPAGE_URL "https://git.paterissa.net/dnslite") set(CPACK_GENERATOR "TGZ") find_program(DPKG_CMD dpkg) if(DPKG_CMD) list(APPEND CPACK_GENERATOR "DEB") endif() find_program(RPMBUILD_CMD rpmbuild) if(RPMBUILD_CMD) list(APPEND CPACK_GENERATOR "RPM") endif() include(CPack)