11b5d61b8Smrgwindows = import('windows')
21b5d61b8Smrg
31b5d61b8Smrgwindowsdri_dep = dependency('windowsdriproto', required: false)
41b5d61b8Smrg
51b5d61b8Smrgbuild_windowsdri = windowsdri_dep.found()
61b5d61b8Smrg
71b5d61b8Smrgxwin_sys_libs = []
81b5d61b8Smrgxwin_sys_libs += '-ldxguid'
91b5d61b8Smrg
101b5d61b8Smrgif host_machine.system() == 'cygwin'
111b5d61b8Smrg    server_name = 'XWin'
121b5d61b8Smrgelse
131b5d61b8Smrg    server_name = 'Xming'
141b5d61b8Smrg    xwin_sys_libs += ['-lpthread', '-lws2_32']
151b5d61b8Smrgendif
161b5d61b8Smrg
171b5d61b8Smrgxwin_c_args = []
181b5d61b8Smrgxwin_c_args += '-DHAVE_XWIN_CONFIG_H'
191b5d61b8Smrgxwin_c_args += '-Wno-bad-function-cast'
201b5d61b8Smrg
211b5d61b8Smrgsrcs_windows = [
221b5d61b8Smrg    'winclipboardinit.c',
231b5d61b8Smrg    'winclipboardwrappers.c',
241b5d61b8Smrg]
251b5d61b8Smrgsubdir('winclipboard')
261b5d61b8Smrg
27ed6184dfSmrgxwin_glx = []
28ed6184dfSmrgxwin_windowsdri = []
291b5d61b8Smrgif build_glx
301b5d61b8Smrg    if build_windowsdri
311b5d61b8Smrg        xwin_c_args += '-DXWIN_WINDOWS_DRI'
321b5d61b8Smrg        subdir('dri')
331b5d61b8Smrg    endif
341b5d61b8Smrg    xwin_c_args += '-DXWIN_GLX_WINDOWS'
351b5d61b8Smrg    xwin_sys_libs += '-lopengl32'
361b5d61b8Smrg    subdir('glx')
371b5d61b8Smrgendif
381b5d61b8Smrg
391b5d61b8Smrgsrcs_windows += [
401b5d61b8Smrg     'winmultiwindowshape.c',
411b5d61b8Smrg     'winmultiwindowwindow.c',
421b5d61b8Smrg     'winmultiwindowwm.c',
431b5d61b8Smrg     'winmultiwindowwndproc.c',
441b5d61b8Smrg     'propertystore.h',
451b5d61b8Smrg     'winSetAppUserModelID.c',
461b5d61b8Smrg]
47ed6184dfSmrgxwin_sys_libs += ['-lshlwapi', '-lole32', '-ldwmapi']
481b5d61b8Smrg
491b5d61b8Smrgsrcs_windows += [
501b5d61b8Smrg     'winrandr.c',
511b5d61b8Smrg]
521b5d61b8Smrg
531b5d61b8Smrgsrcs_windows += [
541b5d61b8Smrg    'InitInput.c',
551b5d61b8Smrg    'InitOutput.c',
561b5d61b8Smrg    'winallpriv.c',
571b5d61b8Smrg    'winauth.c',
581b5d61b8Smrg    'winblock.c',
591b5d61b8Smrg    'wincmap.c',
601b5d61b8Smrg    'winconfig.c',
611b5d61b8Smrg    'wincreatewnd.c',
621b5d61b8Smrg    'wincursor.c',
631b5d61b8Smrg    'windialogs.c',
641b5d61b8Smrg    'winengine.c',
651b5d61b8Smrg    'winerror.c',
661b5d61b8Smrg    'winglobals.c',
671b5d61b8Smrg    'winkeybd.c',
681b5d61b8Smrg    'winkeyhook.c',
691b5d61b8Smrg    'winmisc.c',
701b5d61b8Smrg    'winmonitors.c',
711b5d61b8Smrg    'winmouse.c',
721b5d61b8Smrg    'winmsg.c',
731b5d61b8Smrg    'winmsgwindow.c',
741b5d61b8Smrg    'winmultiwindowclass.c',
751b5d61b8Smrg    'winmultiwindowicons.c',
761b5d61b8Smrg    'winos.c',
771b5d61b8Smrg    'winprefs.c',
781b5d61b8Smrg    'winprocarg.c',
791b5d61b8Smrg    'winscrinit.c',
801b5d61b8Smrg    'winshadddnl.c',
811b5d61b8Smrg    'winshadgdi.c',
821b5d61b8Smrg    'wintaskbar.c',
831b5d61b8Smrg    'wintrayicon.c',
841b5d61b8Smrg    'winvalargs.c',
851b5d61b8Smrg    'winwakeup.c',
861b5d61b8Smrg    'winwindow.c',
871b5d61b8Smrg    'winwndproc.c',
881b5d61b8Smrg    'ddraw.h',
891b5d61b8Smrg    'winconfig.h',
901b5d61b8Smrg    'win.h',
911b5d61b8Smrg    'winglobals.h',
921b5d61b8Smrg    'winkeybd.h',
931b5d61b8Smrg    'winkeynames.h',
941b5d61b8Smrg    'winlayouts.h',
951b5d61b8Smrg    'winmessages.h',
961b5d61b8Smrg    'winmonitors.h',
971b5d61b8Smrg    'winmsg.h',
981b5d61b8Smrg    'winms.h',
991b5d61b8Smrg    'winmultiwindowclass.h',
1001b5d61b8Smrg    'winmultiwindowicons.h',
1011b5d61b8Smrg    'winprefs.h',
1021b5d61b8Smrg    'winresource.h',
1031b5d61b8Smrg    'winwindow.h',
1041b5d61b8Smrg    'windisplay.c',
1051b5d61b8Smrg    'windisplay.h',
1061b5d61b8Smrg    '../../mi/miinitext.c',
107ed6184dfSmrg    '../../mi/miinitext.h',
1081b5d61b8Smrg]
1091b5d61b8Smrg
1101b5d61b8Smrgrsrc = windows.compile_resources('XWin.rc', include_directories: include_directories('../../include/'))
1111b5d61b8Smrgsrcs_windows += rsrc
1121b5d61b8Smrg
1131b5d61b8Smrgflex = find_program('flex')
1141b5d61b8Smrgbison = find_program('bison')
1151b5d61b8Smrg
1161b5d61b8Smrglgen = generator(
1171b5d61b8Smrg    flex,
1181b5d61b8Smrg    output : '@PLAINNAME@.yy.c',
1191b5d61b8Smrg    arguments : ['-i', '-o', '@OUTPUT@', '@INPUT@']
1201b5d61b8Smrg)
1211b5d61b8Smrg
1221b5d61b8Smrglfiles = lgen.process('winprefslex.l')
1231b5d61b8Smrgsrcs_windows += lfiles
1241b5d61b8Smrg
1251b5d61b8Smrgpgen = generator(
1261b5d61b8Smrg    bison,
1271b5d61b8Smrg    output : ['@BASENAME@.c', '@BASENAME@.h'],
1281b5d61b8Smrg    arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']
1291b5d61b8Smrg)
1301b5d61b8Smrg
1311b5d61b8Smrgpfiles = pgen.process('winprefsyacc.y')
1321b5d61b8Smrgsrcs_windows += pfiles
1331b5d61b8Smrg
1341b5d61b8Smrgxwin_dep = [
1351b5d61b8Smrg    common_dep,
1361b5d61b8Smrg    dependency('xcb-aux'),
1371b5d61b8Smrg    dependency('xcb-image'),
1381b5d61b8Smrg    dependency('xcb-ewmh'),
1391b5d61b8Smrg    dependency('xcb-icccm'),
140ed6184dfSmrg    dependency('xcb-composite'),
1411b5d61b8Smrg]
1421b5d61b8Smrg
1431b5d61b8Smrgexecutable(
1441b5d61b8Smrg    server_name,
1451b5d61b8Smrg    srcs_windows,
146ed6184dfSmrg    include_directories: [inc, top_dir_inc],
1471b5d61b8Smrg    dependencies: xwin_dep,
1481b5d61b8Smrg    link_with: [
1491b5d61b8Smrg        xwin_windowsdri,
1501b5d61b8Smrg        xwin_glx,
1511b5d61b8Smrg        xwin_clipboard,
1521b5d61b8Smrg        libxserver_fb,
1531b5d61b8Smrg        libxserver,
1541b5d61b8Smrg        libxserver_glx,
1551b5d61b8Smrg        libglxvnd,
1561b5d61b8Smrg        libxserver_xkb_stubs,
1571b5d61b8Smrg        libxserver_miext_shadow,
1581b5d61b8Smrg        libxserver_pseudoramix,
1591b5d61b8Smrg        libxserver_xi_stubs,
1601b5d61b8Smrg    ],
1611b5d61b8Smrg    link_args: ['-Wl,--disable-stdcall-fixup', '-Wl,--export-all-symbols'] +  xwin_sys_libs,
1621b5d61b8Smrg    c_args: xwin_c_args,
1631b5d61b8Smrg    gui_app: true,
1641b5d61b8Smrg    install: true,
1651b5d61b8Smrg)
1661b5d61b8Smrg
1671b5d61b8Smrginstall_data(
1681b5d61b8Smrg    'system.XWinrc',
1691b5d61b8Smrg    install_dir: join_paths(get_option('sysconfdir'), 'X11')
1701b5d61b8Smrg)
1711b5d61b8Smrg
1721b5d61b8Smrgxwin_man = configure_file(
1731b5d61b8Smrg    input: 'man/XWin.man',
1741b5d61b8Smrg    output: 'XWin.1',
1751b5d61b8Smrg    configuration: manpage_config,
1761b5d61b8Smrg)
1771b5d61b8Smrginstall_man(xwin_man)
1781b5d61b8Smrg
1791b5d61b8Smrgxwinrc_man = configure_file(
1801b5d61b8Smrg    input: 'man/XWinrc.man',
1811b5d61b8Smrg    output: 'XWinrc.5',
1821b5d61b8Smrg    configuration: manpage_config,
1831b5d61b8Smrg)
1841b5d61b8Smrginstall_man(xwinrc_man)
185