1 cmake_minimum_required(VERSION 3.2)
3 option(ENABLE_STATIC "Enable static library" ON)
11 target_include_directories(nmeasum PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
13 target_compile_options(nmeasum
25 set(LIBRARY_TYPE "STATIC")
27 set(LIBRARY_TYPE "SHARED")
29 message(STATUS "Build library type: ${LIBRARY_TYPE}")
31 message(STATUS "Build AIS support : ${ENABLE_AIS}")
32 message(STATUS "Build SeaTalk support: ${ENABLE_SEATALK}")
33 message(STATUS "Build IO support : ${ENABLE_IO}")
36 ${CMAKE_CURRENT_SOURCE_DIR}/marnav/version.hpp.in
37 ${CMAKE_CURRENT_BINARY_DIR}/marnav/version.hpp
41 # intentionally left blank
45 set(SOURCES ${SOURCES}
46 marnav/seatalk/seatalk.cpp
47 marnav/seatalk/message.cpp
48 marnav/seatalk/message_00.cpp
49 marnav/seatalk/message_01.cpp
50 marnav/seatalk/message_05.cpp
51 marnav/seatalk/message_10.cpp
52 marnav/seatalk/message_11.cpp
53 marnav/seatalk/message_20.cpp
54 marnav/seatalk/message_21.cpp
55 marnav/seatalk/message_22.cpp
56 marnav/seatalk/message_23.cpp
57 marnav/seatalk/message_24.cpp
58 marnav/seatalk/message_25.cpp
59 marnav/seatalk/message_26.cpp
60 marnav/seatalk/message_27.cpp
61 marnav/seatalk/message_30.cpp
62 marnav/seatalk/message_36.cpp
63 marnav/seatalk/message_38.cpp
64 marnav/seatalk/message_50.cpp
65 marnav/seatalk/message_51.cpp
66 marnav/seatalk/message_52.cpp
67 marnav/seatalk/message_53.cpp
68 marnav/seatalk/message_54.cpp
69 marnav/seatalk/message_56.cpp
70 marnav/seatalk/message_58.cpp
71 marnav/seatalk/message_59.cpp
72 marnav/seatalk/message_65.cpp
73 marnav/seatalk/message_66.cpp
74 marnav/seatalk/message_6c.cpp
75 marnav/seatalk/message_86.cpp
76 marnav/seatalk/message_87.cpp
77 marnav/seatalk/message_89.cpp
82 set(SOURCES ${SOURCES}
85 marnav/ais/message.cpp
86 marnav/ais/message_01.cpp
87 marnav/ais/message_02.cpp
88 marnav/ais/message_03.cpp
89 marnav/ais/message_04.cpp
90 marnav/ais/message_05.cpp
91 marnav/ais/message_09.cpp
92 marnav/ais/message_10.cpp
93 marnav/ais/message_11.cpp
94 marnav/ais/message_18.cpp
95 marnav/ais/message_19.cpp
96 marnav/ais/message_21.cpp
97 marnav/ais/message_22.cpp
98 marnav/ais/message_23.cpp
99 marnav/ais/message_24.cpp
104 set(SOURCES ${SOURCES}
106 marnav/io/nmea_reader.cpp
107 marnav/io/default_nmea_reader.cpp
111 set(SOURCES ${SOURCES}
112 marnav/io/seatalk_reader.cpp
113 marnav/io/default_seatalk_reader.cpp
118 add_library(marnav ${LIBRARY_TYPE}
119 marnav/math/floatingpoint.hpp
120 marnav/math/vector.hpp
121 marnav/math/matrix.hpp
122 marnav/math/quaternion.hpp
123 marnav/utils/mmsi.cpp
125 marnav/geo/position.cpp
126 marnav/geo/region.cpp
128 marnav/geo/geodesic.cpp
129 marnav/nmea/waypoint.cpp
130 marnav/nmea/convert.cpp
131 marnav/nmea/manufacturer.cpp
132 marnav/nmea/checks.cpp
133 marnav/nmea/split.cpp
134 marnav/nmea/angle.cpp
135 marnav/nmea/string.cpp
139 marnav/nmea/checksum.cpp
140 marnav/nmea/sentence.cpp
141 marnav/nmea/detail.cpp
216 marnav/nmea/pgrme.cpp
220 target_include_directories(marnav
222 ${CMAKE_CURRENT_SOURCE_DIR}
223 ${CMAKE_CURRENT_BINARY_DIR}
226 target_compile_options(marnav
236 target_compile_options(marnav
242 target_compile_options(marnav
244 -fno-omit-frame-pointer
247 if(ENABLE_WARNING_HELL)
248 message(STATUS "Behold: entering the hell of extended warnings")
249 target_compile_options(marnav
251 # some are not enabled on purpose
255 -Wdisabled-optimization
263 -Wmissing-field-initializers
264 -Wmissing-format-attribute
265 -Wmissing-include-dirs
278 # explicitly disabled on purpose:
287 -Wno-format-nonliteral
294 if(build_type_lower MATCHES coverage)
295 message(STATUS "Coverage: enabled")
296 target_compile_options(marnav
302 -fno-inline-small-functions
307 set_target_properties(marnav
308 PROPERTIES VERSION "${PROJECT_VERSION}"
309 SOVERSION "${PROJECT_VERSION}"
314 LIBRARY DESTINATION lib
315 ARCHIVE DESTINATION lib
316 RUNTIME DESTINATION bin
321 ${CMAKE_CURRENT_BINARY_DIR}/marnav/version.hpp
322 DESTINATION include/marnav
327 marnav/nmea/constants.hpp
328 marnav/nmea/talker_id.hpp
329 marnav/nmea/sentence_id.hpp
330 marnav/nmea/convert.hpp
331 marnav/nmea/waypoint.hpp
332 marnav/nmea/manufacturer.hpp
333 marnav/nmea/angle.hpp
334 marnav/nmea/string.hpp
338 marnav/nmea/checksum.hpp
339 marnav/nmea/sentence.hpp
340 marnav/nmea/detail.hpp
415 marnav/nmea/pgrme.hpp
416 DESTINATION include/marnav/nmea
424 marnav/ais/message.hpp
425 marnav/ais/message_01.hpp
426 marnav/ais/message_02.hpp
427 marnav/ais/message_03.hpp
428 marnav/ais/message_04.hpp
429 marnav/ais/message_05.hpp
430 marnav/ais/message_09.hpp
431 marnav/ais/message_10.hpp
432 marnav/ais/message_11.hpp
433 marnav/ais/message_18.hpp
434 marnav/ais/message_19.hpp
435 marnav/ais/message_21.hpp
436 marnav/ais/message_22.hpp
437 marnav/ais/message_23.hpp
438 marnav/ais/message_24.hpp
439 DESTINATION include/marnav/ais
446 marnav/seatalk/key.hpp
447 marnav/seatalk/equipment.hpp
448 marnav/seatalk/seatalk.hpp
449 marnav/seatalk/message.hpp
450 marnav/seatalk/message_00.hpp
451 marnav/seatalk/message_01.hpp
452 marnav/seatalk/message_05.hpp
453 marnav/seatalk/message_10.hpp
454 marnav/seatalk/message_11.hpp
455 marnav/seatalk/message_20.hpp
456 marnav/seatalk/message_21.hpp
457 marnav/seatalk/message_22.hpp
458 marnav/seatalk/message_23.hpp
459 marnav/seatalk/message_24.hpp
460 marnav/seatalk/message_25.hpp
461 marnav/seatalk/message_26.hpp
462 marnav/seatalk/message_27.hpp
463 marnav/seatalk/message_30.hpp
464 marnav/seatalk/message_36.hpp
465 marnav/seatalk/message_38.hpp
466 marnav/seatalk/message_50.hpp
467 marnav/seatalk/message_51.hpp
468 marnav/seatalk/message_52.hpp
469 marnav/seatalk/message_53.hpp
470 marnav/seatalk/message_54.hpp
471 marnav/seatalk/message_56.hpp
472 marnav/seatalk/message_58.hpp
473 marnav/seatalk/message_59.hpp
474 marnav/seatalk/message_65.hpp
475 marnav/seatalk/message_66.hpp
476 marnav/seatalk/message_6c.hpp
477 marnav/seatalk/message_86.hpp
478 marnav/seatalk/message_87.hpp
479 marnav/seatalk/message_89.hpp
480 DESTINATION include/marnav/seatalk
486 marnav/utils/unused.hpp
487 marnav/utils/unique.hpp
488 marnav/utils/bitset.hpp
489 marnav/utils/optional.hpp
490 marnav/utils/mmsi.hpp
491 DESTINATION include/marnav/utils
496 marnav/math/floatingpoint.hpp
497 marnav/math/vector.hpp
498 marnav/math/matrix.hpp
499 marnav/math/quaternion.hpp
500 DESTINATION include/marnav/math
506 marnav/geo/position.hpp
507 marnav/geo/region.hpp
509 marnav/geo/geodesic.hpp
510 DESTINATION include/marnav/geo
518 marnav/io/nmea_reader.hpp
519 marnav/io/default_nmea_reader.hpp
520 marnav/io/default_nmea_serial.hpp
521 DESTINATION include/marnav/io
526 marnav/io/seatalk_reader.hpp
527 marnav/io/default_seatalk_reader.hpp
528 marnav/io/default_seatalk_serial.hpp
529 DESTINATION include/marnav/io
534 # stuff for the config and config-version files
535 set(INCLUDE_INSTALL_DIR include)
536 set(LIB_INSTALL_DIR lib)
537 include(CMakePackageConfigHelpers)
538 configure_package_config_file(
540 "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
541 INSTALL_DESTINATION "${LIB_INSTALL_DIR}/${PROJECT_NAME}/cmake"
542 PATH_VARS INCLUDE_INSTALL_DIR
544 write_basic_package_version_file(
545 "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
546 VERSION "${PROJECT_VERSION}"
547 COMPATIBILITY SameMajorVersion)
550 "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
551 "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
553 "${LIB_INSTALL_DIR}/${PROJECT_NAME}/cmake"