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