1*ec63e07aSXin Li# Copyright 2020 Google LLC 2*ec63e07aSXin Li# 3*ec63e07aSXin Li# Licensed under the Apache License, Version 2.0 (the "License"); 4*ec63e07aSXin Li# you may not use this file except in compliance with the License. 5*ec63e07aSXin Li# You may obtain a copy of the License at 6*ec63e07aSXin Li# 7*ec63e07aSXin Li# https://www.apache.org/licenses/LICENSE-2.0 8*ec63e07aSXin Li# 9*ec63e07aSXin Li# Unless required by applicable law or agreed to in writing, software 10*ec63e07aSXin Li# distributed under the License is distributed on an "AS IS" BASIS, 11*ec63e07aSXin Li# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*ec63e07aSXin Li# See the License for the specific language governing permissions and 13*ec63e07aSXin Li# limitations under the License. 14*ec63e07aSXin Li 15*ec63e07aSXin Licmake_minimum_required(VERSION 3.12) 16*ec63e07aSXin Li 17*ec63e07aSXin Liproject(libuv_sandbox) 18*ec63e07aSXin Li 19*ec63e07aSXin Liset(CMAKE_CXX_STANDARD 17) 20*ec63e07aSXin Liset(CMAKE_CXX_STANDARD_REQUIRED True) 21*ec63e07aSXin Li 22*ec63e07aSXin Li# Add SAPI directories 23*ec63e07aSXin Liadd_subdirectory( 24*ec63e07aSXin Li "${SAPI_ROOT}" 25*ec63e07aSXin Li "${CMAKE_BINARY_DIR}/sandboxed-api-build" 26*ec63e07aSXin Li EXCLUDE_FROM_ALL 27*ec63e07aSXin Li) 28*ec63e07aSXin Li 29*ec63e07aSXin Lifile(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/uv_wrapper") 30*ec63e07aSXin Liadd_custom_command( 31*ec63e07aSXin Li 32*ec63e07aSXin Li OUTPUT "${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.h" 33*ec63e07aSXin Li "${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.cc" 34*ec63e07aSXin Li 35*ec63e07aSXin Li WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" 36*ec63e07aSXin Li 37*ec63e07aSXin Li COMMAND "${SAPI_PYTHON3_EXECUTABLE}" 38*ec63e07aSXin Li "generator/wrapper_generator.py" 39*ec63e07aSXin Li "libuv/include/uv.h" 40*ec63e07aSXin Li "${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.h" 41*ec63e07aSXin Li "${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.cc" 42*ec63e07aSXin Li 43*ec63e07aSXin Li COMMENT "Generate the wrapper header and source files" 44*ec63e07aSXin Li) 45*ec63e07aSXin Li 46*ec63e07aSXin Lioption(SAPI_UV_ENABLE_EXAMPLES "" ON) 47*ec63e07aSXin Lioption(SAPI_UV_ENABLE_TESTS "" ON) 48*ec63e07aSXin Li 49*ec63e07aSXin Li# Add callbacks used by examples and tests 50*ec63e07aSXin Liif (SAPI_UV_ENABLE_EXAMPLES OR SAPI_UV_ENABLE_TESTS) 51*ec63e07aSXin Li list(APPEND SAPI_UV_CALLBACKS 52*ec63e07aSXin Li "${CMAKE_CURRENT_SOURCE_DIR}/callbacks/callbacks.h" 53*ec63e07aSXin Li "${CMAKE_CURRENT_SOURCE_DIR}/callbacks/callbacks.cc" 54*ec63e07aSXin Li ) 55*ec63e07aSXin Liendif() 56*ec63e07aSXin Li 57*ec63e07aSXin Li# Wrapper library including wrappers for all libuv methods and callbacks 58*ec63e07aSXin Li# The SAPI_UV_CALLBACKS variable should contain the absolute paths of 59*ec63e07aSXin Li# all the files implementing the callbacks 60*ec63e07aSXin Liadd_library(uv_wrapper_and_callbacks OBJECT 61*ec63e07aSXin Li "${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.h" 62*ec63e07aSXin Li "${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.cc" 63*ec63e07aSXin Li "${SAPI_UV_CALLBACKS}" 64*ec63e07aSXin Li) 65*ec63e07aSXin Liset_target_properties(uv_wrapper_and_callbacks 66*ec63e07aSXin Li PROPERTIES LINKER_LANGUAGE C 67*ec63e07aSXin Li) 68*ec63e07aSXin Li 69*ec63e07aSXin Li# Link the wrapper to the original uv library 70*ec63e07aSXin Liadd_subdirectory(libuv) 71*ec63e07aSXin Litarget_link_libraries(uv_wrapper_and_callbacks uv_a) 72*ec63e07aSXin Li 73*ec63e07aSXin Li# Setup Sandboxed API 74*ec63e07aSXin Liset(SAPI_ROOT "" CACHE PATH "Path to the Sandboxed API source tree") 75*ec63e07aSXin Liset(SAPI_BUILD_EXAMPLES ${SAPI_UV_ENABLE_EXAMPLES} CACHE BOOL "" FORCE) 76*ec63e07aSXin Liset(SAPI_BUILD_TESTING ${SAPI_UV_ENABLE_TESTS} CACHE BOOL "" FORCE) 77*ec63e07aSXin Li 78*ec63e07aSXin Li# Generate SAPI header 79*ec63e07aSXin Liadd_sapi_library(uv_sapi 80*ec63e07aSXin Li 81*ec63e07aSXin Li # List of all the generated methods 82*ec63e07aSXin Li FUNCTIONS sapi_uv_accept 83*ec63e07aSXin Li sapi_uv_async_init 84*ec63e07aSXin Li sapi_uv_async_send 85*ec63e07aSXin Li sapi_uv_backend_fd 86*ec63e07aSXin Li sapi_uv_backend_timeout 87*ec63e07aSXin Li sapi_uv_barrier_destroy 88*ec63e07aSXin Li sapi_uv_barrier_init 89*ec63e07aSXin Li sapi_uv_barrier_wait 90*ec63e07aSXin Li # TODO(cblichmann): sapi_uv_buf_init 91*ec63e07aSXin Li sapi_uv_cancel 92*ec63e07aSXin Li sapi_uv_chdir 93*ec63e07aSXin Li sapi_uv_check_init 94*ec63e07aSXin Li sapi_uv_check_start 95*ec63e07aSXin Li sapi_uv_check_stop 96*ec63e07aSXin Li sapi_uv_close 97*ec63e07aSXin Li sapi_uv_cond_broadcast 98*ec63e07aSXin Li sapi_uv_cond_destroy 99*ec63e07aSXin Li sapi_uv_cond_init 100*ec63e07aSXin Li sapi_uv_cond_signal 101*ec63e07aSXin Li sapi_uv_cond_timedwait 102*ec63e07aSXin Li sapi_uv_cond_wait 103*ec63e07aSXin Li sapi_uv_cpu_info 104*ec63e07aSXin Li sapi_uv_cwd 105*ec63e07aSXin Li sapi_uv_default_loop 106*ec63e07aSXin Li sapi_uv_disable_stdio_inheritance 107*ec63e07aSXin Li sapi_uv_dlclose 108*ec63e07aSXin Li sapi_uv_dlerror 109*ec63e07aSXin Li sapi_uv_dlopen 110*ec63e07aSXin Li sapi_uv_dlsym 111*ec63e07aSXin Li sapi_uv_err_name 112*ec63e07aSXin Li sapi_uv_err_name_r 113*ec63e07aSXin Li sapi_uv_exepath 114*ec63e07aSXin Li sapi_uv_fileno 115*ec63e07aSXin Li sapi_uv_free_cpu_info 116*ec63e07aSXin Li sapi_uv_free_interface_addresses 117*ec63e07aSXin Li sapi_uv_freeaddrinfo 118*ec63e07aSXin Li sapi_uv_fs_access 119*ec63e07aSXin Li sapi_uv_fs_chmod 120*ec63e07aSXin Li sapi_uv_fs_chown 121*ec63e07aSXin Li sapi_uv_fs_close 122*ec63e07aSXin Li sapi_uv_fs_closedir 123*ec63e07aSXin Li sapi_uv_fs_copyfile 124*ec63e07aSXin Li sapi_uv_fs_event_getpath 125*ec63e07aSXin Li sapi_uv_fs_event_init 126*ec63e07aSXin Li sapi_uv_fs_event_start 127*ec63e07aSXin Li sapi_uv_fs_event_stop 128*ec63e07aSXin Li sapi_uv_fs_fchmod 129*ec63e07aSXin Li sapi_uv_fs_fchown 130*ec63e07aSXin Li sapi_uv_fs_fdatasync 131*ec63e07aSXin Li sapi_uv_fs_fstat 132*ec63e07aSXin Li sapi_uv_fs_fsync 133*ec63e07aSXin Li sapi_uv_fs_ftruncate 134*ec63e07aSXin Li sapi_uv_fs_futime 135*ec63e07aSXin Li sapi_uv_fs_get_path 136*ec63e07aSXin Li sapi_uv_fs_get_ptr 137*ec63e07aSXin Li sapi_uv_fs_get_result 138*ec63e07aSXin Li sapi_uv_fs_get_statbuf 139*ec63e07aSXin Li sapi_uv_fs_get_system_error 140*ec63e07aSXin Li sapi_uv_fs_get_type 141*ec63e07aSXin Li sapi_uv_fs_lchown 142*ec63e07aSXin Li sapi_uv_fs_link 143*ec63e07aSXin Li sapi_uv_fs_lstat 144*ec63e07aSXin Li sapi_uv_fs_lutime 145*ec63e07aSXin Li sapi_uv_fs_mkdir 146*ec63e07aSXin Li sapi_uv_fs_mkdtemp 147*ec63e07aSXin Li sapi_uv_fs_mkstemp 148*ec63e07aSXin Li sapi_uv_fs_open 149*ec63e07aSXin Li sapi_uv_fs_opendir 150*ec63e07aSXin Li sapi_uv_fs_poll_getpath 151*ec63e07aSXin Li sapi_uv_fs_poll_init 152*ec63e07aSXin Li sapi_uv_fs_poll_start 153*ec63e07aSXin Li sapi_uv_fs_poll_stop 154*ec63e07aSXin Li sapi_uv_fs_read 155*ec63e07aSXin Li sapi_uv_fs_readdir 156*ec63e07aSXin Li sapi_uv_fs_readlink 157*ec63e07aSXin Li sapi_uv_fs_realpath 158*ec63e07aSXin Li sapi_uv_fs_rename 159*ec63e07aSXin Li sapi_uv_fs_req_cleanup 160*ec63e07aSXin Li sapi_uv_fs_rmdir 161*ec63e07aSXin Li sapi_uv_fs_scandir 162*ec63e07aSXin Li sapi_uv_fs_scandir_next 163*ec63e07aSXin Li sapi_uv_fs_sendfile 164*ec63e07aSXin Li sapi_uv_fs_stat 165*ec63e07aSXin Li sapi_uv_fs_statfs 166*ec63e07aSXin Li sapi_uv_fs_symlink 167*ec63e07aSXin Li sapi_uv_fs_unlink 168*ec63e07aSXin Li sapi_uv_fs_utime 169*ec63e07aSXin Li sapi_uv_fs_write 170*ec63e07aSXin Li sapi_uv_get_constrained_memory 171*ec63e07aSXin Li sapi_uv_get_free_memory 172*ec63e07aSXin Li sapi_uv_get_osfhandle 173*ec63e07aSXin Li sapi_uv_get_process_title 174*ec63e07aSXin Li sapi_uv_get_total_memory 175*ec63e07aSXin Li sapi_uv_getaddrinfo 176*ec63e07aSXin Li sapi_uv_getnameinfo 177*ec63e07aSXin Li sapi_uv_getrusage 178*ec63e07aSXin Li sapi_uv_gettimeofday 179*ec63e07aSXin Li sapi_uv_guess_handle 180*ec63e07aSXin Li sapi_uv_handle_get_data 181*ec63e07aSXin Li sapi_uv_handle_get_loop 182*ec63e07aSXin Li sapi_uv_handle_get_type 183*ec63e07aSXin Li sapi_uv_handle_set_data 184*ec63e07aSXin Li sapi_uv_handle_size 185*ec63e07aSXin Li sapi_uv_handle_type_name 186*ec63e07aSXin Li sapi_uv_has_ref 187*ec63e07aSXin Li sapi_uv_hrtime 188*ec63e07aSXin Li sapi_uv_idle_init 189*ec63e07aSXin Li sapi_uv_idle_start 190*ec63e07aSXin Li sapi_uv_idle_stop 191*ec63e07aSXin Li sapi_uv_if_indextoiid 192*ec63e07aSXin Li sapi_uv_if_indextoname 193*ec63e07aSXin Li sapi_uv_inet_ntop 194*ec63e07aSXin Li sapi_uv_inet_pton 195*ec63e07aSXin Li sapi_uv_interface_addresses 196*ec63e07aSXin Li sapi_uv_ip4_addr 197*ec63e07aSXin Li sapi_uv_ip4_name 198*ec63e07aSXin Li sapi_uv_ip6_addr 199*ec63e07aSXin Li sapi_uv_ip6_name 200*ec63e07aSXin Li sapi_uv_is_active 201*ec63e07aSXin Li sapi_uv_is_closing 202*ec63e07aSXin Li sapi_uv_is_readable 203*ec63e07aSXin Li sapi_uv_is_writable 204*ec63e07aSXin Li sapi_uv_key_create 205*ec63e07aSXin Li sapi_uv_key_delete 206*ec63e07aSXin Li sapi_uv_key_get 207*ec63e07aSXin Li sapi_uv_key_set 208*ec63e07aSXin Li sapi_uv_kill 209*ec63e07aSXin Li sapi_uv_library_shutdown 210*ec63e07aSXin Li sapi_uv_listen 211*ec63e07aSXin Li sapi_uv_loadavg 212*ec63e07aSXin Li sapi_uv_loop_alive 213*ec63e07aSXin Li sapi_uv_loop_close 214*ec63e07aSXin Li sapi_uv_loop_configure 215*ec63e07aSXin Li sapi_uv_loop_configure_int 216*ec63e07aSXin Li sapi_uv_loop_delete 217*ec63e07aSXin Li sapi_uv_loop_fork 218*ec63e07aSXin Li sapi_uv_loop_get_data 219*ec63e07aSXin Li sapi_uv_loop_init 220*ec63e07aSXin Li sapi_uv_loop_new 221*ec63e07aSXin Li sapi_uv_loop_set_data 222*ec63e07aSXin Li sapi_uv_loop_size 223*ec63e07aSXin Li sapi_uv_metrics_idle_time 224*ec63e07aSXin Li sapi_uv_mutex_destroy 225*ec63e07aSXin Li sapi_uv_mutex_init 226*ec63e07aSXin Li sapi_uv_mutex_init_recursive 227*ec63e07aSXin Li sapi_uv_mutex_lock 228*ec63e07aSXin Li sapi_uv_mutex_trylock 229*ec63e07aSXin Li sapi_uv_mutex_unlock 230*ec63e07aSXin Li sapi_uv_now 231*ec63e07aSXin Li sapi_uv_once 232*ec63e07aSXin Li sapi_uv_open_osfhandle 233*ec63e07aSXin Li sapi_uv_os_environ 234*ec63e07aSXin Li sapi_uv_os_free_environ 235*ec63e07aSXin Li sapi_uv_os_free_passwd 236*ec63e07aSXin Li sapi_uv_os_get_passwd 237*ec63e07aSXin Li sapi_uv_os_getenv 238*ec63e07aSXin Li sapi_uv_os_gethostname 239*ec63e07aSXin Li sapi_uv_os_getpid 240*ec63e07aSXin Li sapi_uv_os_getppid 241*ec63e07aSXin Li sapi_uv_os_getpriority 242*ec63e07aSXin Li sapi_uv_os_homedir 243*ec63e07aSXin Li sapi_uv_os_setenv 244*ec63e07aSXin Li sapi_uv_os_setpriority 245*ec63e07aSXin Li sapi_uv_os_tmpdir 246*ec63e07aSXin Li sapi_uv_os_uname 247*ec63e07aSXin Li sapi_uv_os_unsetenv 248*ec63e07aSXin Li sapi_uv_pipe_bind 249*ec63e07aSXin Li sapi_uv_pipe_chmod 250*ec63e07aSXin Li sapi_uv_pipe_connect 251*ec63e07aSXin Li sapi_uv_pipe_getpeername 252*ec63e07aSXin Li sapi_uv_pipe_getsockname 253*ec63e07aSXin Li sapi_uv_pipe_init 254*ec63e07aSXin Li sapi_uv_pipe_open 255*ec63e07aSXin Li sapi_uv_pipe_pending_count 256*ec63e07aSXin Li sapi_uv_pipe_pending_instances 257*ec63e07aSXin Li sapi_uv_pipe_pending_type 258*ec63e07aSXin Li sapi_uv_poll_init 259*ec63e07aSXin Li sapi_uv_poll_init_socket 260*ec63e07aSXin Li sapi_uv_poll_start 261*ec63e07aSXin Li sapi_uv_poll_stop 262*ec63e07aSXin Li sapi_uv_prepare_init 263*ec63e07aSXin Li sapi_uv_prepare_start 264*ec63e07aSXin Li sapi_uv_prepare_stop 265*ec63e07aSXin Li sapi_uv_print_active_handles 266*ec63e07aSXin Li sapi_uv_print_all_handles 267*ec63e07aSXin Li sapi_uv_process_get_pid 268*ec63e07aSXin Li sapi_uv_process_kill 269*ec63e07aSXin Li sapi_uv_queue_work 270*ec63e07aSXin Li sapi_uv_random 271*ec63e07aSXin Li sapi_uv_read_start 272*ec63e07aSXin Li sapi_uv_read_stop 273*ec63e07aSXin Li sapi_uv_recv_buffer_size 274*ec63e07aSXin Li sapi_uv_ref 275*ec63e07aSXin Li sapi_uv_replace_allocator 276*ec63e07aSXin Li sapi_uv_req_get_data 277*ec63e07aSXin Li sapi_uv_req_get_type 278*ec63e07aSXin Li sapi_uv_req_set_data 279*ec63e07aSXin Li sapi_uv_req_size 280*ec63e07aSXin Li sapi_uv_req_type_name 281*ec63e07aSXin Li sapi_uv_resident_set_memory 282*ec63e07aSXin Li sapi_uv_run 283*ec63e07aSXin Li sapi_uv_rwlock_destroy 284*ec63e07aSXin Li sapi_uv_rwlock_init 285*ec63e07aSXin Li sapi_uv_rwlock_rdlock 286*ec63e07aSXin Li sapi_uv_rwlock_rdunlock 287*ec63e07aSXin Li sapi_uv_rwlock_tryrdlock 288*ec63e07aSXin Li sapi_uv_rwlock_trywrlock 289*ec63e07aSXin Li sapi_uv_rwlock_wrlock 290*ec63e07aSXin Li sapi_uv_rwlock_wrunlock 291*ec63e07aSXin Li sapi_uv_sem_destroy 292*ec63e07aSXin Li sapi_uv_sem_init 293*ec63e07aSXin Li sapi_uv_sem_post 294*ec63e07aSXin Li sapi_uv_sem_trywait 295*ec63e07aSXin Li sapi_uv_sem_wait 296*ec63e07aSXin Li sapi_uv_send_buffer_size 297*ec63e07aSXin Li sapi_uv_set_process_title 298*ec63e07aSXin Li sapi_uv_setup_args 299*ec63e07aSXin Li sapi_uv_shutdown 300*ec63e07aSXin Li sapi_uv_signal_init 301*ec63e07aSXin Li sapi_uv_signal_start 302*ec63e07aSXin Li sapi_uv_signal_start_oneshot 303*ec63e07aSXin Li sapi_uv_signal_stop 304*ec63e07aSXin Li sapi_uv_sleep 305*ec63e07aSXin Li sapi_uv_spawn 306*ec63e07aSXin Li sapi_uv_stop 307*ec63e07aSXin Li sapi_uv_stream_get_write_queue_size 308*ec63e07aSXin Li sapi_uv_stream_set_blocking 309*ec63e07aSXin Li sapi_uv_strerror 310*ec63e07aSXin Li sapi_uv_strerror_r 311*ec63e07aSXin Li sapi_uv_tcp_bind 312*ec63e07aSXin Li sapi_uv_tcp_close_reset 313*ec63e07aSXin Li sapi_uv_tcp_connect 314*ec63e07aSXin Li sapi_uv_tcp_getpeername 315*ec63e07aSXin Li sapi_uv_tcp_getsockname 316*ec63e07aSXin Li sapi_uv_tcp_init 317*ec63e07aSXin Li sapi_uv_tcp_init_ex 318*ec63e07aSXin Li sapi_uv_tcp_keepalive 319*ec63e07aSXin Li sapi_uv_tcp_nodelay 320*ec63e07aSXin Li sapi_uv_tcp_open 321*ec63e07aSXin Li sapi_uv_tcp_simultaneous_accepts 322*ec63e07aSXin Li sapi_uv_thread_create 323*ec63e07aSXin Li sapi_uv_thread_create_ex 324*ec63e07aSXin Li sapi_uv_thread_equal 325*ec63e07aSXin Li sapi_uv_thread_join 326*ec63e07aSXin Li sapi_uv_thread_self 327*ec63e07aSXin Li sapi_uv_timer_again 328*ec63e07aSXin Li sapi_uv_timer_get_due_in 329*ec63e07aSXin Li sapi_uv_timer_get_repeat 330*ec63e07aSXin Li sapi_uv_timer_init 331*ec63e07aSXin Li sapi_uv_timer_set_repeat 332*ec63e07aSXin Li sapi_uv_timer_start 333*ec63e07aSXin Li sapi_uv_timer_stop 334*ec63e07aSXin Li sapi_uv_translate_sys_error 335*ec63e07aSXin Li sapi_uv_try_write 336*ec63e07aSXin Li sapi_uv_tty_get_vterm_state 337*ec63e07aSXin Li sapi_uv_tty_get_winsize 338*ec63e07aSXin Li sapi_uv_tty_init 339*ec63e07aSXin Li sapi_uv_tty_reset_mode 340*ec63e07aSXin Li sapi_uv_tty_set_mode 341*ec63e07aSXin Li sapi_uv_tty_set_vterm_state 342*ec63e07aSXin Li sapi_uv_udp_bind 343*ec63e07aSXin Li sapi_uv_udp_connect 344*ec63e07aSXin Li sapi_uv_udp_get_send_queue_count 345*ec63e07aSXin Li sapi_uv_udp_get_send_queue_size 346*ec63e07aSXin Li sapi_uv_udp_getpeername 347*ec63e07aSXin Li sapi_uv_udp_getsockname 348*ec63e07aSXin Li sapi_uv_udp_init 349*ec63e07aSXin Li sapi_uv_udp_init_ex 350*ec63e07aSXin Li sapi_uv_udp_open 351*ec63e07aSXin Li sapi_uv_udp_recv_start 352*ec63e07aSXin Li sapi_uv_udp_recv_stop 353*ec63e07aSXin Li sapi_uv_udp_send 354*ec63e07aSXin Li sapi_uv_udp_set_broadcast 355*ec63e07aSXin Li sapi_uv_udp_set_membership 356*ec63e07aSXin Li sapi_uv_udp_set_multicast_interface 357*ec63e07aSXin Li sapi_uv_udp_set_multicast_loop 358*ec63e07aSXin Li sapi_uv_udp_set_multicast_ttl 359*ec63e07aSXin Li sapi_uv_udp_set_source_membership 360*ec63e07aSXin Li sapi_uv_udp_set_ttl 361*ec63e07aSXin Li sapi_uv_udp_try_send 362*ec63e07aSXin Li sapi_uv_udp_using_recvmmsg 363*ec63e07aSXin Li sapi_uv_unref 364*ec63e07aSXin Li sapi_uv_update_time 365*ec63e07aSXin Li sapi_uv_uptime 366*ec63e07aSXin Li sapi_uv_version 367*ec63e07aSXin Li sapi_uv_version_string 368*ec63e07aSXin Li sapi_uv_walk 369*ec63e07aSXin Li sapi_uv_write 370*ec63e07aSXin Li sapi_uv_write2 371*ec63e07aSXin Li 372*ec63e07aSXin Li INPUTS "${CMAKE_BINARY_DIR}/uv_wrapper/uv_wrapper.h" 373*ec63e07aSXin Li 374*ec63e07aSXin Li LIBRARY uv_wrapper_and_callbacks 375*ec63e07aSXin Li 376*ec63e07aSXin Li LIBRARY_NAME UV 377*ec63e07aSXin Li 378*ec63e07aSXin Li NAMESPACE uv 379*ec63e07aSXin Li) 380*ec63e07aSXin Li 381*ec63e07aSXin Li# Include generated SAPI header 382*ec63e07aSXin Litarget_include_directories(uv_sapi INTERFACE 383*ec63e07aSXin Li "${PROJECT_BINARY_DIR}" 384*ec63e07aSXin Li) 385*ec63e07aSXin Li 386*ec63e07aSXin Li# Add examples 387*ec63e07aSXin Liif (SAPI_UV_ENABLE_EXAMPLES) 388*ec63e07aSXin Li add_subdirectory(examples) 389*ec63e07aSXin Liendif() 390*ec63e07aSXin Li 391*ec63e07aSXin Li# Add tests 392*ec63e07aSXin Liif (SAPI_UV_ENABLE_TESTS) 393*ec63e07aSXin Li add_subdirectory(tests) 394*ec63e07aSXin Liendif() 395