xserver: Branch 'master' - 7 commits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Thu May 2 15:54:48 UTC 2019


 .travis.yml                           |   21 +++++--
 Makefile.am                           |    4 +
 configure.ac                          |    2 
 hw/xfree86/common/Makefile.am         |    6 +-
 hw/xfree86/common/meson.build         |    7 --
 hw/xfree86/common/xf86Init.c          |    2 
 hw/xquartz/GL/meson.build             |    5 +
 hw/xquartz/Makefile.am                |    2 
 hw/xquartz/bundle/chown-bundle.sh     |    7 ++
 hw/xquartz/bundle/meson.build         |   65 ++++++++++++++++++++++++
 hw/xquartz/darwin.c                   |    3 -
 hw/xquartz/mach-startup/Makefile.am   |    2 
 hw/xquartz/mach-startup/bundle-main.c |    9 +--
 hw/xquartz/mach-startup/meson.build   |   92 ++++++++++++++++++++++++++++++++++
 hw/xquartz/man/Xquartz.man            |    2 
 hw/xquartz/meson.build                |   71 ++++++++++++++++++--------
 hw/xquartz/pbproxy/meson.build        |   29 ++++++++++
 hw/xquartz/xpr/meson.build            |   18 ++++++
 hw/xwin/glx/meson.build               |    4 -
 hw/xwin/meson.build                   |    2 
 include/meson.build                   |   12 +++-
 meson.build                           |   41 ++++++++++++---
 meson_options.txt                     |   14 +++++
 miext/rootless/meson.build            |   13 ++++
 os/meson.build                        |    2 
 test/scripts/build-travis-osx.sh      |   33 ++++++++----
 26 files changed, 400 insertions(+), 68 deletions(-)

New commits:
commit dd1aebccf2e1722ac10fb73ed438251785283b8d
Author: Jon Turney <jon.turney at dronecode.org.uk>
Date:   Sat Apr 20 13:50:57 2019 +0100

    travis: Suppress uninteresting warnings on OSX
    
    Suppress uninteresting warnings on OSX that we are drowning in, turned
    on by default in meson.

diff --git a/test/scripts/build-travis-osx.sh b/test/scripts/build-travis-osx.sh
index 800fafcb2..e77049e9c 100755
--- a/test/scripts/build-travis-osx.sh
+++ b/test/scripts/build-travis-osx.sh
@@ -18,7 +18,7 @@ hdiutil detach /Volumes/XQuartz-${XQUARTZ_VERSION}
 export PATH="/opt/X11/bin:${PATH}"
 export PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:${PKG_CONFIG_PATH}"
 export ACLOCAL="aclocal -I /opt/X11/share/aclocal -I /usr/local/share/aclocal"
-export CFLAGS="-Wall -O2 -ggdb3 -arch x86_64 -pipe"
+export CFLAGS="-Wall -O2 -ggdb3 -arch x86_64 -pipe -Wno-typedef-redefinition -Wno-deprecated-declarations"
 export CXXFLAGS=$CFLAGS
 export OBJCFLAGS=$CFLAGS
 export LDFLAGS=$CFLAGS
commit f0e22a76c93c98d67dbd5c966812b2901de5ed49
Author: Jon Turney <jon.turney at dronecode.org.uk>
Date:   Fri Apr 19 15:37:22 2019 +0100

    travis: Add OSX meson build to matrix
    
    Unfortunately, a 'brew update' is currently needed to get the meson >=
    0.46.0 required by xserver.

diff --git a/.travis.yml b/.travis.yml
index 15677891b..654ab5ba5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,18 +1,27 @@
 language: c
-cache: ccache
+cache:
+    ccache: true
+    directories:
+        - $HOME/Library/Caches/Homebrew
 branches:
     except:
         - /appveyor.*/
 
+os: osx
+osx_image: xcode9.2
+
 matrix:
   include:
-    - os: osx
-      osx_image: xcode9.2
-      env: DISTRO=xcode9.2
+    - env: TOOL=meson
+    - env: TOOL=autotools
 
 install:
-    - HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache
+    - brew update
+    - HOMEBREW_NO_AUTO_UPDATE=1 brew install ccache meson
 
 script:
-    - ./test/scripts/build-travis-osx.sh
+    - ./test/scripts/build-travis-osx.sh $TOOL
     - ccache -s
+
+before_cache:
+    - brew cleanup
diff --git a/test/scripts/build-travis-osx.sh b/test/scripts/build-travis-osx.sh
index 193a8851d..800fafcb2 100755
--- a/test/scripts/build-travis-osx.sh
+++ b/test/scripts/build-travis-osx.sh
@@ -30,14 +30,29 @@ export PATH="/usr/local/opt/ccache/libexec:$PATH"
 pushd $HOME
 git clone git://anongit.freedesktop.org/git/xorg/proto/xorgproto
 cd xorgproto
-autoreconf -fvi
-./configure --prefix=/opt/X11
-sudo make install
+if [[ "$1" == "autotools" ]]; then
+    autoreconf -fvi
+    ./configure --prefix=/opt/X11
+    sudo make install
+elif [[ "$1" == "meson" ]]; then
+    meson _build/ -Dprefix=/opt/X11
+    ninja -C _build/
+    sudo ninja -C _build/ install
+else
+    echo "Unknown build tool $1"
+    exit 1
+fi
 popd
 
 # build
