11b5d61b8Smrgxorg_inc = include_directories(
21b5d61b8Smrg    'common',
31b5d61b8Smrg    'ddc',
41b5d61b8Smrg    'dri2',
51b5d61b8Smrg    'i2c',
61b5d61b8Smrg    'int10',
71b5d61b8Smrg    'loader',
81b5d61b8Smrg    'modes',
91b5d61b8Smrg    'os-support',
101b5d61b8Smrg    'os-support/bus',
111b5d61b8Smrg    'parser',
121b5d61b8Smrg    'ramdac',
131b5d61b8Smrg    'vgahw',
141b5d61b8Smrg)
151b5d61b8Smrg
161b5d61b8Smrgxorg_c_args = []
171b5d61b8Smrgxorg_c_args += '-DHAVE_XORG_CONFIG_H'
181b5d61b8Smrgxorg_c_args += '-DXORG_NO_SDKSYMS'
191b5d61b8Smrg
201b5d61b8Smrgpciaccess_dep = []
211b5d61b8Smrgif get_option('pciaccess')
221b5d61b8Smrg    pciaccess_dep = dependency('pciaccess', version: '>= 0.12.901')
231b5d61b8Smrgendif
241b5d61b8Smrg
251b5d61b8Smrg# subdirs for convenience libraries statically linked into Xorg
261b5d61b8Smrgsubdir('common')
271b5d61b8Smrgsubdir('ddc')
281b5d61b8Smrgif build_dri1
291b5d61b8Smrg    subdir('dri')
301b5d61b8Smrgendif
311b5d61b8Smrgif build_dri2
321b5d61b8Smrg    subdir('dri2')
331b5d61b8Smrgendif
341b5d61b8Smrgsubdir('i2c')
351b5d61b8Smrgsubdir('loader')
361b5d61b8Smrgsubdir('modes')
371b5d61b8Smrgsubdir('os-support')
381b5d61b8Smrgsubdir('parser')
391b5d61b8Smrgsubdir('ramdac')
401b5d61b8Smrgsubdir('xkb')
411b5d61b8Smrg
421b5d61b8Smrgsrcs_xorg = [
43ed6184dfSmrg    '../../mi/miinitext.c',
44ed6184dfSmrg    '../../mi/miinitext.h',
451b5d61b8Smrg]
461b5d61b8Smrg
471b5d61b8Smrg# Extract all the objects so that all symbols get brought into the
481b5d61b8Smrg# server.  This prevents us from needing a global table of all symbols
491b5d61b8Smrg# that should be exported to Xorg modules, at the expense of all
501b5d61b8Smrg# symbols being included and public
511b5d61b8Smrg
521b5d61b8Smrgxorg_link = [
531b5d61b8Smrg    libxserver,
541b5d61b8Smrg    libglxvnd,
551b5d61b8Smrg    xorg_common,
561b5d61b8Smrg    xorg_loader,
571b5d61b8Smrg    xorg_ddc,
581b5d61b8Smrg    xorg_xkb,
591b5d61b8Smrg    xorg_i2c,
601b5d61b8Smrg    xorg_modes,
611b5d61b8Smrg    xorg_os_support,
621b5d61b8Smrg    xorg_parser,
631b5d61b8Smrg    xorg_ramdac,
64ed6184dfSmrg    libxserver_fb,
651b5d61b8Smrg    libxserver_xext_vidmode,
661b5d61b8Smrg    libxserver_main,
671b5d61b8Smrg    libxserver_config,
681b5d61b8Smrg]
691b5d61b8Smrgif build_dri1
701b5d61b8Smrg    xorg_link += xorg_dri
711b5d61b8Smrgendif
721b5d61b8Smrgif build_dri2
731b5d61b8Smrg    xorg_link += xorg_dri2
741b5d61b8Smrgendif
751b5d61b8Smrg
761b5d61b8Smrgif host_machine.system() == 'cygwin' or host_machine.system() == 'windows'
771b5d61b8Smrg    linker_export_flags = '-Wl,--export-all-symbols'
78dc61d50dSmrgelif host_machine.system() == 'sunos' or host_machine.system() == 'darwin'
79ed6184dfSmrg    linker_export_flags = []
801b5d61b8Smrgelse
811b5d61b8Smrg    linker_export_flags = '-Wl,--export-dynamic'
821b5d61b8Smrgendif
831b5d61b8Smrg
841b5d61b8Smrgxorg_deps = [
851b5d61b8Smrg    pixman_dep,
861b5d61b8Smrg    m_dep,
871b5d61b8Smrg    dl_dep,
881b5d61b8Smrg    pciaccess_dep,
891b5d61b8Smrg    sha1_dep,
901b5d61b8Smrg    dependency('xau'),
911b5d61b8Smrg    xdmcp_dep,
921b5d61b8Smrg    xfont2_dep,
931b5d61b8Smrg    xshmfence_dep,
941b5d61b8Smrg    config_dep,
951b5d61b8Smrg    libdrm_dep,
961b5d61b8Smrg]
971b5d61b8Smrg
981b5d61b8Smrgif get_option('suid_wrapper')
991b5d61b8Smrg    xorg_install_dir = get_option('libexecdir')
1001b5d61b8Smrgelse
1011b5d61b8Smrg    xorg_install_dir = get_option('bindir')
1021b5d61b8Smrgendif
1031b5d61b8Smrg
1041b5d61b8Smrge = executable(
1051b5d61b8Smrg    'Xorg',
1061b5d61b8Smrg    srcs_xorg,
1071b5d61b8Smrg    include_directories: [inc, xorg_inc],
1081b5d61b8Smrg    link_whole: xorg_link,
1091b5d61b8Smrg    dependencies: xorg_deps,
1101b5d61b8Smrg    link_args: linker_export_flags,
1111b5d61b8Smrg    c_args: xorg_c_args,
1121b5d61b8Smrg    install: true,
1131b5d61b8Smrg    install_dir: xorg_install_dir,
1141b5d61b8Smrg    implib: true,
1151b5d61b8Smrg)
1161b5d61b8Smrg
1171b5d61b8Smrg# subdirs for modules loadable by Xorg
1181b5d61b8Smrgsubdir('dixmods')
1191b5d61b8Smrgsubdir('exa')
1201b5d61b8Smrgsubdir('fbdevhw')
1211b5d61b8Smrgif gbm_dep.found()
1221b5d61b8Smrg    subdir('glamor_egl')
1231b5d61b8Smrgendif
1241b5d61b8Smrgif int10 != 'false'
1251b5d61b8Smrg    if int10 == 'x86emu'
1261b5d61b8Smrg        subdir('x86emu')
1271b5d61b8Smrg    endif
1281b5d61b8Smrg    subdir('int10')
1291b5d61b8Smrgendif
1301b5d61b8Smrgsubdir('shadowfb')
1311b5d61b8Smrgif build_vgahw
1321b5d61b8Smrg    subdir('vgahw')
1331b5d61b8Smrgendif
1341b5d61b8Smrgif build_modesetting
1351b5d61b8Smrg   subdir('drivers/modesetting')
1361b5d61b8Smrgendif
137ed6184dfSmrgif get_option('xf86-input-inputtest')
138ed6184dfSmrg    subdir('drivers/inputtest')
139ed6184dfSmrgendif
140ed6184dfSmrg
141ed6184dfSmrgmeson.add_install_script(
142ed6184dfSmrg    'sh', '-c',
143ed6184dfSmrg    'ln -fs Xorg @0@@1@'.format(
144ed6184dfSmrg        '${DESTDIR}',
145ed6184dfSmrg        join_paths(get_option('prefix'), get_option('bindir'), 'X')))
1461b5d61b8Smrg
1471b5d61b8Smrgif get_option('suid_wrapper')
1481b5d61b8Smrg    executable('Xorg.wrap',
1491b5d61b8Smrg        'xorg-wrapper.c',
1501b5d61b8Smrg        include_directories: [inc, xorg_inc],
1511b5d61b8Smrg        dependencies: xorg_deps,
1521b5d61b8Smrg        c_args: xorg_c_args,
1531b5d61b8Smrg        install: true,
1541b5d61b8Smrg        install_dir: get_option('libexecdir'),
155ed6184dfSmrg        install_mode: ['r-sr-xr-x', 0, 0],
1561b5d61b8Smrg    )
157ed6184dfSmrg
158ed6184dfSmrg    # meson gets confused when there are two targets of the same name
159ed6184dfSmrg    # within the same directory, so we use a different intermediate name.
160ed6184dfSmrg    xorg_sh = configure_file(
1611b5d61b8Smrg        input: 'Xorg.sh.in',
162ed6184dfSmrg        output: 'Xorg.sh',
1631b5d61b8Smrg        configuration: conf_data,
164ed6184dfSmrg    )
165ed6184dfSmrg
166ed6184dfSmrg    install_data(
167ed6184dfSmrg        xorg_sh,
168ed6184dfSmrg        install_mode: 'rwxr-xr-x',
1691b5d61b8Smrg        install_dir: join_paths(get_option('prefix'), get_option('bindir')),
170ed6184dfSmrg        rename: ['Xorg']
1711b5d61b8Smrg    )
1721b5d61b8Smrgendif
1731b5d61b8Smrg
1741b5d61b8Smrgexecutable('gtf',
1751b5d61b8Smrg    'utils/gtf/gtf.c',
1761b5d61b8Smrg    include_directories: [inc, xorg_inc],
1771b5d61b8Smrg    dependencies: xorg_deps,
1781b5d61b8Smrg    c_args: xorg_c_args,
1791b5d61b8Smrg    install: true,
1801b5d61b8Smrg)
1811b5d61b8Smrg
1821b5d61b8Smrg# For symbol presence testing only
1831b5d61b8Smrgxorgserver_lib = shared_library(
1841b5d61b8Smrg    'xorgserver',
1851b5d61b8Smrg    srcs_xorg,
1861b5d61b8Smrg    include_directories: [inc, xorg_inc],
1871b5d61b8Smrg    link_whole: xorg_link,
1881b5d61b8Smrg    dependencies: xorg_deps,
1891b5d61b8Smrg    link_args: linker_export_flags,
1901b5d61b8Smrg    c_args: xorg_c_args,
1911b5d61b8Smrg    install: false,
1921b5d61b8Smrg)
1931b5d61b8Smrg
1941b5d61b8Smrgxorgserver_dep = declare_dependency(link_with: xorgserver_lib)
1951b5d61b8Smrg
1961b5d61b8Smrginstall_man(configure_file(
1971b5d61b8Smrg    input: 'man/Xorg.man',
1981b5d61b8Smrg    output: 'Xorg.1',
1991b5d61b8Smrg    configuration: manpage_config,
2001b5d61b8Smrg))
2011b5d61b8Smrg
2021b5d61b8Smrgif get_option('suid_wrapper')
2031b5d61b8Smrg    install_man(configure_file(
2041b5d61b8Smrg        input: 'man/Xorg.wrap.man',
2051b5d61b8Smrg        output: 'Xorg.wrap.1',
2061b5d61b8Smrg        configuration: manpage_config,
2071b5d61b8Smrg    ))
2081b5d61b8Smrg
2091b5d61b8Smrg    install_man(configure_file(
2101b5d61b8Smrg        input: 'man/Xwrapper.config.man',
2111b5d61b8Smrg        output: 'Xwrapper.config.5',
2121b5d61b8Smrg        configuration: manpage_config,
2131b5d61b8Smrg    ))
2141b5d61b8Smrgendif
2151b5d61b8Smrg
2161b5d61b8Smrginstall_man(configure_file(
2171b5d61b8Smrg    input: 'man/xorg.conf.man',
2181b5d61b8Smrg    output: 'xorg.conf.5',
2191b5d61b8Smrg    configuration: manpage_config,
2201b5d61b8Smrg))
2211b5d61b8Smrg
2221b5d61b8Smrginstall_man(configure_file(
2231b5d61b8Smrg    input: 'man/xorg.conf.d.man',
2241b5d61b8Smrg    output: 'xorg.conf.d.5',
2251b5d61b8Smrg    configuration: manpage_config,
2261b5d61b8Smrg))
2271b5d61b8Smrg
2281b5d61b8Smrginstall_man(configure_file(
2291b5d61b8Smrg    input: 'utils/man/gtf.man',
2301b5d61b8Smrg    output: 'gtf.1',
2311b5d61b8Smrg    configuration: manpage_config,
2321b5d61b8Smrg))
233ed6184dfSmrg
234ed6184dfSmrgsubdir('doc')
235