11b5d61b8Smrgsrcs_os = [ 21b5d61b8Smrg 'WaitFor.c', 31b5d61b8Smrg 'access.c', 41b5d61b8Smrg 'auth.c', 51b5d61b8Smrg 'backtrace.c', 61b5d61b8Smrg 'client.c', 71b5d61b8Smrg 'connection.c', 81b5d61b8Smrg 'inputthread.c', 91b5d61b8Smrg 'io.c', 101b5d61b8Smrg 'mitauth.c', 111b5d61b8Smrg 'oscolor.c', 121b5d61b8Smrg 'osinit.c', 131b5d61b8Smrg 'ospoll.c', 141b5d61b8Smrg 'utils.c', 151b5d61b8Smrg 'xdmauth.c', 161b5d61b8Smrg 'xsha1.c', 171b5d61b8Smrg 'xstrans.c', 181b5d61b8Smrg 'xprintf.c', 191b5d61b8Smrg 'log.c', 201b5d61b8Smrg] 211b5d61b8Smrg 22ed6184dfSmrg# Wrapper code for missing C library functions. Note that conf_data contains either '1' or false. 231b5d61b8Smrgsrcs_libc = [] 24ed6184dfSmrgif conf_data.get('HAVE_REALLOCARRAY').to_int() == 0 251b5d61b8Smrg srcs_libc += 'reallocarray.c' 261b5d61b8Smrgendif 27ed6184dfSmrgif conf_data.get('HAVE_STRCASECMP').to_int() == 0 281b5d61b8Smrg srcs_libc += 'strcasecmp.c' 291b5d61b8Smrgendif 30ed6184dfSmrgif conf_data.get('HAVE_STRCASESTR').to_int() == 0 311b5d61b8Smrg srcs_libc += 'strcasestr.c' 321b5d61b8Smrgendif 33ed6184dfSmrgif conf_data.get('HAVE_STRLCAT').to_int() == 0 341b5d61b8Smrg srcs_libc += 'strlcat.c' 351b5d61b8Smrgendif 36ed6184dfSmrgif conf_data.get('HAVE_STRLCPY').to_int() == 0 371b5d61b8Smrg srcs_libc += 'strlcpy.c' 381b5d61b8Smrgendif 39ed6184dfSmrgif conf_data.get('HAVE_STRNDUP').to_int() == 0 401b5d61b8Smrg srcs_libc += 'strndup.c' 411b5d61b8Smrgendif 42ed6184dfSmrgif conf_data.get('HAVE_TIMINGSAFE_MEMCMP').to_int() == 0 431b5d61b8Smrg srcs_libc += 'timingsafe_memcmp.c' 441b5d61b8Smrgendif 45ed6184dfSmrgif conf_data.get('HAVE_POLL').to_int() == 0 461b5d61b8Smrg srcs_os += 'xserver_poll.c' 471b5d61b8Smrgendif 481b5d61b8Smrg 49ed6184dfSmrgif conf_data.get('BUSFAULT').to_int() != 0 501b5d61b8Smrg srcs_os += 'busfault.c' 511b5d61b8Smrgendif 521b5d61b8Smrg 531b5d61b8Smrgif get_option('xdmcp') 541b5d61b8Smrg srcs_os += 'xdmcp.c' 551b5d61b8Smrgendif 561b5d61b8Smrg 571b5d61b8Smrgrpc_dep = [] 581b5d61b8Smrgif get_option('secure-rpc') 591b5d61b8Smrg # prefer libtirpc (if available), otherwise ensure RPC functions are 601b5d61b8Smrg # provided by libc. 611b5d61b8Smrg rpc_dep = dependency('libtirpc', required: false) 621b5d61b8Smrg if not (rpc_dep.found() or cc.has_header('rpc/rpc.h')) 631b5d61b8Smrg error('secure-rpc requested, but neither libtirpc or libc RPC support were found') 641b5d61b8Smrg endif 65ed6184dfSmrg # XXX: also check if RPC library provides xdr_opaque_auth, authdes_(sec)create ??? 661b5d61b8Smrg srcs_os += 'rpcauth.c' 671b5d61b8Smrgendif 681b5d61b8Smrg 69ed6184dfSmrgos_dep = [] 70ed6184dfSmrgos_c_args = [] 71ed6184dfSmrgif get_option('xres') 72ed6184dfSmrg # Only the XRes extension cares about the client ID. 73ed6184dfSmrg os_c_args += '-DCLIENTIDS' 74ed6184dfSmrg if host_machine.system() == 'openbsd' 75ed6184dfSmrg os_dep += cc.find_library('kvm') 76ed6184dfSmrg endif 77ed6184dfSmrgendif 78ed6184dfSmrg 791b5d61b8Smrglibxlibc = [] 801b5d61b8Smrgif srcs_libc.length() > 0 811b5d61b8Smrg libxlibc = static_library('libxlibc', 821b5d61b8Smrg srcs_libc, 831b5d61b8Smrg include_directories: inc, 841b5d61b8Smrg dependencies: [ 851b5d61b8Smrg xproto_dep, 861b5d61b8Smrg ], 871b5d61b8Smrg ) 881b5d61b8Smrgendif 891b5d61b8Smrg 90ed6184dfSmrgif enable_input_thread 91ed6184dfSmrg os_dep += cc.find_library('pthread') 92ed6184dfSmrgendif 93ed6184dfSmrg 941b5d61b8Smrglibxserver_os = static_library('libxserver_os', 951b5d61b8Smrg srcs_os, 961b5d61b8Smrg include_directories: inc, 971b5d61b8Smrg dependencies: [ 98ed6184dfSmrg dtrace_dep, 991b5d61b8Smrg common_dep, 1001b5d61b8Smrg dl_dep, 1011b5d61b8Smrg sha1_dep, 1021b5d61b8Smrg rpc_dep, 103ed6184dfSmrg os_dep, 1041b5d61b8Smrg dependency('xau') 1051b5d61b8Smrg ], 106ed6184dfSmrg c_args: os_c_args, 1071b5d61b8Smrg link_with: libxlibc, 1081b5d61b8Smrg) 109