1windows = import('windows')
2
3windowsdri_dep = dependency('windowsdriproto', required: false)
4
5build_windowsdri = windowsdri_dep.found()
6
7xwin_sys_libs = []
8xwin_sys_libs += '-ldxguid'
9
10if host_machine.system() == 'cygwin'
11    server_name = 'XWin'
12else
13    server_name = 'Xming'
14    xwin_sys_libs += ['-lpthread', '-lws2_32']
15endif
16
17xwin_c_args = []
18xwin_c_args += '-DHAVE_XWIN_CONFIG_H'
19xwin_c_args += '-Wno-bad-function-cast'
20
21srcs_windows = [
22    'winclipboardinit.c',
23    'winclipboardwrappers.c',
24]
25subdir('winclipboard')
26
27if build_glx
28    if build_windowsdri
29        xwin_c_args += '-DXWIN_WINDOWS_DRI'
30        subdir('dri')
31    endif
32    xwin_c_args += '-DXWIN_GLX_WINDOWS'
33    xwin_sys_libs += '-lopengl32'
34    subdir('glx')
35endif
36
37srcs_windows += [
38     'winmultiwindowshape.c',
39     'winmultiwindowwindow.c',
40     'winmultiwindowwm.c',
41     'winmultiwindowwndproc.c',
42     'propertystore.h',
43     'winSetAppUserModelID.c',
44]
45xwin_sys_libs += ['-lshlwapi', '-lole32']
46
47srcs_windows += [
48     'winrandr.c',
49]
50
51srcs_windows += [
52    'InitInput.c',
53    'InitOutput.c',
54    'winallpriv.c',
55    'winauth.c',
56    'winblock.c',
57    'wincmap.c',
58    'winconfig.c',
59    'wincreatewnd.c',
60    'wincursor.c',
61    'windialogs.c',
62    'winengine.c',
63    'winerror.c',
64    'winglobals.c',
65    'winkeybd.c',
66    'winkeyhook.c',
67    'winmisc.c',
68    'winmonitors.c',
69    'winmouse.c',
70    'winmsg.c',
71    'winmsgwindow.c',
72    'winmultiwindowclass.c',
73    'winmultiwindowicons.c',
74    'winos.c',
75    'winprefs.c',
76    'winprocarg.c',
77    'winscrinit.c',
78    'winshadddnl.c',
79    'winshadgdi.c',
80    'wintaskbar.c',
81    'wintrayicon.c',
82    'winvalargs.c',
83    'winwakeup.c',
84    'winwindow.c',
85    'winwndproc.c',
86    'ddraw.h',
87    'winconfig.h',
88    'win.h',
89    'winglobals.h',
90    'winkeybd.h',
91    'winkeynames.h',
92    'winlayouts.h',
93    'winmessages.h',
94    'winmonitors.h',
95    'winmsg.h',
96    'winms.h',
97    'winmultiwindowclass.h',
98    'winmultiwindowicons.h',
99    'winprefs.h',
100    'winresource.h',
101    'winwindow.h',
102    'windisplay.c',
103    'windisplay.h',
104    '../../mi/miinitext.c',
105]
106
107rsrc = windows.compile_resources('XWin.rc', include_directories: include_directories('../../include/'))
108srcs_windows += rsrc
109
110flex = find_program('flex')
111bison = find_program('bison')
112
113lgen = generator(
114    flex,
115    output : '@PLAINNAME@.yy.c',
116    arguments : ['-i', '-o', '@OUTPUT@', '@INPUT@']
117)
118
119lfiles = lgen.process('winprefslex.l')
120srcs_windows += lfiles
121
122pgen = generator(
123    bison,
124    output : ['@BASENAME@.c', '@BASENAME@.h'],
125    arguments : ['@INPUT@', '--defines=@OUTPUT1@', '--output=@OUTPUT0@']
126)
127
128pfiles = pgen.process('winprefsyacc.y')
129srcs_windows += pfiles
130
131xwin_dep = [
132    common_dep,
133    dependency('x11-xcb'),
134    dependency('xcb-aux'),
135    dependency('xcb-image'),
136    dependency('xcb-ewmh'),
137    dependency('xcb-icccm'),
138]
139
140executable(
141    server_name,
142    srcs_windows,
143    include_directories: [inc, top_srcdir_inc],
144    dependencies: xwin_dep,
145    link_with: [
146        xwin_windowsdri,
147        xwin_glx,
148        xwin_clipboard,
149        libxserver_fb,
150        libxserver,
151        libxserver_glx,
152        libglxvnd,
153        libxserver_xkb_stubs,
154        libxserver_miext_shadow,
155        libxserver_pseudoramix,
156        libxserver_xi_stubs,
157    ],
158    link_args: ['-Wl,--disable-stdcall-fixup', '-Wl,--export-all-symbols'] +  xwin_sys_libs,
159    c_args: xwin_c_args,
160    gui_app: true,
161    install: true,
162)
163
164install_data(
165    'system.XWinrc',
166    install_dir: join_paths(get_option('sysconfdir'), 'X11')
167)
168
169xwin_man = configure_file(
170    input: 'man/XWin.man',
171    output: 'XWin.1',
172    configuration: manpage_config,
173)
174install_man(xwin_man)
175
176xwinrc_man = configure_file(
177    input: 'man/XWinrc.man',
178    output: 'XWinrc.5',
179    configuration: manpage_config,
180)
181install_man(xwinrc_man)
182