summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt47
1 files changed, 47 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..ec05a85
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: Unlicense
+
+cmake_minimum_required(VERSION 3.16)
+
+set(CMAKE_EXPORT_COMPILE_COMMANDS True)
+
+project(udp-tinkering)
+
+set(common_debug_flags
+ -g3
+ -fsanitize=address,undefined
+ -fno-omit-frame-pointer
+ -O1
+ )
+set(compile_flags
+ $<$<CONFIG:Debug>:${common_debug_flags}>
+ $<$<COMPILE_LANGUAGE:C>:-Wno-nested-anon-types>
+ $<$<COMPILE_LANGUAGE:CXX>:-fno-exceptions>
+ $<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>
+ $<$<COMPILE_LANGUAGE:CXX>:-Wold-style-cast>
+ $<$<COMPILE_LANGUAGE:CXX>:-Wsuggest-override>
+ $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wsuggest-final-types>
+ $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wsuggest-final-methods>
+ $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-fstrict-volatile-bitfields>
+ $<$<COMPILE_LANG_AND_ID:C,GNU>:-fstrict-volatile-bitfields>
+ $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-Wlogical-op>
+ $<$<COMPILE_LANG_AND_ID:C,GNU>:-Wlogical-op>
+ $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-ffile-prefix-map=${CMAKE_SOURCE_DIR}/=>
+ $<$<COMPILE_LANG_AND_ID:C,GNU>:-ffile-prefix-map=${CMAKE_SOURCE_DIR}/=>
+ -Wall
+ -Wextra
+ -pedantic
+ -Wcast-align
+ -Wshadow
+ )
+
+add_executable(server server.c)
+target_compile_options(server PRIVATE ${compile_flags})
+target_compile_definitions(server PRIVATE _FORTIFY_SOURCE=2)
+target_link_options(server PRIVATE $<$<CONFIG:Debug>:${common_debug_flags}>)
+target_include_directories(server PRIVATE .)
+
+add_executable(client client.c)
+target_compile_options(client PRIVATE ${compile_flags})
+target_compile_definitions(client PRIVATE _FORTIFY_SOURCE=2)
+target_link_options(client PRIVATE $<$<CONFIG:Debug>:${common_debug_flags}>)
+target_include_directories(client PRIVATE .)