wayland/doc/meson.build
Martin Lopatář 0f7f06bd4c build: Fix build and tests on macOS
This commit addresses several compatibility issues that prevented Wayland
from building and passing its test suite on macOS

Core and Compatibility changes:
- Emulate Linux behavior by explicitly setting O_NONBLOCK on connections
  (fixes blocking sendmsg issues on macOS).
- Fix compilation on platforms missing SOCK_CLOEXEC and MSG_CMSG_CLOEXEC.
- Implement wl_os_socket_peercred() using LOCAL_PEERPID for macOS.
- Ensure availability of struct itimerspec (required for POSIX Timers API).

Test suite fixes:
- Add socketpair_cloexec() wrapper to handle platforms without atomic
  SOCK_CLOEXEC support.
- Add implementation of memrchr() for platforms that do not provide it.
- Implement is_debugger_attached() for macOS to handle test timeouts.
- Fix tests to handle Mach-O binary format (instead of ELF).
- Update egl-symbols-check to support macOS *.dylib Mach-O libraries.

Build system:
- Add meson option 'xml_catalog' to allow specifying custom catalog paths.

Signed-off-by: Martin Lopatář <lopin@dataplex.cz>
2026-01-20 19:22:15 +01:00

49 lines
1.4 KiB
Meson

if not get_option('libraries')
error('-Ddocumentation=true requires -Dlibraries=true')
endif
dot = find_program('dot')
doxygen = find_program('doxygen')
xsltproc = find_program('xsltproc')
xmlto = find_program('xmlto')
cmd = run_command(doxygen, '--version', check: true)
message('doxygen: ' + cmd.stdout().strip())
vers = cmd.stdout().strip()
if vers.version_compare('< 1.6.0')
error('Doxygen 1.6 or later is required for building documentation, found @0@.'.format(vers))
endif
cmd = run_command(dot, '-V', check: true)
message('dot: ' + cmd.stderr().strip())
vers = cmd.stderr().split('version')[1].strip().split(' ')[0]
if vers.version_compare('< 2.26.0')
error('Dot (Graphviz) 2.26 or later is required for building documentation, found @0@.'.format(vers))
endif
run_env = environment()
if catalog_path != ''
if not catalog_path.startswith('/')
catalog_path = meson.project_source_root() / catalog_path
endif
run_env.set('XML_CATALOG_FILES', catalog_path)
endif
manpage_xsl = 'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl'
cmd = run_command(xsltproc, '--nonet', manpage_xsl, env: run_env, check: false)
if cmd.returncode() != 0
error('The style sheet for man pages providing "@0@" was not found.'.format(manpage_xsl))
endif
publican_install_prefix = join_paths(
get_option('prefix'),
get_option('datadir'),
'doc',
meson.project_name(),
'Wayland', 'en-US'
)
publican_html_dir = 'html'
subdir('doxygen')
subdir('publican')