| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- include_directories(${CMAKE_CURRENT_BINARY_DIR})
- set(NCD_ADDITIONAL_SOURCES)
- set(NCD_ADDITIONAL_LIBS)
- if (NOT EMSCRIPTEN)
- if (BADVPN_USE_LINUX_RFKILL)
- list(APPEND NCD_ADDITIONAL_SOURCES
- extra/NCDRfkillMonitor.c
- modules/net_backend_rfkill.c
- )
- endif ()
- if (BADVPN_USE_LINUX_INPUT)
- list(APPEND NCD_ADDITIONAL_SOURCES
- modules/sys_evdev.c
- )
- endif ()
- if (BADVPN_USE_INOTIFY)
- list(APPEND NCD_ADDITIONAL_SOURCES
- modules/sys_watch_directory.c
- )
- endif ()
- badvpn_add_library(ncdinterfacemonitor "base;system" "" extra/NCDInterfaceMonitor.c)
-
- badvpn_add_library(ncdrequest "base;system;ncdvalgenerator;ncdvalparser" "" extra/NCDRequestClient.c)
-
- list(APPEND NCD_ADDITIONAL_SOURCES
- extra/NCDIfConfig.c
- extra/build_cmdline.c
- extra/NCDBProcessOpts.c
- extra/NCDFastNames.c
- modules/command_template.c
- modules/event_template.c
- modules/regex_match.c
- modules/run.c
- modules/runonce.c
- modules/daemon.c
- modules/net_backend_waitdevice.c
- modules/net_backend_waitlink.c
- modules/net_backend_badvpn.c
- modules/net_backend_wpa_supplicant.c
- modules/net_up.c
- modules/net_dns.c
- modules/net_iptables.c
- modules/net_ipv4_addr.c
- modules/net_ipv4_route.c
- modules/net_ipv4_dhcp.c
- modules/net_ipv4_arp_probe.c
- modules/net_watch_interfaces.c
- modules/sys_watch_input.c
- modules/sys_watch_usb.c
- modules/sys_request_server.c
- modules/net_ipv6_wait_dynamic_addr.c
- modules/sys_request_client.c
- modules/reboot.c
- modules/net_ipv6_addr.c
- modules/net_ipv6_route.c
- modules/socket.c
- modules/sys_start_process.c
- modules/load_module.c
- )
-
- list(APPEND NCD_ADDITIONAL_LIBS
- dhcpclient arpprobe ncdinterfacemonitor ncdrequest udevmonitor badvpn_random dl
- )
- endif ()
- badvpn_add_library(ncdtokenizer "base" "" NCDConfigTokenizer.c)
- badvpn_add_library(ncdstringindex "base" "" NCDStringIndex.c)
- badvpn_add_library(ncdval "base;ncdstringindex" "" NCDVal.c)
- badvpn_add_library(ncdvalgenerator "base;ncdval" "" NCDValGenerator.c)
- badvpn_add_library(ncdvalparser "base;ncdval;ncdtokenizer;ncdvalcons" "" NCDValParser.c)
- badvpn_add_library(ncdast "" "" NCDAst.c)
- badvpn_add_library(ncdconfigparser "base;ncdtokenizer;ncdast" "" NCDConfigParser.c)
- badvpn_add_library(ncdsugar "ncdast" "" NCDSugar.c)
- badvpn_add_library(ncdvalcons "ncdval" "" NCDValCons.c)
- badvpn_add_library(ncdbuildprogram "base;ncdast;ncdconfigparser" "" NCDBuildProgram.c)
- badvpn_add_library(ncdobject "" "" NCDObject.c)
- badvpn_add_library(ncdmodule "base;ncdobject;ncdstringindex;ncdval" "" NCDModule.c)
- set(NCDINTERPRETER_SOURCES
- NCDInterpreter.c
- NCDModuleIndex.c
- NCDInterpProcess.c
- NCDInterpProg.c
- NCDEvaluator.c
- NCDMethodIndex.c
- extra/BEventLock.c
- extra/NCDBuf.c
- extra/value_utils.c
- extra/NCDRefString.c
- modules/var.c
- modules/list.c
- modules/depend.c
- modules/multidepend.c
- modules/dynamic_depend.c
- modules/concat.c
- modules/if.c
- modules/strcmp.c
- modules/logical.c
- modules/sleep.c
- modules/print.c
- modules/blocker.c
- modules/spawn.c
- modules/imperative.c
- modules/ref.c
- modules/index.c
- modules/alias.c
- modules/process_manager.c
- modules/ondemand.c
- modules/foreach.c
- modules/choose.c
- modules/from_string.c
- modules/to_string.c
- modules/value.c
- modules/try.c
- modules/exit.c
- modules/getargs.c
- modules/arithmetic.c
- modules/parse.c
- modules/valuemetic.c
- modules/file.c
- modules/netmask.c
- modules/implode.c
- modules/call2.c
- modules/assert.c
- modules/explode.c
- modules/net_ipv4_addr_in_network.c
- modules/net_ipv6_addr_in_network.c
- modules/timer.c
- modules/file_open.c
- modules/backtrack.c
- modules/depend_scope.c
- modules/substr.c
- modules/log.c
- modules/getenv.c
- modules/basic_functions.c
- modules/objref.c
- ${NCD_ADDITIONAL_SOURCES}
- )
- set(NCDINTERPRETER_LIBS
- base system flow flowextra ncdval ncdstringindex ncdvalgenerator ncdvalparser
- ncdconfigparser ncdsugar ncdobject ncdmodule ${NCD_ADDITIONAL_LIBS})
- badvpn_add_library(ncdinterpreter "${NCDINTERPRETER_LIBS}" "" "${NCDINTERPRETER_SOURCES}")
- if (BADVPN_USE_LINUX_INPUT)
- string(REPLACE " " ";" FLAGS_LIST "${CMAKE_C_FLAGS}")
- execute_process(COMMAND ${CMAKE_C_COMPILER} ${FLAGS_LIST} -E ${CMAKE_CURRENT_SOURCE_DIR}/include_linux_input.c
- RESULT_VARIABLE LINUX_INPUT_PREPROCESS_RESULT
- OUTPUT_VARIABLE LINUX_INPUT_PREPROCESS_OUTPUT)
- if (NOT LINUX_INPUT_PREPROCESS_RESULT EQUAL 0)
- message(FATAL_ERROR "failed to preprocess linux/input.h include")
- endif ()
- string(REGEX MATCH "\"(/[^\"]+/linux/input.h)\"" LINUX_INPUT_MATCH ${LINUX_INPUT_PREPROCESS_OUTPUT})
- if (NOT LINUX_INPUT_MATCH)
- message(FATAL_ERROR "failed to match preprocessor output for path of linux/input.h")
- endif ()
- set(LINUX_INPUT_H_PATH ${CMAKE_MATCH_1})
- message(STATUS "Generating linux_input_names.h from ${LINUX_INPUT_H_PATH}")
- execute_process(COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/parse_linux_input.sh
- ${LINUX_INPUT_H_PATH}
- ${CMAKE_CURRENT_BINARY_DIR}/linux_input_names.h
- RESULT_VARIABLE LINUX_INPUT_PARSE_RESULT)
- if (NOT LINUX_INPUT_PARSE_RESULT EQUAL 0)
- message(FATAL_ERROR "failed to generate linux_input_names.h")
- endif ()
- endif ()
- if (NOT EMSCRIPTEN)
- add_executable(badvpn-ncd ncd.c)
- target_link_libraries(badvpn-ncd ncdinterpreter ncdbuildprogram)
-
- install(
- TARGETS badvpn-ncd
- RUNTIME DESTINATION bin
- )
- endif ()
- if (EMSCRIPTEN)
- add_executable(emncd emncd.c)
- target_link_libraries(emncd ncdinterpreter)
-
- add_custom_command(
- OUTPUT emncd.bc
- DEPENDS emncd
- COMMAND cp emncd emncd.bc
- )
-
- add_custom_command(
- OUTPUT emncd.js
- DEPENDS emncd.bc
- COMMAND
- ${CMAKE_C_COMPILER} emncd.bc -o emncd.js -O2
- -s EXPORTED_FUNCTIONS=\"['_breactor_timer_cb','_main','_emncd_start','_emncd_stop']\"
- )
-
- add_custom_target(emncd_js ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/emncd.js)
- endif ()
|