1*4882a593Smuzhiyunproject('xserver', 'c', 2*4882a593Smuzhiyun default_options: [ 3*4882a593Smuzhiyun 'buildtype=debugoptimized', 4*4882a593Smuzhiyun 'c_std=gnu99', 5*4882a593Smuzhiyun ], 6*4882a593Smuzhiyun version: '1.20.11', 7*4882a593Smuzhiyun meson_version: '>= 0.42.0', 8*4882a593Smuzhiyun) 9*4882a593Smuzhiyunadd_project_arguments('-DHAVE_DIX_CONFIG_H', language: 'c') 10*4882a593Smuzhiyuncc = meson.get_compiler('c') 11*4882a593Smuzhiyun 12*4882a593Smuzhiyunadd_global_arguments('-fno-strict-aliasing', language : 'c') 13*4882a593Smuzhiyunadd_global_arguments('-fvisibility=hidden', language : 'c') 14*4882a593Smuzhiyun 15*4882a593Smuzhiyunadd_global_link_arguments('-fvisibility=hidden', language : 'c') 16*4882a593Smuzhiyun 17*4882a593Smuzhiyunif cc.get_id() == 'gcc' or cc.get_id() == 'clang' 18*4882a593Smuzhiyun test_wflags = [ 19*4882a593Smuzhiyun '-Wall', 20*4882a593Smuzhiyun '-Wpointer-arith', 21*4882a593Smuzhiyun '-Wmissing-declarations', 22*4882a593Smuzhiyun '-Wformat=2', 23*4882a593Smuzhiyun '-Wstrict-prototypes', 24*4882a593Smuzhiyun '-Wmissing-prototypes', 25*4882a593Smuzhiyun '-Wnested-externs', 26*4882a593Smuzhiyun '-Wbad-function-cast', 27*4882a593Smuzhiyun '-Wold-style-definition', 28*4882a593Smuzhiyun '-Wunused', 29*4882a593Smuzhiyun '-Wuninitialized', 30*4882a593Smuzhiyun '-Wshadow', 31*4882a593Smuzhiyun '-Wmissing-noreturn', 32*4882a593Smuzhiyun '-Wmissing-format-attribute', 33*4882a593Smuzhiyun '-Wredundant-decls', 34*4882a593Smuzhiyun '-Werror=implicit', 35*4882a593Smuzhiyun '-Werror=nonnull', 36*4882a593Smuzhiyun '-Werror=init-self', 37*4882a593Smuzhiyun '-Werror=main', 38*4882a593Smuzhiyun '-Werror=missing-braces', 39*4882a593Smuzhiyun '-Werror=sequence-point', 40*4882a593Smuzhiyun '-Werror=return-type', 41*4882a593Smuzhiyun '-Werror=trigraphs', 42*4882a593Smuzhiyun '-Werror=array-bounds', 43*4882a593Smuzhiyun '-Werror=write-strings', 44*4882a593Smuzhiyun '-Werror=address', 45*4882a593Smuzhiyun '-Werror=int-to-pointer-cast', 46*4882a593Smuzhiyun '-Werror=pointer-to-int-cast', 47*4882a593Smuzhiyun ] 48*4882a593Smuzhiyunelse 49*4882a593Smuzhiyun test_wflags = [] 50*4882a593Smuzhiyunendif 51*4882a593Smuzhiyun 52*4882a593Smuzhiyuncommon_wflags = [] 53*4882a593Smuzhiyunforeach wflag: test_wflags 54*4882a593Smuzhiyun if cc.has_argument(wflag) 55*4882a593Smuzhiyun common_wflags += [ wflag ] 56*4882a593Smuzhiyun endif 57*4882a593Smuzhiyunendforeach 58*4882a593Smuzhiyun 59*4882a593Smuzhiyunadd_global_arguments(common_wflags, language : 'c') 60*4882a593Smuzhiyun 61*4882a593Smuzhiyunxproto_dep = dependency('xproto', version: '>= 7.0.31') 62*4882a593Smuzhiyunrandrproto_dep = dependency('randrproto', version: '>= 1.6.0') 63*4882a593Smuzhiyunrenderproto_dep = dependency('renderproto', version: '>= 0.11') 64*4882a593Smuzhiyunxextproto_dep = dependency('xextproto', version: '>= 7.2.99.901') 65*4882a593Smuzhiyuninputproto_dep = dependency('inputproto', version: '>= 2.3') 66*4882a593Smuzhiyunkbproto_dep = dependency('kbproto', version: '>= 1.0.3') 67*4882a593Smuzhiyunfontsproto_dep = dependency('fontsproto', version: '>= 2.1.3') 68*4882a593Smuzhiyunfixesproto_dep = dependency('fixesproto', version: '>= 5.0') 69*4882a593Smuzhiyundamageproto_dep = dependency('damageproto', version: '>= 1.1') 70*4882a593Smuzhiyunxcmiscproto_dep = dependency('xcmiscproto', version: '>= 1.2.0') 71*4882a593Smuzhiyunbigreqsproto_dep = dependency('bigreqsproto', version: '>= 1.1.0') 72*4882a593Smuzhiyunxtrans_dep = dependency('xtrans', version: '>= 1.3.5') 73*4882a593Smuzhiyun 74*4882a593Smuzhiyunvideoproto_dep = dependency('videoproto') 75*4882a593Smuzhiyuncompositeproto_dep = dependency('compositeproto', version: '>= 0.4') 76*4882a593Smuzhiyunrecordproto_dep = dependency('recordproto', version: '>= 1.13.99.1') 77*4882a593Smuzhiyunscrnsaverproto_dep = dependency('scrnsaverproto', version: '>= 1.1') 78*4882a593Smuzhiyunresourceproto_dep = dependency('resourceproto', version: '>= 1.2.0') 79*4882a593Smuzhiyunxf86driproto_dep = dependency('xf86driproto', version: '>= 2.1.0', required: get_option('dri1') == 'true') 80*4882a593Smuzhiyundri2proto_dep = dependency('dri2proto', version: '>= 2.8', required: get_option('dri2') == 'true') 81*4882a593Smuzhiyundri3proto_dep = dependency('dri3proto', version: '>= 1.2', required: get_option('dri3') == 'true') 82*4882a593Smuzhiyunxineramaproto_dep = dependency('xineramaproto') 83*4882a593Smuzhiyunxf86bigfontproto_dep = dependency('xf86bigfontproto', version: '>= 1.2.0') 84*4882a593Smuzhiyunxf86vidmodeproto_dep = dependency('xf86vidmodeproto', version: '>= 2.2.99.1', required: false) 85*4882a593Smuzhiyunwindowswmproto_dep = dependency('windowswmproto', required: false) 86*4882a593Smuzhiyunapplewmproto_dep = dependency('applewmproto', version: '>= 1.4', required: false) 87*4882a593Smuzhiyunxshmfence_dep = dependency('xshmfence', version: '>= 1.1', required: false) 88*4882a593Smuzhiyun 89*4882a593Smuzhiyunpixman_dep = dependency('pixman-1') 90*4882a593Smuzhiyunlibbsd_dep = dependency('libbsd', required: false) 91*4882a593Smuzhiyunxkbcomp_dep = dependency('xkbcomp', required: false) 92*4882a593Smuzhiyunxkbfile_dep = dependency('xkbfile') 93*4882a593Smuzhiyunxfont2_dep = dependency('xfont2', version: '>= 2.0') 94*4882a593Smuzhiyunnettle_dep = dependency('nettle') 95*4882a593Smuzhiyun 96*4882a593Smuzhiyundbus_required = get_option('systemd_logind') == 'true' 97*4882a593Smuzhiyundbus_dep = dependency('dbus-1', version: '>= 1.0', required: dbus_required) 98*4882a593Smuzhiyun 99*4882a593Smuzhiyunbuild_hashtable = false 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun# Resolve default values of some options 102*4882a593Smuzhiyunxkb_dir = get_option('xkb_dir') 103*4882a593Smuzhiyunif xkb_dir == '' 104*4882a593Smuzhiyun xkb_dir = xkbcomp_dep.get_pkgconfig_variable('xkbconfigdir') 105*4882a593Smuzhiyun if xkb_dir == '' 106*4882a593Smuzhiyun xkb_dir = join_paths(get_option('prefix'), 'share/X11/xkb') 107*4882a593Smuzhiyun endif 108*4882a593Smuzhiyunendif 109*4882a593Smuzhiyun 110*4882a593Smuzhiyunxkb_output_dir = get_option('xkb_output_dir') 111*4882a593Smuzhiyunif xkb_output_dir == '' 112*4882a593Smuzhiyun xkb_output_dir = join_paths(xkb_dir, 'compiled') 113*4882a593Smuzhiyunendif 114*4882a593Smuzhiyun 115*4882a593Smuzhiyunxkb_bin_dir = get_option('xkb_bin_dir') 116*4882a593Smuzhiyunif xkb_bin_dir == '' 117*4882a593Smuzhiyun xkb_bin_dir = xkbcomp_dep.get_pkgconfig_variable('bindir') 118*4882a593Smuzhiyun if xkb_bin_dir == '' 119*4882a593Smuzhiyun xkb_bin_dir = join_paths(get_option('prefix'), get_option('bindir')) 120*4882a593Smuzhiyun endif 121*4882a593Smuzhiyunendif 122*4882a593Smuzhiyun 123*4882a593Smuzhiyundfp = get_option('default_font_path') 124*4882a593Smuzhiyunif dfp == '' 125*4882a593Smuzhiyun fontutil_dep = dependency('fontutil') 126*4882a593Smuzhiyun fontrootdir = fontutil_dep.get_pkgconfig_variable('fontrootdir') 127*4882a593Smuzhiyun default_font_path = ','.join([ 128*4882a593Smuzhiyun join_paths(fontrootdir, 'misc'), 129*4882a593Smuzhiyun join_paths(fontrootdir, 'TTF'), 130*4882a593Smuzhiyun join_paths(fontrootdir, 'OTF'), 131*4882a593Smuzhiyun join_paths(fontrootdir, 'Type1'), 132*4882a593Smuzhiyun join_paths(fontrootdir, '100dpi'), 133*4882a593Smuzhiyun join_paths(fontrootdir, '75dpi'), 134*4882a593Smuzhiyun ]) 135*4882a593Smuzhiyunelse 136*4882a593Smuzhiyun default_font_path = dfp 137*4882a593Smuzhiyunendif 138*4882a593Smuzhiyun 139*4882a593Smuzhiyunhal_option = get_option('hal') 140*4882a593Smuzhiyunglamor_option = get_option('glamor') 141*4882a593Smuzhiyun 142*4882a593Smuzhiyunbuild_udev = get_option('udev') 143*4882a593Smuzhiyunif host_machine.system() == 'windows' 144*4882a593Smuzhiyun build_udev = false 145*4882a593Smuzhiyun hal_option = 'false' 146*4882a593Smuzhiyunendif 147*4882a593Smuzhiyun 148*4882a593Smuzhiyunif get_option('systemd_logind') == 'auto' 149*4882a593Smuzhiyun build_systemd_logind = build_udev and dbus_dep.found() 150*4882a593Smuzhiyunelse 151*4882a593Smuzhiyun build_systemd_logind = get_option('systemd_logind') == 'true' 152*4882a593Smuzhiyunendif 153*4882a593Smuzhiyun 154*4882a593Smuzhiyunbuild_xorg = false 155*4882a593Smuzhiyunif (host_machine.system() != 'darwin' and 156*4882a593Smuzhiyun host_machine.system() != 'windows') 157*4882a593Smuzhiyun if get_option('xorg') == 'auto' 158*4882a593Smuzhiyun build_xorg = (host_machine.system() != 'darwin' and 159*4882a593Smuzhiyun host_machine.system() != 'windows') 160*4882a593Smuzhiyun else 161*4882a593Smuzhiyun build_xorg = get_option('xorg') == 'true' 162*4882a593Smuzhiyun endif 163*4882a593Smuzhiyunendif 164*4882a593Smuzhiyunxorgsdkdir = join_paths(get_option('prefix'), get_option('includedir'), 'xorg') 165*4882a593Smuzhiyun 166*4882a593Smuzhiyunbuild_xwayland = false 167*4882a593Smuzhiyunif (host_machine.system() != 'darwin' and 168*4882a593Smuzhiyun host_machine.system() != 'windows') 169*4882a593Smuzhiyun if get_option('xwayland') != 'false' 170*4882a593Smuzhiyun xwayland_required = get_option('xwayland') == 'true' 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun xwayland_dep = [ 173*4882a593Smuzhiyun dependency('wayland-client', version: '>= 1.3.0', required: xwayland_required), 174*4882a593Smuzhiyun dependency('wayland-protocols', version: '>= 1.10', required: xwayland_required), 175*4882a593Smuzhiyun dependency('libdrm', version: '>= 2.4.89', required: xwayland_required), 176*4882a593Smuzhiyun dependency('epoxy', required: xwayland_required), 177*4882a593Smuzhiyun ] 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun build_xwayland = true 180*4882a593Smuzhiyun # check for all the deps being found, to handle 'auto' mode. 181*4882a593Smuzhiyun foreach d: xwayland_dep 182*4882a593Smuzhiyun if not d.found() 183*4882a593Smuzhiyun build_xwayland = false 184*4882a593Smuzhiyun endif 185*4882a593Smuzhiyun endforeach 186*4882a593Smuzhiyun endif 187*4882a593Smuzhiyunendif 188*4882a593Smuzhiyun 189*4882a593Smuzhiyunbuild_xnest = false 190*4882a593Smuzhiyunif (host_machine.system() != 'darwin' and 191*4882a593Smuzhiyun host_machine.system() != 'windows') 192*4882a593Smuzhiyun if get_option('xnest') != 'false' 193*4882a593Smuzhiyun xnest_required = get_option('xnest') == 'true' 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun xnest_dep = [ 196*4882a593Smuzhiyun dependency('xext', version: '>= 1.0.99.4', required: xnest_required), 197*4882a593Smuzhiyun dependency('x11', required: xnest_required), 198*4882a593Smuzhiyun dependency('xau', required: xnest_required), 199*4882a593Smuzhiyun ] 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun build_xnest = true 202*4882a593Smuzhiyun # check for all the deps being found, to handle 'auto' mode. 203*4882a593Smuzhiyun foreach d: xnest_dep 204*4882a593Smuzhiyun if not d.found() 205*4882a593Smuzhiyun build_xnest = false 206*4882a593Smuzhiyun endif 207*4882a593Smuzhiyun endforeach 208*4882a593Smuzhiyun endif 209*4882a593Smuzhiyunendif 210*4882a593Smuzhiyun 211*4882a593Smuzhiyunbuild_xwin = false 212*4882a593Smuzhiyunif get_option('xwin') == 'auto' 213*4882a593Smuzhiyun if (host_machine.system() == 'cygwin' or 214*4882a593Smuzhiyun host_machine.system() == 'windows') 215*4882a593Smuzhiyun build_xwin = true 216*4882a593Smuzhiyun endif 217*4882a593Smuzhiyunelse 218*4882a593Smuzhiyun build_xwin = get_option('xwin') == 'true' 219*4882a593Smuzhiyunendif 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun# XXX: Finish these. 222*4882a593Smuzhiyunbuild_xquartz = false 223*4882a593Smuzhiyun 224*4882a593Smuzhiyunif get_option('ipv6') == 'auto' 225*4882a593Smuzhiyun build_ipv6 = cc.has_function('getaddrinfo') 226*4882a593Smuzhiyunelse 227*4882a593Smuzhiyun build_ipv6 = get_option('ipv6') == 'true' 228*4882a593Smuzhiyunendif 229*4882a593Smuzhiyun 230*4882a593Smuzhiyunint10 = get_option('int10') 231*4882a593Smuzhiyunif int10 == 'auto' 232*4882a593Smuzhiyun int10 = 'x86emu' 233*4882a593Smuzhiyun if host_machine.cpu() == 'powerpc' and host_machine.system() == 'freebsd' 234*4882a593Smuzhiyun int10 = 'stub' 235*4882a593Smuzhiyun endif 236*4882a593Smuzhiyun if host_machine.cpu() == 'arm' 237*4882a593Smuzhiyun int10 = 'stub' 238*4882a593Smuzhiyun endif 239*4882a593Smuzhiyunendif 240*4882a593Smuzhiyun 241*4882a593Smuzhiyunhal_dep = [] 242*4882a593Smuzhiyunif hal_option == 'auto' 243*4882a593Smuzhiyun if not build_udev 244*4882a593Smuzhiyun hal_dep = dependency('hal', required: false) 245*4882a593Smuzhiyun build_hal = hal_dep.found() 246*4882a593Smuzhiyun else 247*4882a593Smuzhiyun build_hal = false 248*4882a593Smuzhiyun endif 249*4882a593Smuzhiyunelse 250*4882a593Smuzhiyun build_hal = hal_option == 'true' 251*4882a593Smuzhiyun if build_hal 252*4882a593Smuzhiyun hal_dep = dependency('hal') 253*4882a593Smuzhiyun endif 254*4882a593Smuzhiyunendif 255*4882a593Smuzhiyun 256*4882a593Smuzhiyunif build_udev and build_hal 257*4882a593Smuzhiyun error('Hotplugging through both libudev and hal not allowed') 258*4882a593Smuzhiyunendif 259*4882a593Smuzhiyun 260*4882a593Smuzhiyunbuild_dbus = build_hal or build_systemd_logind 261*4882a593Smuzhiyun 262*4882a593Smuzhiyunudev_dep = dependency('', required:false) 263*4882a593Smuzhiyunif build_udev 264*4882a593Smuzhiyun udev_dep = dependency('libudev', version: '>= 143') 265*4882a593Smuzhiyunendif 266*4882a593Smuzhiyun 267*4882a593Smuzhiyunlog_dir = get_option('log_dir') 268*4882a593Smuzhiyunif log_dir == '' 269*4882a593Smuzhiyun log_dir = join_paths(get_option('prefix'), get_option('localstatedir'), 'log') 270*4882a593Smuzhiyunendif 271*4882a593Smuzhiyun 272*4882a593Smuzhiyunmodule_dir = join_paths(get_option('libdir'), get_option('module_dir')) 273*4882a593Smuzhiyun 274*4882a593Smuzhiyunif glamor_option == 'auto' 275*4882a593Smuzhiyun build_glamor = build_xorg or build_xwayland 276*4882a593Smuzhiyunelse 277*4882a593Smuzhiyun build_glamor = get_option('glamor') == 'true' 278*4882a593Smuzhiyunendif 279*4882a593Smuzhiyun 280*4882a593Smuzhiyungbm_dep = dependency('', required: false) 281*4882a593Smuzhiyunepoxy_dep = dependency('', required: false) 282*4882a593Smuzhiyunif build_glamor 283*4882a593Smuzhiyun gbm_dep = dependency('gbm', version: '>= 10.2', required: false) 284*4882a593Smuzhiyun epoxy_dep = dependency('epoxy', required: false) 285*4882a593Smuzhiyunendif 286*4882a593Smuzhiyun 287*4882a593Smuzhiyuneglstream_option = get_option('xwayland_eglstream') 288*4882a593Smuzhiyunif build_xwayland and build_glamor 289*4882a593Smuzhiyun eglstream_dep = dependency('wayland-eglstream-protocols', required:false) 290*4882a593Smuzhiyun if eglstream_option == 'auto' 291*4882a593Smuzhiyun build_eglstream = eglstream_dep.found() 292*4882a593Smuzhiyun else 293*4882a593Smuzhiyun build_eglstream = eglstream_option == 'true' 294*4882a593Smuzhiyun if build_eglstream and not eglstream_dep.found() 295*4882a593Smuzhiyun error('glamor EGLStream support requested, but wayland-eglstream-protocols not found') 296*4882a593Smuzhiyun endif 297*4882a593Smuzhiyun endif 298*4882a593Smuzhiyunelse 299*4882a593Smuzhiyun build_eglstream = false 300*4882a593Smuzhiyunendif 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun# XXX: Add more sha1 options, because Linux is about choice 303*4882a593Smuzhiyunsha1_dep = nettle_dep 304*4882a593Smuzhiyun 305*4882a593Smuzhiyunxdmcp_dep = dependency('', required : false) 306*4882a593Smuzhiyunif get_option('xdmcp') 307*4882a593Smuzhiyun xdmcp_dep = dependency('xdmcp') 308*4882a593Smuzhiyunendif 309*4882a593Smuzhiyun 310*4882a593Smuzhiyunhas_xdm_auth = get_option('xdm-auth-1') 311*4882a593Smuzhiyun 312*4882a593Smuzhiyunif not xdmcp_dep.found() 313*4882a593Smuzhiyun has_xdm_auth = false 314*4882a593Smuzhiyunendif 315*4882a593Smuzhiyun 316*4882a593Smuzhiyunbuild_glx = get_option('glx') 317*4882a593Smuzhiyunif build_glx 318*4882a593Smuzhiyun build_hashtable = true 319*4882a593Smuzhiyunendif 320*4882a593Smuzhiyun 321*4882a593Smuzhiyunlibdrm_dep = dependency('libdrm', version: '>= 2.4.89', required: false) 322*4882a593Smuzhiyun 323*4882a593Smuzhiyunif get_option('dri1') == 'auto' 324*4882a593Smuzhiyun build_dri1 = xf86driproto_dep.found() and libdrm_dep.found() 325*4882a593Smuzhiyunelse 326*4882a593Smuzhiyun build_dri1 = get_option('dri1') == 'true' 327*4882a593Smuzhiyunendif 328*4882a593Smuzhiyun 329*4882a593Smuzhiyunif get_option('dri2') == 'auto' 330*4882a593Smuzhiyun build_dri2 = dri2proto_dep.found() and libdrm_dep.found() 331*4882a593Smuzhiyunelse 332*4882a593Smuzhiyun build_dri2 = get_option('dri2') == 'true' 333*4882a593Smuzhiyunendif 334*4882a593Smuzhiyun 335*4882a593Smuzhiyunif get_option('dri3') == 'auto' 336*4882a593Smuzhiyun build_dri3 = dri3proto_dep.found() and xshmfence_dep.found() and libdrm_dep.found() 337*4882a593Smuzhiyunelse 338*4882a593Smuzhiyun build_dri3 = get_option('dri3') == 'true' 339*4882a593Smuzhiyun if build_dri3 340*4882a593Smuzhiyun if not xshmfence_dep.found() 341*4882a593Smuzhiyun error('DRI3 requested, but xshmfence not found') 342*4882a593Smuzhiyun endif 343*4882a593Smuzhiyun endif 344*4882a593Smuzhiyunendif 345*4882a593Smuzhiyun 346*4882a593Smuzhiyunlibdrm_required = build_dri1 or build_dri2 or build_dri3 347*4882a593Smuzhiyunif not libdrm_dep.found() and libdrm_required 348*4882a593Smuzhiyun error('DRI requested, but LIBDRM not found') 349*4882a593Smuzhiyunendif 350*4882a593Smuzhiyun 351*4882a593Smuzhiyunbuild_modesetting = libdrm_dep.found() and dri2proto_dep.found() 352*4882a593Smuzhiyun 353*4882a593Smuzhiyunbuild_vbe = false 354*4882a593Smuzhiyunif get_option('vbe') == 'auto' 355*4882a593Smuzhiyun if (host_machine.system() != 'darwin' and 356*4882a593Smuzhiyun host_machine.system() != 'windows' and 357*4882a593Smuzhiyun host_machine.system() != 'cygwin') 358*4882a593Smuzhiyun build_vbe = true 359*4882a593Smuzhiyun endif 360*4882a593Smuzhiyunelse 361*4882a593Smuzhiyun build_vbe = get_option('vbe') == 'true' 362*4882a593Smuzhiyunendif 363*4882a593Smuzhiyun 364*4882a593Smuzhiyunrga_dep = dependency('', required: false) 365*4882a593Smuzhiyunif build_modesetting 366*4882a593Smuzhiyun rga_dep = dependency('librga', required: false) 367*4882a593Smuzhiyunendif 368*4882a593Smuzhiyun 369*4882a593Smuzhiyunbuild_vgahw = false 370*4882a593Smuzhiyunif get_option('vgahw') == 'auto' 371*4882a593Smuzhiyun if (host_machine.system() != 'darwin' and 372*4882a593Smuzhiyun host_machine.system() != 'windows' and 373*4882a593Smuzhiyun host_machine.system() != 'cygwin') 374*4882a593Smuzhiyun build_vgahw = true 375*4882a593Smuzhiyun endif 376*4882a593Smuzhiyunelse 377*4882a593Smuzhiyun build_vgahw = get_option('vgahw') == 'true' 378*4882a593Smuzhiyunendif 379*4882a593Smuzhiyun 380*4882a593Smuzhiyunbuild_dpms = get_option('dpms') 381*4882a593Smuzhiyunif build_xquartz 382*4882a593Smuzhiyun build_dpms = false 383*4882a593Smuzhiyunendif 384*4882a593Smuzhiyun 385*4882a593Smuzhiyunbuild_xf86bigfont = get_option('xf86bigfont') 386*4882a593Smuzhiyunbuild_screensaver = get_option('screensaver') 387*4882a593Smuzhiyunbuild_res = get_option('xres') 388*4882a593Smuzhiyunif build_res 389*4882a593Smuzhiyun build_hashtable = true 390*4882a593Smuzhiyunendif 391*4882a593Smuzhiyun 392*4882a593Smuzhiyunbuild_xace = get_option('xace') 393*4882a593Smuzhiyunbuild_xinerama = get_option('xinerama') 394*4882a593Smuzhiyun 395*4882a593Smuzhiyunbuild_xsecurity = get_option('xcsecurity') 396*4882a593Smuzhiyunif build_xsecurity 397*4882a593Smuzhiyun if not build_xace 398*4882a593Smuzhiyun error('cannot build Security extension without X-ACE') 399*4882a593Smuzhiyun endif 400*4882a593Smuzhiyunendif 401*4882a593Smuzhiyun 402*4882a593Smuzhiyunbuild_xv = get_option('xv') 403*4882a593Smuzhiyunbuild_xvmc = get_option('xvmc') 404*4882a593Smuzhiyunif not build_xv 405*4882a593Smuzhiyun build_xvmc = false 406*4882a593Smuzhiyunendif 407*4882a593Smuzhiyun 408*4882a593Smuzhiyunbuild_dga = false 409*4882a593Smuzhiyunif get_option('dga') == 'auto' 410*4882a593Smuzhiyun xf86dgaproto_dep = dependency('xf86dgaproto', version: '>= 2.0.99.1', required: false) 411*4882a593Smuzhiyun if xf86dgaproto_dep.found() 412*4882a593Smuzhiyun build_dga = true 413*4882a593Smuzhiyun endif 414*4882a593Smuzhiyunelif get_option('dga') == 'true' 415*4882a593Smuzhiyun xf86dgaproto_dep = dependency('xf86dgaproto', version: '>= 2.0.99.1', required: true) 416*4882a593Smuzhiyun build_dga = true 417*4882a593Smuzhiyunendif 418*4882a593Smuzhiyun 419*4882a593Smuzhiyunbuild_apm = false 420*4882a593Smuzhiyunif (get_option('linux_apm') == true and 421*4882a593Smuzhiyun host_machine.system() == 'linux') 422*4882a593Smuzhiyun if cc.has_header('linux/apm_bios.h') 423*4882a593Smuzhiyun build_apm = true 424*4882a593Smuzhiyun endif 425*4882a593Smuzhiyunendif 426*4882a593Smuzhiyun 427*4882a593Smuzhiyunbuild_acpi = false 428*4882a593Smuzhiyunif (get_option('linux_acpi') == true and 429*4882a593Smuzhiyun host_machine.system() == 'linux') 430*4882a593Smuzhiyun if (host_machine.cpu() == 'x86' or 431*4882a593Smuzhiyun host_machine.cpu() == 'x86_64' or 432*4882a593Smuzhiyun host_machine.cpu() == 'ia64') 433*4882a593Smuzhiyun build_acpi = true 434*4882a593Smuzhiyun endif 435*4882a593Smuzhiyunendif 436*4882a593Smuzhiyun 437*4882a593Smuzhiyunbuild_mitshm = false 438*4882a593Smuzhiyunif get_option('mitshm') == 'auto' 439*4882a593Smuzhiyun build_mitshm = cc.has_header('sys/shm.h') 440*4882a593Smuzhiyunelif get_option('mitshm') == 'true' 441*4882a593Smuzhiyun build_mitshm = true 442*4882a593Smuzhiyunendif 443*4882a593Smuzhiyun 444*4882a593Smuzhiyun# XXX: Allow configuration of these. 445*4882a593Smuzhiyunbuild_xselinux = false 446*4882a593Smuzhiyunbuild_xf86vidmode = xf86vidmodeproto_dep.found() 447*4882a593Smuzhiyun 448*4882a593Smuzhiyunm_dep = cc.find_library('m', required : false) 449*4882a593Smuzhiyundl_dep = cc.find_library('dl', required : false) 450*4882a593Smuzhiyun 451*4882a593Smuzhiyuncommon_dep = [ 452*4882a593Smuzhiyun xproto_dep, 453*4882a593Smuzhiyun randrproto_dep, 454*4882a593Smuzhiyun renderproto_dep, 455*4882a593Smuzhiyun xextproto_dep, 456*4882a593Smuzhiyun inputproto_dep, 457*4882a593Smuzhiyun kbproto_dep, 458*4882a593Smuzhiyun fontsproto_dep, 459*4882a593Smuzhiyun fixesproto_dep, 460*4882a593Smuzhiyun damageproto_dep, 461*4882a593Smuzhiyun xcmiscproto_dep, 462*4882a593Smuzhiyun bigreqsproto_dep, 463*4882a593Smuzhiyun xtrans_dep, 464*4882a593Smuzhiyun 465*4882a593Smuzhiyun videoproto_dep, 466*4882a593Smuzhiyun compositeproto_dep, 467*4882a593Smuzhiyun recordproto_dep, 468*4882a593Smuzhiyun scrnsaverproto_dep, 469*4882a593Smuzhiyun resourceproto_dep, 470*4882a593Smuzhiyun xf86driproto_dep, 471*4882a593Smuzhiyun dri2proto_dep, 472*4882a593Smuzhiyun dri3proto_dep, 473*4882a593Smuzhiyun xineramaproto_dep, 474*4882a593Smuzhiyun xf86bigfontproto_dep, 475*4882a593Smuzhiyun xf86dgaproto_dep, 476*4882a593Smuzhiyun xf86vidmodeproto_dep, 477*4882a593Smuzhiyun windowswmproto_dep, 478*4882a593Smuzhiyun applewmproto_dep, 479*4882a593Smuzhiyun 480*4882a593Smuzhiyun pixman_dep, 481*4882a593Smuzhiyun libbsd_dep, 482*4882a593Smuzhiyun xkbfile_dep, 483*4882a593Smuzhiyun xfont2_dep, 484*4882a593Smuzhiyun xdmcp_dep, 485*4882a593Smuzhiyun] 486*4882a593Smuzhiyun 487*4882a593Smuzhiyuninc = include_directories( 488*4882a593Smuzhiyun 'Xext', 489*4882a593Smuzhiyun 'Xi', 490*4882a593Smuzhiyun 'composite', 491*4882a593Smuzhiyun 'damageext', 492*4882a593Smuzhiyun 'exa', 493*4882a593Smuzhiyun 'fb', 494*4882a593Smuzhiyun 'glamor', 495*4882a593Smuzhiyun 'mi', 496*4882a593Smuzhiyun 'miext/damage', 497*4882a593Smuzhiyun 'miext/shadow', 498*4882a593Smuzhiyun 'miext/sync', 499*4882a593Smuzhiyun 'dbe', 500*4882a593Smuzhiyun 'dri3', 501*4882a593Smuzhiyun 'include', 502*4882a593Smuzhiyun 'present', 503*4882a593Smuzhiyun 'randr', 504*4882a593Smuzhiyun 'render', 505*4882a593Smuzhiyun 'xfixes', 506*4882a593Smuzhiyun) 507*4882a593Smuzhiyun 508*4882a593Smuzhiyunglx_inc = include_directories('glx') 509*4882a593Smuzhiyun 510*4882a593Smuzhiyuntop_srcdir_inc = include_directories('.') 511*4882a593Smuzhiyun 512*4882a593Smuzhiyunserverconfigdir = join_paths(get_option('libdir'), 'xorg') 513*4882a593Smuzhiyun 514*4882a593Smuzhiyunmanpage_config = configuration_data() 515*4882a593Smuzhiyunmanpage_config.set('vendorversion', '"xorg-server @0@" "X Version 11"'.format(meson.project_version())) 516*4882a593Smuzhiyunmanpage_config.set('xorgversion', '"xorg-server @0@" "X Version 11"'.format(meson.project_version())) 517*4882a593Smuzhiyunmanpage_config.set('xservername', 'Xorg') 518*4882a593Smuzhiyunmanpage_config.set('xconfigfile', 'xorg.conf') 519*4882a593Smuzhiyunmanpage_config.set('projectroot', get_option('prefix')) 520*4882a593Smuzhiyunmanpage_config.set('apploaddir', '$(appdefaultdir)') 521*4882a593Smuzhiyunmanpage_config.set('appmansuffix', '1') 522*4882a593Smuzhiyunmanpage_config.set('drivermansuffix', '4') 523*4882a593Smuzhiyunmanpage_config.set('adminmansuffix', '8') 524*4882a593Smuzhiyunmanpage_config.set('libmansuffix', '3') 525*4882a593Smuzhiyunmanpage_config.set('miscmansuffix', '7') 526*4882a593Smuzhiyunmanpage_config.set('filemansuffix', '5') 527*4882a593Smuzhiyunmanpage_config.set('logdir', log_dir) 528*4882a593Smuzhiyunmanpage_config.set('datadir', join_paths(get_option('prefix'), get_option('datadir'))) 529*4882a593Smuzhiyunmanpage_config.set('mandir', join_paths(get_option('prefix'), get_option('mandir'))) 530*4882a593Smuzhiyunmanpage_config.set('sysconfdir', join_paths(get_option('prefix'), get_option('sysconfdir'))) 531*4882a593Smuzhiyunmanpage_config.set('xconfigdir', 'xorg.conf.d') 532*4882a593Smuzhiyunmanpage_config.set('xkbdir', xkb_dir) 533*4882a593Smuzhiyunmanpage_config.set('XKB_DFLT_RULES', get_option('xkb_default_rules')) 534*4882a593Smuzhiyunmanpage_config.set('XKB_DFLT_MODEL', get_option('xkb_default_model')) 535*4882a593Smuzhiyunmanpage_config.set('XKB_DFLT_LAYOUT', get_option('xkb_default_layout')) 536*4882a593Smuzhiyunmanpage_config.set('XKB_DFLT_VARIANT', get_option('xkb_default_variant')) 537*4882a593Smuzhiyunmanpage_config.set('XKB_DFLT_OPTIONS', get_option('xkb_default_options')) 538*4882a593Smuzhiyunmanpage_config.set('bundle_id_prefix', '...') 539*4882a593Smuzhiyunmanpage_config.set('modulepath', module_dir) 540*4882a593Smuzhiyun# wtf doesn't this work 541*4882a593Smuzhiyun# manpage_config.set('suid_wrapper_dir', join_paths(get_option('prefix'), libexecdir)) 542*4882a593Smuzhiyunmanpage_config.set('suid_wrapper_dir', join_paths(get_option('prefix'), 'libexec')) 543*4882a593Smuzhiyunmanpage_config.set('default_font_path', default_font_path) 544*4882a593Smuzhiyun 545*4882a593Smuzhiyun# Include must come first, as it sets up dix-config.h 546*4882a593Smuzhiyunsubdir('include') 547*4882a593Smuzhiyun 548*4882a593Smuzhiyun# X server core 549*4882a593Smuzhiyunsubdir('config') 550*4882a593Smuzhiyunsubdir('dix') 551*4882a593Smuzhiyunsubdir('dri3') 552*4882a593Smuzhiyunsubdir('glx') 553*4882a593Smuzhiyunsubdir('fb') 554*4882a593Smuzhiyunsubdir('mi') 555*4882a593Smuzhiyunsubdir('os') 556*4882a593Smuzhiyun# X extensions 557*4882a593Smuzhiyunsubdir('composite') 558*4882a593Smuzhiyunsubdir('damageext') 559*4882a593Smuzhiyunsubdir('dbe') 560*4882a593Smuzhiyunsubdir('miext/damage') 561*4882a593Smuzhiyunsubdir('miext/shadow') 562*4882a593Smuzhiyunsubdir('miext/sync') 563*4882a593Smuzhiyunsubdir('present') 564*4882a593Smuzhiyunif build_xwin or build_xquartz 565*4882a593Smuzhiyun subdir('pseudoramiX') 566*4882a593Smuzhiyunendif 567*4882a593Smuzhiyunsubdir('randr') 568*4882a593Smuzhiyunsubdir('record') 569*4882a593Smuzhiyunsubdir('render') 570*4882a593Smuzhiyunsubdir('xfixes') 571*4882a593Smuzhiyunsubdir('xkb') 572*4882a593Smuzhiyunsubdir('Xext') 573*4882a593Smuzhiyunsubdir('Xi') 574*4882a593Smuzhiyun# other 575*4882a593Smuzhiyunif build_glamor 576*4882a593Smuzhiyun subdir('glamor') 577*4882a593Smuzhiyunendif 578*4882a593Smuzhiyunif build_xorg or get_option('xephyr') 579*4882a593Smuzhiyun subdir('exa') 580*4882a593Smuzhiyunendif 581*4882a593Smuzhiyun 582*4882a593Smuzhiyun# Common static libraries of all X servers 583*4882a593Smuzhiyunlibxserver = [ 584*4882a593Smuzhiyun libxserver_mi, 585*4882a593Smuzhiyun libxserver_dix, 586*4882a593Smuzhiyun 587*4882a593Smuzhiyun libxserver_composite, 588*4882a593Smuzhiyun libxserver_damageext, 589*4882a593Smuzhiyun libxserver_dbe, 590*4882a593Smuzhiyun libxserver_randr, 591*4882a593Smuzhiyun libxserver_miext_damage, 592*4882a593Smuzhiyun libxserver_render, 593*4882a593Smuzhiyun libxserver_present, 594*4882a593Smuzhiyun libxserver_xext, 595*4882a593Smuzhiyun libxserver_miext_sync, 596*4882a593Smuzhiyun libxserver_xfixes, 597*4882a593Smuzhiyun libxserver_xi, 598*4882a593Smuzhiyun libxserver_xkb, 599*4882a593Smuzhiyun libxserver_record, 600*4882a593Smuzhiyun 601*4882a593Smuzhiyun libxserver_os, 602*4882a593Smuzhiyun] 603*4882a593Smuzhiyun 604*4882a593Smuzhiyunlibxserver += libxserver_dri3 605*4882a593Smuzhiyun 606*4882a593Smuzhiyunsubdir('hw') 607*4882a593Smuzhiyunsubdir('test') 608*4882a593Smuzhiyun 609*4882a593Smuzhiyuninstall_man(configure_file( 610*4882a593Smuzhiyun input: 'man/Xserver.man', 611*4882a593Smuzhiyun output: 'Xserver.1', 612*4882a593Smuzhiyun configuration: manpage_config, 613*4882a593Smuzhiyun)) 614*4882a593Smuzhiyun 615*4882a593Smuzhiyunif build_xorg 616*4882a593Smuzhiyun sdkconfig = configuration_data() 617*4882a593Smuzhiyun awk = find_program('awk') 618*4882a593Smuzhiyun 619*4882a593Smuzhiyun sdkconfig.set('prefix', get_option('prefix')) 620*4882a593Smuzhiyun sdkconfig.set('exec_prefix', '${prefix}') 621*4882a593Smuzhiyun sdkconfig.set('libdir', join_paths('${exec_prefix}', get_option('libdir'))) 622*4882a593Smuzhiyun sdkconfig.set('includedir', join_paths('${prefix}', get_option('includedir'))) 623*4882a593Smuzhiyun sdkconfig.set('datarootdir', join_paths('${prefix}', get_option('datadir'))) 624*4882a593Smuzhiyun sdkconfig.set('moduledir', join_paths('${exec_prefix}', module_dir)) 625*4882a593Smuzhiyun sdkconfig.set('sdkdir', join_paths('${prefix}', get_option('includedir'), 'xorg')) 626*4882a593Smuzhiyun sdkconfig.set('sysconfigdir', join_paths('${datarootdir}', 'X11/xorg.conf.d')) 627*4882a593Smuzhiyun 628*4882a593Smuzhiyun sdkconfig.set('abi_ansic', 629*4882a593Smuzhiyun run_command(awk, '-F', '[(,)]', 630*4882a593Smuzhiyun '/^#define ABI_ANSIC.*SET/ { printf "%d.%d", $2, $3 }', 631*4882a593Smuzhiyun files('hw/xfree86/common/xf86Module.h') 632*4882a593Smuzhiyun ).stdout() 633*4882a593Smuzhiyun ) 634*4882a593Smuzhiyun sdkconfig.set('abi_videodrv', 635*4882a593Smuzhiyun run_command(awk, '-F', '[(,)]', 636*4882a593Smuzhiyun '/^#define ABI_VIDEODRV.*SET/ { printf "%d.%d", $2, $3 }', 637*4882a593Smuzhiyun files('hw/xfree86/common/xf86Module.h') 638*4882a593Smuzhiyun ).stdout() 639*4882a593Smuzhiyun ) 640*4882a593Smuzhiyun sdkconfig.set('abi_xinput', 641*4882a593Smuzhiyun run_command(awk, '-F', '[(,)]', 642*4882a593Smuzhiyun '/^#define ABI_XINPUT.*SET/ { printf "%d.%d", $2, $3 }', 643*4882a593Smuzhiyun files('hw/xfree86/common/xf86Module.h') 644*4882a593Smuzhiyun ).stdout() 645*4882a593Smuzhiyun ) 646*4882a593Smuzhiyun sdkconfig.set('abi_extension', 647*4882a593Smuzhiyun run_command(awk, '-F', '[(,)]', 648*4882a593Smuzhiyun '/^#define ABI_EXTENSION.*SET/ { printf "%d.%d", $2, $3 }', 649*4882a593Smuzhiyun files('hw/xfree86/common/xf86Module.h') 650*4882a593Smuzhiyun ).stdout() 651*4882a593Smuzhiyun ) 652*4882a593Smuzhiyun 653*4882a593Smuzhiyun sdk_required_modules = [ 654*4882a593Smuzhiyun 'pixman-1 >= 0.27.2', 655*4882a593Smuzhiyun ] 656*4882a593Smuzhiyun 657*4882a593Smuzhiyun # XXX this isn't trying very hard, but hard enough. 658*4882a593Smuzhiyun sdkconfig.set('PACKAGE_VERSION', meson.project_version()) 659*4882a593Smuzhiyun sdkconfig.set('SDK_REQUIRED_MODULES', ' '.join(sdk_required_modules)) 660*4882a593Smuzhiyun sdkconfig.set('symbol_visibility', '-fvisibility=hidden') 661*4882a593Smuzhiyun sdkconfig.set('XORG_DRIVER_LIBS', '') 662*4882a593Smuzhiyun 663*4882a593Smuzhiyun configure_file( 664*4882a593Smuzhiyun input: 'xorg-server.pc.in', 665*4882a593Smuzhiyun output: 'xorg-server.pc', 666*4882a593Smuzhiyun configuration: sdkconfig, 667*4882a593Smuzhiyun install_dir: join_paths(get_option('prefix'), 668*4882a593Smuzhiyun get_option('libdir'), 669*4882a593Smuzhiyun 'pkgconfig'), 670*4882a593Smuzhiyun ) 671*4882a593Smuzhiyunendif 672*4882a593Smuzhiyun 673*4882a593Smuzhiyuninstall_data('xorg-server.m4', 674*4882a593Smuzhiyun install_dir: join_paths(get_option('datadir'), 'aclocal')) 675