14887Schin: 24887Schin# Glenn Fowler 34887Schin# AT&T Research 44887Schin# 5*10898Sroland.mainz@nrubsig.org# @(#)pp.probe (AT&T Research) 2009-02-02 64887Schin# 74887Schin# C probe for libpp 84887Schin# 94887Schin# NOTE: C.probe must be included or .'d here 104887Schin# 114887Schin 124887Schinppdef=$dir/pp.def 134887Schinppkey=$dir/pp.key 144887Schinppsym=$dir/ppsym 154887Schinfor f in $ppdef $ppkey $ppsym 164887Schindo test -f $f || { echo "$0: $f: not found" >&4; exit 1 ;} 174887Schindone 184887Schin 194887Schinsed -e "/^#/d" -e "s/[ ].*//" < $ppdef > all.pp 204887Schin 214887Schinsystem= 224887Schinrelease= 234887Schinversion= 244887Schinarchitecture= 254887Schincpu= 264887Schinmodel= 274887Schinmachine= 28*10898Sroland.mainz@nrubsig.orgundef_predef= 294887Schin 304887Schin# 314887Schin# path cleanup 324887Schin# 334887Schin 344887Schinfor i in stdinclude usrinclude 354887Schindo eval o='$'$i 364887Schin v=$o 374887Schin case $v in 384887Schin *//*) v=`echo $v | sed 's,///*,/,g'` ;; 394887Schin esac 404887Schin if (test . -ef "`pwd`") 414887Schin then k= 424887Schin for x in $v 434887Schin do case $x in 444887Schin */../*|*/..) 454887Schin case $x in 464887Schin /*) a=/ ;; 474887Schin *) a= ;; 484887Schin esac 494887Schin IFS=/ 504887Schin set '' $x 514887Schin IFS=$ifs 524887Schin r= 534887Schin for d 544887Schin do r="$d $r" 554887Schin done 564887Schin p= 574887Schin g= 584887Schin for d in $r 594887Schin do case $d in 604887Schin ..) g="$g $d" ;; 614887Schin *) case $g in 624887Schin '') case $p in 634887Schin '') p=$d ;; 644887Schin *) p=$d/$p ;; 654887Schin esac 664887Schin ;; 674887Schin *) set $g 684887Schin shift 694887Schin g=$* 704887Schin ;; 714887Schin esac 724887Schin ;; 734887Schin esac 744887Schin done 754887Schin case $a in 764887Schin '') for d in $g 774887Schin do p=$d/$p 784887Schin done 794887Schin ;; 804887Schin *) p=$a$p 814887Schin ;; 824887Schin esac 834887Schin case $p in 844887Schin /) continue ;; 854887Schin esac 864887Schin test $x -ef $p && x=$p 874887Schin ;; 884887Schin esac 894887Schin k="$k $x" 904887Schin done 914887Schin set '' $k 924887Schin shift 934887Schin v=$1 944887Schin case $# in 954887Schin 0) ;; 964887Schin *) shift 974887Schin while : 984887Schin do case $# in 994887Schin 0) break ;; 1004887Schin esac 1014887Schin k= 1024887Schin for d 1034887Schin do for j in $v 1044887Schin do test $d -ef $j && continue 2 1054887Schin done 1064887Schin k="$k $d" 1074887Schin done 1084887Schin set '' $k 1094887Schin case $# in 1104887Schin 1) break ;; 1114887Schin esac 1124887Schin shift 1134887Schin v="$v $1" 1144887Schin shift 1154887Schin done 1164887Schin ;; 1174887Schin esac 1184887Schin fi 1194887Schin case $v in 1204887Schin $o) ;; 1214887Schin *) eval $i='$'v ;; 1224887Schin esac 1234887Schindone 1244887Schin 1254887Schinid="::IDENT::`date`::IDENT::" 1264887Schinecho '#assert test(ok) 1274887Schin#if #test(ok) 1284887Schin#else 1294887Schin( 1304887Schin#endif' > assert.$src 1314887Schinecho '#ifdef __BASE_FILE__ 1324887Schinint ok; 1334887Schin#else 1344887Schin( 1354887Schin#endif' > basefile.$src 1364887Schincat > catlit1.i <<'!' 1374887Schinchar test[] = "te" 1384887Schin"st"; 1394887Schin! 1404887Schincat > catlit2.i <<'!' 1414887Schinchar test[] = "te\ 1424887Schinst"; 1434887Schin! 1444887Schinecho '#define g(a,b) a ## b 1454887Schinvolatile int a; 1464887Schinconst int g(x,y)=1; 1474887Schinextern int c(int);' > compat.$src 1484887Schinecho > cpp.$src 1494887Schinecho "#defincl <x.h>" > defincl.$src 1504887Schinecho 'int a$b;' > dollar.$src 1514887Schinecho "#eject" > eject.$src 1524887Schinecho "#if 0 1534887Schin( 1544887Schin#else if 1 1554887Schinint x; 1564887Schin#else 1574887Schin( 1584887Schin#endif" > elseif.$src 1594887Schinecho "#define _CAT(a,b,c) a##b##c 1604887Schin#define hdra hdrx 1614887Schin#define hdr _CAT(<,hdra,.h>) 1624887Schin#include hdr" > hdra.$src 1634887Schinecho "#define _XAT(a,b,c) a##b##c 1644887Schin#define _CAT(a,b,c) _XAT(a,b,c) 1654887Schin#define hdra hdrx 1664887Schin#define hdr _CAT(<,hdra,.h>) 1674887Schin#include hdr" > hdrx.$src 1684887Schinecho "int f(){return 0;}" > hdrx.h 1694887Schinecho "#ident \"$id\"" > ident.$src 1704887Schinecho "#import \"import.h\"" > import.$src 1714887Schinecho "int aaa;" > import.h 1724887Schinecho "#include <inc_next.h>" > inc_next.$src 1734887Schinmkdir inc0 inc1 1744887Schinecho "#include_next <inc_next.h>" > inc0/inc_next.h 1754887Schinecho 'char s[] = "INCLUDE_NEXT";' > inc1/inc_next.h 1764887Schinecho '# 1 "linefile.i" 1774887Schin 1784887Schin# 1 "linefile.i" 1794887Schin 1804887Schinint i;' > linefile1.i 1814887Schinecho '# 1 "linefile.i" 1824887Schin 1834887Schin# 1 1844887Schin 1854887Schinint i;' > linefile2.i 1864887Schinecho "int i = 0;" > lineid1.i 1874887Schinecho '# 1 "t.c" 1884887Schinint i = 0;' > lineid2.i 1894887Schinecho '# 1 "t.c" 1904887Schinint i = 0;' > lineid3.$src 1914887Schinecho "#include <stdio.h>" > linetype.$src 1924887Schinecho '#include <sys/types.h> 1934887Schinmain() 1944887Schin{ 1954887Schin return sizeof(LONGLONG) != 8; 1964887Schin}' > longlong.$src 1974887Schinecho '#include "once.h" 1984887Schin#include "once.h"' > once.$src 1994887Schinecho '#ifdef once 2004887Schinallmultiple 2014887Schin#else 2024887Schin#define once 2034887Schin#endif' > once.h 2044887Schinecho "extern int a,b;int f(){return a + = b;}" > opspace.$src 2054887Schinecho "int f(){return(0);} // ((" > pluscom.$src 2064887Schinecho "class x {int n;} m;" > plusplus.$src 2074887Schinecho > preinc.$src 2084887Schinecho '// splice \ 2094887Schin( 2104887Schinint x = 1;' > plusspl.$src 2114887Schinecho "int stdc_default_value = __STDC__ ;" > stdc.$src 2124887Schinecho 'char xxx[] = "abc 2134887Schin(";' > span.$src 2144887Schinecho '#define g(a,b) a\ 2154887Schinb 2164887Schinint ab,xy; 2174887Schin#define xy XY 2184887Schinchar* g(x,y);' > splice.$src 2194887Schin{ 2204887Schinecho 'int a\ ' 2214887Schinecho 'b = 1;' 2224887Schin} > splicesp.$src 2234887Schinecho '#define g(a,b) a/**/b 2244887Schinint g(x,y)=1;' > trans.$src 2254887Schinecho '#define m 65 2264887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 65 2274887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 64 2284887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 63 2294887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 62 2304887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 61 2314887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 60 2324887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 59 2334887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 58 2344887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 57 2354887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 56 2364887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 55 2374887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 54 2384887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 53 2394887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 52 2404887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 51 2414887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 50 2424887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 49 2434887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 48 2444887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 47 2454887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 46 2464887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 45 2474887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 44 2484887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 43 2494887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 42 2504887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 41 2514887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 40 2524887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 39 2534887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 38 2544887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 37 2554887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 36 2564887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 35 2574887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 34 2584887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 33 2594887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 32 2604887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 31 2614887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 30 2624887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxxx 29 2634887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxxx 28 2644887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxxx 27 2654887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxxx 26 2664887Schin#define xxxxxxxxxxxxxxxxxxxxxxxxx 25 2674887Schin#define xxxxxxxxxxxxxxxxxxxxxxxx 24 2684887Schin#define xxxxxxxxxxxxxxxxxxxxxxx 23 2694887Schin#define xxxxxxxxxxxxxxxxxxxxxx 22 2704887Schin#define xxxxxxxxxxxxxxxxxxxxx 21 2714887Schin#define xxxxxxxxxxxxxxxxxxxx 20 2724887Schin#define xxxxxxxxxxxxxxxxxxx 19 2734887Schin#define xxxxxxxxxxxxxxxxxx 18 2744887Schin#define xxxxxxxxxxxxxxxxx 17 2754887Schin#define xxxxxxxxxxxxxxxx 16 2764887Schin#define xxxxxxxxxxxxxxx 15 2774887Schin#define xxxxxxxxxxxxxx 14 2784887Schin#define xxxxxxxxxxxxx 13 2794887Schin#define xxxxxxxxxxxx 12 2804887Schin#define xxxxxxxxxxx 11 2814887Schin#define xxxxxxxxxx 10 2824887Schin#define xxxxxxxxx 9 2834887Schin#define xxxxxxxx 8 2844887Schin#define xxxxxxx 7 2854887Schin#define xxxxxx 6 2864887Schin#define xxxxx 5 2874887Schin#define xxxx 4 2884887Schin#define xxx 3 2894887Schin#define xx 2 2904887Schin#define x 1 2914887Schin#if xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx != m 2924887Schinxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2934887Schin#endif' > truncate.$src 2944887Schincat > zeof.c <<'!' 2954887Schinchar* foo = "az"; 2964887Schin! 2974887Schin 2984887Schinallmultiple= 2994887Schinassert= 3004887Schinbasefile= 3014887Schincompatibility=1 3024887Schindefincl= 3034887Schindollar= 3044887Schineject= 3054887Schinelseif= 3064887Schinheaderexpand= 3074887Schinheaderexpandall= 3084887Schinhostedtransition= 3094887Schinident= 3104887Schinimport= 3114887Schininclude_next= 3124887Schinlinefile= 3134887Schinlineid= 3144887Schinlinetype= 3154887Schinnocatliteral= 3164887Schinopspace= 3174887Schinpluscom= 3184887Schinplusplus= 3194887Schinplussplice= 3204887Schinredef= 3214887Schinreguard= 3224887Schinreserved= 3234887Schinspaceout= 3244887Schinsplicecat= 3254887Schinsplicespace= 3264887Schinstrict= 3274887Schinstringspan= 3284887Schintransition= 3294887Schintruncate= 3304887Schinzeof= 3314887Schin 3324887Schin$cc -c assert.$src && assert=1 3334887Schin 3344887Schin$cc -c basefile.$src && basefile=__BASE_FILE__ 3354887Schin 3364887Schinif $cc -E defincl.$src 3374887Schinthen case "`$cc -E defincl.$src | grep -c 'defincl'`" in 3384887Schin 0) defincl=1 ;; 3394887Schin esac 3404887Schinfi 3414887Schin 3424887Schinif $cc -c catlit1.i 2>e 3434887Schinthen if $cc -c catlit2.i 2>f 3444887Schin then if test `wc -c < f` -gt `wc -c < e` 3454887Schin then nocatliteral=1 3464887Schin fi 3474887Schin else nocatliteral=1 3484887Schin fi 3494887Schinfi 3504887Schin 3514887Schin$cc -c dollar.$src && dollar=1 3524887Schin 3534887Schin$cc -c elseif.$src && elseif=1 3544887Schin 3554887Schinif $cc -I. -c hdra.$src 3564887Schinthen headerexpandall=1 3574887Schinelif $cc -I. -c hdrx.$src 3584887Schinthen headerexpand=1 3594887Schinfi 3604887Schin 3614887Schinif $cc -E eject.$src 3624887Schinthen case "`$cc -E eject.$src | grep -c 'eject'`" in 3634887Schin 0) eject=1 ;; 3644887Schin esac 3654887Schinfi 3664887Schin 3674887Schin$cc -S ident.$src && grep "$id" ident.s && ident=1 3684887Schin 3694887Schin{ $cc -E import.$src | grep aaa ;} && import=1 3704887Schin 3714887Schin{ $cc -E -Iinc0 -Iinc1 inc_next.$src | grep INCLUDE_NEXT ;} && include_next=1 3724887Schin 3734887Schinif $cc -c linefile1.i 3744887Schinthen $cc -c linefile2.i 3754887Schin case $? in 3764887Schin 0) ;; 3774887Schin *) linefile=1 ;; 3784887Schin esac 3794887Schinfi 3804887Schin 3814887Schinif $cc -c lineid1.i 2>b 3824887Schinthen $cc -c lineid2.i 2>e 3834887Schin c=$? 3844887Schinelse $cc -c lineid3.c 2>e 3854887Schin c=$? 3864887Schinfi 3874887Schincase $c in 3884887Schin0) case `wc -l < b` in 3894887Schin `wc -l < e`) ;; 3904887Schin *) lineid=line ;; 3914887Schin esac 3924887Schin ;; 3934887Schin*) lineid=line 3944887Schin ;; 3954887Schinesac 3964887Schin 3974887Schinif $cc -E linetype.$src | grep '^[ ]*#[ ]*[0123456789]*[ ]*".*"[ ]*[12]' > linetype 3984887Schinthen if grep '^[ ]*#[ ]*[0123456789]*[ ]*".*"[ ]*[12][ ][ ]*3' linetype 3994887Schin then linetype=2 4004887Schin else linetype=1 4014887Schin fi 4024887Schinfi 4034887Schin 4044887Schin{ $cc -E once.$src | grep allmultiple ;} && allmultiple=1 4054887Schin 4064887Schin$cc -c plusplus.$src && plusplus=1 4074887Schin 4084887Schin$cc -c span.$src && stringspan=1 4094887Schin 4104887Schin$cc -c splice.$src && splicecat=1 4114887Schin 4124887Schin$cc -c splicesp.$src && splicespace=1 4134887Schin 4144887Schinexec < $ppkey 4154887Schinwhile read keyword type alternate comment 4164887Schindo case $keyword in 4174887Schin .) break ;; 4184887Schin ""|"#") continue ;; 4194887Schin esac 4204887Schin case $type in 4214887Schin ""|".") type= ;; 4224887Schin *) type="=$type" ;; 4234887Schin esac 4244887Schin for pre in '' _ __ 4254887Schin do for suf in '' _ __ 4264887Schin do case $suf in 4274887Schin '') sep= ;; 4284887Schin *) sep=. ;; 4294887Schin esac 4304887Schin case ,,$alternate, in 4314887Schin *,$pre$sep$suf,*) 4324887Schin key=$pre$keyword$suf 4334887Schin undef="$undef $key" 4344887Schin echo "int f(){ 4354887Schin int $key = 0; 4364887Schin return $key; 4374887Schin} 4384887Schin#undef $key 4394887Schinint g(){ 4404887Schin int $key = 0; 4414887Schin return $key; 4424887Schin}" > key.$src 4434887Schin $cc -c key.$src >/dev/null 2>&1 || reserved="$reserved $key$type" 4444887Schin ;; 4454887Schin esac 4464887Schin done 4474887Schin done 4484887Schindone 4494887Schin 4504887Schin$cc -c opspace.$src && opspace=1 4514887Schin 4524887Schincase $plusplus in 4534887Schin"") $cc -c compat.$src && compatibility= 4544887Schin $cc -c pluscom.$src && pluscom=1 4554887Schin ;; 4564887Schinesac 4574887Schincase $plusplus$pluscom in 4584887Schin?*) $cc -c plusspl.$src || plussplice=1 ;; 4594887Schinesac 4604887Schincase $plusplus in 4614887Schin?*) mkdir reguard 4624887Schin cd reguard 4634887Schin echo '#include "ptrone.h" 4644887Schin#include "ptrdef.h" 4654887Schinint main () { return gt(2,1) + gt(2.0,1.0); }' > ptr.$src 4664887Schin echo '#include "ptrone.h" 4674887Schintemplate<class T> int gt(T a, T b) { return a > b; }' > ptrdef.$src 4684887Schin echo 'template<class T> int gt(T a, T b);' > ptrdef.h 4694887Schin echo '/* empty */' > ptrone.h 4704887Schin if $cc -E ptr.$src > x.i && $cc x.i 4714887Schin then echo '#ifndef _PTRONE_H 4724887Schin#define _PTRONE_H 4734887Schinstatic int xxx; 4744887Schin#endif' > ptrone.h 4754887Schin if $cc -E ptr.$src > x.i && echo "#define _PTRONE_H" >> x.i && $cc x.i 4764887Schin then reguard=1 4774887Schin fi 4784887Schin fi 4794887Schin cd .. 4804887Schin rm -rf reguard 4814887Schin ;; 4824887Schinesac 4834887Schin 4844887Schinstdc=`$cc -E stdc.$src | sed -e '/stdc_default_value/!d' -e 's/.*=[ ]*//' -e 's/[ ]*;.*//'` 4854887Schincase $stdc in 4864887Schin0) $cc -c trans.$src && transition=1 ;; 4874887Schin[0123456789]*) ;; 4884887Schin*) stdc= ;; 4894887Schinesac 4904887Schin 4914887Schintruncate=`$cc -E truncate.$src | grep '^[ ]*[0123456789]'` 4924887Schin$cc -c zeof.c || zeof=1 4934887Schin 4944887Schinecho "$predef" >> all.pp 4954887Schin{ 4964887Schin case $ppopt$ppenv in 4974887Schin ?*) ppcmd=cpp 4984887Schin ppdir=. 4994887Schin eval $ppenv '$'cc -Dmycpp -E '$'ppopt cpp.$src 5004887Schin ;; 5014887Schin esac 5024887Schin eval set x $probe_verbose 5034887Schin shift 5044887Schin x= 5054887Schin for o in "$@" 5064887Schin do set x `$cc $o -c cpp.$src 2>&1` 5074887Schin while : 5084887Schin do shift 5094887Schin case $# in 5104887Schin 0) break ;; 5114887Schin esac 5124887Schin case $1 in 5134887Schin *[\\/]rm) 5144887Schin ;; 5154887Schin [\\/]*) case " $x " in 5164887Schin *" $1 "*) ;; 5174887Schin *) test -x $1 && x="$x $1" ;; 5184887Schin esac 5194887Schin ;; 5204887Schin esac 5214887Schin done 5224887Schin case $x in 5234887Schin ?*) for f in $x 5244887Schin do cp $f x && chmod u+w x && strip x && f=x 5254887Schin $ppsym < $f 5264887Schin done 5274887Schin break 5284887Schin ;; 5294887Schin esac 5304887Schin done 5314887Schin} 3>&- 3>&1 >/dev/null | 5324887Schin sed -e '/^ppsymbol$/d' -e '/^.$/d' -e '/^..$/d' -e '/[ABCDEFGHIJKLMNOPQRSTUVWXYZ].*[abcdefghijklmnopqrstuvwxyz]/d' -e '/[abcdefghijklmnopqrstuvwxyz].*[ABCDEFGHIJKLMNOPQRSTUVWXYZ]/d' | 5334887Schin cat - all.pp | 5344887Schin sort -u | 5354887Schin { 5364887Schin for i in 0 1 2 3 4 5 5374887Schin do echo "struct { char* name; long value; } predef[] = {" > cpp$i.$src 5384887Schin done 5394887Schin while read sym junk 5404887Schin do case $sym in 5414887Schin _*) set 0 ${sym} 5424887Schin ;; 5434887Schin *_) continue 5444887Schin ;; 5454887Schin [abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]*) 5464887Schin set 1 ${sym} 2 _${sym} 3 _${sym}_ 4 __${sym} 5 __${sym}__ 5474887Schin ;; 5484887Schin *) continue 5494887Schin ;; 5504887Schin esac 5514887Schin while : 5524887Schin do case $# in 5534887Schin 0|1) break ;; 5544887Schin esac 5554887Schin { 5564887Schin echo "#ifdef $2" 5574887Schin echo "\"$2\" , (long) $2 -1," 5584887Schin echo "#endif" 5594887Schin } >> cpp$1.$src 5604887Schin shift 5614887Schin shift 5624887Schin done 5634887Schin done 5644887Schin for i in 0 1 2 3 4 5 5654887Schin do echo "\"\", 0 };" >> cpp$i.$src 5664887Schin done 5674887Schin } 5684887Schinpreval="`for i in 0 1 2 3 4 5;do $cc -E cpp$i.$src;done | sed -e '/\".*\".*,.*,/!d' -e 's/[^\"]*\"\\([^\"]*\\)\"[ ]*,[ ]*([ ]*long[ ]*)[ ]*\\(.*\\)[ ]*-[ ]*1[ ]*,[ ]*\$/\\1 \\2 =/g'` `$cc -dM -E stdc.$src | sed -e '/[ ]*#[ ]*define/!d' -e '/\"/d' -e 's/[ ]*#[ ]*define[ ]*\\([abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*\\)[ ]*\\(.*\\)/\\1 \\2 =/'`" 5694887Schin 5704887Schinfor i in bufld namei quota reboot utsname vfs 5714887Schindo echo "#include <sys/$i.h>" > t.$src 5724887Schin if $cc -E t.$src 5734887Schin then x=1 5744887Schin else x=0 5754887Schin fi 5764887Schin eval sys_$i=$x 5774887Schindone 5784887Schin 579*10898Sroland.mainz@nrubsig.orgecho "char* fun() { return (char*)__FUNCTION__; } 580*10898Sroland.mainz@nrubsig.orgint main() { return !fun(); }" > fun.$src 581*10898Sroland.mainz@nrubsig.orgrm -f fun.exe 582*10898Sroland.mainz@nrubsig.orgif $cc -o fun.exe fun.$src && test -x fun.exe 583*10898Sroland.mainz@nrubsig.orgthen undef_predef="$undef_predef __FUNCTION__" 584*10898Sroland.mainz@nrubsig.orgfi 585*10898Sroland.mainz@nrubsig.org 5864887Schincase "`grep -c '__STDC__[-0 ]*[=!]=[ ]*0' $usrinclude/stdio.h 2>/dev/null`" in 5874887Schin0) ;; 5884887Schin*) hostedtransition=1 ;; 5894887Schinesac 5904887Schin 5914887Schinmapinclude= 5924887Schinfor i in builtins 5934887Schindo echo "#include <$i.h>" > t.$src 5944887Schin if $cc -E t.$src 5954887Schin then mapinclude="$mapinclude <$i.h>=\".\"" 5964887Schin fi 5974887Schindone 5984887Schin 5994887Schin# 6004887Schin# the payoff 6014887Schin# 6024887Schin 6034887Schinexec >&3 6044887Schin 6054887Schincase "$compatibility:$transition:$dollar" in 6064887Schin::) strict=1 ;; 6074887Schinesac 6084887Schincase $version_stamp in 6094887Schin?*) echo "/* $version_stamp" ;; 6104887Schin*) echo "/* $cc" ;; 6114887Schinesac 6124887Schinecho "*/" 6134887Schincase $plusplus:$stdc in 6144887Schin1:?*) preval="$preval = __STDC__ $stdc =" 6154887Schin redef="$redef __STDC__" 6164887Schin ;; 6174887Schinesac 6184887Schinppbuiltin=0 6194887Schinset x $preval 6204887Schinshift 6214887Schincase $# in 6224887Schin0) ;; 6234887Schin*) echo 6244887Schin echo "#pragma pp:predefined" 6254887Schin predef= 6264887Schin while : 6274887Schin do case $# in 6284887Schin 0) break ;; 6294887Schin esac 6304887Schin m=$1 6314887Schin shift 6324887Schin case $m in 6334887Schin *'('*) i=`echo "$m" | sed 's,(.*,,'` ;; 6344887Schin *) i=$m ;; 6354887Schin esac 6364887Schin predef="$predef 6374887Schin$i" 6384887Schin eval predef_$i=0 6394887Schin while : 6404887Schin do case $1 in 6414887Schin '=') break ;; 6424887Schin *) shift ;; 6434887Schin esac 6444887Schin done 6454887Schin while : 6464887Schin do case $1 in 6474887Schin '=') shift ;; 6484887Schin *) break ;; 6494887Schin esac 6504887Schin done 6514887Schin done 6524887Schin for i in $undef 6534887Schin do case " $redef " in 6544887Schin *" $i "*) ;; 6554887Schin *) eval predef_$i=3 ;; 6564887Schin esac 6574887Schin done 6584887Schin set $preval 6594887Schin while : 6604887Schin do case $# in 6614887Schin 0) break ;; 6624887Schin esac 6634887Schin m=$1 6644887Schin shift 6654887Schin case $m in 6664887Schin *'('*) i=`echo "$m" | sed 's,(.*,,'` ;; 6674887Schin *) i=$m ;; 6684887Schin esac 6694887Schin case $i in 6704887Schin '=') continue ;; 6714887Schin esac 6724887Schin v= 6734887Schin while : 6744887Schin do case $1 in 6754887Schin '=') break ;; 6764887Schin esac 6774887Schin v="$v $1" 6784887Schin shift 6794887Schin done 6804887Schin while : 6814887Schin do case $1 in 6824887Schin '=') shift ;; 6834887Schin *) break ;; 6844887Schin esac 6854887Schin done 6864887Schin case $i in 6874887Schin __LCC__)strict=2 ;; 6884887Schin _*) ;; 6894887Schin *) eval j=\$predef_$i 6904887Schin case $j in 6914887Schin 0) eval predef_$i=1 6924887Schin echo "#define $m$v" 6934887Schin case $strict in 6944887Schin 1) strict= ;; 6954887Schin esac 6964887Schin ;; 6974887Schin esac 6984887Schin ;; 6994887Schin esac 7004887Schin done 7014887Schin nopredef=0 7024887Schin while : 7034887Schin do set $preval 7044887Schin while : 7054887Schin do case $# in 7064887Schin 0) break ;; 7074887Schin esac 7084887Schin m=$1 7094887Schin shift 7104887Schin case $m in 7114887Schin *'('*) i=`echo "$m" | sed 's,(.*,,'` ;; 7124887Schin *) i=$m ;; 7134887Schin esac 7144887Schin v= 7154887Schin while : 7164887Schin do case $1 in 7174887Schin '=') break ;; 7184887Schin esac 7194887Schin v="$v $1" 7204887Schin shift 7214887Schin done 7224887Schin while : 7234887Schin do case $1 in 7244887Schin '=') shift ;; 7254887Schin *) break ;; 7264887Schin esac 7274887Schin done 7284887Schin case $nopredef in 7294887Schin 2) ;; 7304887Schin *) case $v in 7314887Schin ' '*' '*) 7324887Schin nopredef=1 7334887Schin continue 7344887Schin ;; 7354887Schin ' '[0123456789]*|' '"'"*"'"*) 7364887Schin ;; 7374887Schin *) case $1 in 7384887Schin _*) ;; 7394887Schin *) nopredef=1 7404887Schin continue 7414887Schin ;; 7424887Schin esac 7434887Schin ;; 7444887Schin esac 7454887Schin ;; 7464887Schin esac 7474887Schin eval j=\$predef_$i 7484887Schin case $j in 7494887Schin 0) case $ppbuiltin in 7504887Schin 2) echo "#pragma pp:builtin" 7514887Schin ppbuiltin=1 7524887Schin ;; 7534887Schin esac 7544887Schin eval predef_$i=2 7554887Schin echo "#define $m$v" 7564887Schin ;; 7574887Schin 1) case $m in 7584887Schin $i) eval predef_$i=2 7594887Schin eval j=\$predef___${i}__ 7604887Schin case $j in 7614887Schin [12]) ;; 7624887Schin *) case $ppbuiltin in 7634887Schin 2) echo "#pragma pp:builtin" 7644887Schin ppbuiltin=1 7654887Schin ;; 7664887Schin esac 7674887Schin eval predef___${i}__=2 7684887Schin echo "#define __${i}__$v" 7694887Schin ;; 7704887Schin esac 7714887Schin ;; 7724887Schin esac 7734887Schin ;; 7744887Schin esac 7754887Schin done 7764887Schin case $nopredef in 7774887Schin 2) break ;; 7784887Schin esac 7794887Schin echo "#pragma pp:nopredefined" 7804887Schin case $nopredef in 7814887Schin 0) break ;; 7824887Schin esac 7834887Schin ppbuiltin=2 7844887Schin nopredef=2 7854887Schin done 7864887Schin ;; 7874887Schinesac 7884887Schincase $basefile in 7894887Schin?*) case $ppbuiltin in 7904887Schin 0|2) ppbuiltin=1 7914887Schin echo "#pragma pp:builtin" 7924887Schin ;; 7934887Schin esac 7944887Schin echo "#define $basefile #(BASE)" 7954887Schin ;; 7964887Schinesac 7974887Schincase $ppbuiltin in 7984887Schin1) echo "#pragma pp:nobuiltin" ;; 7994887Schinesac 8004887Schin 8014887Schineval set x $probe_longlong 8024887Schinshift 8034887Schinx= 8044887Schinfor o in "$@" 8054887Schindo rm -f longlong.$exe 8064887Schin if $cc -DLONGLONG="$o" -o longlong.$exe longlong.$src && 8074887Schin ./longlong.$exe 8084887Schin then x=1 8094887Schin break 8104887Schin fi 8114887Schindone 8124887Schincase $x in 8134887Schin'') eval set x $probe_longlong_t 8144887Schin shift 8154887Schin for o in "$@" 8164887Schin do rm -f longlong.$exe 8174887Schin if $cc -DLONGLONG="$o" -o longlong.$exe longlong.$src && 8184887Schin ./longlong.$exe 8194887Schin then echo "#define <long long> $o" 8204887Schin break 8214887Schin fi 8224887Schin done 8234887Schin ;; 8244887Schinesac 8254887Schin 8264887Schinecho 8274887Schinfor i in `echo "$predef" | sed -e 's/^__*\(.*\)_*\$/\1/' -e '/^[abcdefghijklmnopqrstuvwxyz][abcdefghijklmnopqrstuvwxyz]*[0123456789][abcdefghijklmnopqrstuvwxyz0123456789]*\$/!d'` `echo "$predef" | sed -e 's/^__*\(.*\)_*\$/\1/' -e '/^[abcdefghijklmnopqrstuvwxyz][abcdefghijklmnopqrstuvwxyz]*\$/!d'` 8284887Schindo case $i in 8294887Schin *ix) ;; 8304887Schin *) architecture=$i 8314887Schin break 8324887Schin ;; 8334887Schin esac 8344887Schindone 8354887Schinfor i in `sed -e '/^#/d' -e '/:architecture:/!d' -e 's/[ ].*//' < $ppdef` 8364887Schindo eval j="\" \$predef_$i \$predef__${i} \$predef__${i}_ \$predef___${i} \$predef___${i}__ \"" 8374887Schin case $j in 8384887Schin *" 2 "*)architecture=$i 8394887Schin break 8404887Schin ;; 8414887Schin esac 8424887Schindone 8434887Schinfor i in `sed -e '/^#/d' -e '/:machine:/!d' -e 's/[ ].*//' < $ppdef` 8444887Schindo eval j="\" \$predef_$i \$predef__${i} \$predef__${i}_ \$predef___${i} \$predef___${i}__ \"" 8454887Schin case $j in 8464887Schin *" 2 "*)machine="$machine $i" ;; 8474887Schin esac 8484887Schindone 8494887Schincase $sys_bufld$sys_reboot$sys_utsname in 8504887Schin1??) release=research 8514887Schin version=9 8524887Schin ;; 8534887Schin01?) release=bsd 8544887Schin case $sys_quota in 8554887Schin 0) case $sys_vfs in 8564887Schin 0) version=4.1 8574887Schin ;; 8584887Schin esac 8594887Schin ;; 8604887Schin 1) case $sys_namei in 8614887Schin 0) version=4.2 8624887Schin ;; 8634887Schin 1) version=4.3 8644887Schin ;; 8654887Schin esac 8664887Schin ;; 8674887Schin esac 8684887Schin ;; 8694887Schin001) release=V 8704887Schin ;; 8714887Schinesac 8724887Schinfor i in `sed -e '/^#/d' -e '/:release:/!d' -e 's/[ ].*//' < $ppdef` 8734887Schindo eval j=\$predef_$i 8744887Schin case $j in 8754887Schin 2) release="$release $i" ;; 8764887Schin esac 8774887Schindone 8784887Schinfor i in `sed -e '/^#/d' -e '/:system:/!d' -e 's/[ ].*//' < $ppdef` 8794887Schindo eval j=\$predef_$i 8804887Schin case $j in 8814887Schin 2) system="$system $i" ;; 8824887Schin esac 8834887Schindone 8844887Schincase $release in 8854887Schintopix) release="$release V" 8864887Schin ;; 8874887Schinesac 8884887Schincase $assert in 8894887Schin?*) for i in $predef 8904887Schin do case $i in 8914887Schin _*|*_) ;; 8924887Schin *) for p in architecture cpu machine system 8934887Schin do echo "#if #$p($i) 8944887Schineval \"case \\\" \$$p \\\" in *\\\" $i \\\"*) ;; *) $p=\\\"$i \$$p\\\" ;; esac\" 8954887Schin: avoid string literal concatenation 8964887Schin#endif" 8974887Schin done 8984887Schin ;; 8994887Schin esac 9004887Schin done > t.$src 9014887Schin eval "`$cc -E t.$src`" 9024887Schin set x x $prepred 9034887Schin while : 9044887Schin do shift 9054887Schin shift 9064887Schin case $# in 9074887Schin [01]) break ;; 9084887Schin esac 9094887Schin eval " 9104887Schin case \" \$$1 \" in 9114887Schin *\" $2 \"*) ;; 9124887Schin *) $1=\"$2 \$$1\" ;; 9134887Schin esac 9144887Schin " 9154887Schin done 9164887Schin ;; 9174887Schinesac 9184887Schincase $system in 9194887Schin"") system=unix ;; 9204887Schinesac 9214887Schincase $architecture in 9224887Schinibm|uts|u370) model=370 9234887Schin architecture=ibm 9244887Schin ;; 9254887Schinm*68*) architecture=m68000 9264887Schin for i in $predef 9274887Schin do case $i in 9284887Schin m*68*[123456789][0123456789]) 9294887Schin model=`echo $i | sed 's/.*\(..\)/\1/'` 9304887Schin break 9314887Schin ;; 9324887Schin esac 9334887Schin done 9344887Schin ;; 9354887Schinu3b?*) model=`echo $architecture | sed 's/u3b//'` 9364887Schin architecture=3b 9374887Schin ;; 9384887Schinu3b) case $model in 9394887Schin "") model=20 ;; 9404887Schin esac 9414887Schin architecture=3b 9424887Schin ;; 9434887Schinvax[0123456789]*) 9444887Schin model=`echo $architecture | sed 's/vax//'` 9454887Schin architecture=vax 9464887Schin ;; 9474887Schinhp[0123456789]*s[0123456789]) 9484887Schin case $release in 9494887Schin [abcdefghijklmnopqrstuvwxyz]*.[abcdefghijklmnopqrstuvwxyz]*.*) 9504887Schin version=$release 9514887Schin release=V 9524887Schin ;; 9534887Schin esac 9544887Schin architecture="$architecture `echo $architecture | sed 's/s.*//'`" 9554887Schin ;; 9564887Schinesac 9574887Schincase $hosttype in 9584887Schin*.*) i=`echo $hosttype | sed -e 's,.*\.,,'` ;; 9594887Schin*) i=$hosttype ;; 9604887Schinesac 9614887Schincase $i in 9624887Schinunknown);; 9634887Schin?*) case " $architecture " in 9644887Schin *" $i "*) ;; 9654887Schin *) architecture="$architecture $i" ;; 9664887Schin esac 9674887Schin ;; 9684887Schinesac 9694887Schincase $architecture in 9704887Schin"") echo "$cc: warning: architecture not determined" >&4 9714887Schin set x $machine 9724887Schin architecture=$2 9734887Schin ;; 9744887Schinesac 9754887Schinecho "#define #hosttype($hosttype)" 9764887Schinfor i in $system 9774887Schindo echo "#define #system($i)" 9784887Schindone 9794887Schincase $release in 9804887Schin"") echo "#define #release()" ;; 9814887Schin*) for i in $release 9824887Schin do echo "#define #release($i)" 9834887Schin case $i in 9844887Schin V) echo "#define #release(system5)" ;; # compatibility 9854887Schin esac 9864887Schin done 9874887Schin ;; 9884887Schinesac 9894887Schinecho "#define #version($version)" 9904887Schincase $architecture in 9914887Schin"") echo "#define #architecture()" ;; 9924887Schin*) for i in `echo $architecture | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` 9934887Schin do echo "#define #architecture($i)" 9944887Schin done 9954887Schin ;; 9964887Schinesac 9974887Schinecho "#define #model($model)" 9984887Schincase $machine in 9994887Schin"") case $architecture:$model in 10004887Schin ?*:?*) set x $architecture; machine="$2/$model $architecture" ;; 10014887Schin *) machine=$architecture ;; 10024887Schin esac 10034887Schin ;; 10044887Schin*) machine="$machine $architecture" 10054887Schin ;; 10064887Schinesac 10074887Schincase $machine in 10084887Schin"") echo "#define #machine()" ;; 10094887Schin*) j= 10104887Schin for i in `echo $machine | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` 10114887Schin do case " $i " in 10124887Schin *" $j "*) 10134887Schin ;; 10144887Schin *) j="$j $i" 10154887Schin echo "#define #machine($i)" 10164887Schin ;; 10174887Schin esac 10184887Schin done 10194887Schin ;; 10204887Schinesac 10214887Schinfor i in $cpu 10224887Schindo echo "#define #cpu($i)" 10234887Schindone 10244887Schinecho "#define #addressing()" 10254887Schinfor i in $ATTRIBUTES 10264887Schindo eval d=\$$i 10274887Schin n=`echo $i | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` 10284887Schin echo "#define #$n($d)" 10294887Schindone 10304887Schincase $stdc in 10314887Schin?*) echo "#define #dialect(ansi)" ;; 10324887Schinesac 10334887Schincase $plusplus in 10344887Schin?*) echo "#define #dialect(C++)" ;; 10354887Schinesac 10364887Schincase $hosted in 10374887Schin"") echo "#define #dialect(cross)" ;; 10384887Schinesac 10394887Schincase $so:$dynamic:$static in 10404887Schin::) ;; 10414887Schin*) echo "#define #dialect(dynamic)" ;; 10424887Schinesac 10434887Schinecho 1044*10898Sroland.mainz@nrubsig.orgcase $undef_predef in 1045*10898Sroland.mainz@nrubsig.org?*) for m in $undef_predef 1046*10898Sroland.mainz@nrubsig.org do echo "#undef $m" 1047*10898Sroland.mainz@nrubsig.org done 1048*10898Sroland.mainz@nrubsig.org echo 1049*10898Sroland.mainz@nrubsig.org ;; 1050*10898Sroland.mainz@nrubsig.orgesac 10514887Schincase $plusplus in 10524887Schin?*) echo "#pragma pp:plusplus" ;; 10534887Schinesac 10544887Schincase $reserved in 10554887Schin?*) echo "#pragma pp:reserved" $reserved ;; 10564887Schinesac 10574887Schincase $nocatliteral in 10584887Schin?*) echo "#pragma pp:nocatliteral" ;; 10594887Schinesac 10604887Schincase $opspace in 10614887Schin?*) echo "#pragma pp:opspace" ;; 10624887Schinesac 10634887Schincase $pluscom in 10644887Schin?*) echo "#pragma pp:pluscomment" ;; 10654887Schinesac 10664887Schincase $plussplice in 10674887Schin?*) echo "#pragma pp:plussplice" ;; 10684887Schinesac 10694887Schincase $reguard in 10704887Schin?*) echo "#pragma pp:reguard" ;; 10714887Schinesac 10724887Schincase $splicecat in 10734887Schin?*) echo "#pragma pp:splicecat" ;; 10744887Schinesac 10754887Schincase $splicespace in 10764887Schin?*) echo "#pragma pp:splicespace" ;; 10774887Schinesac 10784887Schincase $stringspan in 10794887Schin?*) echo "#pragma pp:stringspan" ;; 10804887Schinesac 10814887Schincase $stdc in 10824887Schin"") echo "#pragma pp:compatibility" 10834887Schin ;; 10844887Schin0) echo "#pragma pp:transition" 10854887Schin ;; 10864887Schin1) case $strict in 10874887Schin ?*) echo "#pragma pp:strict" ;; 10884887Schin esac 10894887Schin ;; 10904887Schinesac 10914887Schincase $hostedtransition in 10924887Schin1) echo "#pragma pp:hostedtransition" ;; 10934887Schinesac 10944887Schincase $stdc in 10954887Schin?*) case $ppopt$ppenv in 10964887Schin "") spaceout=1 10974887Schin echo "#pragma pp:spaceout" 10984887Schin ;; 10994887Schin esac 11004887Schin ;; 11014887Schinesac 11024887Schincase $truncate in 11034887Schin?*) echo "#pragma pp:truncate $truncate" ;; 11044887Schinesac 11054887Schincase $zeof in 11064887Schin?*) echo "#pragma pp:zeof" ;; 11074887Schinesac 11084887Schincase $dollar in 11094887Schin1) echo '#pragma pp:id "$"' ;; 11104887Schinesac 11114887Schincdir=-I+C 11124887Schinhdir=-I+H 11134887Schinset x $stdinclude 11144887Schinwhile : 11154887Schindo shift 11164887Schin case $# in 11174887Schin 0) break ;; 11184887Schin esac 11194887Schin case $1 in 11204887Schin $cdir|$hdir) 11214887Schin ;; 11224887Schin -I+C) cdir=$1 11234887Schin echo "#pragma pp:nocdir" 11244887Schin ;; 11254887Schin -I-C) cdir=$1 11264887Schin echo "#pragma pp:cdir" 11274887Schin ;; 11284887Schin -I+H) hdir=$1 11294887Schin echo "#pragma pp:nohostdir" 11304887Schin ;; 11314887Schin -I-H) hdir=$1 11324887Schin echo "#pragma pp:hostdir" 11334887Schin ;; 11344887Schin -I*) ;; 11354887Schin *) echo "#pragma pp:include \"$1\"" 11364887Schin ;; 11374887Schin esac 11384887Schindone 11394887Schincase $usrinclude in 11404887Schin/usr/include) 11414887Schin ;; 11424887Schin?*) echo "#pragma pp:standard \"$usrinclude\"" 11434887Schin ;; 11444887Schinesac 11454887Schincase $plusplus in 11464887Schin?*) case $usrinclude in 11474887Schin ?*) if grep plusplus $usrinclude/ctype.h >/dev/null 2>&1 11484887Schin then echo '#pragma pp:nocdir "-"' 11494887Schin fi 11504887Schin ;; 11514887Schin esac 11524887Schin ;; 11534887Schinesac 11544887Schincase $mapinclude in 11554887Schin?*) echo "#pragma pp:mapinclude hosted$mapinclude" ;; 11564887Schinesac 11574887Schincase $linefile in 11584887Schin?*) echo "#pragma pp:linefile" ;; 11594887Schinesac 11604887Schincase $lineid in 11614887Schin?*) echo "#pragma pp:lineid line" ;; 11624887Schinesac 11634887Schincase $linetype in 11644887Schin1) echo "#pragma pp:linetype" ;; 11654887Schin?*) echo "#pragma pp:linetype $linetype" ;; 11664887Schinesac 11674887Schincase $allmultiple in 11684887Schin"") echo "#pragma pp:noallmultiple" ;; 11694887Schinesac 11704887Schincase $defincl in 11714887Schin1) echo '#pragma pp:map "/#(pragma )?defincl>/"' ;; 11724887Schinesac 11734887Schincase $eject in 11744887Schin1) echo '#pragma pp:map "/#(pragma )?eject>/"' ;; 11754887Schinesac 11764887Schincase $elseif in 11774887Schin1) echo "#pragma pp:elseif" ;; 11784887Schinesac 11794887Schincase $headerexpand in 11804887Schin1) echo "#pragma pp:headerexpand" ;; 11814887Schinesac 11824887Schincase $headerexpandall in 11834887Schin1) echo "#pragma pp:headerexpandall" ;; 11844887Schinesac 11854887Schincase $ident in 11864887Schin1) echo '#pragma pp:map "/#(pragma )?ident>/" "/#(pragma )?/###/"' ;; 11874887Schin*) echo '#pragma pp:map "/#(pragma )?ident>/"' ;; 11884887Schinesac 11894887Schincase $import in 11904887Schin1) echo '#pragma pp:map "/#(pragma )?import>/" "/#(pragma )?import(.*)/__STDPP__IMPORT__(\2)/" 11914887Schin#macdef __STDPP__IMPORT__(x) 11924887Schin#pragma pp:noallmultiple 11934887Schin#include x 11944887Schin#pragma pp:allmultiple 11954887Schin#endmac' ;; 11964887Schinesac 11974887Schincase $include_next in 11984887Schin1) echo '#pragma pp:map "/#include_next>/" ",[^\<]*\<,#include <.../,"' ;; 11994887Schinesac 12004887Schinecho '#pragma pp:map "/#pragma lint:/" ",#pragma lint:(.*),##/*\1*/,u"' 12014887Schinecho '#pragma pp:map "/#(pragma )?sccs>/"' 12024887Schin 12034887Schincase $stdc:$spaceout in 12044887Schin1:) case ' '$reserved' ' in 12054887Schin *' 'asm' '*|*' 'asm=*) 12064887Schin echo "#macdef asm" 12074887Schin echo "#pragma pp:spaceout" 12084887Schin echo "#undef asm" 12094887Schin echo "asm" 12104887Schin echo "#endmac" 12114887Schin ;; 12124887Schin esac 12134887Schin ;; 12144887Schinesac 12154887Schin 12164887Schinif $cc -E preinc.$src > preinc.out 12174887Schinthen for f in `sed -e 's,\\\\,/,g' -e 's,"[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:/,"/,g' -e '/^#[line ]*[0123456789][0123456789]*[ ][ ]*"[\\/]/!d' -e 's/^#[line ]*[0123456789][0123456789]*[ ][ ]*".*[\\/]\(.*\)".*/\1/' preinc.out | sort -u` 12184887Schin do case $f in 12194887Schin *preinc.$src*) 12204887Schin ;; 12214887Schin *) echo "#include <$f>" 12224887Schin ;; 12234887Schin esac 12244887Schin done 12254887Schinfi 1226