sdksyms.sh revision ed6184df
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 */ 25#include "fb.h" 26#include "fbrop.h" 27#include "fboverlay.h" 28#include "fbpict.h" 29/* wfb is still a module 30#include "wfbrename.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#ifdef MITSHM 58#include "shmint.h" 59#endif 60#include "syncsdk.h" 61#ifdef XINERAMA 62# include "panoramiXsrv.h" 63# include "panoramiX.h" 64#endif 65 66/* glx/Makefile.am */ 67#ifdef GLX 68#include "vndserver.h" 69#endif 70 71/* hw/xfree86/int10/Makefile.am -- module */ 72/* 73#include "xf86int10.h" 74#include "vbe.h" 75#include "vbeModes.h" 76 */ 77 78 79/* hw/xfree86/i2c/Makefile.am -- "mostly" modules */ 80#include "xf86i2c.h" 81/* 82#include "bt829.h" 83#include "fi1236.h" 84#include "msp3430.h" 85#include "tda8425.h" 86#include "tda9850.h" 87#include "tda9885.h" 88#include "uda1380.h" 89#include "i2c_def.h" 90 */ 91 92 93/* hw/xfree86/modes/Makefile.am */ 94#include "xf86Crtc.h" 95#include "xf86Modes.h" 96#include "xf86RandR12.h" 97/* #include "xf86Rename.h" */ 98 99 100/* hw/xfree86/ddc/Makefile.am */ 101#include "edid.h" 102#include "xf86DDC.h" 103 104 105/* hw/xfree86/dri2/Makefile.am -- module */ 106#ifdef DRI2 107# include "dri2.h" 108#endif 109 110# include "dri3.h" 111 112/* hw/xfree86/vgahw/Makefile.am -- module */ 113/* 114#include "vgaHW.h" 115 */ 116 117 118/* hw/xfree86/fbdevhw/Makefile.am -- module */ 119/* 120#include "fbdevhw.h" 121 */ 122 123 124/* hw/xfree86/common/Makefile.am */ 125#include "compiler.h" 126#include "xf86.h" 127#include "xf86Module.h" 128#include "xf86Opt.h" 129#ifdef XSERVER_LIBPCIACCESS 130 #include "xf86VGAarbiter.h" 131#endif 132#include "xf86Priv.h" 133#include "xf86Privstr.h" 134#include "xf86cmap.h" 135#include "xf86fbman.h" 136#include "xf86str.h" 137#include "xf86Xinput.h" 138#include "xisb.h" 139#ifdef XV 140# include "xf86xv.h" 141# include "xf86xvmc.h" 142# include "xf86xvpriv.h" 143#endif 144#include "xorgVersion.h" 145#if defined(__sparc__) || defined(__sparc) 146# include "xf86sbusBus.h" 147#endif 148 149 150/* hw/xfree86/ramdac/Makefile.am */ 151#include "xf86Cursor.h" 152 153 154/* hw/xfree86/shadowfb/Makefile.am -- module */ 155/* 156#include "shadowfb.h" 157 */ 158 159 160/* hw/xfree86/os-support/solaris/Makefile.am */ 161#if defined(sun386) 162# include "agpgart.h" 163#endif 164 165 166/* hw/xfree86/os-support/Makefile.am */ 167#include "xf86_OSproc.h" 168#include "xf86_OSlib.h" 169 170 171/* hw/xfree86/os-support/bus/Makefile.am */ 172#ifdef XSERVER_LIBPCIACCESS 173# include "xf86Pci.h" 174#endif 175#if defined(__sparc__) || defined(__sparc) 176# include "xf86Sbus.h" 177#endif 178 179 180/* hw/xfree86/parser/Makefile.am */ 181#include "xf86Parser.h" 182#include "xf86Optrec.h" 183 184 185/* hw/xfree86/dri/Makefile.am -- module */ 186#ifdef XF86DRI 187# include "dri.h" 188# include "sarea.h" 189# include "dristruct.h" 190#endif 191 192 193/* mi/Makefile.am */ 194#include "micmap.h" 195#include "miline.h" 196#include "mipointer.h" 197#include "mi.h" 198#include "migc.h" 199#include "mipointrst.h" 200#include "mizerarc.h" 201#include "micoord.h" 202#include "mifillarc.h" 203#include "mistruct.h" 204#include "mioverlay.h" 205 206 207/* randr/Makefile.am */ 208#include "randrstr.h" 209#include "rrtransform.h" 210 211 212/* dbe/Makefile.am -- module */ 213#ifdef DBE 214#include "dbestruct.h" 215#endif 216 217 218/* exa/Makefile.am -- module */ 219/* 220#include "exa.h" 221 */ 222 223#ifdef COMPOSITE 224#include "compositeext.h" 225#endif 226 227/* xfixes/Makefile.am */ 228#include "xfixes.h" 229 230 231/* include/Makefile.am */ 232#include "XIstubs.h" 233#include "Xprintf.h" 234#include "closestr.h" 235#include "closure.h" 236#include "colormap.h" 237#include "colormapst.h" 238#include "hotplug.h" 239#include "client.h" 240#include "cursor.h" 241#include "cursorstr.h" 242#include "dix.h" 243#include "dixaccess.h" 244#include "dixevents.h" 245#define _FONTPROTO_H 246#include "dixfont.h" 247#include "dixfontstr.h" 248#include "dixgrabs.h" 249#include "dixstruct.h" 250#include "exevents.h" 251#include "extension.h" 252#include "extnsionst.h" 253#include "fourcc.h" 254#include "gc.h" 255#include "gcstruct.h" 256#include "globals.h" 257#include "input.h" 258#include "inputstr.h" 259/* already included */ 260/* 261#include "misc.h" 262#include "miscstruct.h" 263 */ 264#include "opaque.h" 265#include "os.h" 266#include "pixmap.h" 267#include "pixmapstr.h" 268#include "privates.h" 269#include "property.h" 270#include "propertyst.h" 271#include "ptrveloc.h" 272#include "region.h" 273#include "regionstr.h" 274#include "registry.h" 275#include "resource.h" 276#include "rgb.h" 277#include "screenint.h" 278#include "scrnintstr.h" 279#include "selection.h" 280#include "servermd.h" 281#include "validate.h" 282#include "window.h" 283#include "windowstr.h" 284#include "xace.h" 285#include "xkbfile.h" 286#include "xkbsrv.h" 287#include "xkbstr.h" 288#include "xkbrules.h" 289#include "xserver-properties.h" 290 291EOF 292 293topdir=$(readlink -f $1) 294shift 295LC_ALL=C 296export LC_ALL 297${CPP:-cpp} "$@" sdksyms.c > /dev/null || exit $? 298${CPP:-cpp} "$@" sdksyms.c | ${AWK:-awk} -v topdir=$topdir ' 299function basename(file) { 300 sub(".*/", "", file) 301 return file 302} 303BEGIN { 304 sdk = 0; 305 print("/*"); 306 print(" * These symbols are referenced to ensure they"); 307 print(" * will be available in the X Server binary."); 308 print(" */"); 309 print("_X_HIDDEN void *xorg_symbols[] = {"); 310 311 printf("sdksyms.c:") > "sdksyms.dep"; 312} 313/^# [0-9]+ "/ { 314 # Match preprocessor linemarkers which have the form: 315 # # linenum "filename" flags 316 # 317 # Only process text for sdk exports where the linemarker filename has a 318 # relative path, or an absolute path matching $top_srcdir. 319 # 320 321 # canonicalize filename 322 if ($3 in canonicalized) { 323 c = canonicalized[$3] 324 } else { 325 cmd = "readlink -f " $3 326 cmd | getline c 327 close(cmd) 328 canonicalized[$3] = c 329 } 330 # note that index() starts at 1; 0 means no match. 331 sdk = $3 !~ /^"\// || index(c, topdir) == 1; 332 333 if (sdk && $3 ~ /\.h"$/) { 334 # remove quotes 335 gsub(/"/, "", $3); 336 line = $2; 337 header = basename($3); 338 if (! headers[$3]) { 339 printf(" \\\n %s", $3) >> "sdksyms.dep"; 340 headers[$3] = 1; 341 } 342 } 343 next; 344} 345 346/^extern[ ]/ { 347 if (sdk) { 348 n = 3; 349 350 # skip line numbers GCC 5 adds before __attribute__ 351 while ($n == "" || $0 ~ /^# [0-9]+ "/) { 352 getline; 353 n = 1; 354 } 355 356 # skip attribute, if any 357 while ($n ~ /^(__attribute__|__global)/ || 358 # skip modifiers, if any 359 $n ~ /^\*?(unsigned|const|volatile|struct|_X_EXPORT)$/ || 360 # skip pointer 361 $n ~ /^[a-zA-Z0-9_]*\*$/) { 362 n++; 363 # skip line numbers GCC 5 adds after __attribute__ 364 while ($n == "" || $0 ~ /^# [0-9]+ "/) { 365 getline; 366 n = 1; 367 } 368 } 369 # hack: pid_t becomes __pid_t on NetBSD, same for uint32_t -> __uint32_t. 370 # GCC 5 inserts additional lines around this. 371 if (($1 == "__pid_t" || $1 == "__uint32_t") && NF == 1) { 372 getline; 373 n++; 374 # skip line numbers GCC 5 adds (after typedef return type?) 375 while ($n == "" || $0 ~ /^# [0-9]+ "/) { 376 getline; 377 n = 1; 378 } 379 } 380 381 # type specifier may not be set, as in 382 # extern _X_EXPORT unsigned name(...) 383 if ($n !~ /[^a-zA-Z0-9_]/) 384 n++; 385 386 # go back if we are at the parameter list already 387 if ($n ~ /^[(]([^*].*)?$/) 388 n--; 389 390 # match 391 # extern _X_EXPORT type (* name[])(...) 392 if ($n ~ /^[^a-zA-Z0-9_]+$/) 393 n++; 394 395 # match 396 # extern _X_EXPORT const name *const ... 397 if ($n ~ /^([^a-zA-Z0-9_]+)?const$/) 398 n++; 399 400 # actual name may be in the next line, as in 401 # extern _X_EXPORT type 402 # possibly ending with a * 403 # name(...) 404 if ($n == "" || $n ~ /^\*+$/) { 405 getline; 406 n = 1; 407 # indent may have inserted a blank link 408 if ($0 == "") 409 getline; 410 } 411 412 # dont modify $0 or $n 413 symbol = $n; 414 415 # remove starting non word chars 416 sub(/^[^a-zA-Z0-9_]+/, "",symbol); 417 418 # remove from first non word to end of line 419 sub(/[^a-zA-Z0-9_].*/, "", symbol); 420 421 #print; 422 if (symbol != "") 423 printf(" (void *) &%-50s /* %s:%s */\n", symbol ",", header, line); 424 } 425} 426 427{ 428 line++; 429} 430 431END { 432 print("};"); 433 434 print("") >> "sdksyms.dep"; 435}' > _sdksyms.c 436 437STATUS=$? 438 439cat _sdksyms.c >> sdksyms.c 440rm _sdksyms.c 441 442[ $? != 0 ] && exit $? 443 444exit $STATUS 445