diff options
author | Eric Anholt <eric@anholt.net> | 2017-03-11 10:24:04 -0800 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2017-04-26 15:25:27 -0700 |
commit | 1549e30372756cfdb85379fd8d93c769297ab6e6 (patch) | |
tree | 6160835c9dbe15e39ce799f8b1f6a6fdedd89825 /include | |
parent | c7be7a688a78a34f61b90c0d95914e14b90b0cdc (diff) |
Add a Meson build system alongside autotools.
This is a work in progress that builds Xvfb, Xephyr, Xwayland, Xnest,
and Xdmx so far. The outline of Xquartz/Xwin support is in tree, but
hasn't been built yet. The unit tests are also not done.
The intent is to build this as a complete replacement for the
autotools system, then eventually replace autotools. meson is faster
to generate the build, faster to run the bulid, shorter to write the
build files in, and less error-prone than autotools.
v2: Fix indentation nits, move version declaration to project(), use
existing meson_options for version-config.h's vendor name/web.
Signed-off-by: Eric Anholt <eric@anholt.net>
Acked-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'include')
-rw-r--r-- | include/meson.build | 329 | ||||
-rw-r--r-- | include/xorg-config.h.meson.in | 151 |
2 files changed, 480 insertions, 0 deletions
diff --git a/include/meson.build b/include/meson.build new file mode 100644 index 000000000..173f8ddfa --- /dev/null +++ b/include/meson.build @@ -0,0 +1,329 @@ + +dri_dep = dependency('dri', required: build_dri2 or build_dri3) + +conf_data = configuration_data() +conf_data.set('_DIX_CONFIG_H_', '1') + +conf_data.set('MONOTONIC_CLOCK', cc.compiles(''' + #include <time.h> + #include <unistd.h> + #ifndef CLOCK_MONOTONIC + #error CLOCK_MONOTONIC not defined + #endif +''', + name: 'CLOCK_MONOTONIC')) + +#conf_data.set('XSERVER_DTRACE', '1') # XXX + +if host_machine.endian() == 'little' + conf_data.set('X_BYTE_ORDER', 'X_LITTLE_ENDIAN') +else + conf_data.set('X_BYTE_ORDER', 'X_BIG_ENDIAN') +endif + +glx_align64 = '' +if cc.sizeof('unsigned long') == 8 + conf_data.set('_XSERVER64', '1') + glx_align64 = '-D__GLX_ALIGN64' +endif + +conf_data.set('_GNU_SOURCE', '1') +# XXX: NO_LOCAL_CLIENT_CRED + +# autoconf checks for /dev/xf86 here, but the test should be based on +# the target, not the build system. Could we get rid of this and just +# ifdef for openbsd? +conf_data.set('HAS_APERTURE_DRV', host_machine.system() == 'openbsd') + +# XXX: USE_ALPHA_PIO and other bsd bits +# XXX: FALLBACK_INPUT_DRIVER +# XXX: BUNDLE_ID_PREFIX +# XXX: HAVE_LIBDISPATCH +conf_data.set_quoted('OSNAME', 'Linux') # XXX +conf_data.set('HAVE_SYSV_IPC', '1') # XXX +conf_data.set('HAVE_INPUTTHREAD', '1') # XXX +conf_data.set('HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID', '1') # XXX +conf_data.set('HAVE_LIBBSD', libbsd_dep.found()) +# XXX: HAVE_SYSTEMD_DAEMON +# XXX: HAVE_LIBUDEV +conf_data.set('CONFIG_UDEV', build_udev) +conf_data.set('CONFIG_UDEV_KMS', build_udev) +conf_data.set('HAVE_DBUS', build_dbus) +conf_data.set('CONFIG_HAL', build_hal) +conf_data.set('SYSTEMD_LOGIND', build_systemd_logind) +conf_data.set('NEED_DBUS', build_systemd_logind or build_hal) +conf_data.set('CONFIG_WSCONS', host_machine.system() == 'openbsd') + +# XXX: SHMDIR is weird in autoconf, probing the build system for +# various tmp directories. Could we replace it with C code at runtime +# that just uses whatever directory works? +conf_data.set_quoted('SHMDIR', '/tmp') + +conf_data.set('HAVE_SIGACTION', '1') # XXX +conf_data.set('BUSFAULT', '1') # XXX +conf_data.set('XSHMFENCE', '1') # XXX +conf_data.set('WITH_LIBDRM', '1') # XXX +conf_data.set('GLAMOR_HAS_DRM_NAME_FROM_FD_2', + dependency('libdrm', version: '>= 2.4.74', required: false).found()) +conf_data.set('GLXEXT', build_glx) +conf_data.set('GLAMOR', build_glamor) +conf_data.set('GLAMOR_HAS_GBM', gbm_dep.found()) +if gbm_dep.found() and dependency('gbm', version: '>= 10.6', required: false).found() + conf_data.set('GLAMOR_HAS_GBM_LINEAR', build_glamor) +endif + +conf_data.set_quoted('SERVER_MISC_CONFIG_PATH', serverconfigdir) +conf_data.set_quoted('PROJECTROOT', get_option('prefix')) +conf_data.set_quoted('SYSCONFDIR', join_paths(get_option('prefix'), get_option('sysconfdir'))) + +# XXX: Stopped enumerating at COMPILEDEFAULTFONTPATH + +conf_data.set('HASXDMAUTH', get_option('xdm-auth-1')) + +conf_data.set('HAVE_DBM_H', cc.has_header('dbm.h')) +conf_data.set('HAVE_DLFCN_H', cc.has_header('dlfcn.h')) +conf_data.set('HAVE_EXECINFO_H', cc.has_header('execinfo.h')) +conf_data.set('HAVE_FCNTL_H', cc.has_header('fcntl.h')) +conf_data.set('HAVE_FNMATCH_H', cc.has_header('fnmatch.h')) +conf_data.set('HAVE_LINUX_AGPGART_H', cc.has_header('linux/agpgart.h')) +conf_data.set('HAVE_NDBM_H', cc.has_header('ndbm.h')) +conf_data.set('HAVE_RPCSVC_DBM_H', cc.has_header('rpcsvc/dbm.h')) +conf_data.set('HAVE_STDLIB_H', cc.has_header('stdlib.h')) +conf_data.set('HAVE_STRING_H', cc.has_header('string.h')) +conf_data.set('HAVE_STRINGS_H', cc.has_header('strings.h')) +conf_data.set('HAVE_STROPTS_H', cc.has_header('stropts.h')) +conf_data.set('HAVE_SYS_AGPGART_H', cc.has_header('sys/agpgart.h')) +conf_data.set('HAVE_SYS_AGPIO_H', cc.has_header('sys/agpio.h')) +conf_data.set('HAVE_SYS_UTSNAME_H', cc.has_header('sys/utsname.h')) +conf_data.set('HAVE_UNISTD_H', cc.has_header('unistd.h')) + +conf_data.set('HAVE_BACKTRACE', cc.has_function('backtrace')) +conf_data.set('HAVE_CBRT', cc.has_function('cbrt')) +conf_data.set('HAVE_EPOLL_CREATE', cc.has_function('epoll_create')) +conf_data.set('HAVE_FFS', cc.has_function('ffs')) +conf_data.set('HAVE_GETUID', cc.has_function('getuid')) +conf_data.set('HAVE_GETEUID', cc.has_function('geteuid')) +conf_data.set('HAVE_ISSETUGID', cc.has_function('issetugid')) +conf_data.set('HAVE_GETIFADDRS', cc.has_function('getifaddrs')) +conf_data.set('HAVE_GETPEEREID', cc.has_function('getpeereid')) +conf_data.set('HAVE_GETPEERUCRED', cc.has_function('getpeerucred')) +conf_data.set('HAVE_GETPROGNAME', cc.has_function('getprogname')) +conf_data.set('HAVE_GETZONEID', cc.has_function('getzoneid')) +conf_data.set('HAVE_MMAP', cc.has_function('mmap')) +conf_data.set('HAVE_POLL', cc.has_function('poll')) +conf_data.set('HAVE_POSIX_FALLOCATE', cc.has_function('posix_fallocate')) +conf_data.set('HAVE_SETEUID', cc.has_function('seteuid')) +conf_data.set('HAVE_SETITIMER', cc.has_function('setitimer')) +conf_data.set('HAVE_SHMCTL64', cc.has_function('shmctl64')) +conf_data.set('HAVE_STRCASECMP', cc.has_function('strcasecmp')) +conf_data.set('HAVE_STRNCASECMP', cc.has_function('strncasecmp')) +conf_data.set('HAVE_STRNDUP', cc.has_function('strndup')) +conf_data.set('HAVE_VASPRINTF', cc.has_function('vasprintf')) +conf_data.set('HAVE_VSNPRINTF', cc.has_function('vsnprintf')) +conf_data.set('HAVE_WALKCONTEXT', cc.has_function('walkcontext')) + +# Don't let X dependencies typedef 'pointer' +conf_data.set('_XTYPEDEF_POINTER', '1') +conf_data.set('_XITYPEDEF_POINTER', '1') + +# XXX: Configurable? +conf_data.set('LISTEN_TCP', '1') +conf_data.set('LISTEN_UNIX', '1') +conf_data.set('LISTEN_LOCAL', '1') +conf_data.set('XTRANS_SEND_FDS', '1') + +conf_data.set('TCPCONN', '1') +conf_data.set('UNIXCONN', '1') +conf_data.set('IPv6', build_ipv6) + +conf_data.set('CLIENTIDS', '1') # XXX + +conf_data.set('BIGREQS', '1') +conf_data.set('COMPOSITE', '1') +conf_data.set('DAMAGE', '1') +conf_data.set('DBE', '1') +conf_data.set('DPMSExtension', '1') +conf_data.set('DRI2', build_dri2) +conf_data.set('DRI3', build_dri3) +conf_data.set_quoted('DRI_DRIVER_PATH', dri_dep.get_pkgconfig_variable('dridriverdir')) +conf_data.set('HAS_SHM', '1') +conf_data.set('MITSHM', build_mitshm) +conf_data.set('PANORAMIX', '1') +conf_data.set('PRESENT', '1') +conf_data.set('RANDR', '1') +conf_data.set('RES', build_res) +conf_data.set('RENDER', '1') +conf_data.set('SCREENSAVER', build_screensaver) +conf_data.set('SHAPE', '1') +conf_data.set('XACE', build_xace) +conf_data.set('XCMISC', '1') +conf_data.set('XCSECURITY', build_xsecurity) +conf_data.set('XDMCP', get_option('xdmcp')) +conf_data.set('XF86BIGFONT', build_xf86bigfont) +conf_data.set('XF86DRI', build_dri1) +conf_data.set('XF86VIDMODE', '1') +conf_data.set('XFIXES ', '1') +conf_data.set('XINERAMA', build_xinerama) +conf_data.set('XINPUT', '1') +conf_data.set('XRECORD', '1') +conf_data.set('XSELINUX', build_xselinux) +conf_data.set('XSYNC', '1') +conf_data.set('XTEST', '1') +conf_data.set('XV', build_xv) +conf_data.set('XvExtension', build_xv) +conf_data.set('XvMCExtension', build_xv) + +conf_data.set('HAVE_SHA1_IN_LIBNETTLE', '1') # XXX + +conf_data.set_quoted('XVENDORNAME', get_option('vendor_name')) +conf_data.set_quoted('XVENDORNAMESHORT', get_option('vendor_name_short')) +conf_data.set_quoted('__VENDORDWEBSUPPORT__', get_option('vendor_web')) +conf_data.set_quoted('OSVENDOR', get_option('os_vendor')) + +configure_file(output : 'dix-config.h', + configuration : conf_data) + +version_split = meson.project_version().split('.') +major = version_split[0].to_int() +minor = version_split[1].to_int() +patch = version_split[2].to_int() +subpatch = version_split[3].to_int() + +release = major * 10000000 + minor * 100000 + patch * 1000 + subpatch + +version_data = configuration_data() +version_data.set('VENDOR_RELEASE', '@0@'.format(release)) +version_data.set_quoted('VENDOR_NAME', get_option('vendor_name')) +version_data.set_quoted('VENDOR_NAME_SHORT', get_option('vendor_name_short')) +version_data.set_quoted('VENDOR_WEB', get_option('vendor_web')) +configure_file(output : 'version-config.h', + configuration : version_data) + +xkb_data = configuration_data() + +xkb_data.set_quoted('XKB_BIN_DIRECTORY', join_paths(get_option('prefix'), get_option('bindir'))) +xkb_data.set_quoted('XKB_BASE_DIRECTORY', xkb_dir) +xkb_data.set_quoted('XKB_DFLT_RULES', get_option('xkb_default_rules')) +xkb_data.set_quoted('XKB_DFLT_MODEL', get_option('xkb_default_model')) +xkb_data.set_quoted('XKB_DFLT_LAYOUT', get_option('xkb_default_layout')) +xkb_data.set_quoted('XKB_DFLT_VARIANT', get_option('xkb_default_variant')) +xkb_data.set_quoted('XKB_DFLT_OPTIONS', get_option('xkb_default_options')) +xkb_data.set_quoted('XKM_OUTPUT_DIR', xkb_output_dir) + +configure_file(output : 'xkb-config.h', + configuration : xkb_data) + +xorg_data = configuration_data() + +xorg_data.set_quoted('XORG_BIN_DIRECTORY', get_option('bindir')) +xorg_data.set('XORG_VERSION_CURRENT', release) +xorg_data.set_quoted('XF86CONFIGFILE', 'xorg.conf') +xorg_data.set_quoted('XCONFIGFILE', join_paths(get_option('sysconfdir'), 'xorg.conf')) +xorg_data.set_quoted('XCONFIGDIR', 'xorg.conf.d') +xorg_data.set_quoted('DEFAULT_XDG_DATA_HOME', '.local/share') +xorg_data.set_quoted('DEFAULT_XDG_DATA_HOME_LOGDIR', 'xorg') +xorg_data.set_quoted('DEFAULT_LOGDIR', log_dir) +xorg_data.set_quoted('DEFAULT_LOGPREFIX', 'Xorg.') +xorg_data.set_quoted('FALLBACK_INPUT_DRIVER', 'libinput') +xorg_data.set_quoted('DEFAULT_MODULE_PATH', join_paths(get_option('prefix'), module_dir)) +xorg_data.set_quoted('DEFAULT_LIBRARY_PATH', get_option('libdir')) +xorg_data.set_quoted('__XSERVERNAME__', 'Xorg') +xorg_data.set('XSERVER_LIBPCIACCESS', get_option('pciaccess')) +xorg_data.set_quoted('PCI_TXT_IDS_PATH', '') +xorg_data.set('XSERVER_PLATFORM_BUS', build_udev) +xorg_data.set('WSCONS_SUPPORT', host_machine.system() == 'netbsd' or host_machine.system() == 'openbsd') + +if host_machine.system() == 'freebsd' or host_machine.system() == 'dragonflybsd' + if host_machine.cpu_family() == 'x86' or host_machine.cpu_family() == 'x86_64' + xorg_data.set('USE_DEV_IO', true) + endif + # XXX: Add link to libio on alpha +elif host_machine.system() == 'netbsd' + # XXX: USE_ALPHA_PIO + # XXX: Add link to libi386 + if host_machine.cpu_family() == 'x86' or host_machine.cpu_family() == 'x86_64' + xorg_data.set('USE_I386_IOPL', true) + endif +elif host_machine.system() == 'openbsd' + # XXX: Add link to libi386, libamd64 + if host_machine.cpu_family() == 'x86' + xorg_data.set('USE_I386_IOPL', true) + endif + if host_machine.cpu_family() == 'x86_64' + xorg_data.set('USE_AMD64_IOPL', true) + endif +endif + +configure_file(output : 'xorg-config.h', + input : 'xorg-config.h.meson.in', + configuration : xorg_data) + +if build_xorg + install_data( + [ + 'XIstubs.h', + 'Xprintf.h', + 'callback.h', + 'client.h', + 'closestr.h', + 'closure.h', + 'colormap.h', + 'colormapst.h', + 'hotplug.h', + 'cursor.h', + 'cursorstr.h', + 'dix.h', + 'dixaccess.h', + 'dixevents.h', + 'dixfont.h', + 'dixfontstr.h', + 'dixgrabs.h', + 'dixstruct.h', + 'events.h', + 'exevents.h', + 'extension.h', + 'extinit.h', + 'extnsionst.h', + 'gc.h', + 'gcstruct.h', + 'globals.h', + 'glx_extinit.h', + 'input.h', + 'inputstr.h', + 'list.h', + 'misc.h', + 'miscstruct.h', + 'opaque.h', + 'nonsdk_extinit.h', + 'optionstr.h', + 'os.h', + 'pixmap.h', + 'pixmapstr.h', + 'privates.h', + 'property.h', + 'propertyst.h', + 'ptrveloc.h', + 'region.h', + 'regionstr.h', + 'registry.h', + 'resource.h', + 'rgb.h', + 'screenint.h', + 'scrnintstr.h', + 'selection.h', + 'servermd.h', + 'site.h', + 'validate.h', + 'displaymode.h', + 'window.h', + 'windowstr.h', + 'xkbfile.h', + 'xkbsrv.h', + 'xkbstr.h', + 'xkbrules.h', + 'xserver_poll.h', + 'xserver-properties.h', + ], + install_dir: xorgsdkdir, + ) +endif diff --git a/include/xorg-config.h.meson.in b/include/xorg-config.h.meson.in new file mode 100644 index 000000000..1e4213f9a --- /dev/null +++ b/include/xorg-config.h.meson.in @@ -0,0 +1,151 @@ +/* xorg-config.h.in: not at all generated. -*- c -*- + * + * This file differs from xorg-server.h.in in that -server is installed + * with the rest of the SDK for external drivers/modules to use, whereas + * -config is for internal use only (i.e. building the DDX). + * + */ + +#ifndef _XORG_CONFIG_H_ +#define _XORG_CONFIG_H_ + +#include <dix-config.h> +#include <xkb-config.h> + +/* Building Xorg server. */ +#mesondefine XORGSERVER + +/* Current X.Org version. */ +#mesondefine XORG_VERSION_CURRENT + +/* Name of X server. */ +#mesondefine __XSERVERNAME__ + +/* URL to go to for support. */ +#mesondefine __VENDORDWEBSUPPORT__ + +/* Built-in output drivers. */ +#mesondefine DRIVERS + +/* Built-in input drivers. */ +#mesondefine IDRIVERS + +/* Path to configuration file. */ +#mesondefine XF86CONFIGFILE + +/* Path to configuration file. */ +#mesondefine XCONFIGFILE + +/* Name of configuration directory. */ +#mesondefine XCONFIGDIR + +/* Path to loadable modules. */ +#mesondefine DEFAULT_MODULE_PATH + +/* Path to installed libraries. */ +#mesondefine DEFAULT_LIBRARY_PATH + +/* Default log location */ +#mesondefine DEFAULT_LOGDIR + +/* Default logfile prefix */ +#mesondefine DEFAULT_LOGPREFIX + +/* Default XDG_DATA dir under HOME */ +#mesondefine DEFAULT_XDG_DATA_HOME + +/* Default log dir under XDG_DATA_HOME */ +#mesondefine DEFAULT_XDG_DATA_HOME_LOGDIR + +/* Building DRI-capable DDX. */ +#mesondefine XF86DRI + +/* Build DRI2 extension */ +#mesondefine DRI2 + +/* Define to 1 if you have the <stropts.h> header file. */ +#mesondefine HAVE_STROPTS_H + +/* Define to 1 if you have the <sys/kd.h> header file. */ +#mesondefine HAVE_SYS_KD_H + +/* Define to 1 if you have the <sys/vt.h> header file. */ +#mesondefine HAVE_SYS_VT_H + +/* Define to 1 if you have the `walkcontext' function (used on Solaris for + xorg_backtrace in hw/xfree86/common/xf86Events.c */ +#mesondefine HAVE_WALKCONTEXT + +/* Building vgahw module */ +#mesondefine WITH_VGAHW + +/* NetBSD PIO alpha IO */ +#mesondefine USE_ALPHA_PIO + +/* BSD AMD64 iopl */ +#mesondefine USE_AMD64_IOPL + +/* BSD /dev/io */ +#mesondefine USE_DEV_IO + +/* BSD i386 iopl */ +#mesondefine USE_I386_IOPL + +/* System is BSD-like */ +#mesondefine CSRG_BASED + +/* System has PC console */ +#mesondefine PCCONS_SUPPORT + +/* System has PCVT console */ +#mesondefine PCVT_SUPPORT + +/* System has syscons console */ +#mesondefine SYSCONS_SUPPORT + +/* System has wscons console */ +#mesondefine WSCONS_SUPPORT + +/* System has /dev/xf86 aperture driver */ +#mesondefine HAS_APERTURE_DRV + +/* Has backtrace support */ +#mesondefine HAVE_BACKTRACE + +/* Name of the period field in struct kbd_repeat */ +#mesondefine LNX_KBD_PERIOD_NAME + +/* Have execinfo.h */ +#mesondefine HAVE_EXECINFO_H + +/* Define to 1 if you have the <sys/mkdev.h> header file. */ +#mesondefine HAVE_SYS_MKDEV_H + +/* Path to text files containing PCI IDs */ +#mesondefine PCI_TXT_IDS_PATH + +/* Build with libdrm support */ +#mesondefine WITH_LIBDRM + +/* Use libpciaccess */ +#mesondefine XSERVER_LIBPCIACCESS + +/* Have setugid */ +#mesondefine HAVE_ISSETUGID + +/* Have getresuid */ +#mesondefine HAVE_GETRESUID + +/* Have X server platform bus support */ +#mesondefine XSERVER_PLATFORM_BUS + +/* Define to 1 if you have the `seteuid' function. */ +#mesondefine HAVE_SETEUID + +/* Support APM/ACPI power management in the server */ +#mesondefine XF86PM + +/* Fallback input driver if the assigned driver fails */ +#mesondefine FALLBACK_INPUT_DRIVER + +#endif /* _XORG_CONFIG_H_ */ |