1*b30d1939SAndy Fiddaman: 2*b30d1939SAndy Fiddaman# @(#)probe.win32 (AT&T Research) 2009-03-19 3*b30d1939SAndy Fiddaman# 4*b30d1939SAndy Fiddaman# win32 specific pp C probe initialization 5*b30d1939SAndy Fiddaman# wrapped cc's are easy on uwin 6*b30d1939SAndy Fiddaman# 7*b30d1939SAndy Fiddaman# 2> easy.err to avoid mysterious hang with bcc 8*b30d1939SAndy Fiddaman 9*b30d1939SAndy Fiddaman# begin preamble shared with the make probe.ini 10*b30d1939SAndy Fiddaman 11*b30d1939SAndy FiddamanIFS=$'\n' 12*b30d1939SAndy Fiddaman 13*b30d1939SAndy Fiddamanchmod 777 . 14*b30d1939SAndy Fiddaman 15*b30d1939SAndy Fiddamantypeset -A header version 16*b30d1939SAndy Fiddaman 17*b30d1939SAndy Fiddaman# we are probing on behalf of libpp and nmake 18*b30d1939SAndy Fiddaman# so the native preprocessor must be forced in 19*b30d1939SAndy Fiddaman# order to bootstrap libpp and nmake 20*b30d1939SAndy Fiddaman 21*b30d1939SAndy Fiddamannativepp=-1 22*b30d1939SAndy Fiddamanexport nativepp 23*b30d1939SAndy Fiddaman 24*b30d1939SAndy Fiddamanprobe_header=" 25*b30d1939SAndy Fiddamanstddef.h 26*b30d1939SAndy Fiddaman" 27*b30d1939SAndy Fiddamanfor inc in syslimits.h winerror.h ostream bits/ctype_base.h stream.h 28*b30d1939SAndy Fiddamando echo "#include <$inc>" > easy.c 29*b30d1939SAndy Fiddaman if $cc -E easy.c > /dev/null 2> easy.err 30*b30d1939SAndy Fiddaman then probe_header="$probe_header 31*b30d1939SAndy Fiddaman$inc 32*b30d1939SAndy Fiddaman" 33*b30d1939SAndy Fiddaman fi 34*b30d1939SAndy Fiddamandone 35*b30d1939SAndy Fiddaman 36*b30d1939SAndy Fiddaman{ 37*b30d1939SAndy Fiddamanfor i in $probe_header 38*b30d1939SAndy Fiddamando echo "#include <$i>" 39*b30d1939SAndy Fiddamandone 40*b30d1939SAndy Fiddamanecho '#ifdef __cplusplus' 41*b30d1939SAndy Fiddamanecho "int _Pr0b3_cplus=__cplusplus;" 42*b30d1939SAndy Fiddamanecho '#endif' 43*b30d1939SAndy Fiddamanecho '#ifdef _UWIN' 44*b30d1939SAndy Fiddamanecho "int _Pr0b3_uwin=_UWIN;" 45*b30d1939SAndy Fiddamanecho '#endif' 46*b30d1939SAndy Fiddamanecho '#ifdef __BORLANDC__' 47*b30d1939SAndy Fiddamanecho "int _Pr0b3_version_BORLAND=__BORLANDC__;" 48*b30d1939SAndy Fiddamanecho '#endif' 49*b30d1939SAndy Fiddamanecho '#ifdef __DMC__' 50*b30d1939SAndy Fiddamanecho "int _Pr0b3_version_DM=__DMC__;" 51*b30d1939SAndy Fiddamanecho '#endif' 52*b30d1939SAndy Fiddamanecho '#ifdef _MSC_VER' 53*b30d1939SAndy Fiddamanecho "int _Pr0b3_version_MS=_MSC_VER;" 54*b30d1939SAndy Fiddamanecho '#endif' 55*b30d1939SAndy Fiddamanecho '#ifdef __ICL' 56*b30d1939SAndy Fiddamanecho "int _Pr0b3_version_ICL=__ICL;" 57*b30d1939SAndy Fiddamanecho '#endif' 58*b30d1939SAndy Fiddamanecho '#ifdef __LCC__' 59*b30d1939SAndy Fiddamanecho "int _Pr0b3_version_LCC=0+__LCC__;" 60*b30d1939SAndy Fiddamanecho '#endif' 61*b30d1939SAndy Fiddamanecho '#ifdef __MINGW32__' 62*b30d1939SAndy Fiddamanecho "int _Pr0b3_version_MINGW=__MINGW32__;" 63*b30d1939SAndy Fiddamanecho '#endif' 64*b30d1939SAndy Fiddamanecho '#ifdef __INTERIX' 65*b30d1939SAndy Fiddamanecho "int _Pr0b3_version_INTERIX=__INTERIX;" 66*b30d1939SAndy Fiddamanecho '#endif' 67*b30d1939SAndy Fiddamanecho '#ifdef __WATCOMC__' 68*b30d1939SAndy Fiddamanecho "int _Pr0b3_version_WATCOM=__WATCOMC__;" 69*b30d1939SAndy Fiddamanecho '#endif' 70*b30d1939SAndy Fiddaman} > easy.c 71*b30d1939SAndy Fiddaman 72*b30d1939SAndy Fiddamaninclude= 73*b30d1939SAndy Fiddamanuwin= 74*b30d1939SAndy Fiddamancplus= 75*b30d1939SAndy Fiddaman 76*b30d1939SAndy Fiddaman$cc -E easy.c 2>&1 | 77*b30d1939SAndy Fiddamanegrep -i '^(#(line)? 1 .*\.[hH]| *int +_Pr0b3_[a-zA-Z_]* *= *[0-9])' | 78*b30d1939SAndy Fiddamansed -e 's,_Pr0b3_,,' \ 79*b30d1939SAndy Fiddaman -e 's/.*"\(.*\)".*/\1/' \ 80*b30d1939SAndy Fiddaman -e 's,^ *,,' \ 81*b30d1939SAndy Fiddaman -e 's, *$,,' \ 82*b30d1939SAndy Fiddaman -e 's, *= *,=,' \ 83*b30d1939SAndy Fiddaman -e 's,^\(.\):[\\/]*,/\1/,' \ 84*b30d1939SAndy Fiddaman -e 's,[\\/][\\/]*,/,g' \ 85*b30d1939SAndy Fiddaman -e 's,^\(/.*\)/\(.*\)$,header[\2]="\1",' \ 86*b30d1939SAndy Fiddaman -e 's, *int *\(.*\);.*,\1,' \ 87*b30d1939SAndy Fiddaman -e 's,^version_\(.*\)=,version[\1]=,' \ 88*b30d1939SAndy Fiddaman > easy.sh 89*b30d1939SAndy Fiddaman. ./easy.sh 90*b30d1939SAndy Fiddaman 91*b30d1939SAndy Fiddamaninclude= 92*b30d1939SAndy Fiddamanfor i in $probe_header 93*b30d1939SAndy Fiddamando d=${header[$i]} 94*b30d1939SAndy Fiddaman if [[ $d ]] 95*b30d1939SAndy Fiddaman then include="$include 96*b30d1939SAndy Fiddaman$d" 97*b30d1939SAndy Fiddaman elif [[ $i == */* ]] 98*b30d1939SAndy Fiddaman then d=${header[${i##*/}]} 99*b30d1939SAndy Fiddaman if [[ $d == */${i%/*} ]] 100*b30d1939SAndy Fiddaman then include="$include 101*b30d1939SAndy Fiddaman${d%/${i%/*}}" 102*b30d1939SAndy Fiddaman fi 103*b30d1939SAndy Fiddaman fi 104*b30d1939SAndy Fiddamandone 105*b30d1939SAndy Fiddaman 106*b30d1939SAndy Fiddamani=$($cc -V 2> easy.err) 107*b30d1939SAndy Fiddamanif test "" != "$i" -a -d "$i/include" 108*b30d1939SAndy Fiddamanthen include="$i/include 109*b30d1939SAndy Fiddaman$include" 110*b30d1939SAndy Fiddamanfi 111*b30d1939SAndy Fiddaman 112*b30d1939SAndy Fiddamanstdinclude= 113*b30d1939SAndy Fiddamanfor inc in $include 114*b30d1939SAndy Fiddamando if [[ ${inc%/*} -ef /msdev/platformsdk ]] 115*b30d1939SAndy Fiddaman then inc=/msdev/platformsdk/${inc##*/} 116*b30d1939SAndy Fiddaman elif [[ ${inc%/*} -ef /platformsdk ]] 117*b30d1939SAndy Fiddaman then inc=/platformsdk/${inc##*/} 118*b30d1939SAndy Fiddaman fi 119*b30d1939SAndy Fiddaman for dup in $stdinclude 120*b30d1939SAndy Fiddaman do [[ $inc -ef $dup ]] && continue 2 121*b30d1939SAndy Fiddaman done 122*b30d1939SAndy Fiddaman stdinclude="$stdinclude 123*b30d1939SAndy Fiddaman$inc" 124*b30d1939SAndy Fiddamandone 125*b30d1939SAndy Fiddaman 126*b30d1939SAndy Fiddaman# end preamble shared with the make probe.ini 127*b30d1939SAndy Fiddaman 128*b30d1939SAndy Fiddamanpragexpand='#pragma pp:pragmaexpand' 129*b30d1939SAndy Fiddaman 130*b30d1939SAndy Fiddamanif [[ ${version[BORLAND]} ]] 131*b30d1939SAndy Fiddamanthen version=${version[BORLAND]} VERSION=__BORLANDC__ 132*b30d1939SAndy Fiddaman reserved="#pragma pp:reserved __asm=GROUP __based=GROUP __cdecl __declspec=GROUP __except __export __far __fastcall __finally __huge __inline __int16 __int32 __int64 __int8 __leave __near __novtordisp __pascal __restrict __stdcall __syscall __try __unaligned __wchar_t 133*b30d1939SAndy Fiddaman#pragma pp:reserved _asm=GROUP _based=GROUP _cdecl _declspec=GROUP _except _export _far _fastcall _finally _fortran _huge _int16 _int32 _int64 _int8 _leave _near _pascal _stdcall _syscall _try 134*b30d1939SAndy Fiddaman#pragma pp:reserved cdecl const enum far fortran huge near pascal signed void volatile" 135*b30d1939SAndy Fiddaman specific="#define <long long> __int64 136*b30d1939SAndy Fiddaman#define <__int64 int> __int64 137*b30d1939SAndy Fiddaman#define <__int64 unsigned> unsigned __int64" 138*b30d1939SAndy Fiddaman pragexpand='#pragma pp:nopragmaexpand' 139*b30d1939SAndy Fiddaman pragmas="#pragma pp:nocatliteral 140*b30d1939SAndy Fiddaman#pragma pp:stringsplit 141*b30d1939SAndy Fiddaman#pragma pp:lineid line" 142*b30d1939SAndy Fiddamanelif [[ ${version[DM]} ]] 143*b30d1939SAndy Fiddamanthen version=${version[DM]} VERSION=__DMC__ 144*b30d1939SAndy Fiddaman reserved="#pragma pp:reserved _Bool _Complex _Imaginary asm=GROUP _asm=GROUP __asm=GROUP const enum _fortran __inline _int64 __int64 __restrict signed void volatile _based=GROUP __based=GROUP cdecl _cdecl __cdecl _declspec=GROUP __declspec=GROUP _except __except _export __export far _far __far _fastcall __fastcall _finally __finally huge _huge __huge _interrupt __interrupt _leave __leave _loadds __loadds near _near __near pascal _pascal __pascal _saveregs __saveregs _segname __segname _stdcall __stdcall _syscall __syscall _try __try _cs __cs _ss __ss _unaligned __unaligned" 145*b30d1939SAndy Fiddaman specific="#define __TIMESTAMP__ __DATE__ \" \" __TIME__" 146*b30d1939SAndy Fiddaman pragmas="#pragma pp:transition 147*b30d1939SAndy Fiddaman#pragma pp:elseif 148*b30d1939SAndy Fiddaman#pragma pp:lineid line" 149*b30d1939SAndy Fiddamanelif [[ ${version[MS]} ]] 150*b30d1939SAndy Fiddamanthen version=${version[MS]} VERSION=_MSC_VER 151*b30d1939SAndy Fiddaman reserved="#pragma pp:reserved __asm=GROUP __based=GROUP __cdecl __declspec=GROUP __except __export __far __fastcall __finally __huge __inline __int16 __int32 __int64 __int8 __leave __near __novtordisp __pascal __restrict __stdcall __syscall __try __unaligned __wchar_t 152*b30d1939SAndy Fiddaman#pragma pp:reserved _asm=GROUP _based=GROUP _cdecl _declspec=GROUP _except _export _far _fastcall _finally _fortran _huge _int16 _int32 _int64 _int8 _leave _near _pascal _stdcall _syscall _try 153*b30d1939SAndy Fiddaman#pragma pp:reserved cdecl const enum far fortran huge near pascal signed void volatile" 154*b30d1939SAndy Fiddaman specific="#define <long long> __int64 155*b30d1939SAndy Fiddaman#define <__int64 int> __int64 156*b30d1939SAndy Fiddaman#define <__int64 unsigned> unsigned __int64" 157*b30d1939SAndy Fiddaman pragmas="#pragma pp:lineid line" 158*b30d1939SAndy Fiddamanelif [[ ${version[LCC]} ]] 159*b30d1939SAndy Fiddamanthen version=${version[LCC]} VERSION=__LCC__ 160*b30d1939SAndy Fiddaman reserved="#pragma pp:reserved _Bool _Complex _asm=GROUP const enum inline __inline __int64 restrict signed void volatile _cdecl __cdecl __declspec=GROUP __except _huge _stdcall __stdcall __try" 161*b30d1939SAndy Fiddaman specific="#pragma pp:map \"/#(pragma )?import>/\" \"/#(pragma )?import(.*)/__STDPP__IMPORT__(\2)/\" 162*b30d1939SAndy Fiddaman#macdef __STDPP__IMPORT__(x) 163*b30d1939SAndy Fiddaman#pragma pp:noallmultiple 164*b30d1939SAndy Fiddaman#include x 165*b30d1939SAndy Fiddaman#pragma pp:allmultiple 166*b30d1939SAndy Fiddaman#endmac 167*b30d1939SAndy Fiddaman" 168*b30d1939SAndy Fiddaman pragmas="#pragma pp:hostedtransition 169*b30d1939SAndy Fiddaman#pragma pp:strict 170*b30d1939SAndy Fiddaman#pragma pp:spaceout 171*b30d1939SAndy Fiddaman#pragma pp:elseif 172*b30d1939SAndy Fiddaman" 173*b30d1939SAndy Fiddamanelif [[ ${version[MINGW]} ]] 174*b30d1939SAndy Fiddamanthen version=${version[MINGW]} VERSION=__MINGW32__ 175*b30d1939SAndy Fiddaman reserved="#pragma pp:reserved __declspec=GROUP __alignof=GROUP __alignof__=GROUP __attribute=GROUP __attribute__=GROUP __extension__=GROUP asm=GROUP __asm=GROUP __asm__=GROUP const __const __const__ enum inline __inline __inline__ __restrict __restrict__ signed __signed __signed__ typeof=GROUP __typeof=GROUP __typeof__=GROUP void volatile __volatile __volatile__ __cdecl _stdcall __stdcall" 176*b30d1939SAndy Fiddaman specific="#define __declspec(x) __attribute__((x))" 177*b30d1939SAndy Fiddaman pragexpand='#pragma pp:nopragmaexpand' 178*b30d1939SAndy Fiddaman pragmas='#pragma pp:map "/#include_next>/" ",[^\<]*\<,#include <.../," 179*b30d1939SAndy Fiddaman#pragma pp:lineid 180*b30d1939SAndy Fiddaman#pragma pp:linetype 2' 181*b30d1939SAndy Fiddamanfi 182*b30d1939SAndy Fiddaman 183*b30d1939SAndy Fiddamanundef_predef= 184*b30d1939SAndy Fiddamanecho "char* fun() { return (char*)__FUNCTION__; } 185*b30d1939SAndy Fiddamanint main() { return !fun(); }" > easy.c 186*b30d1939SAndy Fiddamanrm -f easy.exe 187*b30d1939SAndy Fiddamanif $cc -o easy.exe easy.c && test -x easy.exe 188*b30d1939SAndy Fiddamanthen undef_predef="$undef_predef 189*b30d1939SAndy Fiddaman#undef __FUNCTION__" 190*b30d1939SAndy Fiddamanfi 191*b30d1939SAndy Fiddaman 192*b30d1939SAndy Fiddamandialect=ansi 193*b30d1939SAndy Fiddamanif [[ $cplus ]] 194*b30d1939SAndy Fiddamanthen dialect=C++ 195*b30d1939SAndy Fiddamanfi 196*b30d1939SAndy Fiddaman 197*b30d1939SAndy Fiddamanif [[ $version == [0-9]* && $stdinclude ]] 198*b30d1939SAndy Fiddamanthen hosttype=$(package) 199*b30d1939SAndy Fiddaman machine=${hosttype#*.} 200*b30d1939SAndy Fiddaman case $uwin in 201*b30d1939SAndy Fiddaman [0-9]*) standard=" 202*b30d1939SAndy Fiddaman#pragma pp:include \"/usr/include\"" 203*b30d1939SAndy Fiddaman assert=" 204*b30d1939SAndy Fiddaman#define #system(unix) 205*b30d1939SAndy Fiddaman#define #release(V) 206*b30d1939SAndy Fiddaman#define #release(system5) 207*b30d1939SAndy Fiddaman#define #version(${version})" 208*b30d1939SAndy Fiddaman ;; 209*b30d1939SAndy Fiddaman *) predefined="" 210*b30d1939SAndy Fiddaman standard="" 211*b30d1939SAndy Fiddaman assert="" 212*b30d1939SAndy Fiddaman ;; 213*b30d1939SAndy Fiddaman esac 214*b30d1939SAndy Fiddaman for inc in $stdinclude 215*b30d1939SAndy Fiddaman do standard="$standard 216*b30d1939SAndy Fiddaman#pragma pp:include \"$inc\"" 217*b30d1939SAndy Fiddaman done 218*b30d1939SAndy Fiddaman : the payoff 219*b30d1939SAndy Fiddaman set -- $cc 220*b30d1939SAndy Fiddaman cmd=$1 221*b30d1939SAndy Fiddaman shift 222*b30d1939SAndy Fiddaman set -- $(whence $cmd) "$@" 223*b30d1939SAndy Fiddaman if "$@" -v >/dev/null 2>&1 224*b30d1939SAndy Fiddaman then v=$("$@" -v 2>/dev/null) 225*b30d1939SAndy Fiddaman if [[ $v ]] 226*b30d1939SAndy Fiddaman then v=";VERSION;-v;$v;PATH;$*" 227*b30d1939SAndy Fiddaman fi 228*b30d1939SAndy Fiddaman else v= 229*b30d1939SAndy Fiddaman fi 230*b30d1939SAndy Fiddaman if [[ ! $v ]] 231*b30d1939SAndy Fiddaman then v="$*" 232*b30d1939SAndy Fiddaman fi 233*b30d1939SAndy Fiddaman cat >&3 <<! 234*b30d1939SAndy Fiddaman/* $v 235*b30d1939SAndy Fiddaman*/ 236*b30d1939SAndy Fiddaman 237*b30d1939SAndy Fiddaman#pragma pp:predefined 238*b30d1939SAndy Fiddaman#define _STD_INCLUDE_DIR ... 239*b30d1939SAndy Fiddaman#define _${machine}_ 1 240*b30d1939SAndy Fiddaman! 241*b30d1939SAndy Fiddaman { 242*b30d1939SAndy Fiddaman cat <<'!' 243*b30d1939SAndy Fiddaman#ifdef unix 244*b30d1939SAndy Fiddamanchar* str_unix = "#define unix" unix ; 245*b30d1939SAndy Fiddamanchar* str___unix__ = "#define __unix__" 1 ; 246*b30d1939SAndy Fiddaman#else 247*b30d1939SAndy Fiddaman#ifdef __unix__ 248*b30d1939SAndy Fiddamanchar* str___unix__ = "#define __unix__" __unix__ ; 249*b30d1939SAndy Fiddaman#endif 250*b30d1939SAndy Fiddaman#endif 251*b30d1939SAndy Fiddaman! 252*b30d1939SAndy Fiddaman premac=" 253*b30d1939SAndy FiddamanM_I86 254*b30d1939SAndy FiddamanM_I386 255*b30d1939SAndy FiddamanM_I386CM 256*b30d1939SAndy FiddamanM_I386LM 257*b30d1939SAndy FiddamanM_I386MM 258*b30d1939SAndy FiddamanM_I386SM 259*b30d1939SAndy FiddamanMSDOS 260*b30d1939SAndy FiddamanNO_EXT_KEYS 261*b30d1939SAndy Fiddaman_ALPHA_ 262*b30d1939SAndy Fiddaman_AXP64_ 263*b30d1939SAndy Fiddaman_CPPUNWIND 264*b30d1939SAndy Fiddaman_GENIA64_ 265*b30d1939SAndy Fiddaman_INTEGRAL_MAX_BITS 266*b30d1939SAndy Fiddaman_MSC_EXTENSIONS 267*b30d1939SAndy Fiddaman_MSC_VER 268*b30d1939SAndy Fiddaman_M_ALPHA 269*b30d1939SAndy Fiddaman_M_ALPHA_ 270*b30d1939SAndy Fiddaman_M_AMD64 271*b30d1939SAndy Fiddaman_M_IA64 272*b30d1939SAndy Fiddaman_M_IX86 273*b30d1939SAndy Fiddaman_M_MRX000 274*b30d1939SAndy Fiddaman_M_PPC 275*b30d1939SAndy Fiddaman_NTSYSTEM_ 276*b30d1939SAndy Fiddaman_POSIX_ 277*b30d1939SAndy Fiddaman_PUSHPOP_SUPPORTED 278*b30d1939SAndy Fiddaman_STDCALL_SUPPORTED 279*b30d1939SAndy Fiddaman_UWIN 280*b30d1939SAndy Fiddaman_WIN32 281*b30d1939SAndy Fiddaman_WIN64 282*b30d1939SAndy Fiddaman_X64_ 283*b30d1939SAndy Fiddaman_X86_ 284*b30d1939SAndy Fiddaman_stdcall 285*b30d1939SAndy Fiddaman__BORLANDC__ 286*b30d1939SAndy Fiddaman__CHAR_SIGNED__ 287*b30d1939SAndy Fiddaman__CHAR_UNSIGNED__ 288*b30d1939SAndy Fiddaman__COMPACT__ 289*b30d1939SAndy Fiddaman__DEFALIGN 290*b30d1939SAndy Fiddaman__DMC__ 291*b30d1939SAndy Fiddaman__DOS__ 292*b30d1939SAndy Fiddaman__ECL__ 293*b30d1939SAndy Fiddaman__EDG__ 294*b30d1939SAndy Fiddaman__FLAT__ 295*b30d1939SAndy Fiddaman__FPCE__ 296*b30d1939SAndy Fiddaman__FPI__ 297*b30d1939SAndy Fiddaman__GNUC__ 298*b30d1939SAndy Fiddaman__GNUC_MINOR__ 299*b30d1939SAndy Fiddaman__GNUG__ 300*b30d1939SAndy Fiddaman__HUGE__ 301*b30d1939SAndy Fiddaman__I86__ 302*b30d1939SAndy Fiddaman__ICL 303*b30d1939SAndy Fiddaman__INITIAL_POINTER_SIZE 304*b30d1939SAndy Fiddaman__INLINE_8087 305*b30d1939SAndy Fiddaman__INLINE__FUNCTIONS__ 306*b30d1939SAndy Fiddaman__INTEL_COMPILER 307*b30d1939SAndy Fiddaman__INTERIX 308*b30d1939SAndy Fiddaman__INTSIZE 309*b30d1939SAndy Fiddaman__LARGE__ 310*b30d1939SAndy Fiddaman__LCCDEBUGLEVEL 311*b30d1939SAndy Fiddaman__LCCOPTIMLEVEL 312*b30d1939SAndy Fiddaman__LCC__ 313*b30d1939SAndy Fiddaman__MEDIUM__ 314*b30d1939SAndy Fiddaman__MINGW32__ 315*b30d1939SAndy Fiddaman__MSVCRT__ 316*b30d1939SAndy Fiddaman__NT__ 317*b30d1939SAndy Fiddaman__OPENNT 318*b30d1939SAndy Fiddaman__OS2__ 319*b30d1939SAndy Fiddaman__QNX__ 320*b30d1939SAndy Fiddaman__SC__ 321*b30d1939SAndy Fiddaman__SMALL__ 322*b30d1939SAndy Fiddaman__STATIC__ 323*b30d1939SAndy Fiddaman__STDC__ 324*b30d1939SAndy Fiddaman__STDC_HOSTED__ 325*b30d1939SAndy Fiddaman__STDC_IEC_559__ 326*b30d1939SAndy Fiddaman__STDC_IEC_559_COMPLEX__ 327*b30d1939SAndy Fiddaman__STDC_ISO_10646__ 328*b30d1939SAndy Fiddaman__STDC_VERSION__ 329*b30d1939SAndy Fiddaman__STRLEN 330*b30d1939SAndy Fiddaman__TURBOC__ 331*b30d1939SAndy Fiddaman__WATCOMC__ 332*b30d1939SAndy Fiddaman__WIN32__ 333*b30d1939SAndy Fiddaman__WINDOWS__ 334*b30d1939SAndy Fiddaman__WINDOWS_386__ 335*b30d1939SAndy Fiddaman__WINVER__ 336*b30d1939SAndy Fiddaman__ZTC__ 337*b30d1939SAndy Fiddaman__cdecl 338*b30d1939SAndy Fiddaman__cplusplus 339*b30d1939SAndy Fiddaman__i386 340*b30d1939SAndy Fiddaman__i386__ 341*b30d1939SAndy Fiddaman__i486 342*b30d1939SAndy Fiddaman__i486__ 343*b30d1939SAndy Fiddaman__i586 344*b30d1939SAndy Fiddaman__i586__ 345*b30d1939SAndy Fiddaman__i686 346*b30d1939SAndy Fiddaman__i686__ 347*b30d1939SAndy Fiddaman__k6 348*b30d1939SAndy Fiddaman__k6__ 349*b30d1939SAndy Fiddaman__pentium 350*b30d1939SAndy Fiddaman__pentium__ 351*b30d1939SAndy Fiddaman__pentiumpro 352*b30d1939SAndy Fiddaman__pentiumpro__ 353*b30d1939SAndy Fiddaman__stdcall 354*b30d1939SAndy Fiddaman" 355*b30d1939SAndy Fiddaman echo "#define s(x) #x" 356*b30d1939SAndy Fiddaman echo "#define q(x) s(x)" 357*b30d1939SAndy Fiddaman for i in $premac 358*b30d1939SAndy Fiddaman do echo "#ifdef $i" 359*b30d1939SAndy Fiddaman echo "char* str_$i = \"#define $i\" q(:$i:);" 360*b30d1939SAndy Fiddaman echo "#endif" 361*b30d1939SAndy Fiddaman done 362*b30d1939SAndy Fiddaman } > easy.c 363*b30d1939SAndy Fiddaman $cc -E easy.c > easy.out 2>&1 364*b30d1939SAndy Fiddaman sed -e '/=/!d' -e 's,[^"]*,echo ,' -e 's/":/"/' -e 's/:"/"/' easy.out > easy.sh 365*b30d1939SAndy Fiddaman . ./easy.sh >&3 366*b30d1939SAndy Fiddaman if [[ $cc == *CC ]] 367*b30d1939SAndy Fiddaman then src=cpp 368*b30d1939SAndy Fiddaman else src=c 369*b30d1939SAndy Fiddaman fi 370*b30d1939SAndy Fiddaman print 'typedef char wchar_t;' > easy.$src 371*b30d1939SAndy Fiddaman if ! $cc -c easy.$src >/dev/null 2>&1 372*b30d1939SAndy Fiddaman then print -u3 '#define _WCHAR_T_DEFINED 1' 373*b30d1939SAndy Fiddaman print -u3 '#define _NATIVE_WCHAR_T_DEFINED 1' 374*b30d1939SAndy Fiddaman if [[ ! $reserved ]] 375*b30d1939SAndy Fiddaman then reserved="#pragma pp:reserved" 376*b30d1939SAndy Fiddaman fi 377*b30d1939SAndy Fiddaman reserved="$reserved wchar_t" 378*b30d1939SAndy Fiddaman fi 379*b30d1939SAndy Fiddaman cat >&3 <<! 380*b30d1939SAndy Fiddaman#pragma pp:nopredefined 381*b30d1939SAndy Fiddaman 382*b30d1939SAndy Fiddaman$specific 383*b30d1939SAndy Fiddaman 384*b30d1939SAndy Fiddaman#define #hosttype(${hosttype})${assert} 385*b30d1939SAndy Fiddaman#define #architecture(${machine}) 386*b30d1939SAndy Fiddaman#define #model() 387*b30d1939SAndy Fiddaman#define #machine(${machine}) 388*b30d1939SAndy Fiddaman#define #addressing() 389*b30d1939SAndy Fiddaman#define #preroot() 390*b30d1939SAndy Fiddaman#define #universe(att) 391*b30d1939SAndy Fiddaman#define #dialect(${dialect}) 392*b30d1939SAndy Fiddaman$undef_predef 393*b30d1939SAndy Fiddaman 394*b30d1939SAndy Fiddaman$reserved 395*b30d1939SAndy Fiddaman 396*b30d1939SAndy Fiddaman$pragmas 397*b30d1939SAndy Fiddaman 398*b30d1939SAndy Fiddaman#pragma pp:pluscomment 399*b30d1939SAndy Fiddaman$pragexpand 400*b30d1939SAndy Fiddaman#pragma pp:zeof 401*b30d1939SAndy Fiddaman#pragma pp:id "$"${standard} 402*b30d1939SAndy Fiddaman#pragma pp:nocatliteral 403*b30d1939SAndy Fiddaman#pragma pp:stringsplit 404*b30d1939SAndy Fiddaman#pragma pp:headerexpand 405*b30d1939SAndy Fiddaman#pragma pp:map "/#(pragma )?ident>/" 406*b30d1939SAndy Fiddaman#pragma pp:map "/#pragma lint:/" ",#pragma lint:(.*),##/*\1*/,u" 407*b30d1939SAndy Fiddaman#pragma pp:map "/#(pragma )?sccs>/" 408*b30d1939SAndy Fiddaman#pragma pp:map "/#pragma once/" ",#pragma once,#pragma pp:nomultiple," 409*b30d1939SAndy Fiddaman#pragma pp:map "/#pragma comment.*linker.*manifest/" 410*b30d1939SAndy Fiddaman! 411*b30d1939SAndy Fiddaman exit 0 412*b30d1939SAndy Fiddamanfi 413