-autoreconf -fvi
-./configure --prefix=/opt/X11 --disable-dependency-tracking --with-apple-application-name=XQuartz --with-bundle-id-prefix=org.macosforge.xquartz
-make
-make check
-make install DESTDIR=$(pwd)/staging
+if [[ "$1" == "autotools" ]]; then
+    autoreconf -fvi
+    ./configure --prefix=/opt/X11 --disable-dependency-tracking --with-apple-application-name=XQuartz --with-bundle-id-prefix=org.macosforge.xquartz
+    make
+    make check
+    make install DESTDIR=$(pwd)/staging
+elif [[ "$1" == "meson" ]]; then
+    meson _build/ -Dprefix=/opt/X11 -Dsecure-rpc=false
+    DESTDIR=$(pwd)/staging ninja -C _build/ install
+    ninja -C _build/ test
+fi
commit 0bdfa5bc0ab050ce74c2289178f2f89790e2c8ef
Author: Jon Turney <jon.turney at dronecode.org.uk>
Date:   Sat Apr 20 01:24:21 2019 +0100

    travis: Don't produce fat binaries on OSX
    
    Trying to build fat binaries for multiple arches tickles a bug [1] in
    the framework detector in meson 0.50.  Workaround this by not bothering
    building for x86, which is probably no great loss :S
    
    https://github.com/mesonbuild/meson/issues/5290

diff --git a/test/scripts/build-travis-osx.sh b/test/scripts/build-travis-osx.sh
index 6f3f9f3a7..193a8851d 100755
--- a/test/scripts/build-travis-osx.sh
+++ b/test/scripts/build-travis-osx.sh
@@ -18,7 +18,7 @@ hdiutil detach /Volumes/XQuartz-${XQUARTZ_VERSION}
 export PATH="/opt/X11/bin:${PATH}"
 export PKG_CONFIG_PATH="/opt/X11/share/pkgconfig:/opt/X11/lib/pkgconfig:${PKG_CONFIG_PATH}"
 export ACLOCAL="aclocal -I /opt/X11/share/aclocal -I /usr/local/share/aclocal"
-export CFLAGS="-Wall -O2 -ggdb3 -arch i386 -arch x86_64 -pipe"
+export CFLAGS="-Wall -O2 -ggdb3 -arch x86_64 -pipe"
 export CXXFLAGS=$CFLAGS
 export OBJCFLAGS=$CFLAGS
 export LDFLAGS=$CFLAGS
commit 655b1eb32e3f7f9ba587e878a691fbc9195e81f5
Author: Jon Turney <jon.turney at dronecode.org.uk>
Date:   Thu Apr 18 17:06:41 2019 +0100

    meson: Convert xquartz from autotools
    
    Differences from autotools:
    
    * Autotools defined NO_ALLOCA for OSX builds.  I don't think we need
    this anymore as Xalloc.h is no longer used anywhere in the xserver.
    
    * X11.bin is linked with -u,miDCInitialize, and then libserver_mi
    provided to satisfy (just) that.  It's been that way since the commit
    which added it.  We can't write the equivalent in meson due to linker
    argument ordering issues, but do we really need to?
    
    * An explicit -Dsecure-rpc=false is required for OSX, since in meson we
    don't do the checks that XTRANS_SECURE_RPC_FLAGS did for the existence
    of the specific RPC functions required.

