summaryrefslogtreecommitdiff
path: root/src/ipcpd/eth-llc/CMakeLists.txt
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri.staessens@ugent.be>2017-12-18 20:50:04 +0100
committerSander Vrijders <sander.vrijders@ugent.be>2017-12-19 10:27:02 +0100
commite5cc7fbcf165ef9c205b6c136f239f645a8d7830 (patch)
tree334120a6cc6dcbe240076b3957233da337bf7ad2 /src/ipcpd/eth-llc/CMakeLists.txt
parentd654c997f142b22e2529dc0fb9fab4f799f7ef56 (diff)
downloadouroboros-e5cc7fbcf165ef9c205b6c136f239f645a8d7830.tar.gz
ouroboros-e5cc7fbcf165ef9c205b6c136f239f645a8d7830.zip
ipcpd: Use the term "layer" and deprecate "shim"
This changes the terminology to use layer instead of DIF and deprecate the word "shim" for the IPCPs that attach to Ethernet LLC and UDP .The terminology has not yet been changed in the variable names etc. This reflects the design choices in Ouroboros to make IPCPs pure resource allocators instead of also providing an "IPC service". The Ouroboros IPCPs that attach to Ethernet and UDP implement the allocator and are thus not really shims. Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be> Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
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 ()