CMakeLists.txt 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. include_directories(${CMAKE_CURRENT_BINARY_DIR})
  2. set(NCD_ADDITIONAL_SOURCES)
  3. if (BADVPN_USE_LINUX_RFKILL)
  4. list(APPEND NCD_ADDITIONAL_SOURCES
  5. NCDRfkillMonitor.c
  6. modules/net_backend_rfkill.c
  7. )
  8. endif ()
  9. if (BADVPN_USE_LINUX_INPUT)
  10. list(APPEND NCD_ADDITIONAL_SOURCES
  11. modules/sys_evdev.c
  12. )
  13. endif ()
  14. if (BADVPN_USE_INOTIFY)
  15. list(APPEND NCD_ADDITIONAL_SOURCES
  16. modules/sys_watch_directory.c
  17. )
  18. endif ()
  19. add_executable(badvpn-ncd
  20. ncd.c
  21. NCDValue.c
  22. NCDModule.c
  23. NCDIfConfig.c
  24. NCDInterfaceMonitor.c
  25. BEventLock.c
  26. modules/command_template.c
  27. modules/event_template.c
  28. modules/var.c
  29. modules/list.c
  30. modules/depend.c
  31. modules/multidepend.c
  32. modules/concat.c
  33. modules/concatv.c
  34. modules/concatlist.c
  35. modules/if.c
  36. modules/strcmp.c
  37. modules/regex_match.c
  38. modules/logical.c
  39. modules/sleep.c
  40. modules/print.c
  41. modules/blocker.c
  42. modules/ip_in_network.c
  43. modules/run.c
  44. modules/runonce.c
  45. modules/synchronous_process.c
  46. modules/process_manager.c
  47. modules/net_backend_waitdevice.c
  48. modules/net_backend_waitlink.c
  49. modules/net_backend_badvpn.c
  50. modules/net_backend_wpa_supplicant.c
  51. modules/net_up.c
  52. modules/net_dns.c
  53. modules/net_iptables.c
  54. modules/net_ipv4_addr.c
  55. modules/net_ipv4_route.c
  56. modules/net_ipv4_dhcp.c
  57. modules/net_watch_interfaces.c
  58. modules/sys_watch_input.c
  59. ${NCD_ADDITIONAL_SOURCES}
  60. )
  61. target_link_libraries(badvpn-ncd system flow flowextra dhcpclient ncdconfig udevmonitor)
  62. if (BADVPN_USE_LINUX_INPUT)
  63. string(REPLACE " " ";" FLAGS_LIST "${CMAKE_C_FLAGS}")
  64. execute_process(COMMAND ${CMAKE_C_COMPILER} ${FLAGS_LIST} -E ${CMAKE_CURRENT_SOURCE_DIR}/include_linux_input.h
  65. RESULT_VARIABLE LINUX_INPUT_PREPROCESS_RESULT
  66. OUTPUT_VARIABLE LINUX_INPUT_PREPROCESS_OUTPUT)
  67. if (NOT LINUX_INPUT_PREPROCESS_RESULT EQUAL 0)
  68. message(FATAL_ERROR "failed to preprocess linux/input.h include")
  69. endif ()
  70. string(REGEX MATCH "\"(/[^\"]+/linux/input.h)\"" LINUX_INPUT_MATCH ${LINUX_INPUT_PREPROCESS_OUTPUT})
  71. if (NOT LINUX_INPUT_MATCH)
  72. message(FATAL_ERROR "failed to match preprocessor output for path of linux/input.h")
  73. endif ()
  74. set(LINUX_INPUT_H_PATH ${CMAKE_MATCH_1})
  75. message(STATUS "Generating linux_input_names.h from ${LINUX_INPUT_H_PATH}")
  76. execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/parse_linux_input.sh
  77. ${LINUX_INPUT_H_PATH}
  78. ${CMAKE_CURRENT_BINARY_DIR}/linux_input_names.h
  79. RESULT_VARIABLE LINUX_INPUT_PARSE_RESULT)
  80. if (NOT LINUX_INPUT_PARSE_RESULT EQUAL 0)
  81. message(FATAL_ERROR "failed to generate linux_input_names.h")
  82. endif ()
  83. endif ()
  84. install(
  85. TARGETS badvpn-ncd
  86. RUNTIME DESTINATION bin
  87. )