11b5d61b8Smrgproject('xserver', 'c', 21b5d61b8Smrg default_options: [ 31b5d61b8Smrg 'buildtype=debugoptimized', 41b5d61b8Smrg 'c_std=gnu99', 51b5d61b8Smrg ], 654b5899cSmrg version: '21.1.18', 7ed6184dfSmrg meson_version: '>= 0.47.0', 81b5d61b8Smrg) 954b5899cSmrgrelease_date = '2025-06-18' 10ed6184dfSmrg 11ed6184dfSmrgadd_project_arguments('-DHAVE_DIX_CONFIG_H', language: ['c', 'objc']) 121b5d61b8Smrgcc = meson.get_compiler('c') 131b5d61b8Smrg 141b5d61b8Smrgadd_global_arguments('-fno-strict-aliasing', language : 'c') 151b5d61b8Smrgadd_global_arguments('-fvisibility=hidden', language : 'c') 161b5d61b8Smrg 171b5d61b8Smrgadd_global_link_arguments('-fvisibility=hidden', language : 'c') 181b5d61b8Smrg 191b5d61b8Smrgif cc.get_id() == 'gcc' or cc.get_id() == 'clang' 201b5d61b8Smrg test_wflags = [ 211b5d61b8Smrg '-Wall', 221b5d61b8Smrg '-Wpointer-arith', 231b5d61b8Smrg '-Wmissing-declarations', 241b5d61b8Smrg '-Wformat=2', 251b5d61b8Smrg '-Wstrict-prototypes', 261b5d61b8Smrg '-Wmissing-prototypes', 271b5d61b8Smrg '-Wnested-externs', 281b5d61b8Smrg '-Wbad-function-cast', 291b5d61b8Smrg '-Wold-style-definition', 301b5d61b8Smrg '-Wunused', 311b5d61b8Smrg '-Wuninitialized', 321b5d61b8Smrg '-Wshadow', 331b5d61b8Smrg '-Wmissing-noreturn', 341b5d61b8Smrg '-Wmissing-format-attribute', 351b5d61b8Smrg '-Wredundant-decls', 361b5d61b8Smrg '-Werror=implicit', 371b5d61b8Smrg '-Werror=nonnull', 381b5d61b8Smrg '-Werror=init-self', 391b5d61b8Smrg '-Werror=main', 401b5d61b8Smrg '-Werror=missing-braces', 411b5d61b8Smrg '-Werror=sequence-point', 421b5d61b8Smrg '-Werror=return-type', 431b5d61b8Smrg '-Werror=trigraphs', 441b5d61b8Smrg '-Werror=array-bounds', 451b5d61b8Smrg '-Werror=write-strings', 461b5d61b8Smrg '-Werror=address', 471b5d61b8Smrg '-Werror=int-to-pointer-cast', 481b5d61b8Smrg '-Werror=pointer-to-int-cast', 491b5d61b8Smrg ] 501b5d61b8Smrgelse 511b5d61b8Smrg test_wflags = [] 521b5d61b8Smrgendif 531b5d61b8Smrg 541b5d61b8Smrgcommon_wflags = [] 551b5d61b8Smrgforeach wflag: test_wflags 561b5d61b8Smrg if cc.has_argument(wflag) 571b5d61b8Smrg common_wflags += [ wflag ] 581b5d61b8Smrg endif 591b5d61b8Smrgendforeach 601b5d61b8Smrg 61ed6184dfSmrgadd_global_arguments(common_wflags, language : ['c', 'objc']) 62ed6184dfSmrg 63ed6184dfSmrglibdrm_req = '>= 2.4.89' 64ed6184dfSmrglibselinux_req = '>= 2.0.86' 65ed6184dfSmrgxext_req = '>= 1.0.99.4' 66ed6184dfSmrgwayland_req = '>= 1.5.0' 67ed6184dfSmrgwayland_protocols_req = '>= 1.18' 68ed6184dfSmrggbm_req = '>= 10.2' 69ed6184dfSmrgxf86dgaproto_req = '>= 2.0.99.1' 70ed6184dfSmrg 71ed6184dfSmrgxproto_dep = dependency('xproto', version: '>= 7.0.31', fallback: ['xorgproto', 'ext_xorgproto']) 72ed6184dfSmrgrandrproto_dep = dependency('randrproto', version: '>= 1.6.0', fallback: ['xorgproto', 'ext_xorgproto']) 73ed6184dfSmrgrenderproto_dep = dependency('renderproto', version: '>= 0.11', fallback: ['xorgproto', 'ext_xorgproto']) 74ed6184dfSmrgxextproto_dep = dependency('xextproto', version: '>= 7.2.99.901', fallback: ['xorgproto', 'ext_xorgproto']) 75ed6184dfSmrginputproto_dep = dependency('inputproto', version: '>= 2.3.99.1', fallback: ['xorgproto', 'ext_xorgproto']) 76ed6184dfSmrgkbproto_dep = dependency('kbproto', version: '>= 1.0.3', fallback: ['xorgproto', 'ext_xorgproto']) 77ed6184dfSmrgfontsproto_dep = dependency('fontsproto', version: '>= 2.1.3', fallback: ['xorgproto', 'ext_xorgproto']) 78ed6184dfSmrgfixesproto_dep = dependency('fixesproto', version: '>= 6.0', fallback: ['xorgproto', 'ext_xorgproto']) 79ed6184dfSmrgdamageproto_dep = dependency('damageproto', version: '>= 1.1', fallback: ['xorgproto', 'ext_xorgproto']) 80ed6184dfSmrgxcmiscproto_dep = dependency('xcmiscproto', version: '>= 1.2.0', fallback: ['xorgproto', 'ext_xorgproto']) 81ed6184dfSmrgbigreqsproto_dep = dependency('bigreqsproto', version: '>= 1.1.0', fallback: ['xorgproto', 'ext_xorgproto']) 821b5d61b8Smrgxtrans_dep = dependency('xtrans', version: '>= 1.3.5') 831b5d61b8Smrg 84ed6184dfSmrgvideoproto_dep = dependency('videoproto', fallback: ['xorgproto', 'ext_xorgproto']) 85ed6184dfSmrgcompositeproto_dep = dependency('compositeproto', version: '>= 0.4', fallback: ['xorgproto', 'ext_xorgproto']) 86ed6184dfSmrgrecordproto_dep = dependency('recordproto', version: '>= 1.13.99.1', fallback: ['xorgproto', 'ext_xorgproto']) 87ed6184dfSmrgscrnsaverproto_dep = dependency('scrnsaverproto', version: '>= 1.1', fallback: ['xorgproto', 'ext_xorgproto']) 88ed6184dfSmrgresourceproto_dep = dependency('resourceproto', version: '>= 1.2.0', fallback: ['xorgproto', 'ext_xorgproto']) 89ed6184dfSmrgxf86driproto_dep = dependency('xf86driproto', version: '>= 2.1.0', fallback: ['xorgproto', 'ext_xorgproto'], required: get_option('dri1') == 'true') 90ed6184dfSmrgdri2proto_dep = dependency('dri2proto', version: '>= 2.8', fallback: ['xorgproto', 'ext_xorgproto'], required: get_option('dri2') == 'true') 91ed6184dfSmrgdri3proto_dep = dependency('dri3proto', version: '>= 1.2', fallback: ['xorgproto', 'ext_xorgproto'], required: get_option('dri3') == 'true') 92ed6184dfSmrgxineramaproto_dep = dependency('xineramaproto', fallback: ['xorgproto', 'ext_xorgproto']) 93ed6184dfSmrgxf86bigfontproto_dep = dependency('xf86bigfontproto', version: '>= 1.2.0', fallback: ['xorgproto', 'ext_xorgproto'], required: get_option('xf86bigfont')) 94ed6184dfSmrgxf86vidmodeproto_dep = dependency('xf86vidmodeproto', version: '>= 2.2.99.1', fallback: ['xorgproto', 'ext_xorgproto']) 95ed6184dfSmrgapplewmproto_dep = dependency('applewmproto', version: '>= 1.4', fallback: ['xorgproto', 'ext_xorgproto'], required: false) 961b5d61b8Smrgxshmfence_dep = dependency('xshmfence', version: '>= 1.1', required: false) 971b5d61b8Smrg 981b5d61b8Smrgpixman_dep = dependency('pixman-1') 99eee80088Smrglibbsd_dep = dependency('libbsd-overlay', required: false) 1001b5d61b8Smrgxkbcomp_dep = dependency('xkbcomp', required: false) 1011b5d61b8Smrgxkbfile_dep = dependency('xkbfile') 1021b5d61b8Smrgxfont2_dep = dependency('xfont2', version: '>= 2.0') 1031b5d61b8Smrg 1041b5d61b8Smrgdbus_required = get_option('systemd_logind') == 'true' 1051b5d61b8Smrgdbus_dep = dependency('dbus-1', version: '>= 1.0', required: dbus_required) 1061b5d61b8Smrg 107ed6184dfSmrg# libsystemd-daemon was moved into libsystemd in version 209 108ed6184dfSmrglibsystemd_daemon_dep = dependency('libsystemd', version: '>= 209', required: false) 109ed6184dfSmrgif not libsystemd_daemon_dep.found() 110ed6184dfSmrg libsystemd_daemon_dep = dependency('libsystemd-daemon', required: false) 111ed6184dfSmrgendif 112ed6184dfSmrg 1131b5d61b8Smrgbuild_hashtable = false 1141b5d61b8Smrg 1151b5d61b8Smrg# Resolve default values of some options 1161b5d61b8Smrgxkb_dir = get_option('xkb_dir') 1171b5d61b8Smrgif xkb_dir == '' 118ed6184dfSmrg if xkbcomp_dep.found() and xkbcomp_dep.type_name() == 'pkgconfig' 119ed6184dfSmrg xkb_dir = xkbcomp_dep.get_pkgconfig_variable('xkbconfigdir') 120ed6184dfSmrg endif 1211b5d61b8Smrg if xkb_dir == '' 1221b5d61b8Smrg xkb_dir = join_paths(get_option('prefix'), 'share/X11/xkb') 1231b5d61b8Smrg endif 1241b5d61b8Smrgendif 1251b5d61b8Smrg 1261b5d61b8Smrgxkb_output_dir = get_option('xkb_output_dir') 1271b5d61b8Smrgif xkb_output_dir == '' 1281b5d61b8Smrg xkb_output_dir = join_paths(xkb_dir, 'compiled') 1291b5d61b8Smrgendif 1301b5d61b8Smrg 1311b5d61b8Smrgxkb_bin_dir = get_option('xkb_bin_dir') 1321b5d61b8Smrgif xkb_bin_dir == '' 133ed6184dfSmrg if xkbcomp_dep.found() and xkbcomp_dep.type_name() == 'pkgconfig' 134ed6184dfSmrg xkb_bin_dir = xkbcomp_dep.get_pkgconfig_variable('bindir') 135ed6184dfSmrg endif 1361b5d61b8Smrg if xkb_bin_dir == '' 1371b5d61b8Smrg xkb_bin_dir = join_paths(get_option('prefix'), get_option('bindir')) 1381b5d61b8Smrg endif 1391b5d61b8Smrgendif 1401b5d61b8Smrg 1411b5d61b8Smrgdfp = get_option('default_font_path') 1421b5d61b8Smrgif dfp == '' 1431b5d61b8Smrg fontutil_dep = dependency('fontutil') 1441b5d61b8Smrg fontrootdir = fontutil_dep.get_pkgconfig_variable('fontrootdir') 145ed6184dfSmrg dfp_elements = [ 1461b5d61b8Smrg join_paths(fontrootdir, 'misc'), 1471b5d61b8Smrg join_paths(fontrootdir, 'TTF'), 1481b5d61b8Smrg join_paths(fontrootdir, 'OTF'), 1491b5d61b8Smrg join_paths(fontrootdir, 'Type1'), 1501b5d61b8Smrg join_paths(fontrootdir, '100dpi'), 1511b5d61b8Smrg join_paths(fontrootdir, '75dpi'), 152ed6184dfSmrg ] 153ed6184dfSmrg if host_machine.system() == 'darwin' 154ed6184dfSmrg dfp_elements += [ 155ed6184dfSmrg '/Library/Fonts', 156ed6184dfSmrg '/System/Library/Fonts', 157ed6184dfSmrg ] 158ed6184dfSmrg endif 159ed6184dfSmrg default_font_path = ','.join(dfp_elements) 1601b5d61b8Smrgelse 1611b5d61b8Smrg default_font_path = dfp 1621b5d61b8Smrgendif 1631b5d61b8Smrg 1641b5d61b8Smrghal_option = get_option('hal') 1651b5d61b8Smrgglamor_option = get_option('glamor') 1661b5d61b8Smrg 1671b5d61b8Smrgbuild_udev = get_option('udev') 168ed6184dfSmrgbuild_udev_kms = get_option('udev_kms') 169ed6184dfSmrgif ['windows', 'darwin', 'cygwin'].contains(host_machine.system()) 1701b5d61b8Smrg build_udev = false 171ed6184dfSmrg build_udev_kms = false 1721b5d61b8Smrg hal_option = 'false' 1731b5d61b8Smrgendif 1741b5d61b8Smrg 1751b5d61b8Smrgif get_option('systemd_logind') == 'auto' 176ed6184dfSmrg build_systemd_logind = build_udev_kms and dbus_dep.found() 1771b5d61b8Smrgelse 1781b5d61b8Smrg build_systemd_logind = get_option('systemd_logind') == 'true' 1791b5d61b8Smrgendif 1801b5d61b8Smrg 181ed6184dfSmrgwith_dtrace = get_option('dtrace') 182ed6184dfSmrgif with_dtrace 183ed6184dfSmrg dtrace = find_program('dtrace', required: true) 184ed6184dfSmrgendif 185ed6184dfSmrg 1861b5d61b8Smrgbuild_xorg = false 187dc61d50dSmrgif (host_machine.system() != 'windows') 1881b5d61b8Smrg if get_option('xorg') == 'auto' 1891b5d61b8Smrg build_xorg = (host_machine.system() != 'darwin' and 1901b5d61b8Smrg host_machine.system() != 'windows') 1911b5d61b8Smrg else 1921b5d61b8Smrg build_xorg = get_option('xorg') == 'true' 1931b5d61b8Smrg endif 1941b5d61b8Smrgendif 1951b5d61b8Smrgxorgsdkdir = join_paths(get_option('prefix'), get_option('includedir'), 'xorg') 196ed6184dfSmrglibxcvt_dep = dependency('libxcvt', required: build_xorg) 1971b5d61b8Smrg 1981b5d61b8Smrgbuild_xnest = false 199dc61d50dSmrgif (host_machine.system() != 'windows') 2001b5d61b8Smrg if get_option('xnest') != 'false' 2011b5d61b8Smrg xnest_required = get_option('xnest') == 'true' 2021b5d61b8Smrg 2031b5d61b8Smrg xnest_dep = [ 204ed6184dfSmrg dependency('xext', version: xext_req, required: xnest_required), 2051b5d61b8Smrg dependency('x11', required: xnest_required), 2061b5d61b8Smrg dependency('xau', required: xnest_required), 2071b5d61b8Smrg ] 2081b5d61b8Smrg 2091b5d61b8Smrg build_xnest = true 2101b5d61b8Smrg # check for all the deps being found, to handle 'auto' mode. 2111b5d61b8Smrg foreach d: xnest_dep 2121b5d61b8Smrg if not d.found() 2131b5d61b8Smrg build_xnest = false 2141b5d61b8Smrg endif 2151b5d61b8Smrg endforeach 2161b5d61b8Smrg endif 2171b5d61b8Smrgendif 2181b5d61b8Smrg 2191b5d61b8Smrgbuild_xwin = false 2201b5d61b8Smrgif get_option('xwin') == 'auto' 2211b5d61b8Smrg if (host_machine.system() == 'cygwin' or 2221b5d61b8Smrg host_machine.system() == 'windows') 2231b5d61b8Smrg build_xwin = true 2241b5d61b8Smrg endif 2251b5d61b8Smrgelse 2261b5d61b8Smrg build_xwin = get_option('xwin') == 'true' 2271b5d61b8Smrgendif 2281b5d61b8Smrg 2291b5d61b8Smrgbuild_xquartz = false 230ed6184dfSmrgif get_option('xquartz') == 'auto' 231ed6184dfSmrg if host_machine.system() == 'darwin' 232ed6184dfSmrg build_xquartz = true 233ed6184dfSmrg endif 234ed6184dfSmrgelse 235ed6184dfSmrg build_xquartz = get_option('xquartz') == 'true' 236ed6184dfSmrgendif 237ed6184dfSmrg 238ed6184dfSmrgbuild_rootless = false 239ed6184dfSmrgif build_xquartz 240ed6184dfSmrg build_rootless = true 241ed6184dfSmrgendif 2421b5d61b8Smrg 2431b5d61b8Smrgif get_option('ipv6') == 'auto' 2441b5d61b8Smrg build_ipv6 = cc.has_function('getaddrinfo') 2451b5d61b8Smrgelse 2461b5d61b8Smrg build_ipv6 = get_option('ipv6') == 'true' 2471b5d61b8Smrgendif 2481b5d61b8Smrg 2491b5d61b8Smrgint10 = get_option('int10') 2501b5d61b8Smrgif int10 == 'auto' 2511b5d61b8Smrg int10 = 'x86emu' 2521b5d61b8Smrg if host_machine.cpu() == 'powerpc' and host_machine.system() == 'freebsd' 2531b5d61b8Smrg int10 = 'stub' 2541b5d61b8Smrg endif 2551b5d61b8Smrg if host_machine.cpu() == 'arm' 2561b5d61b8Smrg int10 = 'stub' 2571b5d61b8Smrg endif 2581b5d61b8Smrgendif 2591b5d61b8Smrg 2601b5d61b8Smrghal_dep = [] 2611b5d61b8Smrgif hal_option == 'auto' 2621b5d61b8Smrg if not build_udev 2631b5d61b8Smrg hal_dep = dependency('hal', required: false) 2641b5d61b8Smrg build_hal = hal_dep.found() 2651b5d61b8Smrg else 2661b5d61b8Smrg build_hal = false 2671b5d61b8Smrg endif 2681b5d61b8Smrgelse 2691b5d61b8Smrg build_hal = hal_option == 'true' 2701b5d61b8Smrg if build_hal 2711b5d61b8Smrg hal_dep = dependency('hal') 2721b5d61b8Smrg endif 2731b5d61b8Smrgendif 2741b5d61b8Smrg 2751b5d61b8Smrgif build_udev and build_hal 2761b5d61b8Smrg error('Hotplugging through both libudev and hal not allowed') 2771b5d61b8Smrgendif 2781b5d61b8Smrg 2791b5d61b8Smrgbuild_dbus = build_hal or build_systemd_logind 2801b5d61b8Smrg 2811b5d61b8Smrgudev_dep = dependency('', required:false) 282ed6184dfSmrgif build_udev or build_udev_kms 2831b5d61b8Smrg udev_dep = dependency('libudev', version: '>= 143') 2841b5d61b8Smrgendif 2851b5d61b8Smrg 2861b5d61b8Smrglog_dir = get_option('log_dir') 2871b5d61b8Smrgif log_dir == '' 2881b5d61b8Smrg log_dir = join_paths(get_option('prefix'), get_option('localstatedir'), 'log') 2891b5d61b8Smrgendif 2901b5d61b8Smrg 2911b5d61b8Smrgmodule_dir = join_paths(get_option('libdir'), get_option('module_dir')) 2921b5d61b8Smrg 2931b5d61b8Smrgif glamor_option == 'auto' 294ed6184dfSmrg build_glamor = build_xorg 2951b5d61b8Smrgelse 296ed6184dfSmrg build_glamor = glamor_option == 'true' 2971b5d61b8Smrgendif 2981b5d61b8Smrg 2991b5d61b8Smrggbm_dep = dependency('', required: false) 3001b5d61b8Smrgepoxy_dep = dependency('', required: false) 3011b5d61b8Smrgif build_glamor 302ed6184dfSmrg gbm_dep = dependency('gbm', version: gbm_req, required: false) 3031b5d61b8Smrg epoxy_dep = dependency('epoxy', required: false) 3041b5d61b8Smrgendif 3051b5d61b8Smrg 306ed6184dfSmrg# Lots of sha1 options, because Linux is about choice :) 307ed6184dfSmrg 308ed6184dfSmrg# The idea behind the ordering here is that we should first prefer system 309ed6184dfSmrg# builtin providers, and then smaller implementations of over larger ones. 310ed6184dfSmrgtest_sha1 = [ 311ed6184dfSmrg 'libc', # libmd API is in libc on some BSDs 312ed6184dfSmrg 'CommonCrypto', # darwin API 313ed6184dfSmrg 'CryptoAPI', # windows API 314ed6184dfSmrg 'libmd', # other BSDs & Solaris 315ed6184dfSmrg 'libsha1', # "a tiny library providing a SHA1 implementation, created for facilitating X server compilation on embedded devices where larger libraries containing SHA1 implementations are not needed" 316ed6184dfSmrg 'libnettle', 317ed6184dfSmrg 'libgcrypt', # in debian base system 318ed6184dfSmrg 'libcrypto', 319ed6184dfSmrg] 320ed6184dfSmrg 321ed6184dfSmrgif get_option('sha1') != 'auto' 322ed6184dfSmrg test_sha1 = [get_option('sha1')] 323ed6184dfSmrgendif 324ed6184dfSmrg 325ed6184dfSmrgsha1_found = false 326ed6184dfSmrgforeach t : test_sha1 327ed6184dfSmrg if t == 'libc' 328ed6184dfSmrg if cc.has_function('SHA1Init') 329ed6184dfSmrg sha1_found = true 330ed6184dfSmrg sha1_dep = dependency('', required: false) 331ed6184dfSmrg endif 332ed6184dfSmrg elif t == 'CommonCrypto' 333ed6184dfSmrg if cc.has_function('CC_SHA1_Init') 334ed6184dfSmrg sha1_found = true 335ed6184dfSmrg sha1_dep = dependency('', required: false) 336ed6184dfSmrg endif 337ed6184dfSmrg elif t == 'CryptoAPI' 338ed6184dfSmrg if cc.has_header('wincrypt.h') 339ed6184dfSmrg sha1_found = true 340ed6184dfSmrg sha1_dep = dependency('', required: false) 341ed6184dfSmrg endif 342ed6184dfSmrg elif t == 'libmd' 343ed6184dfSmrg md_dep = cc.find_library('md', required: false) 344ed6184dfSmrg if md_dep.found() 345ed6184dfSmrg sha1_found = true 346ed6184dfSmrg sha1_dep = md_dep 347ed6184dfSmrg endif 348ed6184dfSmrg elif t == 'libsha1' 349ed6184dfSmrg libsha1_dep = dependency('libsha1', required: false) 350ed6184dfSmrg if libsha1_dep.found() 351ed6184dfSmrg sha1_found = true 352ed6184dfSmrg sha1_dep = libsha1_dep 353ed6184dfSmrg endif 354ed6184dfSmrg elif t == 'libnettle' 355ed6184dfSmrg nettle_dep = dependency('nettle', required: false) 356ed6184dfSmrg if nettle_dep.found() 357ed6184dfSmrg sha1_found = true 358ed6184dfSmrg sha1_dep = nettle_dep 359ed6184dfSmrg endif 360ed6184dfSmrg elif t == 'libgcrypt' 361ed6184dfSmrg gcrypt_dep = dependency('libgcrypt', required: false) 362ed6184dfSmrg if gcrypt_dep.found() 363ed6184dfSmrg sha1_found = true 364ed6184dfSmrg sha1_dep = gcrypt_dep 365ed6184dfSmrg endif 366ed6184dfSmrg elif t == 'libcrypto' 367ed6184dfSmrg # we don't need all of OpenSSL, just libcrypto 368ed6184dfSmrg libcrypto_dep = cc.find_library('crypto', required: false) 369ed6184dfSmrg openssl_dep = dependency('openssl', required: false) 370ed6184dfSmrg if libcrypto_dep.found() or openssl_dep.found() 371ed6184dfSmrg sha1_found = true 372ed6184dfSmrg if libcrypto_dep.found() 373ed6184dfSmrg sha1_dep = libcrypto_dep 374ed6184dfSmrg else 375ed6184dfSmrg sha1_dep = openssl_dep 376ed6184dfSmrg endif 3771b5d61b8Smrg endif 3781b5d61b8Smrg endif 379ed6184dfSmrg 380ed6184dfSmrg if sha1_found 381ed6184dfSmrg sha1 = t 382ed6184dfSmrg break 383ed6184dfSmrg endif 384ed6184dfSmrgendforeach 385ed6184dfSmrg 386ed6184dfSmrgif sha1_found 387ed6184dfSmrg message('Using @0@ SHA1 functions'.format(sha1)) 3881b5d61b8Smrgelse 389ed6184dfSmrg if get_option('sha1') != 'auto' 390ed6184dfSmrg error('@0@ SHA1 requested, but not found'.format(get_option('sha1'))) 391ed6184dfSmrg else 392ed6184dfSmrg error('No suitable SHA1 implementation found') 393ed6184dfSmrg endif 3941b5d61b8Smrgendif 3951b5d61b8Smrg 3961b5d61b8Smrgxdmcp_dep = dependency('', required : false) 3971b5d61b8Smrgif get_option('xdmcp') 3981b5d61b8Smrg xdmcp_dep = dependency('xdmcp') 3991b5d61b8Smrgendif 4001b5d61b8Smrg 4011b5d61b8Smrghas_xdm_auth = get_option('xdm-auth-1') 4021b5d61b8Smrg 4031b5d61b8Smrgif not xdmcp_dep.found() 4041b5d61b8Smrg has_xdm_auth = false 4051b5d61b8Smrgendif 4061b5d61b8Smrg 4071b5d61b8Smrgbuild_glx = get_option('glx') 4081b5d61b8Smrgif build_glx 4091b5d61b8Smrg build_hashtable = true 4101b5d61b8Smrgendif 4111b5d61b8Smrg 412ed6184dfSmrglibdrm_dep = dependency('libdrm', version: libdrm_req, required: false) 4131b5d61b8Smrg 4141b5d61b8Smrgif get_option('dri1') == 'auto' 4151b5d61b8Smrg build_dri1 = xf86driproto_dep.found() and libdrm_dep.found() 4161b5d61b8Smrgelse 4171b5d61b8Smrg build_dri1 = get_option('dri1') == 'true' 4181b5d61b8Smrgendif 4191b5d61b8Smrg 4201b5d61b8Smrgif get_option('dri2') == 'auto' 4211b5d61b8Smrg build_dri2 = dri2proto_dep.found() and libdrm_dep.found() 4221b5d61b8Smrgelse 4231b5d61b8Smrg build_dri2 = get_option('dri2') == 'true' 4241b5d61b8Smrgendif 4251b5d61b8Smrg 4261b5d61b8Smrgif get_option('dri3') == 'auto' 4271b5d61b8Smrg build_dri3 = dri3proto_dep.found() and xshmfence_dep.found() and libdrm_dep.found() 4281b5d61b8Smrgelse 4291b5d61b8Smrg build_dri3 = get_option('dri3') == 'true' 4301b5d61b8Smrg if build_dri3 4311b5d61b8Smrg if not xshmfence_dep.found() 4321b5d61b8Smrg error('DRI3 requested, but xshmfence not found') 4331b5d61b8Smrg endif 4341b5d61b8Smrg endif 4351b5d61b8Smrgendif 4361b5d61b8Smrg 437ed6184dfSmrglibdrm_required = (build_dri1 or build_dri2 or build_dri3) and get_option('drm') == true 4381b5d61b8Smrgif not libdrm_dep.found() and libdrm_required 4391b5d61b8Smrg error('DRI requested, but LIBDRM not found') 4401b5d61b8Smrgendif 4411b5d61b8Smrg 442c8548ba8Smrgbuild_modesetting = libdrm_dep.found() and dri2proto_dep.found() 4431b5d61b8Smrg 4441b5d61b8Smrgbuild_vgahw = false 4451b5d61b8Smrgif get_option('vgahw') == 'auto' 4461b5d61b8Smrg if (host_machine.system() != 'darwin' and 4471b5d61b8Smrg host_machine.system() != 'windows' and 4481b5d61b8Smrg host_machine.system() != 'cygwin') 4491b5d61b8Smrg build_vgahw = true 4501b5d61b8Smrg endif 4511b5d61b8Smrgelse 4521b5d61b8Smrg build_vgahw = get_option('vgahw') == 'true' 4531b5d61b8Smrgendif 4541b5d61b8Smrg 4551b5d61b8Smrgbuild_dpms = get_option('dpms') 4561b5d61b8Smrgif build_xquartz 4571b5d61b8Smrg build_dpms = false 4581b5d61b8Smrgendif 4591b5d61b8Smrg 4601b5d61b8Smrgbuild_xf86bigfont = get_option('xf86bigfont') 4611b5d61b8Smrgbuild_screensaver = get_option('screensaver') 4621b5d61b8Smrgbuild_res = get_option('xres') 4631b5d61b8Smrgif build_res 4641b5d61b8Smrg build_hashtable = true 4651b5d61b8Smrgendif 4661b5d61b8Smrg 4671b5d61b8Smrgbuild_xace = get_option('xace') 4681b5d61b8Smrgbuild_xinerama = get_option('xinerama') 4691b5d61b8Smrg 4701b5d61b8Smrgbuild_xsecurity = get_option('xcsecurity') 4711b5d61b8Smrgif build_xsecurity 4721b5d61b8Smrg if not build_xace 4731b5d61b8Smrg error('cannot build Security extension without X-ACE') 4741b5d61b8Smrg endif 4751b5d61b8Smrgendif 4761b5d61b8Smrg 4771b5d61b8Smrgbuild_xv = get_option('xv') 4781b5d61b8Smrgbuild_xvmc = get_option('xvmc') 4791b5d61b8Smrgif not build_xv 4801b5d61b8Smrg build_xvmc = false 4811b5d61b8Smrgendif 4821b5d61b8Smrg 4831b5d61b8Smrgbuild_dga = false 484ed6184dfSmrgxf86dgaproto_dep = dependency('', required: false) 4851b5d61b8Smrgif get_option('dga') == 'auto' 486ed6184dfSmrg xf86dgaproto_dep = dependency('xf86dgaproto', version: xf86dgaproto_req, required: false) 4871b5d61b8Smrg if xf86dgaproto_dep.found() 4881b5d61b8Smrg build_dga = true 4891b5d61b8Smrg endif 4901b5d61b8Smrgelif get_option('dga') == 'true' 491ed6184dfSmrg xf86dgaproto_dep = dependency('xf86dgaproto', version: xf86dgaproto_req, required: true) 4921b5d61b8Smrg build_dga = true 4931b5d61b8Smrgendif 4941b5d61b8Smrg 4951b5d61b8Smrgbuild_apm = false 4961b5d61b8Smrgif (get_option('linux_apm') == true and 4971b5d61b8Smrg host_machine.system() == 'linux') 4981b5d61b8Smrg if cc.has_header('linux/apm_bios.h') 4991b5d61b8Smrg build_apm = true 5001b5d61b8Smrg endif 5011b5d61b8Smrgendif 5021b5d61b8Smrg 5031b5d61b8Smrgbuild_acpi = false 5041b5d61b8Smrgif (get_option('linux_acpi') == true and 5051b5d61b8Smrg host_machine.system() == 'linux') 5061b5d61b8Smrg if (host_machine.cpu() == 'x86' or 5071b5d61b8Smrg host_machine.cpu() == 'x86_64' or 5081b5d61b8Smrg host_machine.cpu() == 'ia64') 5091b5d61b8Smrg build_acpi = true 5101b5d61b8Smrg endif 5111b5d61b8Smrgendif 5121b5d61b8Smrg 5131b5d61b8Smrgbuild_mitshm = false 5141b5d61b8Smrgif get_option('mitshm') == 'auto' 5151b5d61b8Smrg build_mitshm = cc.has_header('sys/shm.h') 5161b5d61b8Smrgelif get_option('mitshm') == 'true' 5171b5d61b8Smrg build_mitshm = true 5181b5d61b8Smrgendif 5191b5d61b8Smrg 5201b5d61b8Smrgm_dep = cc.find_library('m', required : false) 5211b5d61b8Smrgdl_dep = cc.find_library('dl', required : false) 5221b5d61b8Smrg 5231b5d61b8Smrgcommon_dep = [ 5241b5d61b8Smrg xproto_dep, 5251b5d61b8Smrg randrproto_dep, 5261b5d61b8Smrg renderproto_dep, 5271b5d61b8Smrg xextproto_dep, 5281b5d61b8Smrg inputproto_dep, 5291b5d61b8Smrg kbproto_dep, 5301b5d61b8Smrg fontsproto_dep, 5311b5d61b8Smrg fixesproto_dep, 5321b5d61b8Smrg damageproto_dep, 5331b5d61b8Smrg xcmiscproto_dep, 5341b5d61b8Smrg bigreqsproto_dep, 5351b5d61b8Smrg xtrans_dep, 536ed6184dfSmrg libsystemd_daemon_dep, 5371b5d61b8Smrg 5381b5d61b8Smrg videoproto_dep, 5391b5d61b8Smrg compositeproto_dep, 5401b5d61b8Smrg recordproto_dep, 5411b5d61b8Smrg scrnsaverproto_dep, 5421b5d61b8Smrg resourceproto_dep, 5431b5d61b8Smrg xf86driproto_dep, 5441b5d61b8Smrg dri2proto_dep, 5451b5d61b8Smrg dri3proto_dep, 5461b5d61b8Smrg xineramaproto_dep, 5471b5d61b8Smrg xf86bigfontproto_dep, 5481b5d61b8Smrg xf86dgaproto_dep, 5491b5d61b8Smrg xf86vidmodeproto_dep, 5501b5d61b8Smrg applewmproto_dep, 5511b5d61b8Smrg 5521b5d61b8Smrg pixman_dep, 5531b5d61b8Smrg libbsd_dep, 5541b5d61b8Smrg xkbfile_dep, 5551b5d61b8Smrg xfont2_dep, 5561b5d61b8Smrg xdmcp_dep, 5571b5d61b8Smrg] 5581b5d61b8Smrg 5591b5d61b8Smrginc = include_directories( 5601b5d61b8Smrg 'Xext', 5611b5d61b8Smrg 'Xi', 5621b5d61b8Smrg 'composite', 5631b5d61b8Smrg 'damageext', 5641b5d61b8Smrg 'exa', 5651b5d61b8Smrg 'fb', 5661b5d61b8Smrg 'glamor', 5671b5d61b8Smrg 'mi', 5681b5d61b8Smrg 'miext/damage', 5691b5d61b8Smrg 'miext/shadow', 5701b5d61b8Smrg 'miext/sync', 5711b5d61b8Smrg 'dbe', 5721b5d61b8Smrg 'dri3', 5731b5d61b8Smrg 'include', 5741b5d61b8Smrg 'present', 5751b5d61b8Smrg 'randr', 5761b5d61b8Smrg 'render', 5771b5d61b8Smrg 'xfixes', 5781b5d61b8Smrg) 5791b5d61b8Smrg 580ed6184dfSmrgbuild_xselinux = false 581ed6184dfSmrgif get_option('xselinux') != 'false' 582ed6184dfSmrg dep_selinux = dependency('libselinux', version: libselinux_req, 583ed6184dfSmrg required: get_option('xselinux') == 'true') 584ed6184dfSmrg dep_audit = dependency('audit', required: get_option('xselinux') == 'true') 585ed6184dfSmrg if get_option('xselinux') == 'true' 586ed6184dfSmrg build_xselinux = true 587ed6184dfSmrg else 588ed6184dfSmrg build_xselinux = dep_selinux.found() and dep_audit.found() 589ed6184dfSmrg endif 590ed6184dfSmrg 591ed6184dfSmrg if build_xselinux 592ed6184dfSmrg common_dep += dep_selinux 593ed6184dfSmrg common_dep += dep_audit 594ed6184dfSmrg endif 595ed6184dfSmrgendif 596ed6184dfSmrg 597ed6184dfSmrgsocket_dep = [] 598ed6184dfSmrgif host_machine.system() == 'windows' 599ed6184dfSmrg socket_dep = meson.get_compiler('c').find_library('ws2_32') 600ed6184dfSmrg common_dep += socket_dep 601ed6184dfSmrgendif 602ed6184dfSmrg 603ed6184dfSmrgif get_option('libunwind') 604ed6184dfSmrg common_dep += dependency('libunwind', required: true) 605ed6184dfSmrgendif 606ed6184dfSmrg 6071b5d61b8Smrgglx_inc = include_directories('glx') 6081b5d61b8Smrg 609ed6184dfSmrgtop_dir_inc = include_directories('.') 6101b5d61b8Smrg 611ed6184dfSmrgserverconfigdir = join_paths(get_option('prefix'), get_option('libdir'), 'xorg') 6121b5d61b8Smrg 6131b5d61b8Smrgmanpage_config = configuration_data() 6141b5d61b8Smrgmanpage_config.set('vendorversion', '"xorg-server @0@" "X Version 11"'.format(meson.project_version())) 6151b5d61b8Smrgmanpage_config.set('xorgversion', '"xorg-server @0@" "X Version 11"'.format(meson.project_version())) 6161b5d61b8Smrgmanpage_config.set('xservername', 'Xorg') 6171b5d61b8Smrgmanpage_config.set('xconfigfile', 'xorg.conf') 6181b5d61b8Smrgmanpage_config.set('projectroot', get_option('prefix')) 6191b5d61b8Smrgmanpage_config.set('apploaddir', '$(appdefaultdir)') 6201b5d61b8Smrgmanpage_config.set('appmansuffix', '1') 6211b5d61b8Smrgmanpage_config.set('drivermansuffix', '4') 6221b5d61b8Smrgmanpage_config.set('adminmansuffix', '8') 6231b5d61b8Smrgmanpage_config.set('libmansuffix', '3') 6241b5d61b8Smrgmanpage_config.set('miscmansuffix', '7') 6251b5d61b8Smrgmanpage_config.set('filemansuffix', '5') 6261b5d61b8Smrgmanpage_config.set('logdir', log_dir) 6271b5d61b8Smrgmanpage_config.set('datadir', join_paths(get_option('prefix'), get_option('datadir'))) 6281b5d61b8Smrgmanpage_config.set('mandir', join_paths(get_option('prefix'), get_option('mandir'))) 6291b5d61b8Smrgmanpage_config.set('sysconfdir', join_paths(get_option('prefix'), get_option('sysconfdir'))) 6301b5d61b8Smrgmanpage_config.set('xconfigdir', 'xorg.conf.d') 6311b5d61b8Smrgmanpage_config.set('xkbdir', xkb_dir) 6321b5d61b8Smrgmanpage_config.set('XKB_DFLT_RULES', get_option('xkb_default_rules')) 6331b5d61b8Smrgmanpage_config.set('XKB_DFLT_MODEL', get_option('xkb_default_model')) 6341b5d61b8Smrgmanpage_config.set('XKB_DFLT_LAYOUT', get_option('xkb_default_layout')) 6351b5d61b8Smrgmanpage_config.set('XKB_DFLT_VARIANT', get_option('xkb_default_variant')) 6361b5d61b8Smrgmanpage_config.set('XKB_DFLT_OPTIONS', get_option('xkb_default_options')) 6371b5d61b8Smrgmanpage_config.set('bundle_id_prefix', '...') 6381b5d61b8Smrgmanpage_config.set('modulepath', module_dir) 6391b5d61b8Smrg# wtf doesn't this work 6401b5d61b8Smrg# manpage_config.set('suid_wrapper_dir', join_paths(get_option('prefix'), libexecdir)) 6411b5d61b8Smrgmanpage_config.set('suid_wrapper_dir', join_paths(get_option('prefix'), 'libexec')) 6421b5d61b8Smrgmanpage_config.set('default_font_path', default_font_path) 6431b5d61b8Smrg 644ed6184dfSmrgrequire_docs = get_option('docs') == 'true' 645ed6184dfSmrgrequire_devel_docs = get_option('devel-docs') == 'true' 646ed6184dfSmrgrequire_docs_pdf = (require_docs or require_devel_docs) and get_option('docs-pdf') == 'true' 647ed6184dfSmrg 648ed6184dfSmrgsgml_doctools_dep = dependency('xorg-sgml-doctools', 649ed6184dfSmrg required: require_docs or require_devel_docs) 650ed6184dfSmrgxmlto = find_program('xmlto', required: require_docs or require_devel_docs) 651ed6184dfSmrgxsltproc = find_program('xsltproc', required: require_docs or require_devel_docs) 652ed6184dfSmrgfop = find_program('fop', required: require_docs_pdf) 653ed6184dfSmrg 654ed6184dfSmrgbuild_docs = (get_option('docs') != 'false' and 655ed6184dfSmrg sgml_doctools_dep.found() and 656ed6184dfSmrg xmlto.found()) 657ed6184dfSmrg 658ed6184dfSmrgbuild_docs_devel = (get_option('devel-docs') != 'false' and 659ed6184dfSmrg sgml_doctools_dep.found() and 660ed6184dfSmrg xmlto.found()) 661ed6184dfSmrg 662ed6184dfSmrgbuild_docs_pdf = (get_option('docs-pdf') != 'false' and 663ed6184dfSmrg (build_docs or build_docs_devel) and 664ed6184dfSmrg fop.found()) 665ed6184dfSmrg 666ed6184dfSmrgif build_docs or build_docs_devel 667ed6184dfSmrg doc_sgml_path = sgml_doctools_dep.get_pkgconfig_variable('sgmlrootdir') 668ed6184dfSmrg doc_stylesheet_srcdir = join_paths(doc_sgml_path, 'X11') 669ed6184dfSmrg 670ed6184dfSmrg # once we bump meson dependency to 0.56.0 we can use 671ed6184dfSmrg # meson.project_build_root() instead of meson.build_root() 672ed6184dfSmrg 673ed6184dfSmrg # Meson does not and will not support functions so we are copy-pasting 674ed6184dfSmrg # documentation build code around which is unfortunate 675ed6184dfSmrg # See https://mesonbuild.com/FAQ.html#why-doesnt-meson-have-user-defined-functionsmacros 676ed6184dfSmrg 677ed6184dfSmrg docs_xmlto_search_flags = [ 678ed6184dfSmrg '--searchpath', doc_stylesheet_srcdir, 679ed6184dfSmrg '--searchpath', meson.build_root(), 680ed6184dfSmrg ] 681ed6184dfSmrg 682ed6184dfSmrg docs_xslt_search_flags = [ 683ed6184dfSmrg '--path', doc_stylesheet_srcdir, 684ed6184dfSmrg '--path', meson.build_root(), 685ed6184dfSmrg ] 686ed6184dfSmrgendif 687ed6184dfSmrg 6881b5d61b8Smrg# Include must come first, as it sets up dix-config.h 6891b5d61b8Smrgsubdir('include') 6901b5d61b8Smrg 6911b5d61b8Smrg# X server core 6921b5d61b8Smrgsubdir('config') 6931b5d61b8Smrgsubdir('dix') 6941b5d61b8Smrgsubdir('dri3') 6951b5d61b8Smrgsubdir('glx') 6961b5d61b8Smrgsubdir('fb') 6971b5d61b8Smrgsubdir('mi') 6981b5d61b8Smrgsubdir('os') 6991b5d61b8Smrg# X extensions 700a1e1cf94Smrgsubdir('composite') 7011b5d61b8Smrgsubdir('damageext') 7021b5d61b8Smrgsubdir('dbe') 7031b5d61b8Smrgsubdir('miext/damage') 7041b5d61b8Smrgsubdir('miext/shadow') 7051b5d61b8Smrgsubdir('miext/sync') 706ed6184dfSmrgif build_rootless 707ed6184dfSmrg subdir('miext/rootless') 708ed6184dfSmrgendif 7091b5d61b8Smrgsubdir('present') 7101b5d61b8Smrgif build_xwin or build_xquartz 7111b5d61b8Smrg subdir('pseudoramiX') 7121b5d61b8Smrgendif 7131b5d61b8Smrgsubdir('randr') 7141b5d61b8Smrgsubdir('record') 7151b5d61b8Smrgsubdir('render') 7161b5d61b8Smrgsubdir('xfixes') 7171b5d61b8Smrgsubdir('xkb') 7181b5d61b8Smrgsubdir('Xext') 7191b5d61b8Smrgsubdir('Xi') 7201b5d61b8Smrg# other 7211b5d61b8Smrgif build_glamor 7221b5d61b8Smrg subdir('glamor') 7231b5d61b8Smrgendif 7241b5d61b8Smrgif build_xorg or get_option('xephyr') 7251b5d61b8Smrg subdir('exa') 7261b5d61b8Smrgendif 727ed6184dfSmrgsubdir('doc') 7281b5d61b8Smrg 7291b5d61b8Smrg# Common static libraries of all X servers 7301b5d61b8Smrglibxserver = [ 7311b5d61b8Smrg libxserver_mi, 7321b5d61b8Smrg libxserver_dix, 7331b5d61b8Smrg 734a1e1cf94Smrg libxserver_composite, 7351b5d61b8Smrg libxserver_damageext, 7361b5d61b8Smrg libxserver_dbe, 7371b5d61b8Smrg libxserver_randr, 7381b5d61b8Smrg libxserver_miext_damage, 7391b5d61b8Smrg libxserver_render, 7401b5d61b8Smrg libxserver_present, 7411b5d61b8Smrg libxserver_xext, 7421b5d61b8Smrg libxserver_miext_sync, 7431b5d61b8Smrg libxserver_xfixes, 7441b5d61b8Smrg libxserver_xi, 7451b5d61b8Smrg libxserver_xkb, 7461b5d61b8Smrg libxserver_record, 7471b5d61b8Smrg 7481b5d61b8Smrg libxserver_os, 7491b5d61b8Smrg] 7501b5d61b8Smrg 7511b5d61b8Smrglibxserver += libxserver_dri3 7521b5d61b8Smrg 7531b5d61b8Smrgsubdir('hw') 754ed6184dfSmrg 755ed6184dfSmrgif host_machine.system() != 'windows' 756ed6184dfSmrg subdir('test') 757ed6184dfSmrgendif 7581b5d61b8Smrg 7591b5d61b8Smrginstall_man(configure_file( 7601b5d61b8Smrg input: 'man/Xserver.man', 7611b5d61b8Smrg output: 'Xserver.1', 7621b5d61b8Smrg configuration: manpage_config, 7631b5d61b8Smrg)) 7641b5d61b8Smrg 7651b5d61b8Smrgif build_xorg 7661b5d61b8Smrg sdkconfig = configuration_data() 7671b5d61b8Smrg awk = find_program('awk') 7681b5d61b8Smrg 7691b5d61b8Smrg sdkconfig.set('prefix', get_option('prefix')) 7701b5d61b8Smrg sdkconfig.set('exec_prefix', '${prefix}') 7711b5d61b8Smrg sdkconfig.set('libdir', join_paths('${exec_prefix}', get_option('libdir'))) 7721b5d61b8Smrg sdkconfig.set('includedir', join_paths('${prefix}', get_option('includedir'))) 7731b5d61b8Smrg sdkconfig.set('datarootdir', join_paths('${prefix}', get_option('datadir'))) 7741b5d61b8Smrg sdkconfig.set('moduledir', join_paths('${exec_prefix}', module_dir)) 7751b5d61b8Smrg sdkconfig.set('sdkdir', join_paths('${prefix}', get_option('includedir'), 'xorg')) 7761b5d61b8Smrg sdkconfig.set('sysconfigdir', join_paths('${datarootdir}', 'X11/xorg.conf.d')) 7771b5d61b8Smrg 7781b5d61b8Smrg sdkconfig.set('abi_ansic', 7791b5d61b8Smrg run_command(awk, '-F', '[(,)]', 7801b5d61b8Smrg '/^#define ABI_ANSIC.*SET/ { printf "%d.%d", $2, $3 }', 7811b5d61b8Smrg files('hw/xfree86/common/xf86Module.h') 7821b5d61b8Smrg ).stdout() 7831b5d61b8Smrg ) 7841b5d61b8Smrg sdkconfig.set('abi_videodrv', 7851b5d61b8Smrg run_command(awk, '-F', '[(,)]', 7861b5d61b8Smrg '/^#define ABI_VIDEODRV.*SET/ { printf "%d.%d", $2, $3 }', 7871b5d61b8Smrg files('hw/xfree86/common/xf86Module.h') 7881b5d61b8Smrg ).stdout() 7891b5d61b8Smrg ) 7901b5d61b8Smrg sdkconfig.set('abi_xinput', 7911b5d61b8Smrg run_command(awk, '-F', '[(,)]', 7921b5d61b8Smrg '/^#define ABI_XINPUT.*SET/ { printf "%d.%d", $2, $3 }', 7931b5d61b8Smrg files('hw/xfree86/common/xf86Module.h') 7941b5d61b8Smrg ).stdout() 7951b5d61b8Smrg ) 7961b5d61b8Smrg sdkconfig.set('abi_extension', 7971b5d61b8Smrg run_command(awk, '-F', '[(,)]', 7981b5d61b8Smrg '/^#define ABI_EXTENSION.*SET/ { printf "%d.%d", $2, $3 }', 7991b5d61b8Smrg files('hw/xfree86/common/xf86Module.h') 8001b5d61b8Smrg ).stdout() 8011b5d61b8Smrg ) 8021b5d61b8Smrg 8031b5d61b8Smrg sdk_required_modules = [ 8041b5d61b8Smrg 'pixman-1 >= 0.27.2', 8051b5d61b8Smrg ] 8061b5d61b8Smrg 8071b5d61b8Smrg # XXX this isn't trying very hard, but hard enough. 8081b5d61b8Smrg sdkconfig.set('PACKAGE_VERSION', meson.project_version()) 8091b5d61b8Smrg sdkconfig.set('SDK_REQUIRED_MODULES', ' '.join(sdk_required_modules)) 8101b5d61b8Smrg sdkconfig.set('symbol_visibility', '-fvisibility=hidden') 8111b5d61b8Smrg sdkconfig.set('XORG_DRIVER_LIBS', '') 8121b5d61b8Smrg 8131b5d61b8Smrg configure_file( 8141b5d61b8Smrg input: 'xorg-server.pc.in', 8151b5d61b8Smrg output: 'xorg-server.pc', 8161b5d61b8Smrg configuration: sdkconfig, 8171b5d61b8Smrg install_dir: join_paths(get_option('prefix'), 8181b5d61b8Smrg get_option('libdir'), 8191b5d61b8Smrg 'pkgconfig'), 8201b5d61b8Smrg ) 821ed6184dfSmrg 822ed6184dfSmrg install_data('xorg-server.m4', 823ed6184dfSmrg install_dir: join_paths(get_option('datadir'), 'aclocal')) 8241b5d61b8Smrgendif 8251b5d61b8Smrg 826ed6184dfSmrgif build_docs or build_docs_devel 827ed6184dfSmrg docxmlconfig = configuration_data() 828ed6184dfSmrg docxmlconfig.set('PACKAGE_VERSION', meson.project_version()) 829ed6184dfSmrg docxmlconfig.set('RELEASE_DATE', release_date) 830ed6184dfSmrg configure_file( 831ed6184dfSmrg input: 'xserver.ent.in', 832ed6184dfSmrg output: 'xserver.ent', 833ed6184dfSmrg configuration: docxmlconfig 834ed6184dfSmrg ) 835ed6184dfSmrgendif 836