diff --git a/hw/xquartz/GL/meson.build b/hw/xquartz/GL/meson.build
new file mode 100644
index 000000000..556417525
--- /dev/null
+++ b/hw/xquartz/GL/meson.build
@@ -0,0 +1,5 @@
+libcglcore = static_library('CGLCore',
+     ['indirect.c', 'capabilities.c', 'visualConfigs.c'],
+     include_directories: [inc, glx_inc, '..', '../xpr'],
+     dependencies: [xproto_dep, pixman_dep],
+)
diff --git a/hw/xquartz/bundle/chown-bundle.sh b/hw/xquartz/bundle/chown-bundle.sh
new file mode 100755
index 000000000..ac62f289f
--- /dev/null
+++ b/hw/xquartz/bundle/chown-bundle.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+BUNDLE_ROOT=$1
+
+if [[ $(id -u) == 0 ]] ; then
+	chown -R root:admin ${BUNDLE_ROOT}
+fi
diff --git a/hw/xquartz/bundle/meson.build b/hw/xquartz/bundle/meson.build
new file mode 100644
index 000000000..ec5225293
--- /dev/null
+++ b/hw/xquartz/bundle/meson.build
@@ -0,0 +1,65 @@
+# system-wide Xquartz server defaults file
+install_data('Xquartz.plist',
+    install_dir: join_paths(get_option('libdir'), 'X11/xserver'))
+
+# generate Info.plist
+cpp = find_program('cpp')
+cpp_defs = [
+    '-DAPPLE_APPLICATION_NAME=@0@'.format(apple_application_name),
+    '-DBUNDLE_ID_PREFIX=@0@'.format(bundle_id_prefix),
+    '-DBUNDLE_VERSION=@0@'.format(bundle_version),
+    '-DBUNDLE_VERSION_STRING=@0@'.format(bundle_version_string),
+]
+
+if build_sparkle
+cpp_defs += [
+    '-DXQUARTZ_SPARKLE',
+    '-DXQUARTZ_SPARKLE_FEED_URL=@0@'.format(xquartz_sparkle_feed_url),
+]
+endif
+
+# bundle data
+localities = [
+    'Dutch', 'English', 'French', 'German', 'Italian', 'Japanese', 'Spanish',
+    'ar','ca','cs','da','el','fi','he','hr','hu','ko','no','pl','pt','pt_PT',
+    'ro','ru','sk','sv','th','tr','uk','zh_CN','zh_TW'
+]
+foreach lang : localities
+    install_data(join_paths('Resources', lang + '.lproj', 'Localizable.strings'),
+        install_dir: join_paths(bundle_root, 'Contents/Resources', lang + '.lproj'),
+        install_mode: 'rw-r--r--')
+
+    install_data(join_paths('Resources', lang + '.lproj', 'main.nib/keyedobjects.nib'),
+        install_dir: join_paths(bundle_root, 'Contents/Resources', lang + '.lproj', 'main.nib'),
+        install_mode: 'rw-r--r--')
+endforeach
+
+install_data('Resources/English.lproj/main.nib/designable.nib',
+    install_dir: join_paths(bundle_root, 'Contents/Resources/English.lproj/main.nib'),
+    install_mode: 'rw-r--r--')
+
+install_data('Resources/X11.icns',
+    install_dir: join_paths(bundle_root, 'Contents/Resources'),
+    install_mode: 'rw-r--r--')
+
+custom_target('Info.plist',
+    command: [cpp, '-P', cpp_defs, '@INPUT@'],
+    capture: true,
+    input: 'Info.plist.cpp',
+    output: 'Info.plist',
+    install: true,
+    install_dir: join_paths(bundle_root, 'Contents'),
+    install_mode: 'rw-r--r--',
+    build_by_default: true,
+)
+
+install_data('PkgInfo',
+    install_dir: join_paths(bundle_root, 'Contents'),
+    install_mode: 'rw-r--r--')
+
+install_data('X11.sh',
+    rename: 'X11',
+    install_dir: join_paths(bundle_root, 'Contents/MacOS'),
+    install_mode: 'rwxr-xr-x')
+
+meson.add_install_script('chown-bundle.sh', bundle_root)
diff --git a/hw/xquartz/mach-startup/meson.build b/hw/xquartz/mach-startup/meson.build
new file mode 100644
index 000000000..1d5318441
--- /dev/null
+++ b/hw/xquartz/mach-startup/meson.build
@@ -0,0 +1,92 @@
+# mach interface
+mig = find_program('mig')
+mach_startup = custom_target('mach_startup',
+    command: [mig,
+              '-sheader', '@OUTPUT0@', '-header', '@OUTPUT2@',
+              '-server', '@OUTPUT1@', '-user', '@OUTPUT3@',
+              '@INPUT@'],
+    input: 'mach_startup.defs',
+    output: ['mach_startupServer.h',
+             'mach_startupServer.c',
+             'mach_startup.h',
+             'mach_startupUser.c'],
+)
+
+mach_startup_dep = declare_dependency(
+    sources: mach_startup[2] # mach_startup.h
+)
+
+# common defines
+xquartz_defs = [
+    bundle_id_def,
+    '-DXSERVER_VERSION="@0@"'.format(meson.project_version()),
+    '-DX11BINDIR="@0@"'.format(join_paths(get_option('prefix'), get_option('bindir'))),
+]
+
+# X11.bin
+x11appdir = join_paths(bundle_root, 'Contents/MacOS')
+
+x11_bin_deps = [
+     meson.get_compiler('c').find_library('Xplugin'),
+     dependency('Carbon', method: 'extraframework'),
+     cocoa,
+     dependency('CoreAudio', method: 'extraframework'),
+     dependency('IOKit', method: 'extraframework')
+]
+
+if build_glx
+    x11_bin_deps += [dependency('OpenGL', method: 'extraframework')]
+endif
+
+if build_sparkle
+    x11_bin_deps += sparkle
+endif
+
+x11_bin_libs = [
+    libXquartz,
+    libXquartzXpr,
+    libxpbproxy,
+    libxserver_fb,
+    libxserver,
+    libxserver_xkb_stubs,
+]
+
+if build_glx
+   x11_bin_libs += [libcglcore, libxserver_glx, libglxvnd]
+endif
+
+x11_bin = executable('X11.bin',
+     [
+      'bundle-main.c',
+      # strndup(3) was added in Mac OS X 10.7 (Lion), but we do this
+      # unconditionally to deal with the case where we build on 10.7 or later,
+      # but target 10.6 (Snow Leopard) or earlier as the minimum OS version.
+      '../../../os/strndup.c',
+      mach_startup[1], # mach_startupServer.c
+      mach_startup[3], # mach_startupUser.c
+     ],
+     link_with: x11_bin_libs,
+     dependencies: [xproto_dep, x11_bin_deps, mach_startup_dep],
+     include_directories: [inc, '..', top_dir_inc],
+     c_args: xquartz_defs,
+     link_args: ['-Objc'],
+     install: true,
+     install_dir: x11appdir,
+)
+
+# Xquartz
+xquartz_deps = [
+    dependency('CoreServices', method: 'extraframework'),
+]
+
+xquartz = executable('Xquartz',
+    [
+     'stub.c',
+     'launchd_fd.c',
+     mach_startup[3], # mach_startupUser.c
+    ],
+    include_directories: inc,
+    c_args: xquartz_defs,
+    dependencies: [xquartz_deps, mach_startup_dep],
+    install: true,
+)
diff --git a/hw/xquartz/meson.build b/hw/xquartz/meson.build
index ebb24132c..25004f79c 100644
--- a/hw/xquartz/meson.build
+++ b/hw/xquartz/meson.build
@@ -1,6 +1,25 @@
 add_languages('objc')
 
