aboutsummaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt106
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)