summaryrefslogtreecommitdiff
path: root/cmake/ipcp/eth.cmake
blob: 0d37bf9b3320b8e1d33ee6aebdf2160ed87682b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
set(ETH_SOURCE_DIR "${IPCP_SOURCE_DIR}/eth")

set(IPCP_ETH_LLC_TARGET ipcpd-eth-llc CACHE INTERNAL "")
set(IPCP_ETH_DIX_TARGET ipcpd-eth-dix CACHE INTERNAL "")

set(IPCP_ETH_RD_THR 1 CACHE STRING
  "Number of reader threads in Ethernet IPCP")
set(IPCP_ETH_WR_THR 1 CACHE STRING
  "Number of writer threads in Ethernet IPCP")
set(IPCP_ETH_QDISC_BYPASS false CACHE BOOL
  "Bypass the Qdisc in the kernel when using raw sockets")
set(IPCP_ETH_LO_MTU 1500 CACHE STRING
  "Restrict Ethernet MTU over loopback interfaces")
set(IPCP_ETH_MPL 100 CACHE STRING
  "Default maximum packet lifetime for the Ethernet IPCPs, in ms")

if (HAVE_RAW_SOCKETS OR HAVE_BPF OR HAVE_NETMAP)
  set(HAVE_ETH TRUE)
else ()
  unset(HAVE_ETH)
endif ()

if (HAVE_ETH)
  add_executable(${IPCP_ETH_LLC_TARGET} "${ETH_SOURCE_DIR}/llc.c" ${IPCP_SOURCES})
  add_executable(${IPCP_ETH_DIX_TARGET} "${ETH_SOURCE_DIR}/dix.c" ${IPCP_SOURCES})

  foreach(target ${IPCP_ETH_LLC_TARGET} ${IPCP_ETH_DIX_TARGET})
    target_include_directories(${target} PRIVATE ${IPCP_INCLUDE_DIRS})
    if (HAVE_BPF AND NOT APPLE)
      target_include_directories(${target} PRIVATE ${BPF_C_INCLUDE_DIR})
    endif ()
    if (HAVE_NETMAP AND NOT APPLE)
      set_target_properties(${target} PROPERTIES COMPILE_FLAGS "${CMAKE_C_FLAGS} -std=c99")
      target_include_directories(${target} PRIVATE ${NETMAP_C_INCLUDE_DIR})
    endif ()
    target_link_libraries(${target} PUBLIC ouroboros-dev)
  endforeach()

  install(TARGETS ${IPCP_ETH_LLC_TARGET} ${IPCP_ETH_DIX_TARGET} RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR})
endif ()