212 lines
6.2 KiB
CMake
212 lines
6.2 KiB
CMake
|
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
|
||
|
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
|
||
|
NCDPlaceholderDb.c
|
||
|
NCDMethodIndex.c
|
||
|
extra/BEventLock.c
|
||
|
extra/NCDBuf.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/buffer.c
|
||
|
modules/getenv.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 ${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 ()
|