summaryrefslogtreecommitdiff
path: root/cmake/ipcp/unicast.cmake
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2025-12-23 11:59:45 +0100
committerSander Vrijders <sander@ouroboros.rocks>2026-01-07 10:00:06 +0100
commit48c294105f5123dc876fbad199ec1e0166d82a18 (patch)
treec49ce8ac75a7d63c10ea1ff960eeff750c680a8e /cmake/ipcp/unicast.cmake
parent145be13e8c18fcb39476d8f65fed23d82320f22f (diff)
downloadouroboros-48c294105f5123dc876fbad199ec1e0166d82a18.tar.gz
ouroboros-48c294105f5123dc876fbad199ec1e0166d82a18.zip
build: Refactor CMake modules
This moves the CMake build logic out of the source tree and splits it up into a more modular form. The tests now have a CMakeLists.txt file in their respective source directory. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
Diffstat (limited to 'cmake/ipcp/unicast.cmake')
-rw-r--r--cmake/ipcp/unicast.cmake46
1 files changed, 46 insertions, 0 deletions
diff --git a/cmake/ipcp/unicast.cmake b/cmake/ipcp/unicast.cmake
new file mode 100644
index 00000000..8517f8af
--- /dev/null
+++ b/cmake/ipcp/unicast.cmake
@@ -0,0 +1,46 @@
+set(UNICAST_SOURCE_DIR "${IPCP_SOURCE_DIR}/unicast")
+set(UNICAST_BINARY_DIR "${IPCP_BINARY_DIR}/unicast")
+
+set(IPCP_UNICAST_TARGET ipcpd-unicast CACHE INTERNAL "")
+
+set(IPCP_UNICAST_MPL 100 CACHE STRING
+ "Default maximum packet lifetime for the Unicast IPCP, in ms")
+set(PFT_SIZE 256 CACHE STRING
+ "Prefix forwarding table size for the Unicast IPCP")
+
+# Generate DHT protobuf files
+protobuf_generate_c(DHT_PROTO_SRCS DHT_PROTO_HDRS "${UNICAST_SOURCE_DIR}/dir/dht.proto")
+
+set (UNICAST_SOURCES
+ "${UNICAST_SOURCE_DIR}/addr-auth.c"
+ "${UNICAST_SOURCE_DIR}/ca.c"
+ "${UNICAST_SOURCE_DIR}/connmgr.c"
+ "${UNICAST_SOURCE_DIR}/dir.c"
+ "${UNICAST_SOURCE_DIR}/dt.c"
+ "${UNICAST_SOURCE_DIR}/fa.c"
+ "${UNICAST_SOURCE_DIR}/main.c"
+ "${UNICAST_SOURCE_DIR}/pff.c"
+ "${UNICAST_SOURCE_DIR}/routing.c"
+ "${UNICAST_SOURCE_DIR}/psched.c"
+ "${UNICAST_SOURCE_DIR}/addr-auth/flat.c"
+ "${UNICAST_SOURCE_DIR}/ca/mb-ecn.c"
+ "${UNICAST_SOURCE_DIR}/ca/nop.c"
+ "${UNICAST_SOURCE_DIR}/dir/dht.c"
+ "${UNICAST_SOURCE_DIR}/pff/simple.c"
+ "${UNICAST_SOURCE_DIR}/pff/alternate.c"
+ "${UNICAST_SOURCE_DIR}/pff/multipath.c"
+ "${UNICAST_SOURCE_DIR}/pff/pft.c"
+ "${UNICAST_SOURCE_DIR}/routing/link-state.c"
+ "${UNICAST_SOURCE_DIR}/routing/graph.c"
+)
+
+add_executable(${IPCP_UNICAST_TARGET}
+ ${UNICAST_SOURCES}
+ ${IPCP_SOURCES}
+ ${COMMON_SOURCES}
+ ${DHT_PROTO_SRCS}
+)
+target_include_directories(${IPCP_UNICAST_TARGET} PRIVATE ${IPCP_INCLUDE_DIRS})
+target_include_directories(${IPCP_UNICAST_TARGET} PRIVATE "${UNICAST_SOURCE_DIR}")
+target_link_libraries(${IPCP_UNICAST_TARGET} PUBLIC ouroboros-dev)
+install(TARGETS ${IPCP_UNICAST_TARGET} RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR})