summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2023-06-20 15:46:23 -0700
committerDylan Baker <dylan@pnwbakers.com>2023-07-13 15:26:17 -0700
commit68e74d37b99f56bbd1a5f2fb8cb4ad6116f27bd3 (patch)
treeaab43287eff02394981c905bfef7b30f7d8fdb60 /meson.build
parentdf1bf4fe528a5a9eef420f78efb225e4696ac467 (diff)
add Meson build system
This is, I think, equal to the autotools build-system in every practical way. The man pages have hardcoded numbers. I think this is okay, as all modern operating systems seem to use the same man page numbering now. I've also chosen to not generate a config.h file with Meson. This makes using libXau as a subproject safer, since we don't have to worry about conflicting config.h files, plus there are only a couple of declarations that are actually used. This also saves some configure time in writing out an additional file.
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build96
1 files changed, 96 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..6ca975a
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,96 @@
+# SPDX-License-Identifier: MIT
+# Copyright © 2023 Intel Corporation
+
+project(
+ 'libXau',
+ 'c',
+ version : '1.0.11',
+ license : 'MIT',
+ meson_version : '>= 0.60.0',
+)
+
+add_project_arguments(
+ '-D_GNU_SOURCE',
+ '-D__EXTENSIONS__',
+ language : 'c'
+)
+
+cc = meson.get_compiler('c')
+
+lib_args = []
+
+foreach f : ['explicit_bzero', 'pathconf']
+ if cc.has_function(f)
+ lib_args += '-DHAVE_@0@'.format(f.to_upper())
+ endif
+endforeach
+
+if cc.has_header('unistd.h')
+ lib_args += '-DHAVE_UNISTD_H'
+endif
+
+dep_xproto = dependency('xproto')
+
+if get_option('xthreads')
+ lib_args += '-DXTHREADS'
+ # This define is not in libXau specific code, but is part of the xproto header
+ # This may be only required by HP-UX.
+ if cc.has_function('gethostbyname_r') or \
+ cc.has_function('gethostbyname_r', dependencies : cc.find_library('nls'))
+ lib_args += '-DXUSE_MTSAFE_API=1'
+ endif
+ if host_machine.system() == 'sunos'
+ lib_args += ['-D_REENETRANT', '-D_POSIX_PTHREAD_SEMANTICS']
+ endif
+endif
+
+lib = library(
+ 'Xau',
+ [
+ 'AuDispose.c',
+ 'AuFileName.c',
+ 'AuGetAddr.c',
+ 'AuGetBest.c',
+ 'AuLock.c',
+ 'AuRead.c',
+ 'AuUnlock.c',
+ 'AuWrite.c',
+ ],
+ c_args : lib_args,
+ include_directories : 'include',
+ dependencies : dep_xproto,
+ version : '6.0.0',
+ install : true,
+)
+
+test(
+ 'autest',
+ executable(
+ 'autest',
+ 'Autest.c',
+ link_with : lib,
+ include_directories : 'include',
+ )
+)
+
+libxau = declare_dependency(
+ link_with : lib,
+ include_directories : 'include',
+)
+
+meson.override_dependency('xau', libxau)
+
+install_headers(
+ 'include/X11/Xauth.h',
+ subdir : 'X11',
+)
+
+pkg = import('pkgconfig')
+pkg.generate(
+ lib,
+ description : 'X authorization file management library',
+ filebase : 'xau',
+ requires : 'xproto',
+)
+
+subdir('man') \ No newline at end of file