CMakeLists.txt 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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_library(ncdtokenizer
  20. NCDConfigTokenizer.c
  21. )
  22. target_link_libraries(ncdtokenizer base)
  23. add_library(ncdvalue
  24. NCDValue.c
  25. )
  26. add_library(ncdval
  27. NCDVal.c
  28. )
  29. add_library(ncdvalcompat
  30. NCDValCompat.c
  31. )
  32. target_link_libraries(ncdvalcompat ncdvalue ncdval)
  33. add_library(ncdvaluegenerator
  34. NCDValueGenerator.c
  35. )
  36. target_link_libraries(ncdvaluegenerator base ncdvalue ncdval)
  37. add_library(ncdvalueparser
  38. NCDValueParser.c
  39. )
  40. target_link_libraries(ncdvalueparser base ncdvalue ncdval ncdtokenizer ncdvalcompat)
  41. add_library(ncdast
  42. NCDAst.c
  43. )
  44. target_link_libraries(ncdast ncdvalue)
  45. add_library(ncdconfigparser
  46. NCDConfigParser.c
  47. )
  48. target_link_libraries(ncdconfigparser base ncdtokenizer ncdast)
  49. add_library(ncdrequest
  50. NCDRequestClient.c
  51. )
  52. target_link_libraries(ncdrequest base system ncdvalue ncdvaluegenerator ncdvalueparser)
  53. add_library(ncdinterfacemonitor
  54. NCDInterfaceMonitor.c
  55. )
  56. target_link_libraries(ncdinterfacemonitor base system)
  57. add_executable(badvpn-ncd
  58. ncd.c
  59. NCDModule.c
  60. NCDModuleIndex.c
  61. NCDIfConfig.c
  62. NCDObject.c
  63. NCDSugar.c
  64. NCDInterpBlock.c
  65. NCDInterpProg.c
  66. NCDInterpValue.c
  67. BEventLock.c
  68. modules/command_template.c
  69. modules/event_template.c
  70. modules/var.c
  71. modules/list.c
  72. modules/depend.c
  73. modules/multidepend.c
  74. modules/dynamic_depend.c
  75. modules/concat.c
  76. modules/concatv.c
  77. modules/if.c
  78. modules/strcmp.c
  79. modules/regex_match.c
  80. modules/logical.c
  81. modules/sleep.c
  82. modules/print.c
  83. modules/blocker.c
  84. modules/ip_in_network.c
  85. modules/run.c
  86. modules/runonce.c
  87. modules/daemon.c
  88. modules/spawn.c
  89. modules/call.c
  90. modules/imperative.c
  91. modules/ref.c
  92. modules/index.c
  93. modules/alias.c
  94. modules/process_manager.c
  95. modules/ondemand.c
  96. modules/foreach.c
  97. modules/choose.c
  98. modules/from_string.c
  99. modules/to_string.c
  100. modules/value.c
  101. modules/try.c
  102. modules/net_backend_waitdevice.c
  103. modules/net_backend_waitlink.c
  104. modules/net_backend_badvpn.c
  105. modules/net_backend_wpa_supplicant.c
  106. modules/net_up.c
  107. modules/net_dns.c
  108. modules/net_iptables.c
  109. modules/net_ipv4_addr.c
  110. modules/net_ipv4_route.c
  111. modules/net_ipv4_dhcp.c
  112. modules/net_ipv4_arp_probe.c
  113. modules/net_watch_interfaces.c
  114. modules/sys_watch_input.c
  115. modules/sys_watch_usb.c
  116. modules/sys_request_server.c
  117. modules/net_ipv6_wait_dynamic_addr.c
  118. modules/sys_request_client.c
  119. modules/exit.c
  120. modules/getargs.c
  121. modules/arithmetic.c
  122. modules/parse.c
  123. modules/valuemetic.c
  124. modules/file.c
  125. modules/netmask.c
  126. modules/implode.c
  127. modules/call2.c
  128. modules/assert.c
  129. ${NCD_ADDITIONAL_SOURCES}
  130. )
  131. target_link_libraries(badvpn-ncd system flow flowextra dhcpclient arpprobe ncdvalue ncdval ncdvalcompat ncdvaluegenerator ncdvalueparser ncdconfigparser udevmonitor ncdinterfacemonitor ncdrequest)
  132. if (BADVPN_USE_LINUX_INPUT)
  133. string(REPLACE " " ";" FLAGS_LIST "${CMAKE_C_FLAGS}")
  134. execute_process(COMMAND ${CMAKE_C_COMPILER} ${FLAGS_LIST} -E ${CMAKE_CURRENT_SOURCE_DIR}/include_linux_input.h
  135. RESULT_VARIABLE LINUX_INPUT_PREPROCESS_RESULT
  136. OUTPUT_VARIABLE LINUX_INPUT_PREPROCESS_OUTPUT)
  137. if (NOT LINUX_INPUT_PREPROCESS_RESULT EQUAL 0)
  138. message(FATAL_ERROR "failed to preprocess linux/input.h include")
  139. endif ()
  140. string(REGEX MATCH "\"(/[^\"]+/linux/input.h)\"" LINUX_INPUT_MATCH ${LINUX_INPUT_PREPROCESS_OUTPUT})
  141. if (NOT LINUX_INPUT_MATCH)
  142. message(FATAL_ERROR "failed to match preprocessor output for path of linux/input.h")
  143. endif ()
  144. set(LINUX_INPUT_H_PATH ${CMAKE_MATCH_1})
  145. message(STATUS "Generating linux_input_names.h from ${LINUX_INPUT_H_PATH}")
  146. execute_process(COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/parse_linux_input.sh
  147. ${LINUX_INPUT_H_PATH}
  148. ${CMAKE_CURRENT_BINARY_DIR}/linux_input_names.h
  149. RESULT_VARIABLE LINUX_INPUT_PARSE_RESULT)
  150. if (NOT LINUX_INPUT_PARSE_RESULT EQUAL 0)
  151. message(FATAL_ERROR "failed to generate linux_input_names.h")
  152. endif ()
  153. endif ()
  154. install(
  155. TARGETS badvpn-ncd
  156. RUNTIME DESTINATION bin
  157. )