1version_split = meson.project_version().split('.')
2major = version_split[0].to_int()
3minor = version_split[1].to_int()
4patch = version_split[2].to_int()
5
6# convert to the old-style 1.x.y version scheme used up to 1.20.x for backwards compatibility
7release = 1 * 10000000 + major * 100000 + minor * 1000 + patch
8
9dri_dep = dependency('dri', required: build_glx)
10
11conf_data = configuration_data()
12conf_data.set('_DIX_CONFIG_H_', '1')
13
14conf_data.set('HAVE_TYPEOF', cc.compiles('''
15    int foo(int bar) { typeof(bar) baz = 1; return baz; }
16''',
17    name: 'typeof()') ? '1' : false)
18
19# For feature macros we're using either false (boolean) or '1', which correspond to the macro being
20# not defined at all and defined to 1. This is to match autotools behavior and thus preserve
21# backwards  compatibility with all the existing code that uses #ifdef to check if feature is
22# enabled. This ifdef would pass if the macro is defined to 0 which would silently break code
23# in various places.
24#
25# As a complication when we read the configuration from conf_data back we get either string or
26# bool. Meson does not like comparing things of different types so we always convert the returned
27# value to an integer using to_int().
28conf_data.set('MONOTONIC_CLOCK', cc.has_function('clock_gettime') and
29cc.compiles('''
30    #define _POSIX_C_SOURCE 200112L
31    #include <time.h>
32    #include <unistd.h>
33    #ifndef CLOCK_MONOTONIC
34    #error CLOCK_MONOTONIC not defined
35    #endif
36''',
37    name: 'CLOCK_MONOTONIC') ? '1' : false)
38
39conf_data.set('XSERVER_DTRACE', with_dtrace ? '1' : false)
40
41if host_machine.endian() == 'little'
42    conf_data.set('X_BYTE_ORDER', 'X_LITTLE_ENDIAN')
43else
44    conf_data.set('X_BYTE_ORDER', 'X_BIG_ENDIAN')
45endif
46
47glx_align64 = []
48if cc.sizeof('unsigned long') == 8
49   conf_data.set('_XSERVER64', '1')
50   glx_align64 = '-D__GLX_ALIGN64'
51endif
52
53conf_data.set('_GNU_SOURCE', '1')
54
55# autoconf checks for /dev/xf86 here, but the test should be based on
56# the target, not the build system.  Could we get rid of this and just
57# ifdef for openbsd?
58conf_data.set('HAS_APERTURE_DRV', host_machine.system() == 'openbsd' ? '1' : false)
59
60if get_option('input_thread') == 'false'
61  enable_input_thread = false
62else
63  enable_input_thread = cc.has_header_symbol('pthread.h',
64					     'PTHREAD_MUTEX_RECURSIVE')
65  if not enable_input_thread and get_option('input_thread') == 'true'
66    error('Input thread enabled and PTHREAD_MUTEX_RECURSIVE not found')
67  endif
68  if host_machine.system() == 'windows' and get_option('input_thread') == 'auto'
69      enable_input_thread = false
70  endif
71endif
72conf_data.set('INPUTTHREAD', enable_input_thread ? '1' : false)
73
74if cc.compiles('''
75    #define _GNU_SOURCE 1
76    #include <pthread.h>
77    void foo(int bar) { pthread_setname_np(pthread_self(), "example"); }
78''',
79    args: '-Werror-implicit-function-declaration',
80    name: 'pthread_setname_np(tid, name)')
81    conf_data.set('HAVE_PTHREAD_SETNAME_NP_WITH_TID', 1)
82elif cc.compiles('''
83    #define _GNU_SOURCE 1
84    #include <pthread.h>
85    void foo(int bar) { pthread_setname_np("example"); }
86''',
87    args: '-Werror-implicit-function-declaration',
88    name: 'pthread_setname_np(name)')
89    conf_data.set('HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID', 1)
90endif
91
92conf_data.set('HAVE_LIBBSD', libbsd_dep.found() ? '1' : false)
93# Note: this symbol is used by libXtrans.
94conf_data.set('HAVE_SYSTEMD_DAEMON', libsystemd_daemon_dep.found() ? '1' : false)
95conf_data.set('CONFIG_UDEV', build_udev ? '1' : false)
96conf_data.set('CONFIG_UDEV_KMS', build_udev_kms ? '1' : false)
97conf_data.set('HAVE_DBUS', build_dbus ? '1' : false)
98conf_data.set('CONFIG_HAL', build_hal ? '1' : false)
99conf_data.set('SYSTEMD_LOGIND', build_systemd_logind ? '1' : false)
100conf_data.set('NEED_DBUS', build_systemd_logind or build_hal ? '1' : false)
101conf_data.set('CONFIG_WSCONS', host_machine.system() == 'openbsd' ? '1' : false)
102
103conf_data.set('HAVE_XSHMFENCE', xshmfence_dep.found() ? '1' : false)
104conf_data.set('WITH_LIBDRM', libdrm_required ? '1' : false)
105conf_data.set('GLAMOR_HAS_EGL_QUERY_DMABUF',
106              epoxy_dep.found() and epoxy_dep.version().version_compare('>= 1.4.4') ? '1' : false)
107conf_data.set('GLAMOR_HAS_EGL_QUERY_DRIVER',
108              epoxy_dep.found() and epoxy_dep.version().version_compare('>= 1.5.4') ? '1' : false)
109conf_data.set('GLXEXT', build_glx ? '1' : false)
110conf_data.set('GLAMOR', build_glamor ? '1' : false)
111conf_data.set('GLAMOR_HAS_GBM', gbm_dep.found() ? '1' : false)
112conf_data.set('GLAMOR_HAS_GBM_LINEAR',
113              build_glamor and gbm_dep.found() and gbm_dep.version().version_compare('>= 10.6') ? '1' : false)
114conf_data.set('GBM_BO_WITH_MODIFIERS',
115              build_glamor and gbm_dep.found() and gbm_dep.version().version_compare('>= 17.1') ? '1' : false)
116
117conf_data.set_quoted('SERVER_MISC_CONFIG_PATH', serverconfigdir)
118conf_data.set_quoted('PROJECTROOT', get_option('prefix'))
119conf_data.set_quoted('SYSCONFDIR', join_paths(get_option('prefix'), get_option('sysconfdir')))
120conf_data.set_quoted('SUID_WRAPPER_DIR', join_paths(get_option('prefix'), get_option('libexecdir')))
121conf_data.set_quoted('COMPILEDDEFAULTFONTPATH', default_font_path)
122
123conf_data.set('XORG_VERSION_CURRENT', release)
124
125conf_data.set('HASXDMAUTH', has_xdm_auth ? '1' : false)
126conf_data.set('SECURE_RPC', get_option('secure-rpc') ? '1' : false)
127
128conf_data.set('HAVE_DLFCN_H', cc.has_header('dlfcn.h') ? '1' : false)
129conf_data.set('HAVE_EXECINFO_H', cc.has_header('execinfo.h') ? '1' : false)
130conf_data.set('HAVE_FCNTL_H', cc.has_header('fcntl.h') ? '1' : false)
131conf_data.set('HAVE_FNMATCH_H', cc.has_header('fnmatch.h') ? '1' : false)
132conf_data.set('HAVE_LINUX_AGPGART_H', cc.has_header('linux/agpgart.h') ? '1' : false)
133conf_data.set('HAVE_STDLIB_H', cc.has_header('stdlib.h') ? '1' : false)
134conf_data.set('HAVE_STRING_H', cc.has_header('string.h') ? '1' : false)
135conf_data.set('HAVE_STRINGS_H', cc.has_header('strings.h') ? '1' : false)
136conf_data.set('HAVE_SYS_AGPGART_H', cc.has_header('sys/agpgart.h') ? '1' : false)
137conf_data.set('HAVE_SYS_AGPIO_H', cc.has_header('sys/agpio.h') ? '1' : false)
138conf_data.set('HAVE_SYS_UN_H', cc.has_header('sys/un.h') ? '1' : false)
139conf_data.set('HAVE_SYS_UTSNAME_H', cc.has_header('sys/utsname.h') ? '1' : false)
140conf_data.set('HAVE_SYS_SYSMACROS_H', cc.has_header('sys/sysmacros.h') ? '1' : false)
141conf_data.set('HAVE_UNISTD_H', cc.has_header('unistd.h') ? '1' : false)
142
143conf_data.set('HAVE_ARC4RANDOM_BUF', cc.has_function('arc4random_buf', dependencies: libbsd_dep) ? '1' : false)
144conf_data.set('HAVE_BACKTRACE', cc.has_function('backtrace') ? '1' : false)
145conf_data.set('HAVE_CBRT', cc.has_function('cbrt') ? '1' : false)
146conf_data.set('HAVE_EPOLL_CREATE1', cc.has_function('epoll_create1') ? '1' : false)
147conf_data.set('HAVE_GETUID', cc.has_function('getuid') ? '1' : false)
148conf_data.set('HAVE_GETEUID', cc.has_function('geteuid') ? '1' : false)
149conf_data.set('HAVE_ISASTREAM', cc.has_function('isastream') ? '1' : false)
150conf_data.set('HAVE_ISSETUGID', cc.has_function('issetugid') ? '1' : false)
151conf_data.set('HAVE_GETIFADDRS', cc.has_function('getifaddrs') ? '1' : false)
152conf_data.set('HAVE_GETPEEREID', cc.has_function('getpeereid') ? '1' : false)
153conf_data.set('HAVE_GETPEERUCRED', cc.has_function('getpeerucred') ? '1' : false)
154conf_data.set('HAVE_GETPROGNAME', cc.has_function('getprogname') ? '1' : false)
155conf_data.set('HAVE_GETZONEID', cc.has_function('getzoneid') ? '1' : false)
156conf_data.set('HAVE_MEMFD_CREATE', cc.has_function('memfd_create') ? '1' : false)
157conf_data.set('HAVE_MKOSTEMP', cc.has_function('mkostemp') ? '1' : false)
158conf_data.set('HAVE_MMAP', cc.has_function('mmap') ? '1' : false)
159conf_data.set('HAVE_POLL', cc.has_function('poll') ? '1' : false)
160conf_data.set('HAVE_POLLSET_CREATE', cc.has_function('pollset_create') ? '1' : false)
161conf_data.set('HAVE_POSIX_FALLOCATE', cc.has_function('posix_fallocate') ? '1' : false)
162conf_data.set('HAVE_PORT_CREATE', cc.has_function('port_create') ? '1' : false)
163conf_data.set('HAVE_REALLOCARRAY', cc.has_function('reallocarray', dependencies: libbsd_dep) ? '1' : false)
164conf_data.set('HAVE_SETEUID', cc.has_function('seteuid') ? '1' : false)
165conf_data.set('HAVE_SETITIMER', cc.has_function('setitimer') ? '1' : false)
166conf_data.set('HAVE_SHMCTL64', cc.has_function('shmctl64') ? '1' : false)
167conf_data.set('HAVE_SIGACTION', cc.has_function('sigaction') ? '1' : false)
168conf_data.set('HAVE_SIGPROCMASK', cc.has_function('sigprocmask') ? '1' : false)
169# HAVE_SOCKLEN_T is used by xtrans when IPv6 is disabled
170conf_data.set('HAVE_SOCKLEN_T', cc.has_type('socklen_t', prefix: '#include <sys/socket.h>') ? '1' : false)
171conf_data.set('HAVE_STRCASECMP', cc.has_function('strcasecmp') ? '1' : false)
172conf_data.set('HAVE_STRCASESTR', cc.has_function('strcasestr') ? '1' : false)
173conf_data.set('HAVE_STRLCAT', cc.has_function('strlcat', dependencies: libbsd_dep) ? '1' : false)
174conf_data.set('HAVE_STRLCPY', cc.has_function('strlcpy', dependencies: libbsd_dep) ? '1' : false)
175conf_data.set('HAVE_STRNCASECMP', cc.has_function('strncasecmp') ? '1' : false)
176conf_data.set('HAVE_STRNDUP', cc.has_function('strndup') and cc.has_header_symbol('string.h', 'strndup') ? '1' : false)
177# HAVE_STRUCT_SOCKADDR_STORAGE is used by xtrans >= 1.6
178conf_data.set('HAVE_STRUCT_SOCKADDR_STORAGE', cc.has_type('struct sockaddr_storage', prefix: '#include <sys/socket.h>') ? '1' : false)
179conf_data.set('HAVE_TIMINGSAFE_MEMCMP', cc.has_function('timingsafe_memcmp') ? '1' : false)
180conf_data.set('HAVE_VASPRINTF', cc.has_function('vasprintf') ? '1' : false)
181conf_data.set('HAVE_VSNPRINTF', cc.has_function('vsnprintf') ? '1' : false)
182conf_data.set('HAVE_WALKCONTEXT', cc.has_function('walkcontext') ? '1' : false)
183
184conf_data.set('BUSFAULT', conf_data.get('HAVE_SIGACTION'))
185
186# Don't let X dependencies typedef 'pointer'
187conf_data.set('_XTYPEDEF_POINTER', '1')
188conf_data.set('_XITYPEDEF_POINTER', '1')
189
190conf_data.set('LISTEN_TCP', get_option('listen_tcp'))
191conf_data.set('LISTEN_UNIX', get_option('listen_unix'))
192conf_data.set('LISTEN_LOCAL', get_option('listen_local'))
193
194if cc.has_header_symbol('sys/socket.h', 'SCM_RIGHTS')
195  conf_data.set('XTRANS_SEND_FDS', '1')
196endif
197
198if conf_data.get('HAVE_GETPEEREID').to_int() == 0 and conf_data.get('HAVE_GETPEERUCRED').to_int() == 0
199    if not cc.has_header_symbol('sys/socket.h', 'SO_PEERCRED')
200        conf_data.set('NO_LOCAL_CLIENT_CRED', 1)
201    endif
202endif
203
204conf_data.set('TCPCONN', '1')
205conf_data.set('UNIXCONN', host_machine.system() != 'windows' ? '1' : false)
206conf_data.set('IPv6', build_ipv6 ? '1' : false)
207
208conf_data.set('BIGREQS', '1')
209conf_data.set('COMPOSITE', '1')
210conf_data.set('DAMAGE', '1')
211conf_data.set('DBE', '1')
212conf_data.set('DGA', build_dga ? '1' : false)
213conf_data.set('DPMSExtension', build_dpms ? '1' : false)
214conf_data.set('DRI2', build_dri2 ? '1' : false)
215conf_data.set('DRI3', build_dri3 ? '1' : false)
216if build_glx
217    conf_data.set_quoted('DRI_DRIVER_PATH', dri_dep.get_pkgconfig_variable('dridriverdir'))
218endif
219conf_data.set('HAS_SHM', build_mitshm ? '1' : false)
220conf_data.set('MITSHM', build_mitshm ? '1' : false)
221conf_data.set('PANORAMIX', build_xinerama ? '1' : false)
222conf_data.set('PRESENT', '1')
223conf_data.set('RANDR', '1')
224conf_data.set('RES', build_res ? '1' : false)
225conf_data.set('RENDER', '1')
226conf_data.set('SCREENSAVER', build_screensaver ? '1' : false)
227conf_data.set('SHAPE', '1')
228conf_data.set('XACE', build_xace ? '1' : false)
229conf_data.set('XCMISC', '1')
230conf_data.set('XCSECURITY', build_xsecurity ? '1' : false)
231conf_data.set('XDMCP', xdmcp_dep.found() ? '1' : false)
232conf_data.set('XF86BIGFONT', build_xf86bigfont ? '1' : false)
233conf_data.set('XF86DRI', build_dri1 ? '1' : false)
234conf_data.set('XF86VIDMODE', 1)
235conf_data.set('XFIXES', '1')
236conf_data.set('XFreeXDGA', build_dga ? '1' : false)
237conf_data.set('XINERAMA', build_xinerama ? '1' : false)
238conf_data.set('XINPUT', '1')
239conf_data.set('XRECORD', '1')
240conf_data.set('XSELINUX', build_xselinux ? '1' : false)
241conf_data.set('XSYNC', '1')
242conf_data.set('XTEST', '1')
243conf_data.set('XV', build_xv ? '1' : false)
244conf_data.set('XvExtension', build_xv ? '1' : false)
245conf_data.set('XvMCExtension', build_xvmc ? '1' : false)
246
247conf_data.set('HAVE_SHA1_IN_' + sha1.to_upper(), '1', description: 'Use @0@ SHA1 functions'.format(sha1))
248conf_data.set('HAVE_LIBUNWIND', get_option('libunwind'))
249
250conf_data.set('HAVE_APM', (build_apm or build_acpi) ? '1' : false)
251conf_data.set('HAVE_ACPI', build_acpi ? '1' : false)
252
253conf_data.set('DDXOSVERRORF', build_xwin ? '1' : false)
254conf_data.set('DDXBEFORERESET', build_xwin ? '1' : false)
255enable_debugging = get_option('buildtype') == 'debug'
256conf_data.set('DEBUG', enable_debugging ? '1' : false)
257
258conf_data.set_quoted('XVENDORNAME', get_option('vendor_name'))
259conf_data.set_quoted('XVENDORNAMESHORT', get_option('vendor_name_short'))
260conf_data.set_quoted('__VENDORDWEBSUPPORT__', get_option('vendor_web'))
261conf_data.set_quoted('BUILDERADDR', get_option('builder_addr'))
262conf_data.set_quoted('BUILDERSTRING', get_option('builder_string'))
263
264if build_rootless
265    conf_data.set('ROOTLESS', build_rootless ? '1' : false)
266    conf_data.set('ROOTLESS_WORKAROUND', 1)
267    conf_data.set('ROOTLESS_SAFEALPHA', 1)
268endif
269
270#
271# for xorg-server.h only
272#
273defines_svr4 = '''#if !defined(SVR4) && !defined(__svr4__) && !defined(__SVR4)
274#error "I am not SVR4"
275#endif
276'''
277
278# BSD specifics
279supports_pccons = false
280supports_pcvt = false
281supports_syscons = false
282supports_wscons = false
283csrg_based = false
284
285if host_machine.system() == 'freebsd' or host_machine.system() == 'dragonfly'
286  supports_pccons = true
287  supports_pcvt = true
288  supports_syscons = true
289  csrg_based = true
290endif
291
292if host_machine.system() == 'kfreebsd'
293  supports_pccons = true
294  supports_pcvt = true
295  supports_syscons = true
296endif
297
298if host_machine.system() == 'netbsd'
299  supports_pccons = true
300  supports_pcvt = true
301  supports_wscons = true
302  csrg_based = true
303endif
304
305if host_machine.system() == 'openbsd'
306  supports_pcvt = true
307  supports_wscons = true
308  csrg_based = true
309endif
310
311if host_machine.system() == 'darwin'
312  csrg_based = true
313endif
314
315conf_data.set('SVR4', cc.compiles(defines_svr4) ? '1' : false)
316conf_data.set_quoted('XKB_DFLT_RULES', get_option('xkb_default_rules'))
317conf_data.set('XORGSERVER', build_xorg ? '1' : false)
318conf_data.set_quoted('XCONFIGFILE', 'xorg.conf')
319conf_data.set_quoted('__XSERVERNAME__', 'Xorg')
320conf_data.set('WITH_VGAHW', build_vgahw ? '1' : false)
321conf_data.set('CSRG_BASED', csrg_based ? '1' : false)
322conf_data.set('PCCONS_SUPPORT', supports_pccons ? '1' : false)
323conf_data.set('PCVT_SUPPORT', supports_pcvt ? '1' : false)
324conf_data.set('SYSCONS_SUPPORT', supports_syscons ? '1' : false)
325conf_data.set('WSCONS_SUPPORT', supports_wscons ? '1' : false)
326conf_data.set('XSERVER_LIBPCIACCESS', get_option('pciaccess') ? '1' : false)
327conf_data.set('XSERVER_PLATFORM_BUS', build_udev_kms ? '1' : false)
328
329configure_file(output : 'dix-config.h',
330               configuration : conf_data)
331
332configure_file(output : 'xorg-server.h',
333               input : 'xorg-server.h.meson.in',
334               configuration : conf_data,
335               install: build_xorg,
336               install_dir: xorgsdkdir)
337
338version_data = configuration_data()
339version_data.set('VENDOR_RELEASE', '@0@'.format(release))
340version_data.set_quoted('VENDOR_NAME', get_option('vendor_name'))
341version_data.set_quoted('VENDOR_NAME_SHORT', get_option('vendor_name_short'))
342version_data.set_quoted('VENDOR_WEB', get_option('vendor_web'))
343version_data.set_quoted('VENDOR_MAN_VERSION', 'Version @0@.@1@.@2@'.format(major, minor, patch))
344configure_file(output : 'version-config.h',
345               configuration : version_data)
346
347xkb_data = configuration_data()
348
349xkb_data.set_quoted('XKB_BIN_DIRECTORY', xkb_bin_dir)
350xkb_data.set_quoted('XKB_BASE_DIRECTORY', xkb_dir)
351xkb_data.set_quoted('XKB_DFLT_RULES', get_option('xkb_default_rules'))
352xkb_data.set_quoted('XKB_DFLT_MODEL', get_option('xkb_default_model'))
353xkb_data.set_quoted('XKB_DFLT_LAYOUT', get_option('xkb_default_layout'))
354xkb_data.set_quoted('XKB_DFLT_VARIANT', get_option('xkb_default_variant'))
355xkb_data.set_quoted('XKB_DFLT_OPTIONS', get_option('xkb_default_options'))
356xkb_data.set_quoted('XKM_OUTPUT_DIR', xkb_output_dir + '/')
357
358configure_file(output : 'xkb-config.h',
359               configuration : xkb_data)
360
361xorg_data = configuration_data()
362
363xorg_data.set_quoted('XORG_BIN_DIRECTORY', get_option('bindir'))
364xorg_data.set('XORG_VERSION_CURRENT', release)
365xorg_data.set_quoted('XF86CONFIGFILE', 'xorg.conf')
366xorg_data.set_quoted('XCONFIGFILE', 'xorg.conf')
367xorg_data.set_quoted('XCONFIGDIR', 'xorg.conf.d')
368xorg_data.set_quoted('DEFAULT_XDG_DATA_HOME', '.local/share')
369xorg_data.set_quoted('DEFAULT_XDG_DATA_HOME_LOGDIR', 'xorg')
370xorg_data.set_quoted('DEFAULT_LOGDIR', log_dir)
371xorg_data.set_quoted('DEFAULT_LOGPREFIX', 'Xorg.')
372xorg_data.set_quoted('DEFAULT_MODULE_PATH', join_paths(get_option('prefix'), module_dir))
373xorg_data.set_quoted('DEFAULT_LIBRARY_PATH', join_paths(get_option('prefix'), get_option('libdir')))
374xorg_data.set_quoted('__XSERVERNAME__', 'Xorg')
375xorg_data.set('XSERVER_LIBPCIACCESS', get_option('pciaccess') ? '1' : false)
376xorg_data.set_quoted('PCI_TXT_IDS_PATH', '')
377xorg_data.set('XSERVER_PLATFORM_BUS', build_udev_kms ? '1' : false)
378xorg_data.set('WSCONS_SUPPORT',
379              host_machine.system() == 'netbsd' or host_machine.system() == 'openbsd' ? '1' : false)
380xorg_data.set('HAVE_STROPTS_H', cc.has_header('stropts.h') ? '1' : false)
381xorg_data.set('HAVE_SYS_KD_H', cc.has_header('sys/kd.h') ? '1' : false)
382xorg_data.set('HAVE_SYS_VT_H', cc.has_header('sys/vt.h') ? '1' : false)
383
384if host_machine.system() == 'freebsd' or host_machine.system() == 'dragonfly'
385    if host_machine.cpu_family() == 'x86' or host_machine.cpu_family() == 'x86_64'
386        xorg_data.set('USE_DEV_IO', '1')
387    endif
388elif host_machine.system() == 'netbsd'
389    if host_machine.cpu_family() == 'x86' or host_machine.cpu_family() == 'x86_64'
390        xorg_data.set('USE_I386_IOPL', '1')
391    endif
392elif host_machine.system() == 'openbsd'
393    if host_machine.cpu_family() == 'x86'
394        xorg_data.set('USE_I386_IOPL', '1')
395    endif
396    if host_machine.cpu_family() == 'x86_64'
397        xorg_data.set('USE_AMD64_IOPL', '1')
398    endif
399endif
400
401configure_file(output : 'xorg-config.h',
402               input : 'xorg-config.h.meson.in',
403               configuration : xorg_data)
404
405xwin_data = configuration_data()
406xwin_data.set_quoted('DEFAULT_LOGDIR', log_dir)
407xwin_data.set('HAS_WINSOCK', host_machine.system() == 'windows' ? '1' : false,
408              description: 'Use Windows sockets')
409xwin_data.set('HAS_DEVWINDOWS', host_machine.system() == 'cygwin' ? '1' : false,
410              description: 'Has /dev/windows for signaling new win32 messages')
411xwin_data.set('RELOCATE_PROJECTROOT', host_machine.system() == 'windows' ? '1' : false,
412              description: 'Make paths relative to the xserver installation location')
413# XXX: these three are all the same as DEBUG so we should just change to that
414xwin_data.set10('CYGDEBUG', enable_debugging)
415xwin_data.set10('CYGWINDOWING_DEBUG',enable_debugging)
416xwin_data.set10('CYGMULTIWINDOW_DEBUG', enable_debugging)
417
418configure_file(output : 'xwin-config.h',
419               input : 'xwin-config.h.meson.in',
420               configuration : xwin_data)
421
422dtrace_hdr = []
423dtrace_tmpl = files('Xserver.d')
424if with_dtrace
425    dtrace_header = generator(dtrace,
426        output: '@BASENAME@-dtrace.h',
427        arguments: ['-h', '-s', '@INPUT@', '-o', '@OUTPUT@']
428    )
429
430    dtrace_hdr += dtrace_header.process(dtrace_tmpl)
431endif
432
433if build_xorg
434    install_data(
435        [
436            'XIstubs.h',
437            'Xprintf.h',
438            'callback.h',
439            'client.h',
440            'closestr.h',
441            'closure.h',
442            'colormap.h',
443            'colormapst.h',
444            'hotplug.h',
445            'cursor.h',
446            'cursorstr.h',
447            'dix.h',
448            'dixaccess.h',
449            'dixevents.h',
450            'dixfont.h',
451            'dixfontstr.h',
452            'dixgrabs.h',
453            'dixstruct.h',
454            'events.h',
455            'exevents.h',
456            'extension.h',
457            'extinit.h',
458            'extnsionst.h',
459            'fourcc.h',
460            'gc.h',
461            'gcstruct.h',
462            'globals.h',
463            'glx_extinit.h',
464            'glxvndabi.h',
465            'input.h',
466            'inputstr.h',
467            'list.h',
468            'misc.h',
469            'miscstruct.h',
470            'opaque.h',
471            'nonsdk_extinit.h',
472            'optionstr.h',
473            'os.h',
474            'pixmap.h',
475            'pixmapstr.h',
476            'privates.h',
477            'property.h',
478            'propertyst.h',
479            'ptrveloc.h',
480            'region.h',
481            'regionstr.h',
482            'registry.h',
483            'resource.h',
484            'rgb.h',
485            'screenint.h',
486            'scrnintstr.h',
487            'selection.h',
488            'servermd.h',
489            'validate.h',
490            'displaymode.h',
491            'window.h',
492            'windowstr.h',
493            'xkbfile.h',
494            'xkbsrv.h',
495            'xkbstr.h',
496            'xkbrules.h',
497            'Xprintf.h',
498            'xserver_poll.h',
499            'xserver-properties.h',
500        ],
501        install_dir: xorgsdkdir,
502    )
503endif
504