diff options
Diffstat (limited to 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..2c367ec --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,106 @@ +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 "[email protected]") +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) |
