2020-09-22 22:41:06 +08:00
|
|
|
# Copyright 2020 Google LLC
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
2022-01-28 17:38:27 +08:00
|
|
|
# https://www.apache.org/licenses/LICENSE-2.0
|
2020-09-22 22:41:06 +08:00
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
2020-09-25 23:06:24 +08:00
|
|
|
cmake_minimum_required(VERSION 3.12)
|
2020-09-22 22:41:06 +08:00
|
|
|
|
|
|
|
project(libuv_sandbox)
|
|
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
|
|
|
2020-09-25 23:06:24 +08:00
|
|
|
# Add SAPI directories
|
|
|
|
add_subdirectory(
|
|
|
|
"${SAPI_ROOT}"
|
|
|
|
"${CMAKE_BINARY_DIR}/sandboxed-api-build"
|
|
|
|
EXCLUDE_FROM_ALL
|
|
|
|
)
|
|
|
|
|
2020-09-22 22:41:06 +08:00
|
|
|
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/uv_wrapper")
|
|
|
|
add_custom_command(
|
|
|
|
|
|
|
|
OUTPUT "${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.h"
|
|
|
|
"${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.cc"
|
|
|
|
|
|
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
|
|
|
2020-09-25 23:06:24 +08:00
|
|
|
COMMAND "${SAPI_PYTHON3_EXECUTABLE}"
|
|
|
|
"generator/wrapper_generator.py"
|
|
|
|
"libuv/include/uv.h"
|
|
|
|
"${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.h"
|
|
|
|
"${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.cc"
|
2020-09-22 22:41:06 +08:00
|
|
|
|
|
|
|
COMMENT "Generate the wrapper header and source files"
|
|
|
|
)
|
|
|
|
|
2020-09-25 23:06:24 +08:00
|
|
|
option(SAPI_UV_ENABLE_EXAMPLES "" ON)
|
|
|
|
option(SAPI_UV_ENABLE_TESTS "" ON)
|
2020-09-22 22:41:06 +08:00
|
|
|
|
|
|
|
# Add callbacks used by examples and tests
|
2020-09-25 23:06:24 +08:00
|
|
|
if (SAPI_UV_ENABLE_EXAMPLES OR SAPI_UV_ENABLE_TESTS)
|
|
|
|
list(APPEND SAPI_UV_CALLBACKS
|
2020-09-22 22:41:06 +08:00
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/callbacks/callbacks.h"
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/callbacks/callbacks.cc"
|
|
|
|
)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Wrapper library including wrappers for all libuv methods and callbacks
|
2020-09-25 23:06:24 +08:00
|
|
|
# The SAPI_UV_CALLBACKS variable should contain the absolute paths of
|
2020-09-22 22:41:06 +08:00
|
|
|
# all the files implementing the callbacks
|
|
|
|
add_library(uv_wrapper_and_callbacks OBJECT
|
|
|
|
"${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.h"
|
|
|
|
"${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.cc"
|
2020-09-25 23:06:24 +08:00
|
|
|
"${SAPI_UV_CALLBACKS}"
|
2020-09-22 22:41:06 +08:00
|
|
|
)
|
|
|
|
set_target_properties(uv_wrapper_and_callbacks
|
|
|
|
PROPERTIES LINKER_LANGUAGE C
|
|
|
|
)
|
|
|
|
|
|
|
|
# Link the wrapper to the original uv library
|
|
|
|
add_subdirectory(libuv)
|
|
|
|
target_link_libraries(uv_wrapper_and_callbacks uv_a)
|
|
|
|
|
|
|
|
# Setup Sandboxed API
|
|
|
|
set(SAPI_ROOT "" CACHE PATH "Path to the Sandboxed API source tree")
|
2020-09-25 23:06:24 +08:00
|
|
|
set(SAPI_ENABLE_EXAMPLES ${SAPI_UV_ENABLE_EXAMPLES} CACHE BOOL "" FORCE)
|
|
|
|
set(SAPI_ENABLE_TESTS ${SAPI_UV_ENABLE_TESTS} CACHE BOOL "" FORCE)
|
2020-09-22 22:41:06 +08:00
|
|
|
|
|
|
|
# Generate SAPI header
|
|
|
|
add_sapi_library(uv_sapi
|
|
|
|
|
|
|
|
# List of all the generated methods
|
|
|
|
FUNCTIONS sapi_uv_accept
|
|
|
|
sapi_uv_async_init
|
|
|
|
sapi_uv_async_send
|
|
|
|
sapi_uv_backend_fd
|
|
|
|
sapi_uv_backend_timeout
|
|
|
|
sapi_uv_barrier_destroy
|
|
|
|
sapi_uv_barrier_init
|
|
|
|
sapi_uv_barrier_wait
|
2020-11-19 22:32:44 +08:00
|
|
|
# TODO(cblichmann): sapi_uv_buf_init
|
2020-09-22 22:41:06 +08:00
|
|
|
sapi_uv_cancel
|
|
|
|
sapi_uv_chdir
|
|
|
|
sapi_uv_check_init
|
|
|
|
sapi_uv_check_start
|
|
|
|
sapi_uv_check_stop
|
|
|
|
sapi_uv_close
|
|
|
|
sapi_uv_cond_broadcast
|
|
|
|
sapi_uv_cond_destroy
|
|
|
|
sapi_uv_cond_init
|
|
|
|
sapi_uv_cond_signal
|
|
|
|
sapi_uv_cond_timedwait
|
|
|
|
sapi_uv_cond_wait
|
|
|
|
sapi_uv_cpu_info
|
|
|
|
sapi_uv_cwd
|
|
|
|
sapi_uv_default_loop
|
|
|
|
sapi_uv_disable_stdio_inheritance
|
|
|
|
sapi_uv_dlclose
|
|
|
|
sapi_uv_dlerror
|
|
|
|
sapi_uv_dlopen
|
|
|
|
sapi_uv_dlsym
|
|
|
|
sapi_uv_err_name
|
|
|
|
sapi_uv_err_name_r
|
|
|
|
sapi_uv_exepath
|
|
|
|
sapi_uv_fileno
|
|
|
|
sapi_uv_free_cpu_info
|
|
|
|
sapi_uv_free_interface_addresses
|
|
|
|
sapi_uv_freeaddrinfo
|
|
|
|
sapi_uv_fs_access
|
|
|
|
sapi_uv_fs_chmod
|
|
|
|
sapi_uv_fs_chown
|
|
|
|
sapi_uv_fs_close
|
|
|
|
sapi_uv_fs_closedir
|
|
|
|
sapi_uv_fs_copyfile
|
|
|
|
sapi_uv_fs_event_getpath
|
|
|
|
sapi_uv_fs_event_init
|
|
|
|
sapi_uv_fs_event_start
|
|
|
|
sapi_uv_fs_event_stop
|
|
|
|
sapi_uv_fs_fchmod
|
|
|
|
sapi_uv_fs_fchown
|
|
|
|
sapi_uv_fs_fdatasync
|
|
|
|
sapi_uv_fs_fstat
|
|
|
|
sapi_uv_fs_fsync
|
|
|
|
sapi_uv_fs_ftruncate
|
|
|
|
sapi_uv_fs_futime
|
|
|
|
sapi_uv_fs_get_path
|
|
|
|
sapi_uv_fs_get_ptr
|
|
|
|
sapi_uv_fs_get_result
|
|
|
|
sapi_uv_fs_get_statbuf
|
|
|
|
sapi_uv_fs_get_system_error
|
|
|
|
sapi_uv_fs_get_type
|
|
|
|
sapi_uv_fs_lchown
|
|
|
|
sapi_uv_fs_link
|
|
|
|
sapi_uv_fs_lstat
|
|
|
|
sapi_uv_fs_lutime
|
|
|
|
sapi_uv_fs_mkdir
|
|
|
|
sapi_uv_fs_mkdtemp
|
|
|
|
sapi_uv_fs_mkstemp
|
|
|
|
sapi_uv_fs_open
|
|
|
|
sapi_uv_fs_opendir
|
|
|
|
sapi_uv_fs_poll_getpath
|
|
|
|
sapi_uv_fs_poll_init
|
|
|
|
sapi_uv_fs_poll_start
|
|
|
|
sapi_uv_fs_poll_stop
|
|
|
|
sapi_uv_fs_read
|
|
|
|
sapi_uv_fs_readdir
|
|
|
|
sapi_uv_fs_readlink
|
|
|
|
sapi_uv_fs_realpath
|
|
|
|
sapi_uv_fs_rename
|
|
|
|
sapi_uv_fs_req_cleanup
|
|
|
|
sapi_uv_fs_rmdir
|
|
|
|
sapi_uv_fs_scandir
|
|
|
|
sapi_uv_fs_scandir_next
|
|
|
|
sapi_uv_fs_sendfile
|
|
|
|
sapi_uv_fs_stat
|
|
|
|
sapi_uv_fs_statfs
|
|
|
|
sapi_uv_fs_symlink
|
|
|
|
sapi_uv_fs_unlink
|
|
|
|
sapi_uv_fs_utime
|
|
|
|
sapi_uv_fs_write
|
|
|
|
sapi_uv_get_constrained_memory
|
|
|
|
sapi_uv_get_free_memory
|
|
|
|
sapi_uv_get_osfhandle
|
|
|
|
sapi_uv_get_process_title
|
|
|
|
sapi_uv_get_total_memory
|
|
|
|
sapi_uv_getaddrinfo
|
|
|
|
sapi_uv_getnameinfo
|
|
|
|
sapi_uv_getrusage
|
|
|
|
sapi_uv_gettimeofday
|
|
|
|
sapi_uv_guess_handle
|
|
|
|
sapi_uv_handle_get_data
|
|
|
|
sapi_uv_handle_get_loop
|
|
|
|
sapi_uv_handle_get_type
|
|
|
|
sapi_uv_handle_set_data
|
|
|
|
sapi_uv_handle_size
|
|
|
|
sapi_uv_handle_type_name
|
|
|
|
sapi_uv_has_ref
|
|
|
|
sapi_uv_hrtime
|
|
|
|
sapi_uv_idle_init
|
|
|
|
sapi_uv_idle_start
|
|
|
|
sapi_uv_idle_stop
|
|
|
|
sapi_uv_if_indextoiid
|
|
|
|
sapi_uv_if_indextoname
|
|
|
|
sapi_uv_inet_ntop
|
|
|
|
sapi_uv_inet_pton
|
|
|
|
sapi_uv_interface_addresses
|
|
|
|
sapi_uv_ip4_addr
|
|
|
|
sapi_uv_ip4_name
|
|
|
|
sapi_uv_ip6_addr
|
|
|
|
sapi_uv_ip6_name
|
|
|
|
sapi_uv_is_active
|
|
|
|
sapi_uv_is_closing
|
|
|
|
sapi_uv_is_readable
|
|
|
|
sapi_uv_is_writable
|
|
|
|
sapi_uv_key_create
|
|
|
|
sapi_uv_key_delete
|
|
|
|
sapi_uv_key_get
|
|
|
|
sapi_uv_key_set
|
|
|
|
sapi_uv_kill
|
|
|
|
sapi_uv_library_shutdown
|
|
|
|
sapi_uv_listen
|
|
|
|
sapi_uv_loadavg
|
|
|
|
sapi_uv_loop_alive
|
|
|
|
sapi_uv_loop_close
|
|
|
|
sapi_uv_loop_configure
|
|
|
|
sapi_uv_loop_configure_int
|
|
|
|
sapi_uv_loop_delete
|
|
|
|
sapi_uv_loop_fork
|
|
|
|
sapi_uv_loop_get_data
|
|
|
|
sapi_uv_loop_init
|
|
|
|
sapi_uv_loop_new
|
|
|
|
sapi_uv_loop_set_data
|
|
|
|
sapi_uv_loop_size
|
|
|
|
sapi_uv_metrics_idle_time
|
|
|
|
sapi_uv_mutex_destroy
|
|
|
|
sapi_uv_mutex_init
|
|
|
|
sapi_uv_mutex_init_recursive
|
|
|
|
sapi_uv_mutex_lock
|
|
|
|
sapi_uv_mutex_trylock
|
|
|
|
sapi_uv_mutex_unlock
|
|
|
|
sapi_uv_now
|
|
|
|
sapi_uv_once
|
|
|
|
sapi_uv_open_osfhandle
|
|
|
|
sapi_uv_os_environ
|
|
|
|
sapi_uv_os_free_environ
|
|
|
|
sapi_uv_os_free_passwd
|
|
|
|
sapi_uv_os_get_passwd
|
|
|
|
sapi_uv_os_getenv
|
|
|
|
sapi_uv_os_gethostname
|
|
|
|
sapi_uv_os_getpid
|
|
|
|
sapi_uv_os_getppid
|
|
|
|
sapi_uv_os_getpriority
|
|
|
|
sapi_uv_os_homedir
|
|
|
|
sapi_uv_os_setenv
|
|
|
|
sapi_uv_os_setpriority
|
|
|
|
sapi_uv_os_tmpdir
|
|
|
|
sapi_uv_os_uname
|
|
|
|
sapi_uv_os_unsetenv
|
|
|
|
sapi_uv_pipe_bind
|
|
|
|
sapi_uv_pipe_chmod
|
|
|
|
sapi_uv_pipe_connect
|
|
|
|
sapi_uv_pipe_getpeername
|
|
|
|
sapi_uv_pipe_getsockname
|
|
|
|
sapi_uv_pipe_init
|
|
|
|
sapi_uv_pipe_open
|
|
|
|
sapi_uv_pipe_pending_count
|
|
|
|
sapi_uv_pipe_pending_instances
|
|
|
|
sapi_uv_pipe_pending_type
|
|
|
|
sapi_uv_poll_init
|
|
|
|
sapi_uv_poll_init_socket
|
|
|
|
sapi_uv_poll_start
|
|
|
|
sapi_uv_poll_stop
|
|
|
|
sapi_uv_prepare_init
|
|
|
|
sapi_uv_prepare_start
|
|
|
|
sapi_uv_prepare_stop
|
|
|
|
sapi_uv_print_active_handles
|
|
|
|
sapi_uv_print_all_handles
|
|
|
|
sapi_uv_process_get_pid
|
|
|
|
sapi_uv_process_kill
|
|
|
|
sapi_uv_queue_work
|
|
|
|
sapi_uv_random
|
|
|
|
sapi_uv_read_start
|
|
|
|
sapi_uv_read_stop
|
|
|
|
sapi_uv_recv_buffer_size
|
|
|
|
sapi_uv_ref
|
|
|
|
sapi_uv_replace_allocator
|
|
|
|
sapi_uv_req_get_data
|
|
|
|
sapi_uv_req_get_type
|
|
|
|
sapi_uv_req_set_data
|
|
|
|
sapi_uv_req_size
|
|
|
|
sapi_uv_req_type_name
|
|
|
|
sapi_uv_resident_set_memory
|
|
|
|
sapi_uv_run
|
|
|
|
sapi_uv_rwlock_destroy
|
|
|
|
sapi_uv_rwlock_init
|
|
|
|
sapi_uv_rwlock_rdlock
|
|
|
|
sapi_uv_rwlock_rdunlock
|
|
|
|
sapi_uv_rwlock_tryrdlock
|
|
|
|
sapi_uv_rwlock_trywrlock
|
|
|
|
sapi_uv_rwlock_wrlock
|
|
|
|
sapi_uv_rwlock_wrunlock
|
|
|
|
sapi_uv_sem_destroy
|
|
|
|
sapi_uv_sem_init
|
|
|
|
sapi_uv_sem_post
|
|
|
|
sapi_uv_sem_trywait
|
|
|
|
sapi_uv_sem_wait
|
|
|
|
sapi_uv_send_buffer_size
|
|
|
|
sapi_uv_set_process_title
|
|
|
|
sapi_uv_setup_args
|
|
|
|
sapi_uv_shutdown
|
|
|
|
sapi_uv_signal_init
|
|
|
|
sapi_uv_signal_start
|
|
|
|
sapi_uv_signal_start_oneshot
|
|
|
|
sapi_uv_signal_stop
|
|
|
|
sapi_uv_sleep
|
|
|
|
sapi_uv_spawn
|
|
|
|
sapi_uv_stop
|
|
|
|
sapi_uv_stream_get_write_queue_size
|
|
|
|
sapi_uv_stream_set_blocking
|
|
|
|
sapi_uv_strerror
|
|
|
|
sapi_uv_strerror_r
|
|
|
|
sapi_uv_tcp_bind
|
|
|
|
sapi_uv_tcp_close_reset
|
|
|
|
sapi_uv_tcp_connect
|
|
|
|
sapi_uv_tcp_getpeername
|
|
|
|
sapi_uv_tcp_getsockname
|
|
|
|
sapi_uv_tcp_init
|
|
|
|
sapi_uv_tcp_init_ex
|
|
|
|
sapi_uv_tcp_keepalive
|
|
|
|
sapi_uv_tcp_nodelay
|
|
|
|
sapi_uv_tcp_open
|
|
|
|
sapi_uv_tcp_simultaneous_accepts
|
|
|
|
sapi_uv_thread_create
|
|
|
|
sapi_uv_thread_create_ex
|
|
|
|
sapi_uv_thread_equal
|
|
|
|
sapi_uv_thread_join
|
|
|
|
sapi_uv_thread_self
|
|
|
|
sapi_uv_timer_again
|
|
|
|
sapi_uv_timer_get_due_in
|
|
|
|
sapi_uv_timer_get_repeat
|
|
|
|
sapi_uv_timer_init
|
|
|
|
sapi_uv_timer_set_repeat
|
|
|
|
sapi_uv_timer_start
|
|
|
|
sapi_uv_timer_stop
|
|
|
|
sapi_uv_translate_sys_error
|
|
|
|
sapi_uv_try_write
|
|
|
|
sapi_uv_tty_get_vterm_state
|
|
|
|
sapi_uv_tty_get_winsize
|
|
|
|
sapi_uv_tty_init
|
|
|
|
sapi_uv_tty_reset_mode
|
|
|
|
sapi_uv_tty_set_mode
|
|
|
|
sapi_uv_tty_set_vterm_state
|
|
|
|
sapi_uv_udp_bind
|
|
|
|
sapi_uv_udp_connect
|
|
|
|
sapi_uv_udp_get_send_queue_count
|
|
|
|
sapi_uv_udp_get_send_queue_size
|
|
|
|
sapi_uv_udp_getpeername
|
|
|
|
sapi_uv_udp_getsockname
|
|
|
|
sapi_uv_udp_init
|
|
|
|
sapi_uv_udp_init_ex
|
|
|
|
sapi_uv_udp_open
|
|
|
|
sapi_uv_udp_recv_start
|
|
|
|
sapi_uv_udp_recv_stop
|
|
|
|
sapi_uv_udp_send
|
|
|
|
sapi_uv_udp_set_broadcast
|
|
|
|
sapi_uv_udp_set_membership
|
|
|
|
sapi_uv_udp_set_multicast_interface
|
|
|
|
sapi_uv_udp_set_multicast_loop
|
|
|
|
sapi_uv_udp_set_multicast_ttl
|
|
|
|
sapi_uv_udp_set_source_membership
|
|
|
|
sapi_uv_udp_set_ttl
|
|
|
|
sapi_uv_udp_try_send
|
|
|
|
sapi_uv_udp_using_recvmmsg
|
|
|
|
sapi_uv_unref
|
|
|
|
sapi_uv_update_time
|
|
|
|
sapi_uv_uptime
|
|
|
|
sapi_uv_version
|
|
|
|
sapi_uv_version_string
|
|
|
|
sapi_uv_walk
|
|
|
|
sapi_uv_write
|
|
|
|
sapi_uv_write2
|
|
|
|
|
|
|
|
INPUTS "${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.h"
|
|
|
|
|
|
|
|
LIBRARY uv_wrapper_and_callbacks
|
|
|
|
|
|
|
|
LIBRARY_NAME UV
|
|
|
|
|
2020-09-25 23:06:24 +08:00
|
|
|
NAMESPACE uv
|
2020-09-22 22:41:06 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
# Include generated SAPI header
|
|
|
|
target_include_directories(uv_sapi INTERFACE
|
|
|
|
"${PROJECT_BINARY_DIR}"
|
|
|
|
)
|
|
|
|
|
|
|
|
# Add examples
|
2020-09-25 23:06:24 +08:00
|
|
|
if (SAPI_UV_ENABLE_EXAMPLES)
|
2020-09-22 22:41:06 +08:00
|
|
|
add_subdirectory(examples)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Add tests
|
2020-09-25 23:06:24 +08:00
|
|
|
if (SAPI_UV_ENABLE_TESTS)
|
2020-09-22 22:41:06 +08:00
|
|
|
add_subdirectory(tests)
|
|
|
|
endif()
|