1ae545d91Smrg# SPDX-License-Identifier: MIT
2ae545d91Smrg# Copyright © 2023 Intel Corporation
3ae545d91Smrg
4ae545d91Smrgproject(
5ae545d91Smrg  'libXau',
6ae545d91Smrg  'c',
7ae545d91Smrg  version : '1.0.12',
8ae545d91Smrg  license : 'MIT',
9ae545d91Smrg  meson_version : '>= 0.60.0',
10ae545d91Smrg)
11ae545d91Smrg
12ae545d91Smrgadd_project_arguments(
13ae545d91Smrg  '-D_GNU_SOURCE',
14ae545d91Smrg  '-D__EXTENSIONS__',
15ae545d91Smrg  language : 'c'
16ae545d91Smrg)
17ae545d91Smrg
18ae545d91Smrgcc = meson.get_compiler('c')
19ae545d91Smrg
20ae545d91Smrglib_args = []
21ae545d91Smrg
22ae545d91Smrgforeach f : ['explicit_bzero', 'explicit_memset', 'pathconf']
23ae545d91Smrg  if cc.has_function(f)
24ae545d91Smrg    lib_args += '-DHAVE_@0@'.format(f.to_upper())
25ae545d91Smrg  endif
26ae545d91Smrgendforeach
27ae545d91Smrg
28ae545d91Smrgif cc.has_header('unistd.h')
29ae545d91Smrg  lib_args += '-DHAVE_UNISTD_H'
30ae545d91Smrgendif
31ae545d91Smrg
32ae545d91Smrgdep_xproto = dependency('xproto')
33ae545d91Smrg
34ae545d91Smrgif get_option('xthreads')
35ae545d91Smrg  lib_args += '-DXTHREADS'
36ae545d91Smrg  # This define is not in libXau specific code, but is part of the xproto header
37ae545d91Smrg  # This may be only required by HP-UX.
38ae545d91Smrg  if cc.has_function('gethostbyname_r') or \
39ae545d91Smrg     cc.has_function('gethostbyname_r', dependencies : cc.find_library('nls'))
40ae545d91Smrg    lib_args += '-DXUSE_MTSAFE_API=1'
41ae545d91Smrg  endif
42ae545d91Smrg  if host_machine.system() == 'sunos'
43ae545d91Smrg    lib_args += ['-D_REENETRANT', '-D_POSIX_PTHREAD_SEMANTICS']
44ae545d91Smrg  endif
45ae545d91Smrgendif
46ae545d91Smrg
47ae545d91Smrglib = library(
48ae545d91Smrg  'Xau',
49ae545d91Smrg  [
50ae545d91Smrg    'AuDispose.c',
51ae545d91Smrg    'AuFileName.c',
52ae545d91Smrg    'AuGetAddr.c',
53ae545d91Smrg    'AuGetBest.c',
54ae545d91Smrg    'AuLock.c',
55ae545d91Smrg    'AuRead.c',
56ae545d91Smrg    'AuUnlock.c',
57ae545d91Smrg    'AuWrite.c',
58ae545d91Smrg  ],
59ae545d91Smrg  c_args : lib_args,
60ae545d91Smrg  include_directories : 'include',
61ae545d91Smrg  dependencies : dep_xproto,
62ae545d91Smrg  version : '6.0.0',
63ae545d91Smrg  install : true,
64ae545d91Smrg)
65ae545d91Smrg
66ae545d91Smrgtest(
67ae545d91Smrg  'autest',
68ae545d91Smrg  executable(
69ae545d91Smrg    'autest',
70ae545d91Smrg    'Autest.c',
71ae545d91Smrg    link_with : lib,
72ae545d91Smrg    include_directories : 'include',
73ae545d91Smrg    dependencies : dep_xproto,
74ae545d91Smrg  )
75ae545d91Smrg)
76ae545d91Smrg
77ae545d91Smrglibxau = declare_dependency(
78ae545d91Smrg  link_with : lib,
79ae545d91Smrg  include_directories : 'include',
80ae545d91Smrg)
81ae545d91Smrg
82ae545d91Smrgmeson.override_dependency('xau', libxau)
83ae545d91Smrg
84ae545d91Smrginstall_headers(
85ae545d91Smrg  'include/X11/Xauth.h',
86ae545d91Smrg  subdir : 'X11',
87ae545d91Smrg)
88ae545d91Smrg
89ae545d91Smrgpkg = import('pkgconfig')
90ae545d91Smrgpkg.generate(
91ae545d91Smrg  lib,
92ae545d91Smrg  description : 'X authorization file management library',
93ae545d91Smrg  filebase : 'xau',
94ae545d91Smrg  requires : 'xproto',
95ae545d91Smrg)
96ae545d91Smrg
97ae545d91Smrgsubdir('man')
98