summaryrefslogtreecommitdiff
path: root/src/ipcpd/eth-llc/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/ipcpd/eth-llc/CMakeLists.txt')
-rw-r--r--src/ipcpd/eth-llc/CMakeLists.txt106
1 files changed, 106 insertions, 0 deletions
diff --git a/src/ipcpd/eth-llc/CMakeLists.txt b/src/ipcpd/eth-llc/CMakeLists.txt
new file mode 100644
index 00000000..11a631b3
--- /dev/null
+++ b/src/ipcpd/eth-llc/CMakeLists.txt
@@ -0,0 +1,106 @@
+get_filename_component(CURRENT_SOURCE_PARENT_DIR
+ ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
+get_filename_component(CURRENT_BINARY_PARENT_DIR
+ ${CMAKE_CURRENT_BINARY_DIR} DIRECTORY)
+
+include_directories(${CMAKE_CURRENT_SOURCE_DIR})
+include_directories(${CMAKE_CURRENT_BINARY_DIR})
+
+include_directories(${CURRENT_SOURCE_PARENT_DIR})
+include_directories(${CURRENT_BINARY_PARENT_DIR})
+
+include_directories(${CMAKE_SOURCE_DIR}/include)
+include_directories(${CMAKE_BINARY_DIR}/include)
+
+find_path(NETMAP_C_INCLUDE_DIR
+ net/netmap_user.h
+ HINTS /usr/include /usr/local/include
+)
+
+mark_as_advanced(NETMAP_C_INCLUDE_DIR)
+
+if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ set(DISABLE_RAW_SOCKETS FALSE CACHE BOOL
+ "Disable raw socket support for LLC IPCP")
+ if (NOT DISABLE_RAW_SOCKETS)
+ message(STATUS "Raw socket support for eth-llc enabled")
+ set(HAVE_RAW_SOCKETS TRUE PARENT_SCOPE)
+ set(HAVE_LLC TRUE)
+ else ()
+ message(STATUS "Raw socket support for eth-llc disabled by user")
+ unset(HAVE_RAW_SOCKETS)
+ unset(HAVE_LLC)
+ endif ()
+endif ()
+
+if (NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
+ find_path(BPF_C_INCLUDE_DIR
+ net/bpf.h
+ HINTS /usr/include /usr/local/include
+ )
+
+ mark_as_advanced(BPF_C_INCLUDE_DIR)
+
+ if (BPF_C_INCLUDE_DIR)
+ set(DISABLE_BPF FALSE CACHE BOOL
+ "Disable Berkeley Packet Filter support for LLC IPCP")
+ if (NOT DISABLE_BPF)
+ message(STATUS "Berkeley Packet Filter support "
+ "for eth-llc enabled")
+ set(HAVE_BPF TRUE PARENT_SCOPE)
+ set(HAVE_LLC TRUE)
+ else ()
+ message(STATUS "Berkeley Packet Filter support "
+ "for eth-llc disabled by user")
+ unset(HAVE_BPF)
+ unset(HAVE_LLC)
+ endif ()
+ endif ()
+endif ()
+
+if (NETMAP_C_INCLUDE_DIR)
+ set(DISABLE_NETMAP FALSE CACHE BOOL
+ "Disable netmap support for LLC IPCP")
+ if (NOT DISABLE_NETMAP)
+ message(STATUS "Netmap support for eth-llc enabled")
+ set(HAVE_NETMAP TRUE PARENT_SCOPE)
+ test_and_set_c_compiler_flag_global(-std=c99)
+ set(HAVE_LLC TRUE)
+ else ()
+ message(STATUS "Netmap support for eth-llc disabled by user")
+ unset(HAVE_NETMAP)
+ unset(HAVE_LLC)
+ unset(IPCP_ETH_LLC_TARGET CACHE)
+ endif ()
+endif ()
+
+if (HAVE_LLC)
+ message(STATUS "Supported raw Ethernet API found, building eth-llc")
+
+ set(ETH_LLC_SOURCES
+ # Add source files here
+ ${CMAKE_CURRENT_SOURCE_DIR}/main.c
+ )
+
+ set(IPCP_ETH_LLC_TARGET ipcpd-eth-llc CACHE INTERNAL "")
+
+ add_executable(ipcpd-eth-llc ${ETH_LLC_SOURCES} ${IPCP_SOURCES})
+
+ if (HAVE_BPF AND NOT APPLE)
+ target_include_directories(ipcpd-eth-llc PUBLIC ${BPF_C_INCLUDE_DIR})
+ endif ()
+
+ if (HAVE_NETMAP AND NOT APPLE)
+ target_include_directories(ipcpd-eth-llc PUBLIC
+ ${NETMAP_C_INCLUDE_DIR})
+ endif ()
+
+ target_link_libraries(ipcpd-eth-llc LINK_PUBLIC ouroboros-dev)
+
+ include(AddCompileFlags)
+ if (CMAKE_BUILD_TYPE MATCHES "Debug*")
+ add_compile_flags(ipcpd-eth-llc -DCONFIG_OUROBOROS_DEBUG)
+ endif ()
+
+ install(TARGETS ipcpd-eth-llc RUNTIME DESTINATION sbin)
+endif ()