summaryrefslogtreecommitdiff
path: root/cmake/tools
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/tools
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/tools')
-rw-r--r--cmake/tools/irm.cmake33
-rw-r--r--cmake/tools/obc.cmake4
-rw-r--r--cmake/tools/ocbr.cmake4
-rw-r--r--cmake/tools/oecho.cmake4
-rw-r--r--cmake/tools/operf.cmake4
-rw-r--r--cmake/tools/oping.cmake4
-rw-r--r--cmake/tools/ovpn.cmake6
-rw-r--r--cmake/tools/tools.cmake8
8 files changed, 67 insertions, 0 deletions
diff --git a/cmake/tools/irm.cmake b/cmake/tools/irm.cmake
new file mode 100644
index 00000000..c9090a2c
--- /dev/null
+++ b/cmake/tools/irm.cmake
@@ -0,0 +1,33 @@
+set(IRM_SOURCE_DIR "${TOOLS_SOURCE_DIR}/irm")
+
+set(IRM_SOURCES
+ "${IRM_SOURCE_DIR}/irm.c"
+ "${IRM_SOURCE_DIR}/irm_bind_program.c"
+ "${IRM_SOURCE_DIR}/irm_bind_process.c"
+ "${IRM_SOURCE_DIR}/irm_bind_ipcp.c"
+ "${IRM_SOURCE_DIR}/irm_ipcp_create.c"
+ "${IRM_SOURCE_DIR}/irm_ipcp_destroy.c"
+ "${IRM_SOURCE_DIR}/irm_ipcp_bootstrap.c"
+ "${IRM_SOURCE_DIR}/irm_ipcp_enroll.c"
+ "${IRM_SOURCE_DIR}/irm_ipcp_list.c"
+ "${IRM_SOURCE_DIR}/irm_ipcp_connect.c"
+ "${IRM_SOURCE_DIR}/irm_ipcp_disconnect.c"
+ "${IRM_SOURCE_DIR}/irm_unbind_program.c"
+ "${IRM_SOURCE_DIR}/irm_unbind_process.c"
+ "${IRM_SOURCE_DIR}/irm_unbind_ipcp.c"
+ "${IRM_SOURCE_DIR}/irm_unbind.c"
+ "${IRM_SOURCE_DIR}/irm_bind.c"
+ "${IRM_SOURCE_DIR}/irm_ipcp.c"
+ "${IRM_SOURCE_DIR}/irm_name.c"
+ "${IRM_SOURCE_DIR}/irm_name_create.c"
+ "${IRM_SOURCE_DIR}/irm_name_destroy.c"
+ "${IRM_SOURCE_DIR}/irm_name_reg.c"
+ "${IRM_SOURCE_DIR}/irm_name_unreg.c"
+ "${IRM_SOURCE_DIR}/irm_name_list.c"
+ "${IRM_SOURCE_DIR}/irm_utils.c"
+)
+
+add_executable(irm ${IRM_SOURCES})
+target_include_directories(irm PRIVATE ${TOOLS_INCLUDE_DIRS})
+target_link_libraries(irm PUBLIC ouroboros-irm)
+install(TARGETS irm RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR})
diff --git a/cmake/tools/obc.cmake b/cmake/tools/obc.cmake
new file mode 100644
index 00000000..99e001b6
--- /dev/null
+++ b/cmake/tools/obc.cmake
@@ -0,0 +1,4 @@
+add_executable(obc "${TOOLS_SOURCE_DIR}/obc/obc.c")
+target_include_directories(obc PRIVATE ${TOOLS_INCLUDE_DIRS})
+target_link_libraries(obc PUBLIC ouroboros-dev)
+install(TARGETS obc RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/cmake/tools/ocbr.cmake b/cmake/tools/ocbr.cmake
new file mode 100644
index 00000000..bab80da8
--- /dev/null
+++ b/cmake/tools/ocbr.cmake
@@ -0,0 +1,4 @@
+add_executable(ocbr "${TOOLS_SOURCE_DIR}/ocbr/ocbr.c")
+target_include_directories(ocbr PRIVATE ${TOOLS_INCLUDE_DIRS})
+target_link_libraries(ocbr PUBLIC ouroboros-dev)
+install(TARGETS ocbr RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/cmake/tools/oecho.cmake b/cmake/tools/oecho.cmake
new file mode 100644
index 00000000..73522731
--- /dev/null
+++ b/cmake/tools/oecho.cmake
@@ -0,0 +1,4 @@
+add_executable(oecho "${TOOLS_SOURCE_DIR}/oecho/oecho.c")
+target_include_directories(oecho PRIVATE ${TOOLS_INCLUDE_DIRS})
+target_link_libraries(oecho PUBLIC ouroboros-dev)
+install(TARGETS oecho RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/cmake/tools/operf.cmake b/cmake/tools/operf.cmake
new file mode 100644
index 00000000..f6b2b465
--- /dev/null
+++ b/cmake/tools/operf.cmake
@@ -0,0 +1,4 @@
+add_executable(operf "${TOOLS_SOURCE_DIR}/operf/operf.c")
+target_include_directories(operf PRIVATE ${TOOLS_INCLUDE_DIRS})
+target_link_libraries(operf PUBLIC ouroboros-dev)
+install(TARGETS operf RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/cmake/tools/oping.cmake b/cmake/tools/oping.cmake
new file mode 100644
index 00000000..6bb18132
--- /dev/null
+++ b/cmake/tools/oping.cmake
@@ -0,0 +1,4 @@
+add_executable(oping "${TOOLS_SOURCE_DIR}/oping/oping.c")
+target_include_directories(oping PRIVATE ${TOOLS_INCLUDE_DIRS})
+target_link_libraries(oping PUBLIC ${LIBM_LIBRARIES} ouroboros-dev)
+install(TARGETS oping RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
diff --git a/cmake/tools/ovpn.cmake b/cmake/tools/ovpn.cmake
new file mode 100644
index 00000000..331daff9
--- /dev/null
+++ b/cmake/tools/ovpn.cmake
@@ -0,0 +1,6 @@
+if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ add_executable(ovpn "${TOOLS_SOURCE_DIR}/ovpn/ovpn.c")
+ target_include_directories(ovpn PRIVATE ${TOOLS_INCLUDE_DIRS})
+ target_link_libraries(ovpn PUBLIC ouroboros-dev)
+ install(TARGETS ovpn RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif ()
diff --git a/cmake/tools/tools.cmake b/cmake/tools/tools.cmake
new file mode 100644
index 00000000..26abdc63
--- /dev/null
+++ b/cmake/tools/tools.cmake
@@ -0,0 +1,8 @@
+set(TOOLS_SOURCE_DIR "${CMAKE_SOURCE_DIR}/src/tools")
+set(TOOLS_BINARY_DIR "${CMAKE_BINARY_DIR}/src/tools")
+
+set(TOOLS_INCLUDE_DIRS
+ ${TOOLS_SOURCE_DIR}
+ ${CMAKE_SOURCE_DIR}/include
+ ${CMAKE_BINARY_DIR}/include
+)