1 cmake_minimum_required(VERSION 3.11)
6 DESCRIPTION "Library for maritime navigation."
9 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
10 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
11 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
14 set(CMAKE_CXX_STANDARD 11)
15 set(CMAKE_CXX_STANDARD_REQUIRED ON)
16 set(CMAKE_CXX_EXTENSIONS OFF)
17 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
20 option(ENABLE_STATIC "Enable static library" ON)
21 option(ENABLE_PROFILING "Enable Profiling" OFF)
22 option(ENABLE_BENCHMARK "Enable Benchmark" OFF)
23 option(ENABLE_SANITIZER "Enable Sanitizing (address, undefined)" OFF)
24 option(ENABLE_IO "Enable IO support" ON)
25 option(ENABLE_EXAMPLES "Enable Examples" ON)
26 option(ENABLE_TESTS "Enable Tests" ON)
27 option(ENABLE_TESTS_BENCHMARK "Enable Test Benchmarks" ON)
28 option(ENABLE_TOOLS "Enable Tools" ON)
30 if(NOT DEFINED BUILD_SHARED_LIBS)
32 set(BUILD_SHARED_LIBS FALSE)
34 set(BUILD_SHARED_LIBS TRUE)
39 include(RepoInformation)
40 include(Documentation)
42 include(ExternalProject)
45 include(ExternCxxopts)
50 message(STATUS "Build Type: ${CMAKE_BUILD_TYPE}")
52 ${CMAKE_CURRENT_BINARY_DIR}/doc
53 ${CMAKE_CURRENT_BINARY_DIR}/doc/coverage
54 ${CMAKE_CURRENT_BINARY_DIR}/local/include
61 message(STATUS "Build Examples: ${ENABLE_EXAMPLES}")
63 add_subdirectory(examples)
68 if(CTAGS_PATH AND CSCOPE_PATH)
69 setup_ctags_target("${CMAKE_CURRENT_SOURCE_DIR}/src/*.?pp;${CMAKE_CURRENT_SOURCE_DIR}/include/*.?pp")
73 message(STATUS "Build Tests: ${ENABLE_TESTS}")
74 message(STATUS "Build Tests Benchmark: ${ENABLE_TESTS_BENCHMARK}")
77 include(ExternGoogletest)
79 if(ENABLE_TESTS_BENCHMARK)
80 include(ExternBenchmark)
83 add_subdirectory(test)
87 if(CMAKE_BUILD_TYPE MATCHES Coverage)
89 setup_target_for_coverage(coverage
95 set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
96 set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
97 set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
98 set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
99 set(CPACK_PACKAGE_NAME "marnav")
100 set(CPACK_PACKAGE_VENDOR "Mario Konrad")
101 set(CPACK_PACKAGE_CONTACT "Mario Konrad <mario.konrad@gmx.net>")
102 set(CPACK_PACAKGE_DESCRIPTION "Library for maritime navigation.")
103 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Library")
104 set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
105 set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
106 set(CPACK_MONOLITHIC_INSTALL 1)
107 #set(CPACK_PACKAGE_EXECUTABLES "??" "??")
108 set(CPACK_STRIP_FILES true)
111 set(CPACK_DEBIAN_PACKAGE_NAME ${CPACK_DEBIAN_PACKAGE_NAME})
112 set(CPACK_DEBIAN_PACKAGE_MAINTAINER ${CPACK_PACKAGE_CONTACT})
113 set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACAKGE_DESCRIPTION})
114 set(CPACK_DEBIAN_PACKAGE_DEPENDS "libstdc++6 (>= 4.9)")
115 set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3)")
116 set(CPACK_DEBIAN_PACKAGE_SECTION "misc")
117 if (CMAKE_SIZEOF_VOID_P MATCHES "8")
118 set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64")
120 set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386")