meson.build revision c8548ba8
11b5d61b8Smrgproject('xserver', 'c', 21b5d61b8Smrg default_options: [ 31b5d61b8Smrg 'buildtype=debugoptimized', 41b5d61b8Smrg 'c_std=gnu99', 51b5d61b8Smrg ], 6c8548ba8Smrg version: '1.20.11', 71b5d61b8Smrg meson_version: '>= 0.42.0', 81b5d61b8Smrg) 91b5d61b8Smrgadd_project_arguments('-DHAVE_DIX_CONFIG_H', language: 'c') 101b5d61b8Smrgcc = meson.get_compiler('c') 111b5d61b8Smrg 121b5d61b8Smrgadd_global_arguments('-fno-strict-aliasing', language : 'c') 131b5d61b8Smrgadd_global_arguments('-fvisibility=hidden', language : 'c') 141b5d61b8Smrg 151b5d61b8Smrgadd_global_link_arguments('-fvisibility=hidden', language : 'c') 161b5d61b8Smrg 171b5d61b8Smrgif cc.get_id() == 'gcc' or cc.get_id() == 'clang' 181b5d61b8Smrg test_wflags = [ 191b5d61b8Smrg '-Wall', 201b5d61b8Smrg '-Wpointer-arith', 211b5d61b8Smrg '-Wmissing-declarations', 221b5d61b8Smrg '-Wformat=2', 231b5d61b8Smrg '-Wstrict-prototypes', 241b5d61b8Smrg '-Wmissing-prototypes', 251b5d61b8Smrg '-Wnested-externs', 261b5d61b8Smrg '-Wbad-function-cast', 271b5d61b8Smrg '-Wold-style-definition', 281b5d61b8Smrg '-Wunused', 291b5d61b8Smrg '-Wuninitialized', 301b5d61b8Smrg '-Wshadow', 311b5d61b8Smrg '-Wmissing-noreturn', 321b5d61b8Smrg '-Wmissing-format-attribute', 331b5d61b8Smrg '-Wredundant-decls', 341b5d61b8Smrg '-Werror=implicit', 351b5d61b8Smrg '-Werror=nonnull', 361b5d61b8Smrg '-Werror=init-self', 371b5d61b8Smrg '-Werror=main', 381b5d61b8Smrg '-Werror=missing-braces', 391b5d61b8Smrg '-Werror=sequence-point', 401b5d61b8Smrg '-Werror=return-type', 411b5d61b8Smrg '-Werror=trigraphs', 421b5d61b8Smrg '-Werror=array-bounds', 431b5d61b8Smrg '-Werror=write-strings', 441b5d61b8Smrg '-Werror=address', 451b5d61b8Smrg '-Werror=int-to-pointer-cast', 461b5d61b8Smrg '-Werror=pointer-to-int-cast', 471b5d61b8Smrg ] 481b5d61b8Smrgelse 491b5d61b8Smrg test_wflags = [] 501b5d61b8Smrgendif 511b5d61b8Smrg 521b5d61b8Smrgcommon_wflags = [] 531b5d61b8Smrgforeach wflag: test_wflags 541b5d61b8Smrg if cc.has_argument(wflag) 551b5d61b8Smrg common_wflags += [ wflag ] 561b5d61b8Smrg endif 571b5d61b8Smrgendforeach 581b5d61b8Smrg 591b5d61b8Smrgadd_global_arguments(common_wflags, language : 'c') 601b5d61b8Smrg 611b5d61b8Smrgxproto_dep = dependency('xproto', version: '>= 7.0.31') 621b5d61b8Smrgrandrproto_dep = dependency('randrproto', version: '>= 1.6.0') 631b5d61b8Smrgrenderproto_dep = dependency('renderproto', version: '>= 0.11') 641b5d61b8Smrgxextproto_dep = dependency('xextproto', version: '>= 7.2.99.901') 651b5d61b8Smrginputproto_dep = dependency('inputproto', version: '>= 2.3') 661b5d61b8Smrgkbproto_dep = dependency('kbproto', version: '>= 1.0.3') 671b5d61b8Smrgfontsproto_dep = dependency('fontsproto', version: '>= 2.1.3') 681b5d61b8Smrgfixesproto_dep = dependency('fixesproto', version: '>= 5.0') 691b5d61b8Smrgdamageproto_dep = dependency('damageproto', version: '>= 1.1') 701b5d61b8Smrgxcmiscproto_dep = dependency('xcmiscproto', version: '>= 1.2.0') 711b5d61b8Smrgbigreqsproto_dep = dependency('bigreqsproto', version: '>= 1.1.0') 721b5d61b8Smrgxtrans_dep = dependency('xtrans', version: '>= 1.3.5') 731b5d61b8Smrg 741b5d61b8Smrgvideoproto_dep = dependency('videoproto') 751b5d61b8Smrgcompositeproto_dep = dependency('compositeproto', version: '>= 0.4') 761b5d61b8Smrgrecordproto_dep = dependency('recordproto', version: '>= 1.13.99.1') 771b5d61b8Smrgscrnsaverproto_dep = dependency('scrnsaverproto', version: '>= 1.1') 781b5d61b8Smrgresourceproto_dep = dependency('resourceproto', version: '>= 1.2.0') 791b5d61b8Smrgxf86driproto_dep = dependency('xf86driproto', version: '>= 2.1.0', required: get_option('dri1') == 'true') 801b5d61b8Smrgdri2proto_dep = dependency('dri2proto', version: '>= 2.8', required: get_option('dri2') == 'true') 811b5d61b8Smrgdri3proto_dep = dependency('dri3proto', version: '>= 1.2', required: get_option('dri3') == 'true') 821b5d61b8Smrgxineramaproto_dep = dependency('xineramaproto') 831b5d61b8Smrgxf86bigfontproto_dep = dependency('xf86bigfontproto', version: '>= 1.2.0') 841b5d61b8Smrgxf86vidmodeproto_dep = dependency('xf86vidmodeproto', version: '>= 2.2.99.1', required: false) 851b5d61b8Smrgwindowswmproto_dep = dependency('windowswmproto', required: false) 861b5d61b8Smrgapplewmproto_dep = dependency('applewmproto', version: '>= 1.4', required: false) 871b5d61b8Smrgxshmfence_dep = dependency('xshmfence', version: '>= 1.1', required: false) 881b5d61b8Smrg 891b5d61b8Smrgpixman_dep = dependency('pixman-1') 901b5d61b8Smrglibbsd_dep = dependency('libbsd', required: false) 911b5d61b8Smrgxkbcomp_dep = dependency('xkbcomp', required: false) 921b5d61b8Smrgxkbfile_dep = dependency('xkbfile') 931b5d61b8Smrgxfont2_dep = dependency('xfont2', version: '>= 2.0') 941b5d61b8Smrgnettle_dep = dependency('nettle') 951b5d61b8Smrg 961b5d61b8Smrgdbus_required = get_option('systemd_logind') == 'true' 971b5d61b8Smrgdbus_dep = dependency('dbus-1', version: '>= 1.0', required: dbus_required) 981b5d61b8Smrg 991b5d61b8Smrgbuild_hashtable = false 1001b5d61b8Smrg 1011b5d61b8Smrg# Resolve default values of some options 1021b5d61b8Smrgxkb_dir = get_option('xkb_dir') 1031b5d61b8Smrgif xkb_dir == '' 1041b5d61b8Smrg xkb_dir = xkbcomp_dep.get_pkgconfig_variable('xkbconfigdir') 1051b5d61b8Smrg if xkb_dir == '' 1061b5d61b8Smrg xkb_dir = join_paths(get_option('prefix'), 'share/X11/xkb') 1071b5d61b8Smrg endif 1081b5d61b8Smrgendif 1091b5d61b8Smrg 1101b5d61b8Smrgxkb_output_dir = get_option('xkb_output_dir') 1111b5d61b8Smrgif xkb_output_dir == '' 1121b5d61b8Smrg xkb_output_dir = join_paths(xkb_dir, 'compiled') 1131b5d61b8Smrgendif 1141b5d61b8Smrg 1151b5d61b8Smrgxkb_bin_dir = get_option('xkb_bin_dir') 1161b5d61b8Smrgif xkb_bin_dir == '' 1171b5d61b8Smrg xkb_bin_dir = xkbcomp_dep.get_pkgconfig_variable('bindir') 1181b5d61b8Smrg if xkb_bin_dir == '' 1191b5d61b8Smrg xkb_bin_dir = join_paths(get_option('prefix'), get_option('bindir')) 1201b5d61b8Smrg endif 1211b5d61b8Smrgendif 1221b5d61b8Smrg 1231b5d61b8Smrgdfp = get_option('default_font_path') 1241b5d61b8Smrgif dfp == '' 1251b5d61b8Smrg fontutil_dep = dependency('fontutil') 1261b5d61b8Smrg fontrootdir = fontutil_dep.get_pkgconfig_variable('fontrootdir') 1271b5d61b8Smrg default_font_path = ','.join([ 1281b5d61b8Smrg join_paths(fontrootdir, 'misc'), 1291b5d61b8Smrg join_paths(fontrootdir, 'TTF'), 1301b5d61b8Smrg join_paths(fontrootdir, 'OTF'), 1311b5d61b8Smrg join_paths(fontrootdir, 'Type1'), 1321b5d61b8Smrg join_paths(fontrootdir, '100dpi'), 1331b5d61b8Smrg join_paths(fontrootdir, '75dpi'), 1341b5d61b8Smrg ]) 1351b5d61b8Smrgelse 1361b5d61b8Smrg default_font_path = dfp 1371b5d61b8Smrgendif 1381b5d61b8Smrg 1391b5d61b8Smrghal_option = get_option('hal') 1401b5d61b8Smrgglamor_option = get_option('glamor') 1411b5d61b8Smrg 1421b5d61b8Smrgbuild_udev = get_option('udev') 1431b5d61b8Smrgif host_machine.system() == 'windows' 1441b5d61b8Smrg build_udev = false 1451b5d61b8Smrg hal_option = 'false' 1461b5d61b8Smrgendif 1471b5d61b8Smrg 1481b5d61b8Smrgif get_option('systemd_logind') == 'auto' 1491b5d61b8Smrg build_systemd_logind = build_udev and dbus_dep.found() 1501b5d61b8Smrgelse 1511b5d61b8Smrg build_systemd_logind = get_option('systemd_logind') == 'true' 1521b5d61b8Smrgendif 1531b5d61b8Smrg 1541b5d61b8Smrgbuild_xorg = false 1551b5d61b8Smrgif (host_machine.system() != 'darwin' and 1561b5d61b8Smrg host_machine.system() != 'windows') 1571b5d61b8Smrg if get_option('xorg') == 'auto' 1581b5d61b8Smrg build_xorg = (host_machine.system() != 'darwin' and 1591b5d61b8Smrg host_machine.system() != 'windows') 1601b5d61b8Smrg else 1611b5d61b8Smrg build_xorg = get_option('xorg') == 'true' 1621b5d61b8Smrg endif 1631b5d61b8Smrgendif 1641b5d61b8Smrgxorgsdkdir = join_paths(get_option('prefix'), get_option('includedir'), 'xorg') 1651b5d61b8Smrg 1661b5d61b8Smrgbuild_xwayland = false 1671b5d61b8Smrgif (host_machine.system() != 'darwin' and 1681b5d61b8Smrg host_machine.system() != 'windows') 1691b5d61b8Smrg if get_option('xwayland') != 'false' 1701b5d61b8Smrg xwayland_required = get_option('xwayland') == 'true' 1711b5d61b8Smrg 1721b5d61b8Smrg xwayland_dep = [ 1731b5d61b8Smrg dependency('wayland-client', version: '>= 1.3.0', required: xwayland_required), 1741b5d61b8Smrg dependency('wayland-protocols', version: '>= 1.10', required: xwayland_required), 1751b5d61b8Smrg dependency('libdrm', version: '>= 2.4.89', required: xwayland_required), 1761b5d61b8Smrg dependency('epoxy', required: xwayland_required), 1771b5d61b8Smrg ] 1781b5d61b8Smrg 1791b5d61b8Smrg build_xwayland = true 1801b5d61b8Smrg # check for all the deps being found, to handle 'auto' mode. 1811b5d61b8Smrg foreach d: xwayland_dep 1821b5d61b8Smrg if not d.found() 1831b5d61b8Smrg build_xwayland = false 1841b5d61b8Smrg endif 1851b5d61b8Smrg endforeach 1861b5d61b8Smrg endif 1871b5d61b8Smrgendif 1881b5d61b8Smrg 1891b5d61b8Smrgbuild_xnest = false 1901b5d61b8Smrgif (host_machine.system() != 'darwin' and 1911b5d61b8Smrg host_machine.system() != 'windows') 1921b5d61b8Smrg if get_option('xnest') != 'false' 1931b5d61b8Smrg xnest_required = get_option('xnest') == 'true' 1941b5d61b8Smrg 1951b5d61b8Smrg xnest_dep = [ 1961b5d61b8Smrg dependency('xext', version: '>= 1.0.99.4', required: xnest_required), 1971b5d61b8Smrg dependency('x11', required: xnest_required), 1981b5d61b8Smrg dependency('xau', required: xnest_required), 1991b5d61b8Smrg ] 2001b5d61b8Smrg 2011b5d61b8Smrg build_xnest = true 2021b5d61b8Smrg # check for all the deps being found, to handle 'auto' mode. 2031b5d61b8Smrg foreach d: xnest_dep 2041b5d61b8Smrg if not d.found() 2051b5d61b8Smrg build_xnest = false 2061b5d61b8Smrg endif 2071b5d61b8Smrg endforeach 2081b5d61b8Smrg endif 2091b5d61b8Smrgendif 2101b5d61b8Smrg 2111b5d61b8Smrgbuild_xwin = false 2121b5d61b8Smrgif get_option('xwin') == 'auto' 2131b5d61b8Smrg if (host_machine.system() == 'cygwin' or 2141b5d61b8Smrg host_machine.system() == 'windows') 2151b5d61b8Smrg build_xwin = true 2161b5d61b8Smrg endif 2171b5d61b8Smrgelse 2181b5d61b8Smrg build_xwin = get_option('xwin') == 'true' 2191b5d61b8Smrgendif 2201b5d61b8Smrg 2211b5d61b8Smrg# XXX: Finish these. 2221b5d61b8Smrgbuild_xquartz = false 2231b5d61b8Smrg 2241b5d61b8Smrgif get_option('ipv6') == 'auto' 2251b5d61b8Smrg build_ipv6 = cc.has_function('getaddrinfo') 2261b5d61b8Smrgelse 2271b5d61b8Smrg build_ipv6 = get_option('ipv6') == 'true' 2281b5d61b8Smrgendif 2291b5d61b8Smrg 2301b5d61b8Smrgint10 = get_option('int10') 2311b5d61b8Smrgif int10 == 'auto' 2321b5d61b8Smrg int10 = 'x86emu' 2331b5d61b8Smrg if host_machine.cpu() == 'powerpc' and host_machine.system() == 'freebsd' 2341b5d61b8Smrg int10 = 'stub' 2351b5d61b8Smrg endif 2361b5d61b8Smrg if host_machine.cpu() == 'arm' 2371b5d61b8Smrg int10 = 'stub' 2381b5d61b8Smrg endif 2391b5d61b8Smrgendif 2401b5d61b8Smrg 2411b5d61b8Smrghal_dep = [] 2421b5d61b8Smrgif hal_option == 'auto' 2431b5d61b8Smrg if not build_udev 2441b5d61b8Smrg hal_dep = dependency('hal', required: false) 2451b5d61b8Smrg build_hal = hal_dep.found() 2461b5d61b8Smrg else 2471b5d61b8Smrg build_hal = false 2481b5d61b8Smrg endif 2491b5d61b8Smrgelse 2501b5d61b8Smrg build_hal = hal_option == 'true' 2511b5d61b8Smrg if build_hal 2521b5d61b8Smrg hal_dep = dependency('hal') 2531b5d61b8Smrg endif 2541b5d61b8Smrgendif 2551b5d61b8Smrg 2561b5d61b8Smrgif build_udev and build_hal 2571b5d61b8Smrg error('Hotplugging through both libudev and hal not allowed') 2581b5d61b8Smrgendif 2591b5d61b8Smrg 2601b5d61b8Smrgbuild_dbus = build_hal or build_systemd_logind 2611b5d61b8Smrg 2621b5d61b8Smrgudev_dep = dependency('', required:false) 2631b5d61b8Smrgif build_udev 2641b5d61b8Smrg udev_dep = dependency('libudev', version: '>= 143') 2651b5d61b8Smrgendif 2661b5d61b8Smrg 2671b5d61b8Smrglog_dir = get_option('log_dir') 2681b5d61b8Smrgif log_dir == '' 2691b5d61b8Smrg log_dir = join_paths(get_option('prefix'), get_option('localstatedir'), 'log') 2701b5d61b8Smrgendif 2711b5d61b8Smrg 2721b5d61b8Smrgmodule_dir = join_paths(get_option('libdir'), get_option('module_dir')) 2731b5d61b8Smrg 2741b5d61b8Smrgif glamor_option == 'auto' 2751b5d61b8Smrg build_glamor = build_xorg or build_xwayland 2761b5d61b8Smrgelse 2771b5d61b8Smrg build_glamor = get_option('glamor') == 'true' 2781b5d61b8Smrgendif 2791b5d61b8Smrg 2801b5d61b8Smrggbm_dep = dependency('', required: false) 2811b5d61b8Smrgepoxy_dep = dependency('', required: false) 2821b5d61b8Smrgif build_glamor 2831b5d61b8Smrg gbm_dep = dependency('gbm', version: '>= 10.2', required: false) 2841b5d61b8Smrg epoxy_dep = dependency('epoxy', required: false) 2851b5d61b8Smrgendif 2861b5d61b8Smrg 2871b5d61b8Smrgeglstream_option = get_option('xwayland_eglstream') 2881b5d61b8Smrgif build_xwayland and build_glamor 2891b5d61b8Smrg eglstream_dep = dependency('wayland-eglstream-protocols', required:false) 2901b5d61b8Smrg if eglstream_option == 'auto' 2911b5d61b8Smrg build_eglstream = eglstream_dep.found() 2921b5d61b8Smrg else 2931b5d61b8Smrg build_eglstream = eglstream_option == 'true' 2941b5d61b8Smrg if build_eglstream and not eglstream_dep.found() 2951b5d61b8Smrg error('glamor EGLStream support requested, but wayland-eglstream-protocols not found') 2961b5d61b8Smrg endif 2971b5d61b8Smrg endif 2981b5d61b8Smrgelse 2991b5d61b8Smrg build_eglstream = false 3001b5d61b8Smrgendif 3011b5d61b8Smrg 3021b5d61b8Smrg# XXX: Add more sha1 options, because Linux is about choice 3031b5d61b8Smrgsha1_dep = nettle_dep 3041b5d61b8Smrg 3051b5d61b8Smrgxdmcp_dep = dependency('', required : false) 3061b5d61b8Smrgif get_option('xdmcp') 3071b5d61b8Smrg xdmcp_dep = dependency('xdmcp') 3081b5d61b8Smrgendif 3091b5d61b8Smrg 3101b5d61b8Smrghas_xdm_auth = get_option('xdm-auth-1') 3111b5d61b8Smrg 3121b5d61b8Smrgif not xdmcp_dep.found() 3131b5d61b8Smrg has_xdm_auth = false 3141b5d61b8Smrgendif 3151b5d61b8Smrg 3161b5d61b8Smrgbuild_glx = get_option('glx') 3171b5d61b8Smrgif build_glx 3181b5d61b8Smrg build_hashtable = true 3191b5d61b8Smrgendif 3201b5d61b8Smrg 3211b5d61b8Smrglibdrm_dep = dependency('libdrm', version: '>= 2.4.89', required: false) 3221b5d61b8Smrg 3231b5d61b8Smrgif get_option('dri1') == 'auto' 3241b5d61b8Smrg build_dri1 = xf86driproto_dep.found() and libdrm_dep.found() 3251b5d61b8Smrgelse 3261b5d61b8Smrg build_dri1 = get_option('dri1') == 'true' 3271b5d61b8Smrgendif 3281b5d61b8Smrg 3291b5d61b8Smrgif get_option('dri2') == 'auto' 3301b5d61b8Smrg build_dri2 = dri2proto_dep.found() and libdrm_dep.found() 3311b5d61b8Smrgelse 3321b5d61b8Smrg build_dri2 = get_option('dri2') == 'true' 3331b5d61b8Smrgendif 3341b5d61b8Smrg 3351b5d61b8Smrgif get_option('dri3') == 'auto' 3361b5d61b8Smrg build_dri3 = dri3proto_dep.found() and xshmfence_dep.found() and libdrm_dep.found() 3371b5d61b8Smrgelse 3381b5d61b8Smrg build_dri3 = get_option('dri3') == 'true' 3391b5d61b8Smrg if build_dri3 3401b5d61b8Smrg if not xshmfence_dep.found() 3411b5d61b8Smrg error('DRI3 requested, but xshmfence not found') 3421b5d61b8Smrg endif 3431b5d61b8Smrg endif 3441b5d61b8Smrgendif 3451b5d61b8Smrg 3461b5d61b8Smrglibdrm_required = build_dri1 or build_dri2 or build_dri3 3471b5d61b8Smrgif not libdrm_dep.found() and libdrm_required 3481b5d61b8Smrg error('DRI requested, but LIBDRM not found') 3491b5d61b8Smrgendif 3501b5d61b8Smrg 351c8548ba8Smrgbuild_modesetting = libdrm_dep.found() and dri2proto_dep.found() 3521b5d61b8Smrg 3531b5d61b8Smrgbuild_vbe = false 3541b5d61b8Smrgif get_option('vbe') == 'auto' 3551b5d61b8Smrg if (host_machine.system() != 'darwin' and 3561b5d61b8Smrg host_machine.system() != 'windows' and 3571b5d61b8Smrg host_machine.system() != 'cygwin') 3581b5d61b8Smrg build_vbe = true 3591b5d61b8Smrg endif 3601b5d61b8Smrgelse 3611b5d61b8Smrg build_vbe = get_option('vbe') == 'true' 3621b5d61b8Smrgendif 3631b5d61b8Smrg 3641b5d61b8Smrgbuild_vgahw = false 3651b5d61b8Smrgif get_option('vgahw') == 'auto' 3661b5d61b8Smrg if (host_machine.system() != 'darwin' and 3671b5d61b8Smrg host_machine.system() != 'windows' and 3681b5d61b8Smrg host_machine.system() != 'cygwin') 3691b5d61b8Smrg build_vgahw = true 3701b5d61b8Smrg endif 3711b5d61b8Smrgelse 3721b5d61b8Smrg build_vgahw = get_option('vgahw') == 'true' 3731b5d61b8Smrgendif 3741b5d61b8Smrg 3751b5d61b8Smrgbuild_dpms = get_option('dpms') 3761b5d61b8Smrgif build_xquartz 3771b5d61b8Smrg build_dpms = false 3781b5d61b8Smrgendif 3791b5d61b8Smrg 3801b5d61b8Smrgbuild_xf86bigfont = get_option('xf86bigfont') 3811b5d61b8Smrgbuild_screensaver = get_option('screensaver') 3821b5d61b8Smrgbuild_res = get_option('xres') 3831b5d61b8Smrgif build_res 3841b5d61b8Smrg build_hashtable = true 3851b5d61b8Smrgendif 3861b5d61b8Smrg 3871b5d61b8Smrgbuild_xace = get_option('xace') 3881b5d61b8Smrgbuild_xinerama = get_option('xinerama') 3891b5d61b8Smrg 3901b5d61b8Smrgbuild_xsecurity = get_option('xcsecurity') 3911b5d61b8Smrgif build_xsecurity 3921b5d61b8Smrg if not build_xace 3931b5d61b8Smrg error('cannot build Security extension without X-ACE') 3941b5d61b8Smrg endif 3951b5d61b8Smrgendif 3961b5d61b8Smrg 3971b5d61b8Smrgbuild_xv = get_option('xv') 3981b5d61b8Smrgbuild_xvmc = get_option('xvmc') 3991b5d61b8Smrgif not build_xv 4001b5d61b8Smrg build_xvmc = false 4011b5d61b8Smrgendif 4021b5d61b8Smrg 4031b5d61b8Smrgbuild_dga = false 4041b5d61b8Smrgif get_option('dga') == 'auto' 4051b5d61b8Smrg xf86dgaproto_dep = dependency('xf86dgaproto', version: '>= 2.0.99.1', required: false) 4061b5d61b8Smrg if xf86dgaproto_dep.found() 4071b5d61b8Smrg build_dga = true 4081b5d61b8Smrg endif 4091b5d61b8Smrgelif get_option('dga') == 'true' 4101b5d61b8Smrg xf86dgaproto_dep = dependency('xf86dgaproto', version: '>= 2.0.99.1', required: true) 4111b5d61b8Smrg build_dga = true 4121b5d61b8Smrgendif 4131b5d61b8Smrg 4141b5d61b8Smrgbuild_apm = false 4151b5d61b8Smrgif (get_option('linux_apm') == true and 4161b5d61b8Smrg host_machine.system() == 'linux') 4171b5d61b8Smrg if cc.has_header('linux/apm_bios.h') 4181b5d61b8Smrg build_apm = true 4191b5d61b8Smrg endif 4201b5d61b8Smrgendif 4211b5d61b8Smrg 4221b5d61b8Smrgbuild_acpi = false 4231b5d61b8Smrgif (get_option('linux_acpi') == true and 4241b5d61b8Smrg host_machine.system() == 'linux') 4251b5d61b8Smrg if (host_machine.cpu() == 'x86' or 4261b5d61b8Smrg host_machine.cpu() == 'x86_64' or 4271b5d61b8Smrg host_machine.cpu() == 'ia64') 4281b5d61b8Smrg build_acpi = true 4291b5d61b8Smrg endif 4301b5d61b8Smrgendif 4311b5d61b8Smrg 4321b5d61b8Smrgbuild_mitshm = false 4331b5d61b8Smrgif get_option('mitshm') == 'auto' 4341b5d61b8Smrg build_mitshm = cc.has_header('sys/shm.h') 4351b5d61b8Smrgelif get_option('mitshm') == 'true' 4361b5d61b8Smrg build_mitshm = true 4371b5d61b8Smrgendif 4381b5d61b8Smrg 4391b5d61b8Smrg# XXX: Allow configuration of these. 4401b5d61b8Smrgbuild_xselinux = false 4411b5d61b8Smrgbuild_xf86vidmode = xf86vidmodeproto_dep.found() 4421b5d61b8Smrg 4431b5d61b8Smrgm_dep = cc.find_library('m', required : false) 4441b5d61b8Smrgdl_dep = cc.find_library('dl', required : false) 4451b5d61b8Smrg 4461b5d61b8Smrgcommon_dep = [ 4471b5d61b8Smrg xproto_dep, 4481b5d61b8Smrg randrproto_dep, 4491b5d61b8Smrg renderproto_dep, 4501b5d61b8Smrg xextproto_dep, 4511b5d61b8Smrg inputproto_dep, 4521b5d61b8Smrg kbproto_dep, 4531b5d61b8Smrg fontsproto_dep, 4541b5d61b8Smrg fixesproto_dep, 4551b5d61b8Smrg damageproto_dep, 4561b5d61b8Smrg xcmiscproto_dep, 4571b5d61b8Smrg bigreqsproto_dep, 4581b5d61b8Smrg xtrans_dep, 4591b5d61b8Smrg 4601b5d61b8Smrg videoproto_dep, 4611b5d61b8Smrg compositeproto_dep, 4621b5d61b8Smrg recordproto_dep, 4631b5d61b8Smrg scrnsaverproto_dep, 4641b5d61b8Smrg resourceproto_dep, 4651b5d61b8Smrg xf86driproto_dep, 4661b5d61b8Smrg dri2proto_dep, 4671b5d61b8Smrg dri3proto_dep, 4681b5d61b8Smrg xineramaproto_dep, 4691b5d61b8Smrg xf86bigfontproto_dep, 4701b5d61b8Smrg xf86dgaproto_dep, 4711b5d61b8Smrg xf86vidmodeproto_dep, 4721b5d61b8Smrg windowswmproto_dep, 4731b5d61b8Smrg applewmproto_dep, 4741b5d61b8Smrg 4751b5d61b8Smrg pixman_dep, 4761b5d61b8Smrg libbsd_dep, 4771b5d61b8Smrg xkbfile_dep, 4781b5d61b8Smrg xfont2_dep, 4791b5d61b8Smrg xdmcp_dep, 4801b5d61b8Smrg] 4811b5d61b8Smrg 4821b5d61b8Smrginc = include_directories( 4831b5d61b8Smrg 'Xext', 4841b5d61b8Smrg 'Xi', 4851b5d61b8Smrg 'composite', 4861b5d61b8Smrg 'damageext', 4871b5d61b8Smrg 'exa', 4881b5d61b8Smrg 'fb', 4891b5d61b8Smrg 'glamor', 4901b5d61b8Smrg 'mi', 4911b5d61b8Smrg 'miext/damage', 4921b5d61b8Smrg 'miext/shadow', 4931b5d61b8Smrg 'miext/sync', 4941b5d61b8Smrg 'dbe', 4951b5d61b8Smrg 'dri3', 4961b5d61b8Smrg 'include', 4971b5d61b8Smrg 'present', 4981b5d61b8Smrg 'randr', 4991b5d61b8Smrg 'render', 5001b5d61b8Smrg 'xfixes', 5011b5d61b8Smrg) 5021b5d61b8Smrg 5031b5d61b8Smrgglx_inc = include_directories('glx') 5041b5d61b8Smrg 5051b5d61b8Smrgtop_srcdir_inc = include_directories('.') 5061b5d61b8Smrg 5071b5d61b8Smrgserverconfigdir = join_paths(get_option('libdir'), 'xorg') 5081b5d61b8Smrg 5091b5d61b8Smrgmanpage_config = configuration_data() 5101b5d61b8Smrgmanpage_config.set('vendorversion', '"xorg-server @0@" "X Version 11"'.format(meson.project_version())) 5111b5d61b8Smrgmanpage_config.set('xorgversion', '"xorg-server @0@" "X Version 11"'.format(meson.project_version())) 5121b5d61b8Smrgmanpage_config.set('xservername', 'Xorg') 5131b5d61b8Smrgmanpage_config.set('xconfigfile', 'xorg.conf') 5141b5d61b8Smrgmanpage_config.set('projectroot', get_option('prefix')) 5151b5d61b8Smrgmanpage_config.set('apploaddir', '$(appdefaultdir)') 5161b5d61b8Smrgmanpage_config.set('appmansuffix', '1') 5171b5d61b8Smrgmanpage_config.set('drivermansuffix', '4') 5181b5d61b8Smrgmanpage_config.set('adminmansuffix', '8') 5191b5d61b8Smrgmanpage_config.set('libmansuffix', '3') 5201b5d61b8Smrgmanpage_config.set('miscmansuffix', '7') 5211b5d61b8Smrgmanpage_config.set('filemansuffix', '5') 5221b5d61b8Smrgmanpage_config.set('logdir', log_dir) 5231b5d61b8Smrgmanpage_config.set('datadir', join_paths(get_option('prefix'), get_option('datadir'))) 5241b5d61b8Smrgmanpage_config.set('mandir', join_paths(get_option('prefix'), get_option('mandir'))) 5251b5d61b8Smrgmanpage_config.set('sysconfdir', join_paths(get_option('prefix'), get_option('sysconfdir'))) 5261b5d61b8Smrgmanpage_config.set('xconfigdir', 'xorg.conf.d') 5271b5d61b8Smrgmanpage_config.set('xkbdir', xkb_dir) 5281b5d61b8Smrgmanpage_config.set('XKB_DFLT_RULES', get_option('xkb_default_rules')) 5291b5d61b8Smrgmanpage_config.set('XKB_DFLT_MODEL', get_option('xkb_default_model')) 5301b5d61b8Smrgmanpage_config.set('XKB_DFLT_LAYOUT', get_option('xkb_default_layout')) 5311b5d61b8Smrgmanpage_config.set('XKB_DFLT_VARIANT', get_option('xkb_default_variant')) 5321b5d61b8Smrgmanpage_config.set('XKB_DFLT_OPTIONS', get_option('xkb_default_options')) 5331b5d61b8Smrgmanpage_config.set('bundle_id_prefix', '...') 5341b5d61b8Smrgmanpage_config.set('modulepath', module_dir) 5351b5d61b8Smrg# wtf doesn't this work 5361b5d61b8Smrg# manpage_config.set('suid_wrapper_dir', join_paths(get_option('prefix'), libexecdir)) 5371b5d61b8Smrgmanpage_config.set('suid_wrapper_dir', join_paths(get_option('prefix'), 'libexec')) 5381b5d61b8Smrgmanpage_config.set('default_font_path', default_font_path) 5391b5d61b8Smrg 5401b5d61b8Smrg# Include must come first, as it sets up dix-config.h 5411b5d61b8Smrgsubdir('include') 5421b5d61b8Smrg 5431b5d61b8Smrg# X server core 5441b5d61b8Smrgsubdir('config') 5451b5d61b8Smrgsubdir('dix') 5461b5d61b8Smrgsubdir('dri3') 5471b5d61b8Smrgsubdir('glx') 5481b5d61b8Smrgsubdir('fb') 5491b5d61b8Smrgsubdir('mi') 5501b5d61b8Smrgsubdir('os') 5511b5d61b8Smrg# X extensions 5521b5d61b8Smrgsubdir('composite') 5531b5d61b8Smrgsubdir('damageext') 5541b5d61b8Smrgsubdir('dbe') 5551b5d61b8Smrgsubdir('miext/damage') 5561b5d61b8Smrgsubdir('miext/shadow') 5571b5d61b8Smrgsubdir('miext/sync') 5581b5d61b8Smrgsubdir('present') 5591b5d61b8Smrgif build_xwin or build_xquartz 5601b5d61b8Smrg subdir('pseudoramiX') 5611b5d61b8Smrgendif 5621b5d61b8Smrgsubdir('randr') 5631b5d61b8Smrgsubdir('record') 5641b5d61b8Smrgsubdir('render') 5651b5d61b8Smrgsubdir('xfixes') 5661b5d61b8Smrgsubdir('xkb') 5671b5d61b8Smrgsubdir('Xext') 5681b5d61b8Smrgsubdir('Xi') 5691b5d61b8Smrg# other 5701b5d61b8Smrgif build_glamor 5711b5d61b8Smrg subdir('glamor') 5721b5d61b8Smrgendif 5731b5d61b8Smrgif build_xorg or get_option('xephyr') 5741b5d61b8Smrg subdir('exa') 5751b5d61b8Smrgendif 5761b5d61b8Smrg 5771b5d61b8Smrg# Common static libraries of all X servers 5781b5d61b8Smrglibxserver = [ 5791b5d61b8Smrg libxserver_mi, 5801b5d61b8Smrg libxserver_dix, 5811b5d61b8Smrg 5821b5d61b8Smrg libxserver_composite, 5831b5d61b8Smrg libxserver_damageext, 5841b5d61b8Smrg libxserver_dbe, 5851b5d61b8Smrg libxserver_randr, 5861b5d61b8Smrg libxserver_miext_damage, 5871b5d61b8Smrg libxserver_render, 5881b5d61b8Smrg libxserver_present, 5891b5d61b8Smrg libxserver_xext, 5901b5d61b8Smrg libxserver_miext_sync, 5911b5d61b8Smrg libxserver_xfixes, 5921b5d61b8Smrg libxserver_xi, 5931b5d61b8Smrg libxserver_xkb, 5941b5d61b8Smrg libxserver_record, 5951b5d61b8Smrg 5961b5d61b8Smrg libxserver_os, 5971b5d61b8Smrg] 5981b5d61b8Smrg 5991b5d61b8Smrglibxserver += libxserver_dri3 6001b5d61b8Smrg 6011b5d61b8Smrgsubdir('hw') 6021b5d61b8Smrgsubdir('test') 6031b5d61b8Smrg 6041b5d61b8Smrginstall_man(configure_file( 6051b5d61b8Smrg input: 'man/Xserver.man', 6061b5d61b8Smrg output: 'Xserver.1', 6071b5d61b8Smrg configuration: manpage_config, 6081b5d61b8Smrg)) 6091b5d61b8Smrg 6101b5d61b8Smrgif build_xorg 6111b5d61b8Smrg sdkconfig = configuration_data() 6121b5d61b8Smrg awk = find_program('awk') 6131b5d61b8Smrg 6141b5d61b8Smrg sdkconfig.set('prefix', get_option('prefix')) 6151b5d61b8Smrg sdkconfig.set('exec_prefix', '${prefix}') 6161b5d61b8Smrg sdkconfig.set('libdir', join_paths('${exec_prefix}', get_option('libdir'))) 6171b5d61b8Smrg sdkconfig.set('includedir', join_paths('${prefix}', get_option('includedir'))) 6181b5d61b8Smrg sdkconfig.set('datarootdir', join_paths('${prefix}', get_option('datadir'))) 6191b5d61b8Smrg sdkconfig.set('moduledir', join_paths('${exec_prefix}', module_dir)) 6201b5d61b8Smrg sdkconfig.set('sdkdir', join_paths('${prefix}', get_option('includedir'), 'xorg')) 6211b5d61b8Smrg sdkconfig.set('sysconfigdir', join_paths('${datarootdir}', 'X11/xorg.conf.d')) 6221b5d61b8Smrg 6231b5d61b8Smrg sdkconfig.set('abi_ansic', 6241b5d61b8Smrg run_command(awk, '-F', '[(,)]', 6251b5d61b8Smrg '/^#define ABI_ANSIC.*SET/ { printf "%d.%d", $2, $3 }', 6261b5d61b8Smrg files('hw/xfree86/common/xf86Module.h') 6271b5d61b8Smrg ).stdout() 6281b5d61b8Smrg ) 6291b5d61b8Smrg sdkconfig.set('abi_videodrv', 6301b5d61b8Smrg run_command(awk, '-F', '[(,)]', 6311b5d61b8Smrg '/^#define ABI_VIDEODRV.*SET/ { printf "%d.%d", $2, $3 }', 6321b5d61b8Smrg files('hw/xfree86/common/xf86Module.h') 6331b5d61b8Smrg ).stdout() 6341b5d61b8Smrg ) 6351b5d61b8Smrg sdkconfig.set('abi_xinput', 6361b5d61b8Smrg run_command(awk, '-F', '[(,)]', 6371b5d61b8Smrg '/^#define ABI_XINPUT.*SET/ { printf "%d.%d", $2, $3 }', 6381b5d61b8Smrg files('hw/xfree86/common/xf86Module.h') 6391b5d61b8Smrg ).stdout() 6401b5d61b8Smrg ) 6411b5d61b8Smrg sdkconfig.set('abi_extension', 6421b5d61b8Smrg run_command(awk, '-F', '[(,)]', 6431b5d61b8Smrg '/^#define ABI_EXTENSION.*SET/ { printf "%d.%d", $2, $3 }', 6441b5d61b8Smrg files('hw/xfree86/common/xf86Module.h') 6451b5d61b8Smrg ).stdout() 6461b5d61b8Smrg ) 6471b5d61b8Smrg 6481b5d61b8Smrg sdk_required_modules = [ 6491b5d61b8Smrg 'pixman-1 >= 0.27.2', 6501b5d61b8Smrg ] 6511b5d61b8Smrg 6521b5d61b8Smrg # XXX this isn't trying very hard, but hard enough. 6531b5d61b8Smrg sdkconfig.set('PACKAGE_VERSION', meson.project_version()) 6541b5d61b8Smrg sdkconfig.set('SDK_REQUIRED_MODULES', ' '.join(sdk_required_modules)) 6551b5d61b8Smrg sdkconfig.set('symbol_visibility', '-fvisibility=hidden') 6561b5d61b8Smrg sdkconfig.set('XORG_DRIVER_LIBS', '') 6571b5d61b8Smrg 6581b5d61b8Smrg configure_file( 6591b5d61b8Smrg input: 'xorg-server.pc.in', 6601b5d61b8Smrg output: 'xorg-server.pc', 6611b5d61b8Smrg configuration: sdkconfig, 6621b5d61b8Smrg install_dir: join_paths(get_option('prefix'), 6631b5d61b8Smrg get_option('libdir'), 6641b5d61b8Smrg 'pkgconfig'), 6651b5d61b8Smrg ) 6661b5d61b8Smrgendif 6671b5d61b8Smrg 6681b5d61b8Smrginstall_data('xorg-server.m4', 6691b5d61b8Smrg install_dir: join_paths(get_option('datadir'), 'aclocal')) 670