11b5d61b8Smrgsrcs_xorg_os_support = [
21b5d61b8Smrg    'bus/nobus.c',
31b5d61b8Smrg    'shared/posix_tty.c',
41b5d61b8Smrg    'shared/sigio.c',
51b5d61b8Smrg    'shared/vidmem.c',
61b5d61b8Smrg]
71b5d61b8Smrg
81b5d61b8Smrghdrs_xorg_os_support = [
91b5d61b8Smrg    'bus/xf86Pci.h',
101b5d61b8Smrg    'xf86_OSlib.h',
111b5d61b8Smrg    'xf86_OSproc.h'
121b5d61b8Smrg]
131b5d61b8Smrg
14ed6184dfSmrgos_dep = []
15ed6184dfSmrgos_c_args = []
161b5d61b8Smrg
171b5d61b8Smrgif get_option('pciaccess')
181b5d61b8Smrg    srcs_xorg_os_support += 'bus/Pci.c'
19ed6184dfSmrg    if host_machine.system() != 'linux'
201b5d61b8Smrg        srcs_xorg_os_support += 'bus/bsd_pci.c'
211b5d61b8Smrg    endif
22ed6184dfSmrg    if host_machine.cpu() == 'sparc' or host_machine.cpu() == 'sparc64'
231b5d61b8Smrg        srcs_xorg_os_support += 'bus/Sbus.c'
241b5d61b8Smrg        install_data('bus/xf86Sbus.h', install_dir: xorgsdkdir)
251b5d61b8Smrg    endif
261b5d61b8Smrgendif
271b5d61b8Smrg
28ed6184dfSmrgif get_option('agp') == 'auto'
29ed6184dfSmrg    build_agp = cc.has_header('sys/agpio.h') or cc.has_header('sys/agpgart.h') or cc.has_header('linux/agpgart.h')
30ed6184dfSmrgelse
31ed6184dfSmrg    build_agp = get_option('agp') == 'true'
32ed6184dfSmrgendif
33ed6184dfSmrg
341b5d61b8Smrgif host_machine.system() == 'linux'
351b5d61b8Smrg    srcs_xorg_os_support += [
361b5d61b8Smrg        'linux/lnx_bell.c',
371b5d61b8Smrg        'linux/lnx_init.c',
381b5d61b8Smrg        'linux/lnx_kmod.c',
391b5d61b8Smrg        'linux/lnx_platform.c',
401b5d61b8Smrg        'linux/lnx_video.c',
411b5d61b8Smrg        'misc/SlowBcopy.c',
421b5d61b8Smrg        'shared/VTsw_usl.c',
431b5d61b8Smrg    ]
44ed6184dfSmrg    if build_agp
45ed6184dfSmrg        srcs_xorg_os_support += 'linux/lnx_agp.c'
46ed6184dfSmrg    else
47ed6184dfSmrg        srcs_xorg_os_support += 'shared/agp_noop.c'
48ed6184dfSmrg    endif
491b5d61b8Smrg    if build_systemd_logind
501b5d61b8Smrg        srcs_xorg_os_support += 'linux/systemd-logind.c'
511b5d61b8Smrg    endif
521b5d61b8Smrg
531b5d61b8Smrg    # this is ugly because the code is also
541b5d61b8Smrg    if build_apm or build_acpi
551b5d61b8Smrg        srcs_xorg_os_support += 'linux/lnx_apm.c'
561b5d61b8Smrg        if build_acpi
571b5d61b8Smrg            srcs_xorg_os_support += 'linux/lnx_acpi.c'
581b5d61b8Smrg        endif
59ed6184dfSmrg    else
60ed6184dfSmrg        srcs_xorg_os_support += 'shared/pm_noop.c'
611b5d61b8Smrg    endif
621b5d61b8Smrg
63ed6184dfSmrgelif host_machine.system() == 'sunos'
641b5d61b8Smrg    srcs_xorg_os_support += [
651b5d61b8Smrg        'solaris/sun_apm.c',
661b5d61b8Smrg        'solaris/sun_bell.c',
671b5d61b8Smrg        'solaris/sun_init.c',
681b5d61b8Smrg        'solaris/sun_vid.c',
691b5d61b8Smrg        'shared/kmod_noop.c',
701b5d61b8Smrg    ]
711b5d61b8Smrg
721b5d61b8Smrg    if cc.has_header('sys/vt.h')
731b5d61b8Smrg        srcs_xorg_os_support += 'solaris/sun_VTsw.c'
741b5d61b8Smrg    else
751b5d61b8Smrg        srcs_xorg_os_support += 'shared/VTsw_noop.c'
761b5d61b8Smrg    endif
771b5d61b8Smrg
78ed6184dfSmrg    if build_agp
791b5d61b8Smrg        srcs_xorg_os_support += 'solaris/sun_agp.c'
801b5d61b8Smrg    else
811b5d61b8Smrg        srcs_xorg_os_support += 'shared/agp_noop.c'
821b5d61b8Smrg    endif
831b5d61b8Smrg
841b5d61b8Smrg    if host_machine.cpu_family() == 'sparc'
851b5d61b8Smrg        srcs_xorg_os_support += 'solaris/solaris-sparcv8plus.S'
861b5d61b8Smrg    elif host_machine.cpu_family() == 'x86_64'
871b5d61b8Smrg        srcs_xorg_os_support += 'solaris/solaris-amd64.S'
881b5d61b8Smrg    elif host_machine.cpu_family() == 'x86'
891b5d61b8Smrg        srcs_xorg_os_support += 'solaris/solaris-ia32.S'
901b5d61b8Smrg    else
911b5d61b8Smrg        error('Unknown CPU family for Solaris build')
921b5d61b8Smrg    endif
931b5d61b8Smrg
941b5d61b8Smrgelif host_machine.system().endswith('bsd')
951b5d61b8Smrg    srcs_xorg_os_support += [
961b5d61b8Smrg        'bsd/bsd_VTsw.c',
971b5d61b8Smrg        'bsd/bsd_bell.c',
981b5d61b8Smrg        'bsd/bsd_init.c',
99ed6184dfSmrg	'shared/pm_noop.c'
1001b5d61b8Smrg    ]
1011b5d61b8Smrg
1021b5d61b8Smrg    if host_machine.cpu_family() == 'x86_64'
1031b5d61b8Smrg        srcs_xorg_os_support += 'bsd/i386_video.c'
104ed6184dfSmrg        if host_machine.system() == 'netbsd'
105ed6184dfSmrg            os_dep += cc.find_library('x86_64')
106ed6184dfSmrg        elif host_machine.system() == 'openbsd'
107ed6184dfSmrg            os_dep += cc.find_library('amd64')
108ed6184dfSmrg        endif
1091b5d61b8Smrg    elif host_machine.cpu_family() == 'x86'
1101b5d61b8Smrg        srcs_xorg_os_support += 'bsd/i386_video.c'
111ed6184dfSmrg        if host_machine.system() == 'netbsd' or host_machine.system() == 'openbsd'
112ed6184dfSmrg            os_dep += cc.find_library('i386')
113ed6184dfSmrg        endif
1141b5d61b8Smrg    elif host_machine.cpu_family() == 'arm'
1151b5d61b8Smrg        srcs_xorg_os_support += 'bsd/arm_video.c'
1161b5d61b8Smrg    elif host_machine.cpu_family() == 'powerpc'
1171b5d61b8Smrg        srcs_xorg_os_support += 'bsd/ppc_video.c'
1181b5d61b8Smrg    elif host_machine.cpu_family() == 'sparc64'
1191b5d61b8Smrg        srcs_xorg_os_support += 'bsd/sparc64_video.c'
1201b5d61b8Smrg        srcs_xorg_os_support += 'shared/ioperm_noop.c'
1211b5d61b8Smrg    elif host_machine.cpu_family() == 'alpha'
1221b5d61b8Smrg        srcs_xorg_os_support += 'bsd/alpha_video.c'
123ed6184dfSmrg        if host_machine.system() == 'freebsd'
124ed6184dfSmrg            os_dep += cc.find_library('io')
125ed6184dfSmrg        elif host_machine.system() == 'netbsd'
126ed6184dfSmrg            os_c_args += '-DUSE_ALPHA_PIO'
127ed6184dfSmrg        endif
1281b5d61b8Smrg    endif
1291b5d61b8Smrg
1301b5d61b8Smrg    if host_machine.system() == 'freebsd'
1311b5d61b8Smrg        srcs_xorg_os_support += 'bsd/bsd_kmod.c'
1321b5d61b8Smrg    else
1331b5d61b8Smrg        srcs_xorg_os_support += 'shared/kmod_noop.c'
1341b5d61b8Smrg    endif
1351b5d61b8Smrg
136ed6184dfSmrg    if build_agp
1371b5d61b8Smrg        srcs_xorg_os_support += 'linux/lnx_agp.c'
1381b5d61b8Smrg    else
1391b5d61b8Smrg        srcs_xorg_os_support += 'shared/agp_noop.c'
1401b5d61b8Smrg    endif
1411b5d61b8Smrgelse
1421b5d61b8Smrg    # stub ossupport
1431b5d61b8Smrg    srcs_xorg_os_support += [
1441b5d61b8Smrg        'shared/VTsw_noop.c',
1451b5d61b8Smrg        'shared/agp_noop.c',
1461b5d61b8Smrg        'shared/ioperm_noop.c',
1471b5d61b8Smrg        'shared/kmod_noop.c',
1481b5d61b8Smrg        'shared/pm_noop.c',
1491b5d61b8Smrg        'shared/vidmem.c',
1501b5d61b8Smrg        'shared/posix_tty.c',
1511b5d61b8Smrg        'shared/sigio.c',
1521b5d61b8Smrg        'stub/stub_bell.c',
1531b5d61b8Smrg        'stub/stub_init.c',
1541b5d61b8Smrg        'stub/stub_video.c',
1551b5d61b8Smrg    ]
1561b5d61b8Smrgendif
1571b5d61b8Smrg
1581b5d61b8Smrgxorg_os_support = static_library('xorg_os_support',
1591b5d61b8Smrg    srcs_xorg_os_support,
1601b5d61b8Smrg    include_directories: [inc, xorg_inc],
1611b5d61b8Smrg    dependencies: [
1621b5d61b8Smrg        common_dep,
1631b5d61b8Smrg        dbus_dep,
1641b5d61b8Smrg        libdrm_dep,
165ed6184dfSmrg        os_dep,
1661b5d61b8Smrg    ],
167ed6184dfSmrg    c_args: xorg_c_args + os_c_args,
1681b5d61b8Smrg)
1691b5d61b8Smrg
1701b5d61b8Smrginstall_data(hdrs_xorg_os_support, install_dir: xorgsdkdir)
171