Add meson.build for XWin server (v2)
This needs a meson with PRs #1784, #1792 and #1794 Future work: remove conditionals which are always on, and simplify redundant CYGDEBUG conditionals Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk> Reviewed-by: Eric Anholt <eric@anholt.net>
This commit is contained in:
parent
36b9dac212
commit
1f38a31ed3
|
@ -23,3 +23,7 @@ endif
|
|||
if build_xwayland
|
||||
subdir('xwayland')
|
||||
endif
|
||||
|
||||
if build_xwin
|
||||
subdir('xwin')
|
||||
endif
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
srcs_windows_dri = [
|
||||
'windowsdri.c',
|
||||
'windowsdri.h',
|
||||
]
|
||||
|
||||
xwin_windowsdri = static_library(
|
||||
'WindowsDRI',
|
||||
srcs_windows_dri,
|
||||
include_directories: [ inc, include_directories('../') ],
|
||||
dependencies: [
|
||||
windowsdri_dep,
|
||||
pixman_dep,
|
||||
],
|
||||
)
|
|
@ -0,0 +1,100 @@
|
|||
python3 = import('python3')
|
||||
|
||||
# XWin requires OpenGL spec files in order to generate wrapper code for native GL functions
|
||||
py3 = python3.find_python()
|
||||
if run_command(py3, '-c', 'import lxml;').returncode() != 0
|
||||
error('python3 lxml module not found')
|
||||
endif
|
||||
|
||||
khronos_spec_dir = dependency('khronos-opengl-registry').get_pkgconfig_variable('specdir')
|
||||
|
||||
gen_gl_wrappers_opts= ['-nodebug']
|
||||
gen_gl_wrappers_cmd = ['env', 'PYTHONPATH=' + khronos_spec_dir, py3, files('./gen_gl_wrappers.py'), gen_gl_wrappers_opts]
|
||||
|
||||
wgl_wrappers = custom_target(
|
||||
'gen_wgl_wrappers',
|
||||
command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-prefix', 'wgl', '-wrapper', '-preresolve', '-outfile', '@OUTPUT@'],
|
||||
input: join_paths(khronos_spec_dir, 'wgl.xml'),
|
||||
output: 'generated_wgl_wrappers.c',
|
||||
depend_files: join_paths(khronos_spec_dir, 'reg.py'),
|
||||
)
|
||||
|
||||
gl_shim = custom_target(
|
||||
'gen_gl_shim',
|
||||
command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-shim', '-outfile', '@OUTPUT@'],
|
||||
input: join_paths(khronos_spec_dir, 'gl.xml'),
|
||||
output: 'generated_gl_shim.c',
|
||||
depend_files: join_paths(khronos_spec_dir, 'reg.py'),
|
||||
)
|
||||
|
||||
gl_thunks = custom_target(
|
||||
'gen_gl_thunks',
|
||||
command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-thunk', '-outfile', '@OUTPUT@'],
|
||||
input: join_paths(khronos_spec_dir, 'gl.xml'),
|
||||
output: 'generated_gl_thunks.c',
|
||||
depend_files: join_paths(khronos_spec_dir, 'reg.py'),
|
||||
)
|
||||
|
||||
gl_thunks_def = custom_target(
|
||||
'gen_gl_thunks_def',
|
||||
command: [gen_gl_wrappers_cmd, '-registry', '@INPUT@', '-thunkdefs', '-outfile', '@OUTPUT@'],
|
||||
input: join_paths(khronos_spec_dir, 'gl.xml'),
|
||||
output: 'generated_gl_thunks.def',
|
||||
depend_files: join_paths(khronos_spec_dir, 'reg.py'),
|
||||
)
|
||||
|
||||
srcs_windows_glx = [
|
||||
'winpriv.c',
|
||||
'winpriv.h',
|
||||
'glwindows.h',
|
||||
'glshim.c',
|
||||
'indirect.c',
|
||||
'indirect.h',
|
||||
'wgl_ext_api.c',
|
||||
'wgl_ext_api.h',
|
||||
]
|
||||
|
||||
if build_windowsdri
|
||||
srcs_windows_glx += [
|
||||
'dri_helpers.c',
|
||||
'dri_helpers.h',
|
||||
]
|
||||
endif
|
||||
|
||||
xwin_glx_c_args = []
|
||||
xwin_glx_c_args += '-DHAVE_XWIN_CONFIG_H'
|
||||
xwin_glx_c_args += '-DXWIN_MULTIWINDOW'
|
||||
xwin_glx_c_args += '-DXWIN_GLX_WINDOWS'
|
||||
|
||||
xwin_glx = static_library(
|
||||
'XwinGLX',
|
||||
srcs_windows_glx,
|
||||
include_directories: [
|
||||
inc,
|
||||
top_srcdir_inc,
|
||||
include_directories('../'),
|
||||
],
|
||||
dependencies: pixman_dep,
|
||||
c_args: xwin_glx_c_args,
|
||||
)
|
||||
|
||||
srcs_wgl_thunk = [
|
||||
'glthunk.c',
|
||||
]
|
||||
|
||||
WGLthunk = shared_library(
|
||||
'nativeGLthunk',
|
||||
srcs_wgl_thunk,
|
||||
include_directories: [
|
||||
inc,
|
||||
top_srcdir_inc,
|
||||
],
|
||||
c_args: xwin_glx_c_args + [
|
||||
'-Wno-unused-function',
|
||||
'-Wno-missing-prototypes',
|
||||
'-Wno-missing-declarations',
|
||||
],
|
||||
link_args: ['-lopengl32'],
|
||||
vs_module_defs: gl_thunks_def,
|
||||
install: true,
|
||||
)
|
|
@ -0,0 +1,170 @@
|
|||
windows = import('windows')
|
||||
|
||||
windowsdri_dep = dependency('windowsdriproto', required: false)
|
||||
|
||||
build_windowsdri = windowsdri_dep.found()
|
||||
|
||||
xwin_sys_libs = []
|
||||
xwin_sys_libs += '-ldxguid'
|
||||
|
||||
if host_machine.system() == 'cygwin'
|
||||
server_name = 'XWin'
|
||||
else
|
||||
server_name = 'Xming'
|
||||
xwin_sys_libs += ['-lpthread', '-lws2_32']
|
||||
endif
|
||||
|
||||
xwin_c_args = []
|
||||
xwin_c_args += '-DHAVE_XWIN_CONFIG_H'
|
||||
xwin_c_args += '-Wno-bad-function-cast'
|
||||
# XXX: these conditionals are always on and can be removed
|
||||
xwin_c_args += '-DXWIN_CLIPBOARD'
|
||||
xwin_c_args += '-DXWIN_MULTIWINDOW'
|
||||
xwin_c_args += '-DXWIN_RANDR'
|
||||
|
||||
srcs_windows = [
|
||||
'winclipboardinit.c',
|
||||
'winclipboardwrappers.c',
|
||||
]
|
||||
subdir('winclipboard')
|
||||
|
||||
if build_glx
|
||||
if build_windowsdri
|
||||
xwin_c_args += '-DXWIN_WINDOWS_DRI'
|
||||
subdir('dri')
|
||||
endif
|
||||
xwin_c_args += '-DXWIN_GLX_WINDOWS'
|
||||
xwin_sys_libs += '-lopengl32'
|
||||
subdir('glx')
|
||||
endif
|
||||
|
||||
srcs_windows += [
|
||||
'winmultiwindowshape.c',
|
||||
'winmultiwindowwindow.c',
|
||||
'winmultiwindowwm.c',
|
||||
'winmultiwindowwndproc.c',
|
||||
'propertystore.h',
|
||||
'winSetAppUserModelID.c',
|
||||
]
|
||||
xwin_sys_libs += ['-lshlwapi', '-lole32']
|
||||
|
||||
srcs_windows += [
|
||||
'winrandr.c',
|
||||
]
|
||||
|
||||
srcs_windows += [
|
||||
'InitInput.c',
|
||||
'InitOutput.c',
|
||||
'winallpriv.c',
|
||||
'winauth.c',
|
||||
'winblock.c',
|
||||
'wincmap.c',
|
||||
'winconfig.c',
|
||||
'wincreatewnd.c',
|
||||
'wincursor.c',
|
||||
'windialogs.c',
|
||||
'winengine.c',
|
||||
'winerror.c',
|
||||
'winglobals.c',
|
||||
'winkeybd.c',
|
||||
'winkeyhook.c',
|
||||
'winmisc.c',
|
||||
'winmonitors.c',
|
||||
'winmouse.c',
|
||||
'winmsg.c',
|
||||
'winmsgwindow.c',
|
||||
'winmultiwindowclass.c',
|
||||
'winmultiwindowicons.c',
|
||||
'winos.c',
|
||||
'winprefs.c',
|
||||
'winprocarg.c',
|
||||
'winscrinit.c',
|
||||
'winshadddnl.c',
|
||||
'winshadgdi.c',
|
||||
'wintaskbar.c',
|
||||
'wintrayicon.c',
|
||||
'winvalargs.c',
|
||||
'winwakeup.c',
|
||||
'winwindow.c',
|
||||
'winwndproc.c',
|
||||
'ddraw.h',
|
||||
'winconfig.h',
|
||||
'win.h',
|
||||
'winglobals.h',
|
||||
'winkeybd.h',
|
||||
'winkeynames.h',
|
||||
'winlayouts.h',
|
||||
'winmessages.h',
|
||||
'winmonitors.h',
|
||||
'winmsg.h',
|
||||
'winms.h',
|
||||
'winmultiwindowclass.h',
|
||||
'winmultiwindowicons.h',
|
||||
'winprefs.h',
|
||||
'winresource.h',
|
||||
'winwindow.h',
|
||||
'windisplay.c',
|
||||
'windisplay.h',
|
||||
'../../mi/miinitext.c',
|
||||
]
|
||||
|
||||
rsrc = windows.compile_resources('XWin.rc', include_directories: include_directories('../../include/'))
|
||||
srcs_windows += rsrc
|
||||
|
||||
flex = find_program('flex')
|
||||
bison = find_program('bison')
|
||||
|
||||
lgen = generator(
|
||||
flex,
|
||||
output : '@PLAINNAME@.yy.c',
|
||||
arguments : ['-i', '-o', '@OUTPUT@', '@INPUT@']
|
||||
)
|
||||
|
||||
lfiles = lgen.process('winprefslex.l')
|
||||
srcs_windows += lfiles
|
||||
|
||||
pgen = generator(
|
||||
bison,
|
||||
output : ['@BASENAME@.c', '@BASENAME@.h'],
|
||||
arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']
|
||||
)
|
||||
|
||||
pfiles = pgen.process('winprefsyacc.y')
|
||||
srcs_windows += pfiles
|
||||
|
||||
xwin_dep = [
|
||||
common_dep,
|
||||
dependency('x11-xcb'),
|
||||
dependency('xcb-aux'),
|
||||
dependency('xcb-image'),
|
||||
dependency('xcb-ewmh'),
|
||||
dependency('xcb-icccm'),
|
||||
]
|
||||
|
||||
executable(
|
||||
server_name,
|
||||
srcs_windows,
|
||||
include_directories: [inc, top_srcdir_inc],
|
||||
dependencies: xwin_dep,
|
||||
link_with: [
|
||||
xwin_windowsdri,
|
||||
xwin_glx,
|
||||
xwin_clipboard,
|
||||
libxserver_fb,
|
||||
libxserver,
|
||||
libxserver_glx,
|
||||
libxserver_xkb_stubs,
|
||||
libxserver_miext_shadow,
|
||||
libxserver_pseudoramix,
|
||||
libxserver_xi_stubs,
|
||||
],
|
||||
link_args: ['-Wl,--disable-stdcall-fixup', '-Wl,--export-all-symbols'] + xwin_sys_libs,
|
||||
c_args: xwin_c_args,
|
||||
gui_app: true,
|
||||
install: true,
|
||||
)
|
||||
|
||||
install_data(
|
||||
'system.XWinrc',
|
||||
install_dir: join_paths(get_option('sysconfdir'), 'X11')
|
||||
)
|
|
@ -0,0 +1,31 @@
|
|||
srcs_windows_clipboard = [
|
||||
'winclipboard.h',
|
||||
'textconv.c',
|
||||
'thread.c',
|
||||
'wndproc.c',
|
||||
'xevents.c',
|
||||
]
|
||||
|
||||
xwin_clipboard = static_library(
|
||||
'XWinclipboard',
|
||||
srcs_windows_clipboard,
|
||||
include_directories: inc,
|
||||
c_args: '-DHAVE_XWIN_CONFIG_H',
|
||||
dependencies: [
|
||||
dependency('x11'),
|
||||
dependency('xfixes'),
|
||||
],
|
||||
)
|
||||
|
||||
srcs_xwinclip = [
|
||||
'xwinclip.c',
|
||||
'debug.c',
|
||||
]
|
||||
|
||||
executable(
|
||||
'xwinclip',
|
||||
srcs_xwinclip,
|
||||
link_with: xwin_clipboard,
|
||||
link_args: ['-lgdi32', '-lpthread'],
|
||||
install: true,
|
||||
)
|
|
@ -1,3 +1,10 @@
|
|||
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
|
||||
|
||||
dri_dep = dependency('dri', required: build_dri2 or build_dri3)
|
||||
|
||||
|
@ -78,6 +85,7 @@ 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('XORG_VERSION_CURRENT', release)
|
||||
|
||||
conf_data.set('HASXDMAUTH', get_option('xdm-auth-1'))
|
||||
|
||||
|
@ -190,23 +198,20 @@ 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'))
|
||||
conf_data.set_quoted('BUILDERADDR', get_option('builder_addr'))
|
||||
conf_data.set_quoted('BUILDERSTRING', get_option('builder_string'))
|
||||
|
||||
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'))
|
||||
version_data.set_quoted('VENDOR_MAN_VERSION', 'Version @0@.@1@.@2@'.format(major, minor, patch))
|
||||
configure_file(output : 'version-config.h',
|
||||
configuration : version_data)
|
||||
|
||||
|
@ -269,6 +274,21 @@ configure_file(output : 'xorg-config.h',
|
|||
input : 'xorg-config.h.meson.in',
|
||||
configuration : xorg_data)
|
||||
|
||||
xwin_data = configuration_data()
|
||||
xwin_data.set_quoted('DEFAULT_LOGDIR', log_dir)
|
||||
xwin_data.set('HAS_WINSOCK', host_machine.system() == 'windows', description: 'Use Windows sockets')
|
||||
xwin_data.set('HAS_DEVWINDOWS', host_machine.system() == 'cygwin', description: 'Has /dev/windows for signaling new win32 messages')
|
||||
xwin_data.set('RELOCATE_PROJECTROOT', host_machine.system() == 'windows', description: 'Make paths relative to the xserver installation location')
|
||||
# XXX: these three are all the same as DEBUG so we should just change to that
|
||||
enable_debugging = (get_option('buildtype') == 'debug') or (get_option('buildtype') == 'debugoptimized')
|
||||
xwin_data.set10('CYGDEBUG', enable_debugging)
|
||||
xwin_data.set10('CYGWINDOWING_DEBUG',enable_debugging)
|
||||
xwin_data.set10('CYGMULTIWINDOW_DEBUG', enable_debugging)
|
||||
|
||||
configure_file(output : 'xwin-config.h',
|
||||
input : 'xwin-config.h.meson.in',
|
||||
configuration : xwin_data)
|
||||
|
||||
if build_xorg
|
||||
install_data(
|
||||
[
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
/*
|
||||
* xwin-config.h.in
|
||||
*
|
||||
* This file has all defines used in the xwin ddx
|
||||
*
|
||||
*/
|
||||
#include <dix-config.h>
|
||||
|
||||
/* Winsock networking */
|
||||
#mesondefine HAS_WINSOCK
|
||||
|
||||
/* Cygwin has /dev/windows for signaling new win32 messages */
|
||||
#mesondefine HAS_DEVWINDOWS
|
||||
|
||||
/* Switch on debug messages */
|
||||
#mesondefine CYGDEBUG
|
||||
#mesondefine CYGWINDOWING_DEBUG
|
||||
#mesondefine CYGMULTIWINDOW_DEBUG
|
||||
|
||||
/* Default log location */
|
||||
#mesondefine DEFAULT_LOGDIR
|
||||
|
||||
/* Whether we should re-locate the root to where the executable lives */
|
||||
#mesondefine RELOCATE_PROJECTROOT
|
13
meson.build
13
meson.build
|
@ -135,9 +135,18 @@ if (host_machine.system() != 'darwin' and
|
|||
endif
|
||||
endif
|
||||
|
||||
build_xwin = false
|
||||
if get_option('xwin') == 'auto'
|
||||
if (host_machine.system() == 'cygwin' or
|
||||
host_machine.system() == 'windows')
|
||||
build_xwin = true
|
||||
endif
|
||||
else
|
||||
build_xwin = get_option('xwin') == 'yes'
|
||||
endif
|
||||
|
||||
# XXX: Finish these.
|
||||
build_xquartz = false
|
||||
build_xwin = false
|
||||
|
||||
if get_option('ipv6') == 'auto'
|
||||
build_ipv6 = cc.has_function('getaddrinfo')
|
||||
|
@ -331,6 +340,8 @@ inc = include_directories(
|
|||
|
||||
glx_inc = include_directories('glx')
|
||||
|
||||
top_srcdir_inc = include_directories('.')
|
||||
|
||||
serverconfigdir = join_paths(get_option('libdir'), '/xorg')
|
||||
|
||||
# Include must come first, as it sets up dix-config.h
|
||||
|
|
|
@ -10,6 +10,11 @@ option('xnest', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto',
|
|||
description: 'Enable Xnest nested X server')
|
||||
option('dmx', type: 'boolean', value: false,
|
||||
description: 'Enable DMX nested X server')
|
||||
option('xwin', type: 'combo', choices: ['yes', 'no', 'auto'], value: 'auto',
|
||||
description: 'Enable XWin X server')
|
||||
|
||||
option('builder_addr', type: 'string', description: 'Builder address', value: 'xorg@lists.freedesktop.org')
|
||||
option('builder_string', type: 'string', description: 'Additional builder string')
|
||||
|
||||
option('log_dir', type: 'string')
|
||||
option('module_dir', type: 'string',
|
||||
|
|
Loading…
Reference in New Issue