Imported Upstream version 1.15.1
[deb_xorg-server.git] / hw / xfree86 / sdksyms.sh
CommitLineData
a09e091a
JB
1#!/bin/sh
2
3cat > sdksyms.c << EOF
4/* This file is automatically generated by sdksyms.sh. */
5#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
6
7#ifdef HAVE_XORG_CONFIG_H
8#include <xorg-config.h>
9#endif
10
11
12/* These must be included first */
13#include "misc.h"
14#include "miscstruct.h"
15
16
17/* render/Makefile.am */
18#include "picture.h"
19#include "mipict.h"
20#include "glyphstr.h"
21#include "picturestr.h"
22
23
24/* fb/Makefile.am -- module */
25/*
26#include "fb.h"
27#include "fbrop.h"
28#include "fboverlay.h"
29#include "wfbrename.h"
30#include "fbpict.h"
31 */
32
33
34/* miext/shadow/Makefile.am -- module */
35/*
36#include "shadow.h"
37 */
38
39
40/* miext/damage/Makefile.am */
41#include "damage.h"
42#include "damagestr.h"
43
44/* miext/sync/Makefile.am */
45#include "misync.h"
46#include "misyncstr.h"
47#if HAVE_XSHMFENCE
48#include "misyncshm.h"
49#endif
50
51/* Xext/Makefile.am -- half is module, half is builtin */
52#ifdef XV
53#include "xvdix.h"
54#include "xvmcext.h"
55#endif
56#include "geext.h"
57#include "geint.h"
58#ifdef MITSHM
59#include "shmint.h"
60#endif
61#include "syncsdk.h"
62#if XINERAMA
63# include "panoramiXsrv.h"
64# include "panoramiX.h"
65#endif
66
67
68/* hw/xfree86/int10/Makefile.am -- module */
69/*
70#include "xf86int10.h"
71 */
72
73
74/* hw/xfree86/i2c/Makefile.am -- "mostly" modules */
75#include "xf86i2c.h"
76/*
77#include "bt829.h"
78#include "fi1236.h"
79#include "msp3430.h"
80#include "tda8425.h"
81#include "tda9850.h"
82#include "tda9885.h"
83#include "uda1380.h"
84#include "i2c_def.h"
85 */
86
87
88/* hw/xfree86/modes/Makefile.am */
89#include "xf86Crtc.h"
90#include "xf86Modes.h"
91#include "xf86RandR12.h"
92/* #include "xf86Rename.h" */
93
94
95/* hw/xfree86/ddc/Makefile.am */
96#include "edid.h"
97#include "xf86DDC.h"
98
99
100/* hw/xfree86/dri2/Makefile.am -- module */
101#if DRI2
102# include "dri2.h"
103#endif
104
105# include "dri3.h"
106
107/* hw/xfree86/vgahw/Makefile.am -- module */
108/*
109#include "vgaHW.h"
110 */
111
112
113/* hw/xfree86/fbdevhw/Makefile.am -- module */
114/*
115#include "fbdevhw.h"
116 */
117
118
119/* hw/xfree86/common/Makefile.am */
120#include "compiler.h"
121#include "fourcc.h"
122#include "xf86.h"
123#include "xf86Module.h"
124#include "xf86Opt.h"
125#ifdef XSERVER_LIBPCIACCESS
126 #include "xf86VGAarbiter.h"
127#endif
128#include "xf86Priv.h"
129#include "xf86Privstr.h"
130#include "xf86cmap.h"
131#include "xf86fbman.h"
132#include "xf86str.h"
133#include "xf86Xinput.h"
134#include "xisb.h"
135#if XV
136# include "xf86xv.h"
137# include "xf86xvmc.h"
138# include "xf86xvpriv.h"
139#endif
140#if XF86VIDMODE
141# include "vidmodeproc.h"
142#endif
143#include "xorgVersion.h"
144#if defined(__sparc__) || defined(__sparc)
145# include "xf86sbusBus.h"
146#endif
147
148
149/* hw/xfree86/ramdac/Makefile.am */
150#include "BT.h"
151#include "IBM.h"
152#include "TI.h"
153#include "xf86Cursor.h"
154#include "xf86RamDac.h"
155
156
157/* hw/xfree86/shadowfb/Makefile.am -- module */
158/*
159#include "shadowfb.h"
160 */
161
162
163/* hw/xfree86/os-support/solaris/Makefile.am */
164#if defined(sun386)
165# include "agpgart.h"
166#endif
167
168
169/* hw/xfree86/os-support/Makefile.am */
170#include "xf86_OSproc.h"
171#include "xf86_OSlib.h"
172
173
174/* hw/xfree86/os-support/bus/Makefile.am */
175#ifdef XSERVER_LIBPCIACCESS
176# include "xf86Pci.h"
177#endif
178#if defined(__sparc__) || defined(__sparc)
179# include "xf86Sbus.h"
180#endif
181
182
183/* hw/xfree86/dixmods/extmod/Makefile.am -- module */
184#ifdef XFreeXDGA
185#include "dgaproc.h"
186#endif
187
188
189/* hw/xfree86/parser/Makefile.am */
190#include "xf86Parser.h"
191#include "xf86Optrec.h"
192
193
194/* hw/xfree86/vbe/Makefile.am -- module */
195/*
196#include "vbe.h"
197#include "vbeModes.h"
198 */
199
200
201/* hw/xfree86/dri/Makefile.am -- module */
202#if XF86DRI
203# include "dri.h"
204# include "sarea.h"
205# include "dristruct.h"
206#endif
207
208
209/* mi/Makefile.am */
210#include "micmap.h"
211#include "miline.h"
212#include "mipointer.h"
213#include "mi.h"
214#include "migc.h"
215#include "mipointrst.h"
216#include "mizerarc.h"
217#include "micoord.h"
218#include "mifillarc.h"
219#include "mispans.h"
220#include "miwideline.h"
221#include "mistruct.h"
222#include "mifpoly.h"
223#include "mioverlay.h"
224
225
226/* randr/Makefile.am */
227#include "randrstr.h"
228#include "rrtransform.h"
229
230
231/* dbe/Makefile.am -- module */
232#ifdef DBE
233#include "dbestruct.h"
234#endif
235
236
237/* exa/Makefile.am -- module */
238/*
239#include "exa.h"
240 */
241
242#ifdef COMPOSITE
243#include "compositeext.h"
244#endif
245
246/* xfixes/Makefile.am */
247#include "xfixes.h"
248
249
250/* include/Makefile.am */
251#include "XIstubs.h"
252#include "Xprintf.h"
253#include "closestr.h"
254#include "closure.h"
255#include "colormap.h"
256#include "colormapst.h"
257#include "hotplug.h"
258#include "client.h"
259#include "cursor.h"
260#include "cursorstr.h"
261#include "dix.h"
262#include "dixaccess.h"
263#include "dixevents.h"
264#include "dixfont.h"
265#include "dixfontstr.h"
266#include "dixfontstubs.h"
267#include "dixgrabs.h"
268#include "dixstruct.h"
269#include "exevents.h"
270#include "extension.h"
271#include "extnsionst.h"
272#include "gc.h"
273#include "gcstruct.h"
274#include "globals.h"
275#include "input.h"
276#include "inputstr.h"
277/* already included */
278/*
279#include "misc.h"
280#include "miscstruct.h"
281 */
282#include "opaque.h"
283#include "os.h"
284#include "pixmap.h"
285#include "pixmapstr.h"
286#include "privates.h"
287#include "property.h"
288#include "propertyst.h"
289#include "ptrveloc.h"
290#include "region.h"
291#include "regionstr.h"
292#include "registry.h"
293#include "resource.h"
294#include "rgb.h"
295#include "screenint.h"
296#include "scrnintstr.h"
297#include "selection.h"
298#include "servermd.h"
299#include "site.h"
300#include "swaprep.h"
301#include "swapreq.h"
302#include "validate.h"
303#include "window.h"
304#include "windowstr.h"
305#include "xace.h"
306#include "xkbfile.h"
307#include "xkbsrv.h"
308#include "xkbstr.h"
309#include "xkbrules.h"
310#include "xserver-properties.h"
311
312EOF
313
314topdir=$1
315shift
316LC_ALL=C
317export LC_ALL
318${CPP:-cpp} "$@" sdksyms.c > /dev/null || exit $?
319${CPP:-cpp} "$@" sdksyms.c | ${AWK:-awk} -v topdir=$topdir '
320BEGIN {
321 sdk = 0;
322 print("/*");
323 print(" * These symbols are referenced to ensure they");
324 print(" * will be available in the X Server binary.");
325 print(" */");
326 printf("/* topdir=%s */\n", topdir);
327 print("_X_HIDDEN void *xorg_symbols[] = {");
328
329 printf("sdksyms.c:") > "sdksyms.dep";
330}
331/^# [0-9]+ "/ {
332 # Process text after a include in a relative path or when the
333 # processed file has a basename matching $top_srcdir.
334 # Note that indexing starts at 1; 0 means no match, and there
335 # is a starting ".
336 sdk = $3 !~ /^"\// || index($3, topdir) == 2;
337
338 if (sdk && $3 ~ /\.h"$/) {
339 # remove quotes
340 gsub(/"/, "", $3);
341 line = $2;
342 header = $3;
343 if (! headers[$3]) {
344 printf(" \\\n %s", $3) >> "sdksyms.dep";
345 headers[$3] = 1;
346 }
347 }
348 next;
349}
350
351/^extern[ ]/ {
352 if (sdk) {
353 n = 3;
354
355 # skip attribute, if any
356 while ($n ~ /^(__attribute__|__global)/ ||
357 # skip modifiers, if any
358 $n ~ /^\*?(unsigned|const|volatile|struct|_X_EXPORT)$/ ||
359 # skip pointer
360 $n ~ /^[a-zA-Z0-9_]*\*$/)
361 n++;
362
363 # type specifier may not be set, as in
364 # extern _X_EXPORT unsigned name(...)
365 if ($n !~ /[^a-zA-Z0-9_]/)
366 n++;
367
368 # go back if we are at the parameter list already
369 if ($n ~ /^[(]([^*].*)?$/)
370 n--;
371
372 # match
373 # extern _X_EXPORT type (* name[])(...)
374 if ($n ~ /^[^a-zA-Z0-9_]+$/)
375 n++;
376
377 # match
378 # extern _X_EXPORT const name *const ...
379 if ($n ~ /^([^a-zA-Z0-9_]+)?const$/)
380 n++;
381
382 # actual name may be in the next line, as in
383 # extern _X_EXPORT type
384 # possibly ending with a *
385 # name(...)
386 if ($n == "" || $n ~ /^\*+$/) {
387 getline;
388 n = 1;
389 # indent may have inserted a blank link
390 if ($0 == "")
391 getline;
392 }
393
394 # dont modify $0 or $n
395 symbol = $n;
396
397 # remove starting non word chars
398 sub(/^[^a-zA-Z0-9_]+/, "",symbol);
399
400 # remove from first non word to end of line
401 sub(/[^a-zA-Z0-9_].*/, "", symbol);
402
403 #print;
404 printf(" (void *) &%-50s /* %s:%s */\n", symbol ",", header, line);
405 }
406}
407
408{
409 line++;
410}
411
412END {
413 print("};");
414
415 print("") >> "sdksyms.dep";
416}' > _sdksyms.c
417
418STATUS=$?
419
420cat _sdksyms.c >> sdksyms.c
421rm _sdksyms.c
422
423[ $? != 0 ] && exit $?
424
425exit $STATUS