-srcs = [
+apple_applications_dir = get_option('apple-applications-dir')
+apple_application_name = get_option('apple-application-name')
+bundle_id_prefix = get_option('bundle-id-prefix')
+xquartz_sparkle_feed_url = get_option('sparkle-feed-url')
+
+bundle_version_string = meson.project_version() # CFBundleShortVersionString
+bundle_version = release                        # CFBundleVersion
+
+bundle_id_def = '-DBUNDLE_ID_PREFIX="@0@"'.format(bundle_id_prefix)
+
+bundle_root = join_paths(apple_applications_dir, apple_application_name + '.app')
+
+# using sparkle update framework?
+build_sparkle = xquartz_sparkle_feed_url != ''
+if build_sparkle
+    sparkle = dependency('Sparkle', method: 'extraframework')
+endif
+
+# libxquartz
+srcs_libxquartz = [
     'X11Application.m',
     'X11Controller.m',
     'applewm.c',
@@ -17,30 +36,42 @@ srcs = [
     '../../mi/miinitext.c',
 ]
 
-xquartz_c_args = [
-    '-DXFree86Server',
-    # XXXX: BUILD_DATE
-    '-DXSERVER_VERSION="' + meson_project.version() + '"',
+libxquartz_defs = [
     '-DINXQUARTZ',
     '-DUSE_NEW_CLUT',
+    '-DX11LIBDIR="@0@"'.format(join_paths(get_option('prefix'),
+                               get_option('libdir'))),
+    '-DXFree86Server',
+    '-DXQUARTZ',
+    '-DXSERVER_VERSION="@0@"'.format(meson.project_version()),
+    bundle_id_def,
 ]
 
 if cc.has_function('dispatch_async')
-    xquartz_c_args += '-DHAVE_LIBDISPATCH'
+    libxquartz_defs += '-DHAVE_LIBDISPATCH'
+endif
+
+libXquartz = static_library('Xquartz',
+    srcs_libxquartz,
+    c_args: libxquartz_defs,
+    objc_args: libxquartz_defs,
+    include_directories: [inc, '../../pseudoramiX', '../../miext/rootless', top_dir_inc],
+    dependencies: [xproto_dep, pixman_dep],
+    link_with: [libxserver_pseudoramix, libxserver_miext_rootless],
+)
+
+subdir('bundle')
+if build_glx
+    subdir('GL')
 endif
+subdir('pbproxy')
+subdir('xpr')
+subdir('mach-startup')
 
-executable(
-    'Xquartz',
-    srcs,
-    include_directories: inc,
-    link_with: [
-        libxserver_main,
-        libxserver,
-        libxserver_xkb_stubs,
-        libxserver_xi_stubs,
-        libxserver_glx,
-        libxserver_pseudoramix,
-    ],
-    c_args: xquartz_c_args,
-    install: true,
+# manpage
+xquartz_man = configure_file(
+    input: 'man/Xquartz.man',
+    output: 'Xquartz.1',
+    configuration: manpage_config,
 )
+install_man(xquartz_man)
diff --git a/hw/xquartz/pbproxy/meson.build b/hw/xquartz/pbproxy/meson.build
new file mode 100644
index 000000000..bf0f06f75
--- /dev/null
+++ b/hw/xquartz/pbproxy/meson.build
@@ -0,0 +1,29 @@
+build_standalone_pbproxy = get_option('xpbproxy')
+
+pbproxy_defs = [bundle_id_def]
+if build_standalone_pbproxy
+    pbproxy_defs += ['-DSTANDALONE_XPBPROXY']
+endif
+
+libapplewm_dep = dependency('applewm', version: '>=1.4')
+
+libxpbproxy = static_library('xpbproxy',
+    ['main.m',
+     'x-input.m',
+     'x-selection.m'],
+    dependencies: [applewmproto_dep, libapplewm_dep, dependency('xfixes'), dependency('x11')],
+    objc_args: pbproxy_defs,
+)
+
+cocoa = dependency('Cocoa', method: 'extraframework')
+
+# standalone xpbproxy
+if build_standalone_pbproxy
+    executable('xpbproxy',
+        'app-main.m',
+        link_with: libxpbproxy,
+        dependencies: [cocoa, dependency('x11')],
+        objc_args: pbproxy_defs,
+        install: true,
+    )
+endif
diff --git a/hw/xquartz/xpr/meson.build b/hw/xquartz/xpr/meson.build
new file mode 100644
index 000000000..590727f47
--- /dev/null
+++ b/hw/xquartz/xpr/meson.build
@@ -0,0 +1,18 @@
+libXquartzXpr = static_library('XquartzXpr',
+    [
+     'appledri.c',
+     'dri.c',
+     'driWrap.c',
+     'xprAppleWM.c',
+     'xprCursor.c',
+     'xprEvent.c',
+     'xprFrame.c',
+     'xprScreen.c',
+     'x-hash.c',
+     'x-hook.c',
+     'x-list.c',
+    ],
+    include_directories: [inc, '..', '../../../pseudoramiX', '../../../miext/rootless'],
+    c_args: [bundle_id_def, '-DXQUARTZ'],
+    dependencies: [xproto_dep, pixman_dep],
+)
diff --git a/include/meson.build b/include/meson.build
index 8e400d05d..65781b7a0 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -52,8 +52,6 @@ conf_data.set('_GNU_SOURCE', '1')
 # ifdef for openbsd?
 conf_data.set('HAS_APERTURE_DRV', host_machine.system() == 'openbsd')
 
-# XXX: BUNDLE_ID_PREFIX
-
 if get_option('input_thread') == 'false'
   enable_input_thread = false
 else
@@ -289,6 +287,10 @@ if host_machine.system() == 'openbsd'
   csrg_based = true
 endif
 
+if host_machine.system() == 'darwin'
+  csrg_based = true
+endif
+
 conf_data.set('SVR4', cc.compiles(defines_svr4))
 conf_data.set_quoted('XKB_DFLT_RULES', get_option('xkb_default_rules'))
 conf_data.set('XORGSERVER', build_xorg)
diff --git a/meson.build b/meson.build
index 85c045ee3..08395ff62 100644
--- a/meson.build
+++ b/meson.build
@@ -6,7 +6,7 @@ project('xserver', 'c',
         version: '1.20.99.1',
         meson_version: '>= 0.46.0',
 )
-add_project_arguments('-DHAVE_DIX_CONFIG_H', language: 'c')
+add_project_arguments('-DHAVE_DIX_CONFIG_H', language: ['c', 'objc'])
 cc = meson.get_compiler('c')
 
 add_global_arguments('-fno-strict-aliasing', language : 'c')
@@ -56,7 +56,7 @@ foreach wflag: test_wflags
     endif
 endforeach
 
-add_global_arguments(common_wflags, language : 'c')
+add_global_arguments(common_wflags, language : ['c', 'objc'])
 
 xproto_dep = dependency('xproto', version: '>= 7.0.31')
 randrproto_dep = dependency('randrproto', version: '>= 1.6.0')
@@ -133,14 +133,21 @@ dfp = get_option('default_font_path')
 if dfp == ''
     fontutil_dep = dependency('fontutil')
     fontrootdir = fontutil_dep.get_pkgconfig_variable('fontrootdir')
-    default_font_path = ','.join([
+    dfp_elements = [
         join_paths(fontrootdir, 'misc'),
         join_paths(fontrootdir, 'TTF'),
         join_paths(fontrootdir, 'OTF'),
         join_paths(fontrootdir, 'Type1'),
         join_paths(fontrootdir, '100dpi'),
         join_paths(fontrootdir, '75dpi'),
-    ])
+    ]
+    if host_machine.system() == 'darwin'
+       dfp_elements += [
+       '/Library/Fonts',
+       '/System/Library/Fonts',
+    ]
+    endif
+    default_font_path = ','.join(dfp_elements)
 else
     default_font_path = dfp
 endif
@@ -149,7 +156,7 @@ hal_option = get_option('hal')
 glamor_option = get_option('glamor')
 
 build_udev = get_option('udev')
-if host_machine.system() == 'windows'
+if host_machine.system() == 'windows' or host_machine.system() == 'darwin'
     build_udev = false
     hal_option = 'false'
 endif
@@ -227,8 +234,14 @@ else
     build_xwin = get_option('xwin') == 'true'
 endif
 
-# XXX: Finish these.
 build_xquartz = false
+if get_option('xquartz') == 'auto'
+    if host_machine.system() == 'darwin'
+            build_xquartz = true
+    endif
+else
+    build_xquartz = get_option('xquartz') == 'true'
+endif
 
 build_rootless = false
 if build_xquartz
diff --git a/meson_options.txt b/meson_options.txt
index 3051932f7..7d3bbe535 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -16,6 +16,9 @@ option('xvfb', type: 'boolean', value: true,
        description: 'Enable Xvfb X server')
 option('xwin', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto',
        description: 'Enable XWin X server')
+option('xquartz', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto',
+       description: 'Enable Xquartz X server')
+
 
 option('builder_addr', type: 'string', description: 'Builder address', value: 'xorg at lists.freedesktop.org')
 option('builder_string', type: 'string', description: 'Additional builder string')
@@ -104,3 +107,14 @@ option('agp', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto',
 option('dri1', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI1 extension (default: auto)')
 option('dri2', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI2 extension (default: auto)')
 option('dri3', type: 'combo', choices: ['true', 'false', 'auto'], value: 'auto', description: 'Build DRI3 extension (default: auto)')
+
+option('apple-applications-dir', type: 'string', value: '/Applications/Utilities',
+        description: 'Applications directory')
+option('apple-application-name', type: 'string', value: 'X11',
+        description: 'Application name')
+option('bundle-id-prefix', type: 'string', value: 'org.x',
+        description: 'RDNS prefix for bundle identifier')
+option('sparkle-feed-url', type: 'string',
+        description: 'Feed URL for autoupdating with the Sparkle Framework (default: disabled)')
+option('xpbproxy', type: 'boolean', value: false,
+        description: 'Build a standalone X pasteboard proxy')
diff --git a/os/meson.build b/os/meson.build
index f6313807a..39440a7c3 100644
--- a/os/meson.build
+++ b/os/meson.build
@@ -62,7 +62,7 @@ if get_option('secure-rpc')
     if not (rpc_dep.found() or cc.has_header('rpc/rpc.h'))
         error('secure-rpc requested, but neither libtirpc or libc RPC support were found')
     endif
-
+    # XXX: also check if RPC library provides xdr_opaque_auth, authdes_(sec)create ???
     srcs_os += 'rpcauth.c'
 endif
 
commit e5f4c7c80b3f15b1941c530e58fbded0fd06a97e
Author: Jon Turney <jon.turney at dronecode.org.uk>
Date:   Fri Apr 19 14:03:58 2019 +0100

    xquartz: Fix a typo in man page substitution
    
    The typo fixed in d69460159 was still present for this setting when
    added in ac439842.
    
    meson warns that there is no substitution with this name.

diff --git a/hw/xquartz/man/Xquartz.man b/hw/xquartz/man/Xquartz.man
index df7ab25aa..6f19202d6 100644
--- a/hw/xquartz/man/Xquartz.man
+++ b/hw/xquartz/man/Xquartz.man
@@ -84,7 +84,7 @@ This option defaults to false and is provided only "for experts."  It updates th
 .B defaults write @bundle_id_prefix at .X11 enable_test_extensions -boolean true
 This option defaults to false and is only accessible through the command line.  Enable this option to turn on the DEC-XTRAP, RECORD, and XTEST extensions in the server.
 .TP 8
-.B defaults write @laucnd_id_prefix at .X11 scroll_in_device_direction -boolean true
+.B defaults write @bundle_id_prefix at .X11 scroll_in_device_direction -boolean true
 This option defaults to false.  Enable this option to ensure that X11 scroll events are always in the direction of the device.  This overrides the related option in the Mouse/Trackpad section of System Preferences.
 .SH OPTIONS
 .PP
commit ecf62b7ba6e7eba1a3f3a50d46eaf9f4f11550c4
Author: Jon Turney <jon.turney at dronecode.org.uk>
Date:   Fri Apr 19 14:01:48 2019 +0100

    meson: Build rootless extension

diff --git a/include/meson.build b/include/meson.build
index 09707cec5..8e400d05d 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -242,6 +242,12 @@ conf_data.set_quoted('__VENDORDWEBSUPPORT__', get_option('vendor_web'))
 conf_data.set_quoted('BUILDERADDR', get_option('builder_addr'))
 conf_data.set_quoted('BUILDERSTRING', get_option('builder_string'))
 
+if build_rootless
+    conf_data.set('ROOTLESS', build_rootless)
+    conf_data.set('ROOTLESS_WORKAROUND', 1)
+    conf_data.set('ROOTLESS_SAFEALPHA', 1)
+endif
+
 #
 # for xorg-server.h only
 #
diff --git a/meson.build b/meson.build
index 75261f4b7..85c045ee3 100644
--- a/meson.build
+++ b/meson.build
@@ -230,6 +230,11 @@ endif
 # XXX: Finish these.
 build_xquartz = false
 
+build_rootless = false
+if build_xquartz
+    build_rootless = true
+endif
+
 if get_option('ipv6') == 'auto'
     build_ipv6 = cc.has_function('getaddrinfo')
 else
@@ -590,6 +595,9 @@ subdir('dbe')
 subdir('miext/damage')
 subdir('miext/shadow')
 subdir('miext/sync')
+if build_rootless
+    subdir('miext/rootless')
+endif
 subdir('present')
 if build_xwin or build_xquartz
     subdir('pseudoramiX')
diff --git a/miext/rootless/meson.build b/miext/rootless/meson.build
new file mode 100644
index 000000000..66b9f06cf
--- /dev/null
+++ b/miext/rootless/meson.build
@@ -0,0 +1,13 @@
+srcs_miext_rootless = [
+        'rootlessCommon.c',
+        'rootlessGC.c',
+        'rootlessScreen.c',
+        'rootlessValTree.c',
+        'rootlessWindow.c',
+]
+
+libxserver_miext_rootless = static_library('libxserver_miext_rootless',
+        srcs_miext_rootless,
+        include_directories: inc,
+        dependencies: common_dep,
+)
commit b4ed20c4f118031305f6ce76dda4e325950b2958
Author: Jon Turney <jon.turney at dronecode.org.uk>
Date:   Sat Apr 20 12:45:11 2019 +0100

    Promote file containing date & time build was configured to top-level
    
    Promote the generated file containing the date & time build was
    configured to top-level.
    
    Rename it from xf86Build.h to buildDateTIme.h.
    
    Use it as well in XQuartz, stringize BUILD_DATE when needed.

diff --git a/Makefile.am b/Makefile.am
index 19511f765..763a772df 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -142,7 +142,7 @@ EXTRA_DIST += \
 	include/xorg-config.h.meson.in \
 	include/xwin-config.h.meson.in \
 	hw/xfree86/loader/symbol-test.c \
-	hw/xfree86/common/xf86Build.sh \
+	buildDateTime.sh \
 	composite/meson.build \
 	config/meson.build \
 	damageext/meson.build \
@@ -213,3 +213,5 @@ EXTRA_DIST += \
 	xfixes/meson.build \
 	Xi/meson.build \
 	xkb/meson.build
+
+DISTCLEANFILES = buildDateTime.h
diff --git a/hw/xfree86/common/xf86Build.h.in b/buildDateTime.h.in
similarity index 100%
rename from hw/xfree86/common/xf86Build.h.in
rename to buildDateTime.h.in
diff --git a/hw/xfree86/common/xf86Build.sh b/buildDateTime.sh
similarity index 100%
rename from hw/xfree86/common/xf86Build.sh
rename to buildDateTime.sh
diff --git a/configure.ac b/configure.ac
index 1107bd8b7..5055d271d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2407,6 +2407,7 @@ if test "x$CONFIG_HAL" = xno && test "x$CONFIG_UDEV" = xno; then
 fi
 
 AC_CONFIG_FILES([
+buildDateTime.h
 Makefile
 glx/Makefile
 include/Makefile
@@ -2442,7 +2443,6 @@ hw/Makefile
 hw/xfree86/Makefile
 hw/xfree86/Xorg.sh
 hw/xfree86/common/Makefile
-hw/xfree86/common/xf86Build.h
 hw/xfree86/ddc/Makefile
 hw/xfree86/dixmods/Makefile
 hw/xfree86/doc/Makefile
diff --git a/hw/xfree86/common/Makefile.am b/hw/xfree86/common/Makefile.am
index 41758fd2e..5d344584d 100644
--- a/hw/xfree86/common/Makefile.am
+++ b/hw/xfree86/common/Makefile.am
@@ -45,14 +45,15 @@ libcommon_la_SOURCES = xf86Configure.c xf86Bus.c xf86Config.c \
                       xf86Mode.c xorgHelper.c xf86Extensions.h \
 		      xf86Extensions.c $(XF86VMODESOURCES) \
                       $(XVSOURCES) $(BUSSOURCES) $(RANDRSOURCES)
-nodist_libcommon_la_SOURCES = xf86DefModeSet.c xf86Build.h
+nodist_libcommon_la_SOURCES = xf86DefModeSet.c
 libcommon_la_LIBADD = $(top_builddir)/config/libconfig.la
 
 AM_CPPFLAGS = $(XORG_INCS) -I$(srcdir)/../ddc -I$(srcdir)/../i2c \
 	   -I$(srcdir)/../loader -I$(srcdir)/../parser \
            -I$(srcdir)/../vbe -I$(srcdir)/../int10 \
 	   -I$(srcdir)/../vgahw -I$(srcdir)/../dixmods/extmod \
-	   -I$(srcdir)/../modes -I$(srcdir)/../ramdac -I$(srcdir)/../dri2
+	   -I$(srcdir)/../modes -I$(srcdir)/../ramdac -I$(srcdir)/../dri2 \
+	   -I$(top_builddir)
 
 sdk_HEADERS = compiler.h fourcc.h xf86.h xf86Module.h xf86Opt.h \
               xf86PciInfo.h xf86Priv.h xf86Privstr.h \
@@ -62,7 +63,6 @@ sdk_HEADERS = compiler.h fourcc.h xf86.h xf86Module.h xf86Opt.h \
 	      xf86platformBus.h xf86MatchDrivers.h \
 	      xaarop.h
 
-DISTCLEANFILES = xf86Build.h
 CLEANFILES = $(BUILT_SOURCES)
 
 EXTRA_DIST = \
diff --git a/hw/xfree86/common/meson.build b/hw/xfree86/common/meson.build
index 3e617dc36..a59aeb98f 100644
--- a/hw/xfree86/common/meson.build
+++ b/hw/xfree86/common/meson.build
@@ -74,11 +74,6 @@ if get_option('pciaccess')
     srcs_xorg_common += ['xf86pciBus.c', 'xf86VGAarbiter.c']
 endif
 
-srcs_xorg_common += configure_file(
-    output: 'xf86Build.h',
-    command: ['sh', join_paths(meson.current_source_dir(), 'xf86Build.sh'), '@OUTPUT@'],
-)
-
 srcs_xorg_common += custom_target(
     'xf86DefModeSet.c',
     output: 'xf86DefModeSet.c',
@@ -89,7 +84,7 @@ srcs_xorg_common += custom_target(
 
 xorg_common = static_library('xorg_common',
     srcs_xorg_common,
-    include_directories: [inc, xorg_inc],
+    include_directories: [inc, xorg_inc, top_dir_inc],
     dependencies: [
         common_dep,
         dbus_dep,
diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index 7d53987cb..1a2520c2a 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -65,7 +65,7 @@
 #include "xf86_OSlib.h"
 #include "xf86cmap.h"
 #include "xorgVersion.h"
-#include "xf86Build.h"
+#include "buildDateTime.h"
 #include "mipointer.h"
 #include <X11/extensions/XI.h>
 #include <X11/extensions/XIproto.h>
diff --git a/hw/xquartz/Makefile.am b/hw/xquartz/Makefile.am
index 4da896d76..65061ae8a 100644
--- a/hw/xquartz/Makefile.am
+++ b/hw/xquartz/Makefile.am
@@ -2,13 +2,13 @@ noinst_LTLIBRARIES = libXquartz.la
 AM_CFLAGS = $(DIX_CFLAGS)
 AM_OBJCFLAGS = $(DIX_CFLAGS)
 AM_CPPFLAGS = \
-	-DBUILD_DATE=\"$(BUILD_DATE)\" \
 	-DXSERVER_VERSION=\"$(VERSION)\" \
 	-DINXQUARTZ \
 	-DUSE_NEW_CLUT \
 	-DXFree86Server \
 	-I$(top_srcdir)/miext/rootless \
 	-I$(top_builddir)/pseudoramiX \
+	-I$(top_builddir) \
 	-DX11LIBDIR=\"$(libdir)\"
 
 if GLX
diff --git a/hw/xquartz/darwin.c b/hw/xquartz/darwin.c
index ccfe5f963..5c7e96e87 100644
--- a/hw/xquartz/darwin.c
+++ b/hw/xquartz/darwin.c
@@ -34,6 +34,7 @@
 
 #include <X11/X.h>
 #include <X11/Xproto.h>
+#include "buildDateTime.h"
 #include "os.h"
 #include "servermd.h"
 #include "inputstr.h"
@@ -168,7 +169,7 @@ DarwinPrintBanner(void)
 {
     ErrorF("Xquartz starting:\n");
     ErrorF("X.Org X Server %s\n", XSERVER_VERSION);
-    ErrorF("Build Date: %s\n", BUILD_DATE);
+    ErrorF("Build Date: %d\n", BUILD_DATE);
 }
 
 /*
diff --git a/hw/xquartz/mach-startup/Makefile.am b/hw/xquartz/mach-startup/Makefile.am
index b2c446af8..59696f8bb 100644
--- a/hw/xquartz/mach-startup/Makefile.am
+++ b/hw/xquartz/mach-startup/Makefile.am
@@ -1,6 +1,6 @@
 AM_CPPFLAGS = \
 	-I$(srcdir)/.. \
-	-DBUILD_DATE=\"$(BUILD_DATE)\" \
+	-I$(top_builddir) \
 	-DXSERVER_VERSION=\"$(VERSION)\" \
 	-DX11BINDIR=\"$(bindir)\"
 
diff --git a/hw/xquartz/mach-startup/bundle-main.c b/hw/xquartz/mach-startup/bundle-main.c
index b40366244..5a593e75f 100644
--- a/hw/xquartz/mach-startup/bundle-main.c
+++ b/hw/xquartz/mach-startup/bundle-main.c
@@ -62,6 +62,7 @@
 #include "mach_startupServer.h"
 
 #include "console_redirect.h"
+#include "buildDateTime.h"
 
 /* From darwinEvents.c ... but don't want to pull in all the server cruft */
 void
@@ -81,9 +82,9 @@ extern int noPanoramiXExtension;
 #define DEFAULT_STARTX X11BINDIR "/startx -- " X11BINDIR "/Xquartz"
 #define DEFAULT_SHELL  "/bin/sh"
 
-#ifndef BUILD_DATE
-#define BUILD_DATE ""
-#endif
+#define _STRINGIZE(s) #s
+#define STRINGIZE(s) _STRINGIZE(s)
+
 #ifndef XSERVER_VERSION
 #define XSERVER_VERSION "?"
 #endif
@@ -99,7 +100,7 @@ asm (".desc ___crashreporter_info__, 0x10");
 #endif
 
 static const char *__crashreporter_info__base =
-    "X.Org X Server " XSERVER_VERSION " Build Date: " BUILD_DATE;
+    "X.Org X Server " XSERVER_VERSION " Build Date: " STRINGIZE(BUILD_DATE);
 
 char *bundle_id_prefix = NULL;
 static char *server_bootstrap_name = NULL;
diff --git a/hw/xwin/glx/meson.build b/hw/xwin/glx/meson.build
index 57cce039d..95f248953 100644
--- a/hw/xwin/glx/meson.build
+++ b/hw/xwin/glx/meson.build
@@ -72,7 +72,7 @@ xwin_glx = static_library(
     srcs_windows_glx,
     include_directories: [
         inc,
-        top_srcdir_inc,
+        top_dir_inc,
         include_directories('../'),
     ],
     dependencies: common_dep,
@@ -89,7 +89,7 @@ WGLthunk = shared_library(
     srcs_wgl_thunk,
     include_directories: [
         inc,
-        top_srcdir_inc,
+        top_dir_inc,
     ],
     c_args: xwin_glx_c_args + [
       '-Wno-unused-function',
diff --git a/hw/xwin/meson.build b/hw/xwin/meson.build
index 72e4fe3c2..3ec809fef 100644
--- a/hw/xwin/meson.build
+++ b/hw/xwin/meson.build
@@ -142,7 +142,7 @@ xwin_dep = [
 executable(
     server_name,
     srcs_windows,
-    include_directories: [inc, top_srcdir_inc],
+    include_directories: [inc, top_dir_inc],
     dependencies: xwin_dep,
     link_with: [
         xwin_windowsdri,
diff --git a/meson.build b/meson.build
index e835e2d31..75261f4b7 100644
--- a/meson.build
+++ b/meson.build
@@ -531,7 +531,7 @@ endif
 
 glx_inc = include_directories('glx')
 
-top_srcdir_inc = include_directories('.')
+top_dir_inc = include_directories('.')
 
 serverconfigdir = join_paths(get_option('libdir'), 'xorg')
 
@@ -566,6 +566,12 @@ manpage_config.set('modulepath', module_dir)
 manpage_config.set('suid_wrapper_dir', join_paths(get_option('prefix'), 'libexec'))
 manpage_config.set('default_font_path', default_font_path)
 
+# generate header containing date & time build was configued
+build_date_time = configure_file(
+    output: 'buildDateTime.h',
+    command: ['sh', join_paths(meson.current_source_dir(), 'buildDateTime.sh'), '@OUTPUT@'],
+)
+
 # Include must come first, as it sets up dix-config.h
 subdir('include')
 


More information about the xorg-commit mailing list