1*b30d1939SAndy Fiddaman: 2*b30d1939SAndy Fiddaman### this script contains archaic constructs that work with all sh variants ### 3*b30d1939SAndy Fiddaman# Glenn Fowler 4*b30d1939SAndy Fiddaman# AT&T Research 5*b30d1939SAndy Fiddaman# 6*b30d1939SAndy Fiddaman# @(#)make.probe (AT&T Research) 2011-06-01 7*b30d1939SAndy Fiddaman# 8*b30d1939SAndy Fiddaman# C probe for make 9*b30d1939SAndy Fiddaman# 10*b30d1939SAndy Fiddaman# NOTE: C.probe must be included or .'d here 11*b30d1939SAndy Fiddaman# 12*b30d1939SAndy Fiddaman 13*b30d1939SAndy Fiddamancc_dll_def=-D_BLD_DLL 14*b30d1939SAndy Fiddaman 15*b30d1939SAndy Fiddamanprobe_ar_arflags="-Xany" 16*b30d1939SAndy Fiddamanprobe_arflags="-xar" 17*b30d1939SAndy Fiddamanprobe_ccs="strip size nm ld ar" # longest to shortest 18*b30d1939SAndy Fiddamanprobe_debug="-g" 19*b30d1939SAndy Fiddamanprobe_dll="'-G 0' -Wc,dll,exportall,longname,rent -Wc,exportall -dynamic $cc_dll_def" 20*b30d1939SAndy Fiddamanprobe_export_dynamic="-rdynamic -export-dynamic -Wl,-export-dynamic -Wl,-E -bexpall -force_flat_namespace" 21*b30d1939SAndy Fiddamanprobe_gcc_optimize="-O2" 22*b30d1939SAndy Fiddamanprobe_gcc_version="*[Gg][Cc][Cc]*" 23*b30d1939SAndy Fiddamanprobe_include_local="'-ignore-source-dir -iquote' -iquote -I-" 24*b30d1939SAndy Fiddamanprobe_ldlazy='-zlazyload -znolazyload -Wl,-zlazyload -Wl,-znolazyload' 25*b30d1939SAndy Fiddamanprobe_ldlib="LD_LIBRARY_PATH LIBPATH LPATH" 26*b30d1939SAndy Fiddamanprobe_ldmap="'-Wl,-M' '-Qoption ld -M' '-Wl,-m' '-m'" 27*b30d1939SAndy Fiddamanprobe_ldorigin="-Wl,-z,origin" 28*b30d1939SAndy Fiddamanprobe_ldrecord='-zrecord -zignore -Wl,-zrecord -Wl,-zignore' 29*b30d1939SAndy Fiddamanprobe_ldrunpath="-Wl,-R, -R -Wl,-rpath, -L" 30*b30d1939SAndy Fiddamanprobe_ldstrip="'-s -mr' -Wl,-s" 31*b30d1939SAndy Fiddamanprobe_lib="a lib" 32*b30d1939SAndy Fiddamanprobe_lib_append="/usr/lib/pa1.1" 33*b30d1939SAndy Fiddamanprobe_lib_all_undef="-all -notall -all -none -Bwhole-archive -Bno-whole-archive -whole-archive -no-whole-archive -Wl,-whole-archive -Wl,-no-whole-archive -all_load '' -Wl,-zallextract -Wl,-zdefaultextract +forceload +noforceload" 34*b30d1939SAndy Fiddamanprobe_lib_multiple="-Wl,-zmuldefs" 35*b30d1939SAndy Fiddamanprobe_libdir="shlib lib" 36*b30d1939SAndy Fiddamanprobe_nmflags="'' -p -B" 37*b30d1939SAndy Fiddamanprobe_optimize="-O" 38*b30d1939SAndy Fiddamanprobe_pic="-Kpic -KPIC -fpic -fPIC -pic -PIC +z +Z" 39*b30d1939SAndy Fiddamanprobe_no_protect="'-fno-stack-protector -fno-stack-protector-all' -GS-" 40*b30d1939SAndy Fiddamanprobe_readonly="-R -Krodata -xMerge -Wa,-r" 41*b30d1939SAndy Fiddamanprobe_shared="'' -G -b -c -shared -Wl,dll" 42*b30d1939SAndy Fiddamanprobe_shared_name="-Wl,-soname= -h" 43*b30d1939SAndy Fiddamanprobe_shared_nostart="-nostartfiles" 44*b30d1939SAndy Fiddamanprobe_shared_registry='"-update_registry $probe_shared_registry_file"' 45*b30d1939SAndy Fiddamanprobe_shared_registry_file='registry.ld' 46*b30d1939SAndy Fiddamanprobe_shared_registry_path="\$(LIBDIR)/$probe_shared_registry_file" 47*b30d1939SAndy Fiddamanprobe_strict="'-ansi -pedantic' '-ansi -strict' -strict -ansi" 48*b30d1939SAndy Fiddamanprobe_stripflags="'-f -s' -f -s" 49*b30d1939SAndy Fiddamanprobe_unresolved="'-expect_unresolved \"*\"'" 50*b30d1939SAndy Fiddamanprobe_warn="-Wall -fullwarn -w3 '-A -A' +w1" 51*b30d1939SAndy Fiddaman 52*b30d1939SAndy Fiddamanecho '#pragma pp:version' > libpp.$src 53*b30d1939SAndy Fiddamanecho '#define dDflag on' > dDflag.$src 54*b30d1939SAndy Fiddamanecho 'int main(){return 0;}' > doti.$src 55*b30d1939SAndy Fiddamanecho 'int code(){return 0;} int main(){return code();}' > export.$src 56*b30d1939SAndy Fiddamanecho '#include <stdio.h>' > imstd.$src 57*b30d1939SAndy Fiddamanecho '#include "_i_.h"' > imusr.$src 58*b30d1939SAndy Fiddamanecho 'int x;' > _i_.h 59*b30d1939SAndy Fiddamanmkdir im 60*b30d1939SAndy Fiddamanecho '(' > im/stdio.h 61*b30d1939SAndy Fiddamanecho '#include "implc_x.h" 62*b30d1939SAndy Fiddamanint main(){f(1);return 0;}' > implc.$src 63*b30d1939SAndy Fiddamanecho 'template <class T> void f(T){}' > implc_x.$src 64*b30d1939SAndy Fiddamanecho 'template <class T> void f(T);' > implc_x.h 65*b30d1939SAndy Fiddamanecho 'extern int NotalL(){return(0);}' > notall.$src 66*b30d1939SAndy Fiddamanecho '#include <stdio.h> 67*b30d1939SAndy Fiddamanextern int i; 68*b30d1939SAndy Fiddamanint i = 1; 69*b30d1939SAndy Fiddamanextern int f(){return(!i);} 70*b30d1939SAndy Fiddamanint main(){FILE* fp=stdin;return(f());}' > pic.$src 71*b30d1939SAndy Fiddamanecho 'class x {int n;} m;' > plusplus.$src 72*b30d1939SAndy Fiddamanecho 'int prefix(){return 0;}' > prefix.$src 73*b30d1939SAndy Fiddamanecho 'template<class T> int gt(T a, T b); 74*b30d1939SAndy Fiddamantemplate<class T> int gt(T a, T b) { return a > b; } 75*b30d1939SAndy Fiddamanint main () { return gt(2,1); }' > ptr.$src 76*b30d1939SAndy Fiddamanecho 'int main(){return 0;}' > require.$src 77*b30d1939SAndy Fiddamanecho '#if mips && !sgi || __CYGWIN__ 78*b30d1939SAndy Fiddaman( /* some systems choke on this probe */ 79*b30d1939SAndy Fiddaman#else 80*b30d1939SAndy Fiddaman#if test_const 81*b30d1939SAndy Fiddaman#define CONST const 82*b30d1939SAndy Fiddaman#else 83*b30d1939SAndy Fiddaman#define CONST 84*b30d1939SAndy Fiddaman#endif 85*b30d1939SAndy FiddamanCONST char x[]={1,2,3,4,5,6,7,8,9,0}; 86*b30d1939SAndy Fiddamanint main(){*(char*)x=0; return x[0];} 87*b30d1939SAndy Fiddaman#endif' > readonly.$src 88*b30d1939SAndy Fiddaman# NOTE: sfclose() defined on uwin, not defined on all other systems 89*b30d1939SAndy Fiddamanecho 'extern int sfclose(); extern int ShareD(){return(sfclose());}' > shared.$src 90*b30d1939SAndy Fiddamanecho '#define g(a,b) a ## b 91*b30d1939SAndy Fiddamanvolatile int a; 92*b30d1939SAndy Fiddamanconst int g(x,y)=1; 93*b30d1939SAndy Fiddamanextern int c(int);' > stdc.$src 94*b30d1939SAndy Fiddamanecho 'extern int f(); int main() { return f(); }' > sovmain.$src 95*b30d1939SAndy Fiddamanecho 'int f() { return 0; }' > sovlib.$src 96*b30d1939SAndy Fiddamanecho '#include <stdio.h> 97*b30d1939SAndy Fiddamanint i; 98*b30d1939SAndy Fiddamanint main(){int j;j = i * 10;return j;}' > strip.$src 99*b30d1939SAndy Fiddamanecho 'template <class T> void f(T){} 100*b30d1939SAndy Fiddamanint main(){f(1);return 0;}' > toucho.$src 101*b30d1939SAndy Fiddamanecho '#if defined(__STDC__) || defined(__cplusplus) 102*b30d1939SAndy Fiddamanextern type call(int); 103*b30d1939SAndy Fiddaman#endif 104*b30d1939SAndy Fiddamanint main() {call(0);return(0);}' > tstlib.$src 105*b30d1939SAndy Fiddamanecho 'int main(){return 0;}' > warn.$src 106*b30d1939SAndy Fiddamanecho 'int f(){return 0;}' > warn1.$src 107*b30d1939SAndy Fiddamanecho 'int f(){}' > warn2.$src 108*b30d1939SAndy Fiddamanecho 'int f(){int i; return 0;}' > warn3.$src 109*b30d1939SAndy Fiddamanecho 'int f(){int i; return i;}' > warn4.$src 110*b30d1939SAndy Fiddamanecho 'int f(){return g();}' > warn5.$src 111*b30d1939SAndy Fiddamanwarn_enum="1 2 3 4 5" 112*b30d1939SAndy Fiddaman 113*b30d1939SAndy Fiddamanchmod -w *.$src 114*b30d1939SAndy Fiddaman 115*b30d1939SAndy Fiddamanar_arflags= 116*b30d1939SAndy Fiddamanarflags= 117*b30d1939SAndy Fiddamancc_dll= 118*b30d1939SAndy Fiddamancc_pic= 119*b30d1939SAndy Fiddamancc_PIC= 120*b30d1939SAndy FiddamandDflag= 121*b30d1939SAndy Fiddamandebug= 122*b30d1939SAndy Fiddamandialect= 123*b30d1939SAndy Fiddamandll_dir='$(LIBDIR)' 124*b30d1939SAndy Fiddamandll_libraries= 125*b30d1939SAndy Fiddamandll_variants= 126*b30d1939SAndy Fiddamandoti= 127*b30d1939SAndy Fiddamanexectype= 128*b30d1939SAndy Fiddamanexport_dynamic= 129*b30d1939SAndy Fiddamangnu= 130*b30d1939SAndy Fiddamanimplicitc= 131*b30d1939SAndy Fiddamaninclude_local= 132*b30d1939SAndy Fiddamanlddynamic= 133*b30d1939SAndy Fiddamanldlazy= 134*b30d1939SAndy Fiddamanldnolazy= 135*b30d1939SAndy Fiddamanldnorecord= 136*b30d1939SAndy Fiddamanldorigin= 137*b30d1939SAndy Fiddamanldrecord= 138*b30d1939SAndy Fiddamanldrunpath= 139*b30d1939SAndy Fiddamanldscript= 140*b30d1939SAndy Fiddamanldstatic= 141*b30d1939SAndy Fiddamanldstrip= 142*b30d1939SAndy FiddamanLflag= 143*b30d1939SAndy Fiddamanlib_dll= 144*b30d1939SAndy Fiddamanlib_all= 145*b30d1939SAndy Fiddamanlib_undef= 146*b30d1939SAndy Fiddamanlibpath= 147*b30d1939SAndy Fiddamanlibpp= 148*b30d1939SAndy Fiddamanmakeoptions= 149*b30d1939SAndy Fiddamannmedit= 150*b30d1939SAndy Fiddamannmflags= 151*b30d1939SAndy Fiddamanno_protect= 152*b30d1939SAndy Fiddamanoptimize= 153*b30d1939SAndy Fiddamanplusplus= 154*b30d1939SAndy Fiddamanprefix_archive=lib 155*b30d1939SAndy Fiddamanprefix_dynamic= 156*b30d1939SAndy Fiddamanprefix_shared=lib 157*b30d1939SAndy Fiddamanptrcopy= 158*b30d1939SAndy Fiddamanptrimplicit= 159*b30d1939SAndy Fiddamanptrmkdir= 160*b30d1939SAndy Fiddamanreadonly= 161*b30d1939SAndy Fiddamanrepository= 162*b30d1939SAndy Fiddamanrequire= 163*b30d1939SAndy Fiddamanrunpath= 164*b30d1939SAndy Fiddamanshared= 165*b30d1939SAndy Fiddamanshared_name= 166*b30d1939SAndy Fiddamanshared_registry= 167*b30d1939SAndy Fiddamanshellmagic= 168*b30d1939SAndy Fiddamansoversion= 169*b30d1939SAndy Fiddamanstdc= 170*b30d1939SAndy Fiddamanstrict= 171*b30d1939SAndy Fiddamanstripflags= 172*b30d1939SAndy Fiddamansymprefix= 173*b30d1939SAndy Fiddamantoucho= 174*b30d1939SAndy Fiddamanwarn= 175*b30d1939SAndy Fiddaman 176*b30d1939SAndy Fiddamanset $probe_lib 177*b30d1939SAndy Fiddamanlib=$1 178*b30d1939SAndy Fiddaman 179*b30d1939SAndy Fiddamand= 180*b30d1939SAndy Fiddamanfor f in $stdinclude $usrinclude 181*b30d1939SAndy Fiddamando case $f in 182*b30d1939SAndy Fiddaman -I*) ;; 183*b30d1939SAndy Fiddaman *) d="$d $f" ;; 184*b30d1939SAndy Fiddaman esac 185*b30d1939SAndy Fiddamandone 186*b30d1939SAndy Fiddamanstdinclude=$d 187*b30d1939SAndy Fiddaman 188*b30d1939SAndy Fiddamanset x $cc 189*b30d1939SAndy Fiddamancc_dir=`echo $2 | sed -e 's,/*[^/]*$,,'` 190*b30d1939SAndy Fiddamanfor c in $probe_ccs 191*b30d1939SAndy Fiddamando if $executable $cc_dir/$c 192*b30d1939SAndy Fiddaman then x=$cc_dir/$c 193*b30d1939SAndy Fiddaman else x=$c 194*b30d1939SAndy Fiddaman fi 195*b30d1939SAndy Fiddaman eval $c='$x' 196*b30d1939SAndy Fiddamandone 197*b30d1939SAndy Fiddamanld_dir= 198*b30d1939SAndy Fiddamanrm -f doti.$obj 199*b30d1939SAndy Fiddamanif $cc -c doti.$src 200*b30d1939SAndy Fiddamanthen eval set x $probe_verbose 201*b30d1939SAndy Fiddaman shift 202*b30d1939SAndy Fiddaman for o 203*b30d1939SAndy Fiddaman do $cc $o doti.$obj 204*b30d1939SAndy Fiddaman $cc $o doti.$obj -lF0oB@r 205*b30d1939SAndy Fiddaman done 2>&1 | sed -e 's/^[+ ]*//' -e 's/[ ].*//' -e '/^\//!d' -e 's/:$//' -e '/ld[a-zA-Z0-9.]*$/!d' -e 's,///*,/,g' > t 206*b30d1939SAndy Fiddaman for i in `cat t` 207*b30d1939SAndy Fiddaman do rm -f t.$obj 208*b30d1939SAndy Fiddaman if test -x $i && $i -r -o t.$obj doti.$obj && test -f t.$obj 209*b30d1939SAndy Fiddaman then case $ld in 210*b30d1939SAndy Fiddaman ld) ld=$i ;; 211*b30d1939SAndy Fiddaman esac 212*b30d1939SAndy Fiddaman ld_dir=`echo $i | sed 's,/[^/]*$,,'` 213*b30d1939SAndy Fiddaman break 214*b30d1939SAndy Fiddaman fi 215*b30d1939SAndy Fiddaman done 216*b30d1939SAndy Fiddamanfi 217*b30d1939SAndy FiddamanIFS=: 218*b30d1939SAndy Fiddamanset x $PATH 219*b30d1939SAndy FiddamanIFS=$ifs 220*b30d1939SAndy Fiddamanpath=$* 221*b30d1939SAndy Fiddamanm= 222*b30d1939SAndy Fiddamanfor c in $probe_ccs 223*b30d1939SAndy Fiddamando eval o='$'$c 224*b30d1939SAndy Fiddaman case $o in 225*b30d1939SAndy Fiddaman $c) ;; 226*b30d1939SAndy Fiddaman *) continue ;; 227*b30d1939SAndy Fiddaman esac 228*b30d1939SAndy Fiddaman C='${c}' 229*b30d1939SAndy Fiddaman for x in $cc_dir $ld_dir 230*b30d1939SAndy Fiddaman do cd $x 231*b30d1939SAndy Fiddaman for p in "${C}" "${C}[!a-zA-Z]*" "*[!a-zA-Z]${C}" "*[!a-zA-Z]${C}[!a-zA-Z]*" 232*b30d1939SAndy Fiddaman do eval set x $p 233*b30d1939SAndy Fiddaman case $# in 234*b30d1939SAndy Fiddaman 2) if $executable $2 235*b30d1939SAndy Fiddaman then case $2 in 236*b30d1939SAndy Fiddaman *$c*$c*);; 237*b30d1939SAndy Fiddaman *) m=$p 238*b30d1939SAndy Fiddaman break 3 239*b30d1939SAndy Fiddaman ;; 240*b30d1939SAndy Fiddaman esac 241*b30d1939SAndy Fiddaman fi 242*b30d1939SAndy Fiddaman ;; 243*b30d1939SAndy Fiddaman esac 244*b30d1939SAndy Fiddaman done 245*b30d1939SAndy Fiddaman done 246*b30d1939SAndy Fiddamandone 247*b30d1939SAndy Fiddamancd $tmpdir 248*b30d1939SAndy Fiddamanfor c in $probe_ccs 249*b30d1939SAndy Fiddamando eval o='$'$c 250*b30d1939SAndy Fiddaman case $o in 251*b30d1939SAndy Fiddaman $c) ;; 252*b30d1939SAndy Fiddaman *) continue ;; 253*b30d1939SAndy Fiddaman esac 254*b30d1939SAndy Fiddaman for x in $cc_dir $ld_dir 255*b30d1939SAndy Fiddaman do if $executable $x/$c 256*b30d1939SAndy Fiddaman then eval $c='$x/$c' 257*b30d1939SAndy Fiddaman continue 2 258*b30d1939SAndy Fiddaman fi 259*b30d1939SAndy Fiddaman case $m in 260*b30d1939SAndy Fiddaman ?*) eval set x $x/$m 261*b30d1939SAndy Fiddaman case $# in 262*b30d1939SAndy Fiddaman 2) if $executable $2 263*b30d1939SAndy Fiddaman then eval $c='$2' 264*b30d1939SAndy Fiddaman continue 2 265*b30d1939SAndy Fiddaman fi 266*b30d1939SAndy Fiddaman ;; 267*b30d1939SAndy Fiddaman esac 268*b30d1939SAndy Fiddaman ;; 269*b30d1939SAndy Fiddaman esac 270*b30d1939SAndy Fiddaman done 271*b30d1939SAndy Fiddaman for x in $path 272*b30d1939SAndy Fiddaman do if $executable $x/$c 273*b30d1939SAndy Fiddaman then eval $c='$x/$c' 274*b30d1939SAndy Fiddaman break 275*b30d1939SAndy Fiddaman fi 276*b30d1939SAndy Fiddaman done 277*b30d1939SAndy Fiddamandone 278*b30d1939SAndy Fiddamandld=$cc 279*b30d1939SAndy Fiddaman 280*b30d1939SAndy Fiddamanrm -f dynamic.$exe 281*b30d1939SAndy Fiddamanif $cc -o dynamic.$exe dynamic.$obj && $executable dynamic.$exe 282*b30d1939SAndy Fiddamanthen mkdir mylib 283*b30d1939SAndy Fiddaman echo > mylib/libc.$lib 284*b30d1939SAndy Fiddaman eval set x $probe_ldlib 285*b30d1939SAndy Fiddaman while : 286*b30d1939SAndy Fiddaman do shift 287*b30d1939SAndy Fiddaman case $# in 288*b30d1939SAndy Fiddaman 0) break ;; 289*b30d1939SAndy Fiddaman esac 290*b30d1939SAndy Fiddaman rm -f dynamic.$exe 291*b30d1939SAndy Fiddaman if eval $1=./mylib '$'cc -o dynamic.$exe dynamic.$obj 292*b30d1939SAndy Fiddaman then : 293*b30d1939SAndy Fiddaman else libpath=$1 294*b30d1939SAndy Fiddaman break 295*b30d1939SAndy Fiddaman fi 296*b30d1939SAndy Fiddaman done 297*b30d1939SAndy Fiddamanfi 298*b30d1939SAndy Fiddamantest `$cc -E libpp.$src | grep -c '^#pragma pp:version "libpp '` -eq 1 && libpp=1 299*b30d1939SAndy Fiddaman$cc -E doti.$src > doti.i && $cc -c doti.i && test -s doti.$obj && doti=1 300*b30d1939SAndy Fiddamanif $cc -c imusr.$src 301*b30d1939SAndy Fiddamanthen eval set x $probe_include_local 302*b30d1939SAndy Fiddaman while : 303*b30d1939SAndy Fiddaman do shift 304*b30d1939SAndy Fiddaman case $# in 305*b30d1939SAndy Fiddaman 0) break ;; 306*b30d1939SAndy Fiddaman esac 307*b30d1939SAndy Fiddaman if $cc -c $1 imusr.$src 308*b30d1939SAndy Fiddaman then : "$1 should skip \"_i_.h\" in ." 309*b30d1939SAndy Fiddaman elif $cc -c imstd.$src 310*b30d1939SAndy Fiddaman then if $cc -c -Iim imstd.$src 311*b30d1939SAndy Fiddaman then : '-Idir should find <stdio.h> in dir' 312*b30d1939SAndy Fiddaman elif $cc -c $1 -Iim imstd.$src 313*b30d1939SAndy Fiddaman then : "$1 -Idir should find <stdio.h> in dir" 314*b30d1939SAndy Fiddaman elif $cc -c -Iim $1 imstd.$src 315*b30d1939SAndy Fiddaman then include_local=$1 316*b30d1939SAndy Fiddaman break 317*b30d1939SAndy Fiddaman else : "-Idir $1 should skip <stdio.h> in dir" 318*b30d1939SAndy Fiddaman fi 319*b30d1939SAndy Fiddaman else : should find stdio.h 320*b30d1939SAndy Fiddaman fi 321*b30d1939SAndy Fiddaman done 322*b30d1939SAndy Fiddamanelse : 'should find "_i_.h" in .' 323*b30d1939SAndy Fiddamanfi 324*b30d1939SAndy Fiddaman 325*b30d1939SAndy Fiddamanif $cc -c pic.$src 2>e 326*b30d1939SAndy Fiddamanthen e=`wc -l e` 327*b30d1939SAndy Fiddaman s=`$size pic.$obj; wc pic.$obj` 328*b30d1939SAndy Fiddaman eval set x $probe_pic 329*b30d1939SAndy Fiddaman shift 330*b30d1939SAndy Fiddaman while : 331*b30d1939SAndy Fiddaman do case $# in 332*b30d1939SAndy Fiddaman 0|1) break ;; 333*b30d1939SAndy Fiddaman esac 334*b30d1939SAndy Fiddaman pic=$1 335*b30d1939SAndy Fiddaman shift 336*b30d1939SAndy Fiddaman PIC=$1 337*b30d1939SAndy Fiddaman shift 338*b30d1939SAndy Fiddaman rm -f pic.$obj 339*b30d1939SAndy Fiddaman $cc $pic -c pic.$src 2>e && test -f pic.$obj || continue 340*b30d1939SAndy Fiddaman $cc $pic -o pic.$exe pic.$obj && test -f pic.$exe || { 341*b30d1939SAndy Fiddaman rm -f pic.$exe 342*b30d1939SAndy Fiddaman $cc -o pic.$exe pic.$obj && test -f pic.$exe && continue 343*b30d1939SAndy Fiddaman } 344*b30d1939SAndy Fiddaman case `wc -l e` in 345*b30d1939SAndy Fiddaman $e) ;; 346*b30d1939SAndy Fiddaman *) continue ;; 347*b30d1939SAndy Fiddaman esac 348*b30d1939SAndy Fiddaman case $pic in 349*b30d1939SAndy Fiddaman ???*) m=`echo " $pic" | sed -e 's/^ [-+]//g' -e 's/./-& /g' -e 's/[-+] //g'` 350*b30d1939SAndy Fiddaman rm -f pic.$obj pic1.$exe 351*b30d1939SAndy Fiddaman if $cc $m -c pic.$src 2>e && test -f pic.$obj && 352*b30d1939SAndy Fiddaman $cc -o pic1.$exe pic.$obj && test -f pic1.$exe 353*b30d1939SAndy Fiddaman then case `wc -l e` in 354*b30d1939SAndy Fiddaman $e) cc_pic=$m 355*b30d1939SAndy Fiddaman break 356*b30d1939SAndy Fiddaman ;; 357*b30d1939SAndy Fiddaman esac 358*b30d1939SAndy Fiddaman fi 359*b30d1939SAndy Fiddaman cc_pic=$pic 360*b30d1939SAndy Fiddaman break 361*b30d1939SAndy Fiddaman ;; 362*b30d1939SAndy Fiddaman *) case `$size pic.$obj; wc pic.$obj` in 363*b30d1939SAndy Fiddaman $s) ;; 364*b30d1939SAndy Fiddaman *) cc_pic=$pic 365*b30d1939SAndy Fiddaman break 366*b30d1939SAndy Fiddaman ;; 367*b30d1939SAndy Fiddaman esac 368*b30d1939SAndy Fiddaman ;; 369*b30d1939SAndy Fiddaman esac 370*b30d1939SAndy Fiddaman done 371*b30d1939SAndy Fiddaman # this works around gcc 2.95 sun4 -fpic a.out core dump after exit 372*b30d1939SAndy Fiddaman case $hosted:$cc_pic in 373*b30d1939SAndy Fiddaman 1:?*) if ./pic.$exe 374*b30d1939SAndy Fiddaman then # this catches lynxos.ppc gcc that dumps -fpic and not -mshared 375*b30d1939SAndy Fiddaman echo 'static int* f() { static int v; return &v; } 376*b30d1939SAndy Fiddamanint main() { f(); return 0; }' > picok.$src 377*b30d1939SAndy Fiddaman $cc $cc_pic -o picok.$exe picok.$src && ./picok.$exe || cc_pic= 378*b30d1939SAndy Fiddaman else cc_pic= 379*b30d1939SAndy Fiddaman fi 380*b30d1939SAndy Fiddaman ;; 381*b30d1939SAndy Fiddaman esac 382*b30d1939SAndy Fiddaman case $cc_pic in 383*b30d1939SAndy Fiddaman ?*) rm -f pic.$obj 384*b30d1939SAndy Fiddaman if $cc $PIC -c pic.$src 2>e && test -f pic.$obj 385*b30d1939SAndy Fiddaman then cc_PIC=$PIC 386*b30d1939SAndy Fiddaman else cc_PIC=$cc_pic 387*b30d1939SAndy Fiddaman fi 388*b30d1939SAndy Fiddaman ;; 389*b30d1939SAndy Fiddaman *) eval set x $probe_dll 390*b30d1939SAndy Fiddaman while : 391*b30d1939SAndy Fiddaman do shift 392*b30d1939SAndy Fiddaman case $# in 393*b30d1939SAndy Fiddaman 0) break ;; 394*b30d1939SAndy Fiddaman esac 395*b30d1939SAndy Fiddaman rm -f pic.$obj pic.$exe 396*b30d1939SAndy Fiddaman $cc $1 -c pic.$src 2>e && test -f pic.$obj || continue 397*b30d1939SAndy Fiddaman $cc $1 -o pic.$exe pic.$obj && test -f pic.$exe || { 398*b30d1939SAndy Fiddaman rm -f pic.$exe 399*b30d1939SAndy Fiddaman $cc -o pic.$exe pic.$obj && test -f pic.$exe && continue 400*b30d1939SAndy Fiddaman } 401*b30d1939SAndy Fiddaman case $1 in 402*b30d1939SAndy Fiddaman -Wc,*exportall*) 403*b30d1939SAndy Fiddaman # get specific since sgi gets this far too 404*b30d1939SAndy Fiddaman rm -f pic.$exe pic.x 405*b30d1939SAndy Fiddaman $cc -Wl,dll -o pic.$exe pic.$obj || continue 406*b30d1939SAndy Fiddaman test -f pic.$exe || continue 407*b30d1939SAndy Fiddaman test -f pic.x || continue 408*b30d1939SAndy Fiddaman cc_dll="-D_SHARE_EXT_VARS $1" 409*b30d1939SAndy Fiddaman so=.x 410*b30d1939SAndy Fiddaman sd=.dll 411*b30d1939SAndy Fiddaman dld=$cc 412*b30d1939SAndy Fiddaman shared=-Wl,dll 413*b30d1939SAndy Fiddaman prefix_shared= 414*b30d1939SAndy Fiddaman probe_sd= 415*b30d1939SAndy Fiddaman probe_shared= 416*b30d1939SAndy Fiddaman #unused# lddynamic=-Bdynamic 417*b30d1939SAndy Fiddaman #unused# ldstatic=-Bstatic 418*b30d1939SAndy Fiddaman lib_dll=SYMBOL 419*b30d1939SAndy Fiddaman break 420*b30d1939SAndy Fiddaman ;; 421*b30d1939SAndy Fiddaman esac 422*b30d1939SAndy Fiddaman case `wc -l e` in 423*b30d1939SAndy Fiddaman $e) cc_dll=$1 424*b30d1939SAndy Fiddaman break 425*b30d1939SAndy Fiddaman ;; 426*b30d1939SAndy Fiddaman esac 427*b30d1939SAndy Fiddaman done 428*b30d1939SAndy Fiddaman ;; 429*b30d1939SAndy Fiddaman esac 430*b30d1939SAndy Fiddamanfi 431*b30d1939SAndy Fiddaman 432*b30d1939SAndy Fiddaman$cc -c plusplus.$src && plusplus=1 433*b30d1939SAndy Fiddaman$cc -E -dD dDflag.$src > t 434*b30d1939SAndy Fiddamancase `grep '#define[ ][ ]*dDflag[ ][ ]*on' t` in 435*b30d1939SAndy Fiddaman?*) dDflag=1 ;; 436*b30d1939SAndy Fiddamanesac 437*b30d1939SAndy Fiddamancase `grep '#define.*_GNUC_' t` in 438*b30d1939SAndy Fiddaman?*) gnu=1 ;; 439*b30d1939SAndy Fiddamanesac 440*b30d1939SAndy Fiddamancase $plusplus in 441*b30d1939SAndy Fiddaman"") $cc -c stdc.$src && stdc=1 ;; 442*b30d1939SAndy Fiddaman*) mkdir ptr 443*b30d1939SAndy Fiddaman cd ptr 444*b30d1939SAndy Fiddaman $cc -c ../ptr.$src & 445*b30d1939SAndy Fiddaman NFS_locks_are_botched=$! 446*b30d1939SAndy Fiddaman cd .. 447*b30d1939SAndy Fiddaman if $cc -c require.$src && $cc require.$obj 448*b30d1939SAndy Fiddaman then set x `$cc require.$obj 2>&1` 449*b30d1939SAndy Fiddaman d= 450*b30d1939SAndy Fiddaman while : 451*b30d1939SAndy Fiddaman do shift 452*b30d1939SAndy Fiddaman case $# in 453*b30d1939SAndy Fiddaman 0) break ;; 454*b30d1939SAndy Fiddaman esac 455*b30d1939SAndy Fiddaman case $1 in 456*b30d1939SAndy Fiddaman -l*) d="$d $1" ;; 457*b30d1939SAndy Fiddaman esac 458*b30d1939SAndy Fiddaman done 459*b30d1939SAndy Fiddaman for f in ++ 460*b30d1939SAndy Fiddaman do if $cc require.$obj -l$f 461*b30d1939SAndy Fiddaman then set x `$cc require.$obj -l$f 2>&1` 462*b30d1939SAndy Fiddaman r= 463*b30d1939SAndy Fiddaman while : 464*b30d1939SAndy Fiddaman do shift 465*b30d1939SAndy Fiddaman case $# in 466*b30d1939SAndy Fiddaman 0) break ;; 467*b30d1939SAndy Fiddaman esac 468*b30d1939SAndy Fiddaman case $1 in 469*b30d1939SAndy Fiddaman -l*) case " $d $r " in 470*b30d1939SAndy Fiddaman *" "$1" "*) ;; 471*b30d1939SAndy Fiddaman *) r="$r $1" ;; 472*b30d1939SAndy Fiddaman esac 473*b30d1939SAndy Fiddaman esac 474*b30d1939SAndy Fiddaman done 475*b30d1939SAndy Fiddaman case $r in 476*b30d1939SAndy Fiddaman ?*) require="$require $f" 477*b30d1939SAndy Fiddaman echo '' $r > req.$f 478*b30d1939SAndy Fiddaman ;; 479*b30d1939SAndy Fiddaman esac 480*b30d1939SAndy Fiddaman fi 481*b30d1939SAndy Fiddaman done 482*b30d1939SAndy Fiddaman fi 483*b30d1939SAndy Fiddaman cd ptr 484*b30d1939SAndy Fiddaman for i in * 485*b30d1939SAndy Fiddaman do if test -d $i 486*b30d1939SAndy Fiddaman then repository=$i 487*b30d1939SAndy Fiddaman break 488*b30d1939SAndy Fiddaman fi 489*b30d1939SAndy Fiddaman done 490*b30d1939SAndy Fiddaman cd .. 491*b30d1939SAndy Fiddaman kill -9 $NFS_locks_are_botched 492*b30d1939SAndy Fiddaman rm -rf ptr 493*b30d1939SAndy Fiddaman case $repository in 494*b30d1939SAndy Fiddaman *?) mkdir ptr 495*b30d1939SAndy Fiddaman cd ptr 496*b30d1939SAndy Fiddaman i=PTR 497*b30d1939SAndy Fiddaman case $repository in 498*b30d1939SAndy Fiddaman $i) i=$i$i ;; 499*b30d1939SAndy Fiddaman esac 500*b30d1939SAndy Fiddaman $cc -ptr$i -c ../ptr.$src & 501*b30d1939SAndy Fiddaman NFS_locks_are_botched=$! 502*b30d1939SAndy Fiddaman cd .. 503*b30d1939SAndy Fiddaman sleep 5 504*b30d1939SAndy Fiddaman if test -d ptr/$i/$repository 505*b30d1939SAndy Fiddaman then ptrimplicit=1 506*b30d1939SAndy Fiddaman fi 507*b30d1939SAndy Fiddaman kill -9 $NFS_locks_are_botched 508*b30d1939SAndy Fiddaman rm -rf ptr 509*b30d1939SAndy Fiddaman ;; 510*b30d1939SAndy Fiddaman esac 511*b30d1939SAndy Fiddaman $cc -o implc implc.$src && $executable implc && implicitc=1 512*b30d1939SAndy Fiddaman if $cc -c toucho.$src && test -f toucho.$obj 513*b30d1939SAndy Fiddaman then o=`ls -l toucho.$obj` 514*b30d1939SAndy Fiddaman if $cc -o toucho toucho.$obj && $executable toucho 515*b30d1939SAndy Fiddaman then n=`ls -l touch.$obj` 516*b30d1939SAndy Fiddaman case $n in 517*b30d1939SAndy Fiddaman "$o") ;; 518*b30d1939SAndy Fiddaman *) toucho=1 ;; 519*b30d1939SAndy Fiddaman esac 520*b30d1939SAndy Fiddaman fi 521*b30d1939SAndy Fiddaman fi 522*b30d1939SAndy Fiddaman ;; 523*b30d1939SAndy Fiddamanesac 524*b30d1939SAndy Fiddaman 525*b30d1939SAndy Fiddamanif $cc -c pic.$src 526*b30d1939SAndy Fiddamanthen eval set x $probe_nmflags 527*b30d1939SAndy Fiddaman while : 528*b30d1939SAndy Fiddaman do shift 529*b30d1939SAndy Fiddaman case $# in 530*b30d1939SAndy Fiddaman 0) break ;; 531*b30d1939SAndy Fiddaman esac 532*b30d1939SAndy Fiddaman case `$nm $1 pic.$obj | grep -c '[0123456789][ ][ ]*T[ ][ ]*[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]'` in 533*b30d1939SAndy Fiddaman 0) ;; 534*b30d1939SAndy Fiddaman *) nmflags=$1 535*b30d1939SAndy Fiddaman break 536*b30d1939SAndy Fiddaman ;; 537*b30d1939SAndy Fiddaman esac 538*b30d1939SAndy Fiddaman done 539*b30d1939SAndy Fiddaman case $# in 540*b30d1939SAndy Fiddaman 0) case `$nm -gh pic.$obj | grep -c '|\.*[TtDdBbC][EeAaSsOo][XxTtSsMm]'` in 541*b30d1939SAndy Fiddaman 0) ;; 542*b30d1939SAndy Fiddaman *) nmflags=-gh 543*b30d1939SAndy Fiddaman nmedit="-e '/\.*[TtDdBbC][EeAaSsOo][XxTtSsMm]/!d' -e 's/[| ].*//'" 544*b30d1939SAndy Fiddaman ;; 545*b30d1939SAndy Fiddaman esac 546*b30d1939SAndy Fiddaman ;; 547*b30d1939SAndy Fiddaman *) nmedit="-e '/[ ]T[ ][ ]*[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/!d' -e 's/.*[ ]T[ ][ ]*//'" 548*b30d1939SAndy Fiddaman ;; 549*b30d1939SAndy Fiddaman esac 550*b30d1939SAndy Fiddamanfi 551*b30d1939SAndy Fiddaman 552*b30d1939SAndy Fiddamanif $cc -c doti.$src 553*b30d1939SAndy Fiddamanthen eval set x $probe_stripflags 554*b30d1939SAndy Fiddaman while : 555*b30d1939SAndy Fiddaman do shift 556*b30d1939SAndy Fiddaman case $# in 557*b30d1939SAndy Fiddaman 0) break ;; 558*b30d1939SAndy Fiddaman esac 559*b30d1939SAndy Fiddaman if $strip $1 doti.$obj 560*b30d1939SAndy Fiddaman then stripflags=$1 561*b30d1939SAndy Fiddaman break 562*b30d1939SAndy Fiddaman fi 563*b30d1939SAndy Fiddaman done 564*b30d1939SAndy Fiddamanfi 565*b30d1939SAndy Fiddaman 566*b30d1939SAndy Fiddamanrm -f export.$obj export.exe 567*b30d1939SAndy Fiddamanif $cc -c export.$src 568*b30d1939SAndy Fiddamanthen lm= 569*b30d1939SAndy Fiddaman if $cc -o export.exe export.$obj -lm 2>e && lm=-lm || 570*b30d1939SAndy Fiddaman $cc -o export.exe export.$obj 2>e 571*b30d1939SAndy Fiddaman then z=`wc -c < export.exe; $size export.exe 2>/dev/null` 572*b30d1939SAndy Fiddaman eval set x $probe_export_dynamic 573*b30d1939SAndy Fiddaman while : 574*b30d1939SAndy Fiddaman do shift 575*b30d1939SAndy Fiddaman case $# in 576*b30d1939SAndy Fiddaman 0) break ;; 577*b30d1939SAndy Fiddaman esac 578*b30d1939SAndy Fiddaman rm -f export.exe 579*b30d1939SAndy Fiddaman if $cc -o export.exe $1 export.$obj $lm 2>f && $executable export.exe 580*b30d1939SAndy Fiddaman then y=`wc -c < export.exe; $size export.exe 2>/dev/null` 581*b30d1939SAndy Fiddaman case $y in 582*b30d1939SAndy Fiddaman $z) ;; 583*b30d1939SAndy Fiddaman *) if cmp -s e f 584*b30d1939SAndy Fiddaman then export_dynamic=$1 585*b30d1939SAndy Fiddaman break 586*b30d1939SAndy Fiddaman fi 587*b30d1939SAndy Fiddaman ;; 588*b30d1939SAndy Fiddaman esac 589*b30d1939SAndy Fiddaman fi 590*b30d1939SAndy Fiddaman done 591*b30d1939SAndy Fiddaman fi 592*b30d1939SAndy Fiddamanfi 593*b30d1939SAndy Fiddamanrm -f export.$obj export.exe 594*b30d1939SAndy Fiddaman 595*b30d1939SAndy Fiddamanrm -f strip.exe 596*b30d1939SAndy Fiddamanif $cc -o strip.exe strip.$src 597*b30d1939SAndy Fiddamanthen z=`wc -c < strip.exe` 598*b30d1939SAndy Fiddaman eval set x $probe_ldstrip 599*b30d1939SAndy Fiddaman while : 600*b30d1939SAndy Fiddaman do shift 601*b30d1939SAndy Fiddaman case $# in 602*b30d1939SAndy Fiddaman 0) break ;; 603*b30d1939SAndy Fiddaman esac 604*b30d1939SAndy Fiddaman rm -f strip.exe 605*b30d1939SAndy Fiddaman if $cc -o strip.exe $1 strip.$src 606*b30d1939SAndy Fiddaman then case `wc -c < strip.exe` in 607*b30d1939SAndy Fiddaman $z) ;; 608*b30d1939SAndy Fiddaman *) ldstrip=$1 609*b30d1939SAndy Fiddaman break 610*b30d1939SAndy Fiddaman ;; 611*b30d1939SAndy Fiddaman esac 612*b30d1939SAndy Fiddaman fi 613*b30d1939SAndy Fiddaman done 614*b30d1939SAndy Fiddamanfi 615*b30d1939SAndy Fiddaman 616*b30d1939SAndy Fiddamanrm -f strip.exe strip.$obj 617*b30d1939SAndy Fiddamanif $cc -c strip.$src && $cc -o strip.exe strip.$obj 2>e 618*b30d1939SAndy Fiddamanthen eval set x x $probe_ldlazy 619*b30d1939SAndy Fiddaman while : 620*b30d1939SAndy Fiddaman do shift 621*b30d1939SAndy Fiddaman shift 622*b30d1939SAndy Fiddaman case $# in 623*b30d1939SAndy Fiddaman 0) break ;; 624*b30d1939SAndy Fiddaman esac 625*b30d1939SAndy Fiddaman rm -f strip.$exe 626*b30d1939SAndy Fiddaman $cc -o strip.$exe $1 strip.$obj $2 2>f && test -f strip.$exe || continue 627*b30d1939SAndy Fiddaman cmp -s e f || continue 628*b30d1939SAndy Fiddaman ldlazy=$1 629*b30d1939SAndy Fiddaman ldnolazy=$2 630*b30d1939SAndy Fiddaman break 631*b30d1939SAndy Fiddaman done 632*b30d1939SAndy Fiddaman eval set x x $probe_ldrecord 633*b30d1939SAndy Fiddaman while : 634*b30d1939SAndy Fiddaman do shift 635*b30d1939SAndy Fiddaman shift 636*b30d1939SAndy Fiddaman case $# in 637*b30d1939SAndy Fiddaman 0) break ;; 638*b30d1939SAndy Fiddaman esac 639*b30d1939SAndy Fiddaman rm -f strip.$exe 640*b30d1939SAndy Fiddaman $cc -o strip.$exe $1 strip.$obj $2 2>f && test -f strip.$exe || continue 641*b30d1939SAndy Fiddaman cmp -s e f || continue 642*b30d1939SAndy Fiddaman ldrecord=$1 643*b30d1939SAndy Fiddaman ldnorecord=$2 644*b30d1939SAndy Fiddaman break 645*b30d1939SAndy Fiddaman done 646*b30d1939SAndy Fiddamanfi 647*b30d1939SAndy Fiddaman 648*b30d1939SAndy Fiddamancase $cc_dll:$cc_pic:$so:$dynamic:$static in 649*b30d1939SAndy Fiddaman::::|$cc_dll_def::::) 650*b30d1939SAndy Fiddaman : last chance dynamic checks 651*b30d1939SAndy Fiddaman while : 652*b30d1939SAndy Fiddaman do 653*b30d1939SAndy Fiddaman echo '__declspec(dllexport) int fun() { return 0; }' > exp.$src 654*b30d1939SAndy Fiddaman if $cc -c $cc_dll_def exp.$src 655*b30d1939SAndy Fiddaman then rm -f xxx.dll xxx.lib 656*b30d1939SAndy Fiddaman if $cc -shared -Wl,--enable-auto-image-base -Wl,--out-implib=xxx.lib -o xxx.dll exp.$obj && 657*b30d1939SAndy Fiddaman test -f xxx.lib -a -f xxx.dll 658*b30d1939SAndy Fiddaman then 659*b30d1939SAndy Fiddaman : cygwin 660*b30d1939SAndy Fiddaman cc_dll=$cc_dll_def 661*b30d1939SAndy Fiddaman dll_dir='$(BINDIR)' 662*b30d1939SAndy Fiddaman sd=.dll 663*b30d1939SAndy Fiddaman so=.dll.a 664*b30d1939SAndy Fiddaman ldscript=".def .exp .ign .res" 665*b30d1939SAndy Fiddaman lib_dll=option 666*b30d1939SAndy Fiddaman lib_all=-Wl,-whole-archive 667*b30d1939SAndy Fiddaman lib_undef=-Wl,-no-whole-archive 668*b30d1939SAndy Fiddaman dld=$cc 669*b30d1939SAndy Fiddaman shared='-shared -Wl,--enable-auto-image-base -Wl,--out-implib=$(<:N=*'$so')' 670*b30d1939SAndy Fiddaman prefix_dynamic=cyg 671*b30d1939SAndy Fiddaman prefix_shared=lib 672*b30d1939SAndy Fiddaman break 673*b30d1939SAndy Fiddaman fi 674*b30d1939SAndy Fiddaman fi 675*b30d1939SAndy Fiddaman break 676*b30d1939SAndy Fiddaman done 677*b30d1939SAndy Fiddaman ;; 678*b30d1939SAndy Fiddaman*) if $cc -c $cc_dll $cc_pic shared.$src && $cc -c $cc_dll $cc_pic notall.$src 679*b30d1939SAndy Fiddaman then for xx in "$cc" "$ld" 680*b30d1939SAndy Fiddaman do eval set x $probe_shared 681*b30d1939SAndy Fiddaman while : 682*b30d1939SAndy Fiddaman do shift 683*b30d1939SAndy Fiddaman case $# in 684*b30d1939SAndy Fiddaman 0) break ;; 685*b30d1939SAndy Fiddaman esac 686*b30d1939SAndy Fiddaman rm -f xxx$dll 687*b30d1939SAndy Fiddaman # UNDENT ... 688*b30d1939SAndy Fiddaman 689*b30d1939SAndy Fiddaman if $xx $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll 690*b30d1939SAndy Fiddaman then if test -s e && egrep -i 'unknown|invalid|option' e > /dev/null 691*b30d1939SAndy Fiddaman then continue 692*b30d1939SAndy Fiddaman fi 693*b30d1939SAndy Fiddaman case `PATH=/bin:/usr/bin:$PATH file xxx$dll` in 694*b30d1939SAndy Fiddaman *lib*|*obj*|*shared*) 695*b30d1939SAndy Fiddaman ;; 696*b30d1939SAndy Fiddaman "") $executable xxx$dll || continue 697*b30d1939SAndy Fiddaman ;; 698*b30d1939SAndy Fiddaman *ELF*|*elf*) 699*b30d1939SAndy Fiddaman $executable xxx$dll || continue 700*b30d1939SAndy Fiddaman case `strings xxx$dll | sed -e 's,.*[ |],,' | sort -u | egrep -i '^([._](dynamic|dynstr|dynsym))$'` in 701*b30d1939SAndy Fiddaman [012]) continue ;; 702*b30d1939SAndy Fiddaman esac 703*b30d1939SAndy Fiddaman ;; 704*b30d1939SAndy Fiddaman *archive*not*stripped*|*data*dynamic*not*stripped*) 705*b30d1939SAndy Fiddaman $executable xxx$dll || continue 706*b30d1939SAndy Fiddaman ;; 707*b30d1939SAndy Fiddaman *) continue 708*b30d1939SAndy Fiddaman ;; 709*b30d1939SAndy Fiddaman esac 710*b30d1939SAndy Fiddaman dld=$xx 711*b30d1939SAndy Fiddaman shared=$1 712*b30d1939SAndy Fiddaman # does -nostartfiles make sense for C? 713*b30d1939SAndy Fiddaman case $plusplus in 714*b30d1939SAndy Fiddaman '') z=`wc -c < xxx$dll` 715*b30d1939SAndy Fiddaman eval set x $probe_shared_nostart 716*b30d1939SAndy Fiddaman while : 717*b30d1939SAndy Fiddaman do shift 718*b30d1939SAndy Fiddaman case $# in 719*b30d1939SAndy Fiddaman 0) break ;; 720*b30d1939SAndy Fiddaman esac 721*b30d1939SAndy Fiddaman rm -f xxx$dll 722*b30d1939SAndy Fiddaman if $dld $shared $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll 723*b30d1939SAndy Fiddaman then case `wc -c < xxx$dll` in 724*b30d1939SAndy Fiddaman $z) ;; 725*b30d1939SAndy Fiddaman *) if test -s e 726*b30d1939SAndy Fiddaman then case `cat e` in 727*b30d1939SAndy Fiddaman *[Ee][Rr][Rr][Oo][Rr]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*) 728*b30d1939SAndy Fiddaman continue 729*b30d1939SAndy Fiddaman ;; 730*b30d1939SAndy Fiddaman esac 731*b30d1939SAndy Fiddaman fi 732*b30d1939SAndy Fiddaman case $shared in 733*b30d1939SAndy Fiddaman '') shared=$1 ;; 734*b30d1939SAndy Fiddaman *) shared="$shared $1" ;; 735*b30d1939SAndy Fiddaman esac 736*b30d1939SAndy Fiddaman break 737*b30d1939SAndy Fiddaman ;; 738*b30d1939SAndy Fiddaman esac 739*b30d1939SAndy Fiddaman fi 740*b30d1939SAndy Fiddaman done 741*b30d1939SAndy Fiddaman ;; 742*b30d1939SAndy Fiddaman esac 743*b30d1939SAndy Fiddaman case $cc_dll in 744*b30d1939SAndy Fiddaman "") cc_dll=$cc_dll_def ;; 745*b30d1939SAndy Fiddaman esac 746*b30d1939SAndy Fiddaman eval set x x $probe_sd 747*b30d1939SAndy Fiddaman while : 748*b30d1939SAndy Fiddaman do shift 749*b30d1939SAndy Fiddaman shift 750*b30d1939SAndy Fiddaman case $# in 751*b30d1939SAndy Fiddaman [01]) break ;; 752*b30d1939SAndy Fiddaman esac 753*b30d1939SAndy Fiddaman rm -f xxx xxx$1 xxx$2 754*b30d1939SAndy Fiddaman if $dld $shared -o xxx shared.$obj 2>e 755*b30d1939SAndy Fiddaman then if test -f xxx$1 -a \( -f xxx$2 -o "$cc_dll" = "$cc_dll_def" \) 756*b30d1939SAndy Fiddaman then sd=$1 757*b30d1939SAndy Fiddaman so=$2 758*b30d1939SAndy Fiddaman lddynamic=-Bdynamic 759*b30d1939SAndy Fiddaman ldstatic=-Bstatic 760*b30d1939SAndy Fiddaman break 2 761*b30d1939SAndy Fiddaman elif test -f xxx -a -f xxx$2 762*b30d1939SAndy Fiddaman then sd=$1 763*b30d1939SAndy Fiddaman so=$2 764*b30d1939SAndy Fiddaman break 2 765*b30d1939SAndy Fiddaman else case $so in 766*b30d1939SAndy Fiddaman '') so=$1 ;; 767*b30d1939SAndy Fiddaman esac 768*b30d1939SAndy Fiddaman break 769*b30d1939SAndy Fiddaman fi 770*b30d1939SAndy Fiddaman fi 771*b30d1939SAndy Fiddaman done 772*b30d1939SAndy Fiddaman rm -f libxxx.$lib 773*b30d1939SAndy Fiddaman $ar cr libxxx.$lib shared.$obj 774*b30d1939SAndy Fiddaman ranlib libxxx.$lib 775*b30d1939SAndy Fiddaman eval set x x $probe_lib_all_undef 776*b30d1939SAndy Fiddaman rm -f xxx$dll 777*b30d1939SAndy Fiddaman if $dld $shared -o xxx$dll libxxx.$lib && test -r xxx$dll 778*b30d1939SAndy Fiddaman then if $nm $nmflags xxx$dll | grep ShareD 779*b30d1939SAndy Fiddaman then lib_dll=OPTION 780*b30d1939SAndy Fiddaman set x x 781*b30d1939SAndy Fiddaman fi 782*b30d1939SAndy Fiddaman fi 783*b30d1939SAndy Fiddaman while : 784*b30d1939SAndy Fiddaman do shift 785*b30d1939SAndy Fiddaman shift 786*b30d1939SAndy Fiddaman case $# in 787*b30d1939SAndy Fiddaman 0|1) break ;; 788*b30d1939SAndy Fiddaman esac 789*b30d1939SAndy Fiddaman rm -f xxx$dll 790*b30d1939SAndy Fiddaman if $dld $shared -o xxx$dll $1 libxxx.$lib $2 && test -r xxx$dll 791*b30d1939SAndy Fiddaman then if $nm $nmflags xxx$dll | grep ShareD 792*b30d1939SAndy Fiddaman then lib_dll=option 793*b30d1939SAndy Fiddaman lib_all=$1 794*b30d1939SAndy Fiddaman lib_undef=$2 795*b30d1939SAndy Fiddaman break 796*b30d1939SAndy Fiddaman fi 797*b30d1939SAndy Fiddaman fi 798*b30d1939SAndy Fiddaman case $2 in 799*b30d1939SAndy Fiddaman ?*) if $dld $shared -o xxx$dll $1 libxxx.$lib && test -r xxx$dll 800*b30d1939SAndy Fiddaman then if $nm $nmflags xxx$dll | grep ShareD 801*b30d1939SAndy Fiddaman then lib_dll=option 802*b30d1939SAndy Fiddaman lib_all=$1 803*b30d1939SAndy Fiddaman break 804*b30d1939SAndy Fiddaman fi 805*b30d1939SAndy Fiddaman fi 806*b30d1939SAndy Fiddaman ;; 807*b30d1939SAndy Fiddaman esac 808*b30d1939SAndy Fiddaman done 809*b30d1939SAndy Fiddaman case $lib_dll in 810*b30d1939SAndy Fiddaman OPTION) lib_dll=option 811*b30d1939SAndy Fiddaman ;; 812*b30d1939SAndy Fiddaman option) case $lib_undef in 813*b30d1939SAndy Fiddaman "") rm -f libyyy.$lib 814*b30d1939SAndy Fiddaman $ar cr libyyy.$lib notall.$obj 815*b30d1939SAndy Fiddaman ranlib libyyy.$lib 816*b30d1939SAndy Fiddaman $cc -c prefix.$src 817*b30d1939SAndy Fiddaman eval set x x $probe_lib_all_undef 818*b30d1939SAndy Fiddaman while : 819*b30d1939SAndy Fiddaman do shift 820*b30d1939SAndy Fiddaman shift 821*b30d1939SAndy Fiddaman case $# in 822*b30d1939SAndy Fiddaman 0|1) break ;; 823*b30d1939SAndy Fiddaman esac 824*b30d1939SAndy Fiddaman rm -f xxx$dll 825*b30d1939SAndy Fiddaman if $dld $shared -o xxx$dll prefix.$obj $lib_all libxxx.$lib $2 libyyy.$lib && test -r xxx$dll 826*b30d1939SAndy Fiddaman then rm -f t 827*b30d1939SAndy Fiddaman $nm $nmflags xxx$dll > t 828*b30d1939SAndy Fiddaman case `grep -c ShareD t`:`grep -c NotalL t` in 829*b30d1939SAndy Fiddaman 0:*) ;; 830*b30d1939SAndy Fiddaman *:0) lib_undef=$2 831*b30d1939SAndy Fiddaman break 832*b30d1939SAndy Fiddaman ;; 833*b30d1939SAndy Fiddaman esac 834*b30d1939SAndy Fiddaman fi 835*b30d1939SAndy Fiddaman done 836*b30d1939SAndy Fiddaman ;; 837*b30d1939SAndy Fiddaman esac 838*b30d1939SAndy Fiddaman case $lib_undef in 839*b30d1939SAndy Fiddaman "") eval set x $probe_lib_multiple 840*b30d1939SAndy Fiddaman rm -f libyyy.$lib 841*b30d1939SAndy Fiddaman cp libxxx.$lib libyyy.$lib 842*b30d1939SAndy Fiddaman rm -f xxx$dll 843*b30d1939SAndy Fiddaman if $dld $shared -o xxx$dll prefix.$obj $lib_all libxxx.$lib libyyy.$lib && test -r xxx$dll 844*b30d1939SAndy Fiddaman then : 845*b30d1939SAndy Fiddaman else while : 846*b30d1939SAndy Fiddaman do shift 847*b30d1939SAndy Fiddaman case $# in 848*b30d1939SAndy Fiddaman 0) break ;; 849*b30d1939SAndy Fiddaman esac 850*b30d1939SAndy Fiddaman rm -f xxx$dll 851*b30d1939SAndy Fiddaman if $dld $shared -o xxx$dll prefix.$obj $lib_all $1 libxxx.$lib libyyy.$lib && test -r xxx$dll 852*b30d1939SAndy Fiddaman then rm -f t 853*b30d1939SAndy Fiddaman $nm $nmflags xxx$dll > t 854*b30d1939SAndy Fiddaman case `grep -c ShareD t` in 855*b30d1939SAndy Fiddaman 0) ;; 856*b30d1939SAndy Fiddaman *) lib_all="$lib_all $1" 857*b30d1939SAndy Fiddaman break 858*b30d1939SAndy Fiddaman ;; 859*b30d1939SAndy Fiddaman esac 860*b30d1939SAndy Fiddaman fi 861*b30d1939SAndy Fiddaman done 862*b30d1939SAndy Fiddaman fi 863*b30d1939SAndy Fiddaman lib_dll=symbol 864*b30d1939SAndy Fiddaman ;; 865*b30d1939SAndy Fiddaman esac 866*b30d1939SAndy Fiddaman ;; 867*b30d1939SAndy Fiddaman *) lib_dll=symbol 868*b30d1939SAndy Fiddaman ;; 869*b30d1939SAndy Fiddaman esac 870*b30d1939SAndy Fiddaman case `cat e` in 871*b30d1939SAndy Fiddaman ?*) eval set x $probe_unresolved 872*b30d1939SAndy Fiddaman while : 873*b30d1939SAndy Fiddaman do shift 874*b30d1939SAndy Fiddaman case $# in 875*b30d1939SAndy Fiddaman 0) break ;; 876*b30d1939SAndy Fiddaman esac 877*b30d1939SAndy Fiddaman rm -f xxx$dll 878*b30d1939SAndy Fiddaman if eval '$dld $shared' $1 '-o xxx$dll shared.$obj 2>e && test -r xxx$dll' 879*b30d1939SAndy Fiddaman then case `cat e` in 880*b30d1939SAndy Fiddaman "") shared="$shared $1"; break ;; 881*b30d1939SAndy Fiddaman esac 882*b30d1939SAndy Fiddaman fi 883*b30d1939SAndy Fiddaman done 884*b30d1939SAndy Fiddaman ;; 885*b30d1939SAndy Fiddaman esac 886*b30d1939SAndy Fiddaman r= 887*b30d1939SAndy Fiddaman eval set x $probe_shared_registry 888*b30d1939SAndy Fiddaman while : 889*b30d1939SAndy Fiddaman do shift 890*b30d1939SAndy Fiddaman r=x$r 891*b30d1939SAndy Fiddaman case $# in 892*b30d1939SAndy Fiddaman 0) break ;; 893*b30d1939SAndy Fiddaman esac 894*b30d1939SAndy Fiddaman rm -f xxx$dll 895*b30d1939SAndy Fiddaman if eval \$dld \$shared -o xxx\$dll $1 shared.\$obj && 896*b30d1939SAndy Fiddaman test -r xxx$dll -a -r $probe_shared_registry_file 897*b30d1939SAndy Fiddaman then probe_shared_registry_file='$(CC.SHARED.REGISTRY.PATH)' 898*b30d1939SAndy Fiddaman eval set x $probe_shared_registry 899*b30d1939SAndy Fiddaman i= 900*b30d1939SAndy Fiddaman while : 901*b30d1939SAndy Fiddaman do shift 902*b30d1939SAndy Fiddaman i=x$i 903*b30d1939SAndy Fiddaman case $i in 904*b30d1939SAndy Fiddaman $r) break ;; 905*b30d1939SAndy Fiddaman esac 906*b30d1939SAndy Fiddaman done 907*b30d1939SAndy Fiddaman shared_registry=$1 908*b30d1939SAndy Fiddaman fi 909*b30d1939SAndy Fiddaman done 910*b30d1939SAndy Fiddaman break 2 911*b30d1939SAndy Fiddaman fi 912*b30d1939SAndy Fiddaman 913*b30d1939SAndy Fiddaman # ... INDENT 914*b30d1939SAndy Fiddaman done 915*b30d1939SAndy Fiddaman done 916*b30d1939SAndy Fiddaman fi 917*b30d1939SAndy Fiddaman case $so in 918*b30d1939SAndy Fiddaman ?*) rm -f xxx* 919*b30d1939SAndy Fiddaman if $dld $shared -g -o xxx shared.$obj 2>e 920*b30d1939SAndy Fiddaman then set x $probe_sdb 921*b30d1939SAndy Fiddaman while : 922*b30d1939SAndy Fiddaman do shift 923*b30d1939SAndy Fiddaman case $1 in 924*b30d1939SAndy Fiddaman 0) break ;; 925*b30d1939SAndy Fiddaman esac 926*b30d1939SAndy Fiddaman if test -f xxx$1 927*b30d1939SAndy Fiddaman then sdb=$1 928*b30d1939SAndy Fiddaman break 929*b30d1939SAndy Fiddaman fi 930*b30d1939SAndy Fiddaman done 931*b30d1939SAndy Fiddaman fi 932*b30d1939SAndy Fiddaman if $cc -c require.$src 933*b30d1939SAndy Fiddaman then p=' 934*b30d1939SAndy Fiddaman/usr/proberun/lib:/local/runprobe/lib 935*b30d1939SAndy Fiddaman' 936*b30d1939SAndy Fiddaman eval set x $probe_ldrunpath 937*b30d1939SAndy Fiddaman while : 938*b30d1939SAndy Fiddaman do shift 939*b30d1939SAndy Fiddaman case $# in 940*b30d1939SAndy Fiddaman 0) break ;; 941*b30d1939SAndy Fiddaman esac 942*b30d1939SAndy Fiddaman rm -f require.exe 943*b30d1939SAndy Fiddaman if $cc -o require.exe $1"$p" require.$obj && 944*b30d1939SAndy Fiddaman grep -c /proberun/ require.exe >/dev/null && 945*b30d1939SAndy Fiddaman grep -c /runprobe/ require.exe > /dev/null 946*b30d1939SAndy Fiddaman then ldrunpath=$1 947*b30d1939SAndy Fiddaman eval set x $probe_ldorigin 948*b30d1939SAndy Fiddaman while : 949*b30d1939SAndy Fiddaman do shift 950*b30d1939SAndy Fiddaman case $# in 951*b30d1939SAndy Fiddaman 0) break ;; 952*b30d1939SAndy Fiddaman esac 953*b30d1939SAndy Fiddaman rm -f origin.exe 954*b30d1939SAndy Fiddaman if $cc -o origin.exe $1 $ldrunpath'$ORIGIN' require.$obj 955*b30d1939SAndy Fiddaman then if ./origin.exe > /dev/null 2>&1 956*b30d1939SAndy Fiddaman then ldorigin="$1 $ldrunpath"'\$ORIGIN/$(BINDIR:P=R=$(DLLDIR))' 957*b30d1939SAndy Fiddaman fi 958*b30d1939SAndy Fiddaman break 959*b30d1939SAndy Fiddaman fi 960*b30d1939SAndy Fiddaman done 961*b30d1939SAndy Fiddaman break 962*b30d1939SAndy Fiddaman fi 963*b30d1939SAndy Fiddaman done 964*b30d1939SAndy Fiddaman fi 965*b30d1939SAndy Fiddaman rm -f libxxx$so 966*b30d1939SAndy Fiddaman if $cc -c sovmain.$src && 967*b30d1939SAndy Fiddaman $cc -c $cc_dll $cc_pic sovlib.c && 968*b30d1939SAndy Fiddaman $dld $shared -o libxxx$so sovlib.$obj && 969*b30d1939SAndy Fiddaman $cc -o sovmain.$exe -L. sovmain.$obj -lxxx 970*b30d1939SAndy Fiddaman then rm -f sovmain.$exe 971*b30d1939SAndy Fiddaman mv libxxx$so libxxx$so.5.6 972*b30d1939SAndy Fiddaman if $cc -o sovmain.$exe -L. sovmain.$obj -lxxx 973*b30d1939SAndy Fiddaman then soversion=1 974*b30d1939SAndy Fiddaman fi 975*b30d1939SAndy Fiddaman fi 976*b30d1939SAndy Fiddaman rm -f doti.$obj 977*b30d1939SAndy Fiddaman std64=/lib64 978*b30d1939SAndy Fiddaman lcl64=/usr/local/lib64 979*b30d1939SAndy Fiddaman if test -d $std64 -a -d $lcl64 && $cc -c doti.$src 980*b30d1939SAndy Fiddaman then for i in `cd $lcl64; ls *$so 2>/dev/null | sed 's/lib\([^.]*\).*/\1/'` 981*b30d1939SAndy Fiddaman do if $cc -o runpath.$exe doti.$obj -l$i >/dev/null 2>&1 982*b30d1939SAndy Fiddaman then LD_LIBRARY_PATH= ./runpath.$exe >/dev/null 2>&1 && continue 983*b30d1939SAndy Fiddaman if LD_LIBRARY_PATH=$lcl64 ./runpath.$exe >/dev/null 2>&1 984*b30d1939SAndy Fiddaman then runpath=$lcl64 985*b30d1939SAndy Fiddaman break 986*b30d1939SAndy Fiddaman elif LD_LIBRARY_PATH=$std64 ./runpath.$exe >/dev/null 2>&1 987*b30d1939SAndy Fiddaman then runpath=$std64 988*b30d1939SAndy Fiddaman break 989*b30d1939SAndy Fiddaman elif LD_LIBRARY_PATH=$lcl64:$std64 ./runpath.$exe >/dev/null 2>&1 990*b30d1939SAndy Fiddaman then runpath=$lcl64:$std64 991*b30d1939SAndy Fiddaman break 992*b30d1939SAndy Fiddaman fi 993*b30d1939SAndy Fiddaman fi 994*b30d1939SAndy Fiddaman done 995*b30d1939SAndy Fiddaman fi 996*b30d1939SAndy Fiddaman ;; 997*b30d1939SAndy Fiddaman esac 998*b30d1939SAndy Fiddaman ;; 999*b30d1939SAndy Fiddamanesac 1000*b30d1939SAndy Fiddaman 1001*b30d1939SAndy Fiddamanrm -f shared.$obj 1002*b30d1939SAndy Fiddamanif $cc -c shared.$src 1003*b30d1939SAndy Fiddamanthen eval set x $probe_ar_arflags 1004*b30d1939SAndy Fiddaman while : 1005*b30d1939SAndy Fiddaman do shift 1006*b30d1939SAndy Fiddaman case $# in 1007*b30d1939SAndy Fiddaman 0) break ;; 1008*b30d1939SAndy Fiddaman esac 1009*b30d1939SAndy Fiddaman rm -f libxxx.$lib 1010*b30d1939SAndy Fiddaman if $ar $1 r libxxx.$lib shared.$obj && $ar $1 t libxxx.$lib 2>&1 | grep shared.$obj >/dev/null 1011*b30d1939SAndy Fiddaman then ar_arflags=$1 1012*b30d1939SAndy Fiddaman break 1013*b30d1939SAndy Fiddaman fi 1014*b30d1939SAndy Fiddaman done 1015*b30d1939SAndy Fiddaman eval set x $probe_arflags 1016*b30d1939SAndy Fiddaman while : 1017*b30d1939SAndy Fiddaman do shift 1018*b30d1939SAndy Fiddaman case $# in 1019*b30d1939SAndy Fiddaman 0) break ;; 1020*b30d1939SAndy Fiddaman esac 1021*b30d1939SAndy Fiddaman rm -f libxxx.$lib 1022*b30d1939SAndy Fiddaman if $cc $1 -o libxxx.$lib shared.$obj && $ar t libxxx.$lib 2>&1 | grep shared.$obj >/dev/null 1023*b30d1939SAndy Fiddaman then arflags=$1 1024*b30d1939SAndy Fiddaman break 1025*b30d1939SAndy Fiddaman fi 1026*b30d1939SAndy Fiddaman done 1027*b30d1939SAndy Fiddamanfi 1028*b30d1939SAndy Fiddaman 1029*b30d1939SAndy Fiddamancase $shared in 1030*b30d1939SAndy Fiddaman-G) case $cc_dll in 1031*b30d1939SAndy Fiddaman "") cc_dll=$cc_dll_def ;; 1032*b30d1939SAndy Fiddaman esac 1033*b30d1939SAndy Fiddaman ;; 1034*b30d1939SAndy Fiddaman*) case $lib_dll in 1035*b30d1939SAndy Fiddaman symbol) echo 'extern int f(); 1036*b30d1939SAndy Fiddaman int main() { f(); return 0; }' > main.$src 1037*b30d1939SAndy Fiddaman echo '#include <stdio.h> 1038*b30d1939SAndy Fiddaman int f() { printf("hello world"); return 0; }' > member.$src 1039*b30d1939SAndy Fiddaman if $cc -c main.$src && $cc -c member.$src 1040*b30d1939SAndy Fiddaman then echo f > lib.exp 1041*b30d1939SAndy Fiddaman rm -f lib.$obj main.exe 1042*b30d1939SAndy Fiddaman if $ld -o lib.$obj -L: -bexport:lib.exp -berok -bmodtype:SRE -T512 -H512 -lm -lc member.$obj && $cc -o main.exe main.$obj lib.$obj 1043*b30d1939SAndy Fiddaman then dld=$ld 1044*b30d1939SAndy Fiddaman shared='-T512 -H512 -L$(LIBDIR): -berok -bmodtype:SRE' 1045*b30d1939SAndy Fiddaman lib_dll=export 1046*b30d1939SAndy Fiddaman dll_libraries='-lm -lc' 1047*b30d1939SAndy Fiddaman ldscript=.exp 1048*b30d1939SAndy Fiddaman case $cc_dll in 1049*b30d1939SAndy Fiddaman "") cc_dll=$cc_dll_def ;; 1050*b30d1939SAndy Fiddaman esac 1051*b30d1939SAndy Fiddaman case $so in 1052*b30d1939SAndy Fiddaman "") so=.$obj ;; 1053*b30d1939SAndy Fiddaman esac 1054*b30d1939SAndy Fiddaman fi 1055*b30d1939SAndy Fiddaman fi 1056*b30d1939SAndy Fiddaman ;; 1057*b30d1939SAndy Fiddaman esac 1058*b30d1939SAndy Fiddaman ;; 1059*b30d1939SAndy Fiddamanesac 1060*b30d1939SAndy Fiddamancase $shared in 1061*b30d1939SAndy Fiddaman?*) if $cc -c $cc_dll $cc_pic shared.$src 1062*b30d1939SAndy Fiddaman then eval set x $probe_shared_name 1063*b30d1939SAndy Fiddaman while : 1064*b30d1939SAndy Fiddaman do shift 1065*b30d1939SAndy Fiddaman case $# in 1066*b30d1939SAndy Fiddaman 0) break ;; 1067*b30d1939SAndy Fiddaman esac 1068*b30d1939SAndy Fiddaman rm -f xxx$dll 1069*b30d1939SAndy Fiddaman if $dld $shared ${1}libfoo.1.2 -o xxx$dll shared.$obj 2>e && test -r xxx$dll 1070*b30d1939SAndy Fiddaman then shared_name=$1 1071*b30d1939SAndy Fiddaman break 1072*b30d1939SAndy Fiddaman fi 1073*b30d1939SAndy Fiddaman done 1074*b30d1939SAndy Fiddaman fi 1075*b30d1939SAndy Fiddaman ;; 1076*b30d1939SAndy Fiddamanesac 1077*b30d1939SAndy Fiddamancase " $cc_dll " in 1078*b30d1939SAndy Fiddaman*" $cc_dll_def "*) 1079*b30d1939SAndy Fiddaman ;; 1080*b30d1939SAndy Fiddaman" ") ;; 1081*b30d1939SAndy Fiddaman*) cc_dll="$cc_dll_def $cc_dll" 1082*b30d1939SAndy Fiddaman ;; 1083*b30d1939SAndy Fiddamanesac 1084*b30d1939SAndy Fiddaman 1085*b30d1939SAndy Fiddamancase $hosttype in 1086*b30d1939SAndy Fiddamanwin32.*|cygwin.*|os2.*) 1087*b30d1939SAndy Fiddaman Lflag=1 1088*b30d1939SAndy Fiddaman ;; 1089*b30d1939SAndy Fiddaman*) if $cc -c doti.$src 1090*b30d1939SAndy Fiddaman then if $cc -L. doti.$obj -lc >/dev/null 1091*b30d1939SAndy Fiddaman then case $cc_dll in 1092*b30d1939SAndy Fiddaman '') ;; 1093*b30d1939SAndy Fiddaman *) Lflag=1 ;; 1094*b30d1939SAndy Fiddaman esac 1095*b30d1939SAndy Fiddaman fi 1096*b30d1939SAndy Fiddaman fi 1097*b30d1939SAndy Fiddaman ;; 1098*b30d1939SAndy Fiddamanesac 1099*b30d1939SAndy Fiddaman 1100*b30d1939SAndy Fiddamancase $lib_dll in 1101*b30d1939SAndy Fiddamanoption) case $hosttype in 1102*b30d1939SAndy Fiddaman linux.*) dll_libraries=-lc ;; 1103*b30d1939SAndy Fiddaman esac 1104*b30d1939SAndy Fiddaman ;; 1105*b30d1939SAndy FiddamanSYMBOL) lib_dll=symbol 1106*b30d1939SAndy Fiddaman ;; 1107*b30d1939SAndy Fiddamansymbol) echo "#include <stdio.h> 1108*b30d1939SAndy Fiddamanextern int fun() 1109*b30d1939SAndy Fiddaman{ 1110*b30d1939SAndy Fiddaman puts(\"fun\"); 1111*b30d1939SAndy Fiddaman return 0; 1112*b30d1939SAndy Fiddaman}" > dllib.$src 1113*b30d1939SAndy Fiddaman echo "extern int fun(); 1114*b30d1939SAndy Fiddamanint 1115*b30d1939SAndy Fiddamanmain() 1116*b30d1939SAndy Fiddaman{ 1117*b30d1939SAndy Fiddaman return fun(); 1118*b30d1939SAndy Fiddaman}" > dlmain.$src 1119*b30d1939SAndy Fiddaman pwd=`pwd` 1120*b30d1939SAndy Fiddaman while : 1121*b30d1939SAndy Fiddaman do 1122*b30d1939SAndy Fiddaman if $cc -c $cc_dll $cc_pic dlmain.$src && 1123*b30d1939SAndy Fiddaman $cc -c $cc_dll $cc_pic dllib.$src 1124*b30d1939SAndy Fiddaman then rm -f libxxx$so 1125*b30d1939SAndy Fiddaman if $dld $shared -o libxxx$so dllib.$obj && 1126*b30d1939SAndy Fiddaman chmod 555 libxxx$so 1127*b30d1939SAndy Fiddaman then rm -f dlmain.$exe 1128*b30d1939SAndy Fiddaman if $cc -o dlmain.$exe dlmain.$obj $pwd/libxxx$so && 1129*b30d1939SAndy Fiddaman (./dlmain.$exe) >/dev/null 2>&1 1130*b30d1939SAndy Fiddaman then break 1131*b30d1939SAndy Fiddaman fi 1132*b30d1939SAndy Fiddaman fi 1133*b30d1939SAndy Fiddaman rm -f libxxx$so dlmain.$exe 1134*b30d1939SAndy Fiddaman if $dld $shared -o libxxx$so dllib.$obj -lm -lc && 1135*b30d1939SAndy Fiddaman chmod 555 libxxx$so && 1136*b30d1939SAndy Fiddaman $cc -o dlmain.$exe dlmain.$obj $pwd/libxxx$so && 1137*b30d1939SAndy Fiddaman (./dlmain.$exe) >/dev/null 2>&1 1138*b30d1939SAndy Fiddaman then dll_libraries='-lm -lc' 1139*b30d1939SAndy Fiddaman fi 1140*b30d1939SAndy Fiddaman fi 1141*b30d1939SAndy Fiddaman break 1142*b30d1939SAndy Fiddaman done 1143*b30d1939SAndy Fiddaman # the dll_libraries probe is still lame 1144*b30d1939SAndy Fiddaman case $dll_libraries in 1145*b30d1939SAndy Fiddaman '') case $hosttype in 1146*b30d1939SAndy Fiddaman sco.*|sol*.*|sun*) ;; 1147*b30d1939SAndy Fiddaman *) dll_libraries='-lm -lc' ;; 1148*b30d1939SAndy Fiddaman esac 1149*b30d1939SAndy Fiddaman ;; 1150*b30d1939SAndy Fiddaman esac 1151*b30d1939SAndy Fiddaman ;; 1152*b30d1939SAndy Fiddamanesac 1153*b30d1939SAndy Fiddaman 1154*b30d1939SAndy Fiddamanstdlib= 1155*b30d1939SAndy Fiddamana=`$cc -print-multi-directory 2>/dev/null` 1156*b30d1939SAndy Fiddamancase $a in 1157*b30d1939SAndy Fiddaman.) ;; 1158*b30d1939SAndy Fiddaman*) for d in `$cc -print-search-dirs 2>/dev/null | sed -e '/^libraries:/!d' -e 's/.*=//' | tr : '\n' | grep /lib/` 1159*b30d1939SAndy Fiddaman do if [ -d ${d}${a} ] 1160*b30d1939SAndy Fiddaman then stdlib="$stdlib ${d}${a}" 1161*b30d1939SAndy Fiddaman else case $d in 1162*b30d1939SAndy Fiddaman */lib/) d=`echo '' $d | sed -e 's,/$,,'` 1163*b30d1939SAndy Fiddaman if [ -d ${d}${a} ] 1164*b30d1939SAndy Fiddaman then stdlib="$stdlib ${d}${a}" 1165*b30d1939SAndy Fiddaman fi 1166*b30d1939SAndy Fiddaman ;; 1167*b30d1939SAndy Fiddaman esac 1168*b30d1939SAndy Fiddaman fi 1169*b30d1939SAndy Fiddaman done 1170*b30d1939SAndy Fiddaman ;; 1171*b30d1939SAndy Fiddamanesac 1172*b30d1939SAndy Fiddamancase $stdlib in 1173*b30d1939SAndy Fiddaman'') stdlib=`$cc -v doti.$src 2>&1 | 1174*b30d1939SAndy Fiddaman sed 's/ */\n/g' | 1175*b30d1939SAndy Fiddaman sed -e '/^-L/!d' -e 's/^-L//' | 1176*b30d1939SAndy Fiddaman while read dir 1177*b30d1939SAndy Fiddaman do if test -d "$dir" 1178*b30d1939SAndy Fiddaman then (cd "$dir"; pwd) 1179*b30d1939SAndy Fiddaman fi 1180*b30d1939SAndy Fiddaman done` 1181*b30d1939SAndy Fiddaman ;; 1182*b30d1939SAndy Fiddaman*) eval set x $probe_verbose 1183*b30d1939SAndy Fiddaman shift 1184*b30d1939SAndy Fiddaman for o in "$@" 1185*b30d1939SAndy Fiddaman do stdlib="$stdlib "`$cc $o doti.$src 2>&1 | 1186*b30d1939SAndy Fiddaman sed 's/ */\n/g' | 1187*b30d1939SAndy Fiddaman sed -e '/^-L/!d' -e '/\/lib64$/!d' -e 's/^-L//'` 1188*b30d1939SAndy Fiddaman done 1189*b30d1939SAndy Fiddaman ;; 1190*b30d1939SAndy Fiddamanesac 1191*b30d1939SAndy Fiddamancase $stdlib in 1192*b30d1939SAndy Fiddaman?*) keepstdlib=1 1193*b30d1939SAndy Fiddaman o=$stdlib 1194*b30d1939SAndy Fiddaman stdlib= 1195*b30d1939SAndy Fiddaman for dir in $o 1196*b30d1939SAndy Fiddaman do case " $stdlib " in 1197*b30d1939SAndy Fiddaman *" $o "*) continue ;; 1198*b30d1939SAndy Fiddaman esac 1199*b30d1939SAndy Fiddaman case $dir in 1200*b30d1939SAndy Fiddaman /usr/lib64) 1201*b30d1939SAndy Fiddaman i=/usr/local/lib64 1202*b30d1939SAndy Fiddaman a=/lib64 1203*b30d1939SAndy Fiddaman ;; 1204*b30d1939SAndy Fiddaman /lib64) i=/usr/local/lib64 1205*b30d1939SAndy Fiddaman a=/usr/lib64 1206*b30d1939SAndy Fiddaman ;; 1207*b30d1939SAndy Fiddaman /usr/lib) 1208*b30d1939SAndy Fiddaman i=/usr/local/lib 1209*b30d1939SAndy Fiddaman a=/lib 1210*b30d1939SAndy Fiddaman ;; 1211*b30d1939SAndy Fiddaman lib) i=/usr/local/lib 1212*b30d1939SAndy Fiddaman a=/usr/lib 1213*b30d1939SAndy Fiddaman ;; 1214*b30d1939SAndy Fiddaman *) i= 1215*b30d1939SAndy Fiddaman a= 1216*b30d1939SAndy Fiddaman ;; 1217*b30d1939SAndy Fiddaman esac 1218*b30d1939SAndy Fiddaman if test "" != "$i" -a -d "$i" 1219*b30d1939SAndy Fiddaman then case " $o " in 1220*b30d1939SAndy Fiddaman *" $i "*) 1221*b30d1939SAndy Fiddaman ;; 1222*b30d1939SAndy Fiddaman *) stdlib="$stdlib $i" 1223*b30d1939SAndy Fiddaman ;; 1224*b30d1939SAndy Fiddaman esac 1225*b30d1939SAndy Fiddaman fi 1226*b30d1939SAndy Fiddaman stdlib="$stdlib $dir" 1227*b30d1939SAndy Fiddaman if test "" != "$a" -a -d "$a" 1228*b30d1939SAndy Fiddaman then case " $o " in 1229*b30d1939SAndy Fiddaman *" $a "*) 1230*b30d1939SAndy Fiddaman ;; 1231*b30d1939SAndy Fiddaman *) stdlib="$stdlib $a" 1232*b30d1939SAndy Fiddaman ;; 1233*b30d1939SAndy Fiddaman esac 1234*b30d1939SAndy Fiddaman fi 1235*b30d1939SAndy Fiddaman done 1236*b30d1939SAndy Fiddaman case $hosted in 1237*b30d1939SAndy Fiddaman 1) case " $stdlib " in 1238*b30d1939SAndy Fiddaman *" /usr/lib "*) 1239*b30d1939SAndy Fiddaman ;; 1240*b30d1939SAndy Fiddaman *) case " $stdlib " in 1241*b30d1939SAndy Fiddaman *" /usr/local/lib "*) 1242*b30d1939SAndy Fiddaman ;; 1243*b30d1939SAndy Fiddaman *) stdlib="$stdlib /usr/local/lib" 1244*b30d1939SAndy Fiddaman ;; 1245*b30d1939SAndy Fiddaman esac 1246*b30d1939SAndy Fiddaman stdlib="$stdlib /usr/lib" 1247*b30d1939SAndy Fiddaman ;; 1248*b30d1939SAndy Fiddaman esac 1249*b30d1939SAndy Fiddaman case " $stdlib " in 1250*b30d1939SAndy Fiddaman *" /lib "*) 1251*b30d1939SAndy Fiddaman ;; 1252*b30d1939SAndy Fiddaman *) stdlib="$stdlib /lib" 1253*b30d1939SAndy Fiddaman ;; 1254*b30d1939SAndy Fiddaman esac 1255*b30d1939SAndy Fiddaman esac 1256*b30d1939SAndy Fiddaman ;; 1257*b30d1939SAndy Fiddaman*) keepstdlib=0 1258*b30d1939SAndy Fiddaman case $dir in 1259*b30d1939SAndy Fiddaman */arch/$hosttype/lib/*) 1260*b30d1939SAndy Fiddaman notlib=`echo $dir | sed "s,/arch/$hosttype/lib/.*,/arch/$hosttype/lib,"` 1261*b30d1939SAndy Fiddaman ;; 1262*b30d1939SAndy Fiddaman *) notlib=//// 1263*b30d1939SAndy Fiddaman ;; 1264*b30d1939SAndy Fiddaman esac 1265*b30d1939SAndy Fiddaman tstlib= 1266*b30d1939SAndy Fiddaman implib= 1267*b30d1939SAndy Fiddaman if $cc -c hosted.$src 1268*b30d1939SAndy Fiddaman then for f in `( 1269*b30d1939SAndy Fiddaman eval set x $probe_verbose 1270*b30d1939SAndy Fiddaman while : 1271*b30d1939SAndy Fiddaman do shift 1272*b30d1939SAndy Fiddaman case $# in 1273*b30d1939SAndy Fiddaman 0) break ;; 1274*b30d1939SAndy Fiddaman esac 1275*b30d1939SAndy Fiddaman $cc $1 hosted.$obj 1276*b30d1939SAndy Fiddaman done 1277*b30d1939SAndy Fiddaman ) 2>&1 | sed -e 's/[ :]/\\ 1278*b30d1939SAndy Fiddaman /g' -e 's/-L//g' -e 's/^P,//' -e "s/[\"']//g" -e 's,^[\\\\/]*[\\\\/],/,' | sed -e '/^\$/d' -e '/^[-+]/d' -e '/^[^\\\\\\/]/d' -e '/[\\\\\\/]tmp[\\\\\\/]/d' -e 's/:\$//' -e 's,//*$,,'` 1279*b30d1939SAndy Fiddaman do case " $tstlib $implib " in 1280*b30d1939SAndy Fiddaman *" $f "*) continue ;; 1281*b30d1939SAndy Fiddaman esac 1282*b30d1939SAndy Fiddaman case $f in 1283*b30d1939SAndy Fiddaman $notlib) continue ;; 1284*b30d1939SAndy Fiddaman esac 1285*b30d1939SAndy Fiddaman if test -d $f 1286*b30d1939SAndy Fiddaman then tstlib="$tstlib $f" 1287*b30d1939SAndy Fiddaman elif test -f $f 1288*b30d1939SAndy Fiddaman then d=`echo $f | sed -e 's,[\\\\/]*[^\\\\/]*\$,,'` 1289*b30d1939SAndy Fiddaman case " $tstlib $implib " in 1290*b30d1939SAndy Fiddaman *" $d "*) continue ;; 1291*b30d1939SAndy Fiddaman esac 1292*b30d1939SAndy Fiddaman case $d in 1293*b30d1939SAndy Fiddaman *[\\/]usr[\\/]lib) 1294*b30d1939SAndy Fiddaman x=$d 1295*b30d1939SAndy Fiddaman d="`echo $d | sed -e 's,[\\\\/][\\\\/]*usr[\\\\/]lib\$,/lib,'`" 1296*b30d1939SAndy Fiddaman case " $tstlib $implib " in 1297*b30d1939SAndy Fiddaman *" $d "*) ;; 1298*b30d1939SAndy Fiddaman *) implib="$implib $d" ;; 1299*b30d1939SAndy Fiddaman esac 1300*b30d1939SAndy Fiddaman implib="$implib $x" 1301*b30d1939SAndy Fiddaman ;; 1302*b30d1939SAndy Fiddaman *[\\/]lib) 1303*b30d1939SAndy Fiddaman implib="$implib $d" 1304*b30d1939SAndy Fiddaman d="`echo $d | sed -e 's,[\\\\/][\\\\/]*lib\$,/usr/lib,'`" 1305*b30d1939SAndy Fiddaman case " $tstlib $implib " in 1306*b30d1939SAndy Fiddaman *" $d "*) ;; 1307*b30d1939SAndy Fiddaman *) implib="$implib $d" ;; 1308*b30d1939SAndy Fiddaman esac 1309*b30d1939SAndy Fiddaman ;; 1310*b30d1939SAndy Fiddaman *) implib="$implib $d" 1311*b30d1939SAndy Fiddaman ;; 1312*b30d1939SAndy Fiddaman esac 1313*b30d1939SAndy Fiddaman fi 1314*b30d1939SAndy Fiddaman done 1315*b30d1939SAndy Fiddaman fi 1316*b30d1939SAndy Fiddaman tstlib="$tstlib $implib" 1317*b30d1939SAndy Fiddaman if $cc -Dtype=void -Dcall=exit -c tstlib.$src && mv tstlib.$obj tst.$obj 1318*b30d1939SAndy Fiddaman then case $plusplus in 1319*b30d1939SAndy Fiddaman '') probe_lxx= ;; 1320*b30d1939SAndy Fiddaman esac 1321*b30d1939SAndy Fiddaman l= 1322*b30d1939SAndy Fiddaman for sym in $probe_l $probe_lxx 1323*b30d1939SAndy Fiddaman do case $l in 1324*b30d1939SAndy Fiddaman "") l=$sym; continue ;; 1325*b30d1939SAndy Fiddaman esac 1326*b30d1939SAndy Fiddaman rm -f tstlib.$exe 1327*b30d1939SAndy Fiddaman if $cc -o tstlib.$exe tst.$obj -l$l 1328*b30d1939SAndy Fiddaman then eval set x $probe_ldmap 1329*b30d1939SAndy Fiddaman while : 1330*b30d1939SAndy Fiddaman do shift 1331*b30d1939SAndy Fiddaman case $# in 1332*b30d1939SAndy Fiddaman 0) break ;; 1333*b30d1939SAndy Fiddaman esac 1334*b30d1939SAndy Fiddaman d=`$cc -Dtype=int -Dcall=$sym $static $1 tstlib.$src -l$l 2>&1 | sed -e '/[\\\\\\/].*[\\\\\\/]lib[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+]*\.[^\\\\\\/]*\$/!d' -e 's,^[^\\\\\/]*,,' -e 's,[\\\\\\/]lib[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+]*\.[^\\\\\\/]*\$,,' -e '/^[\\\\\\/]/!d' | sort -u` 1335*b30d1939SAndy Fiddaman case $d in 1336*b30d1939SAndy Fiddaman ?*) tstlib="$tstlib $d" ;; 1337*b30d1939SAndy Fiddaman esac 1338*b30d1939SAndy Fiddaman done 1339*b30d1939SAndy Fiddaman fi 1340*b30d1939SAndy Fiddaman l= 1341*b30d1939SAndy Fiddaman done 1342*b30d1939SAndy Fiddaman fi 1343*b30d1939SAndy Fiddaman libstd= 1344*b30d1939SAndy Fiddaman libset= 1345*b30d1939SAndy Fiddaman stdlibroot="/ /usr/" 1346*b30d1939SAndy Fiddaman for d in $tstlib 1347*b30d1939SAndy Fiddaman do case $d in 1348*b30d1939SAndy Fiddaman [\\/]lib|[\\/]usr[\\/]lib) 1349*b30d1939SAndy Fiddaman ;; 1350*b30d1939SAndy Fiddaman *) case " $stdlib " in 1351*b30d1939SAndy Fiddaman *\ $d\ *) 1352*b30d1939SAndy Fiddaman ;; 1353*b30d1939SAndy Fiddaman *) if ls $d ${PREROOT+$PREROOT/../$d} > tmp.tmp && test -s tmp.tmp 1354*b30d1939SAndy Fiddaman then for i in $probe_lib $obj 1355*b30d1939SAndy Fiddaman do if grep -i "\\.$i\$" tmp.tmp >/dev/null 1356*b30d1939SAndy Fiddaman then case " $probe_lib_append " in 1357*b30d1939SAndy Fiddaman *\ $d\ *) 1358*b30d1939SAndy Fiddaman libstd="$libstd $d" 1359*b30d1939SAndy Fiddaman ;; 1360*b30d1939SAndy Fiddaman *) stdlib="$stdlib $d" 1361*b30d1939SAndy Fiddaman case $d in 1362*b30d1939SAndy Fiddaman /usr/lib|/usr/lib/*) 1363*b30d1939SAndy Fiddaman ;; 1364*b30d1939SAndy Fiddaman /usr/lib?*) 1365*b30d1939SAndy Fiddaman e=`echo $d | sed -e 's,/usr,,'` 1366*b30d1939SAndy Fiddaman g=`echo $d/libc.* $e/libc.*` 1367*b30d1939SAndy Fiddaman case "$e $g " in 1368*b30d1939SAndy Fiddaman *".* "*);; 1369*b30d1939SAndy Fiddaman *) stdlib="$stdlib $e" 1370*b30d1939SAndy Fiddaman stdlibroot= 1371*b30d1939SAndy Fiddaman ;; 1372*b30d1939SAndy Fiddaman esac 1373*b30d1939SAndy Fiddaman ;; 1374*b30d1939SAndy Fiddaman esac 1375*b30d1939SAndy Fiddaman ;; 1376*b30d1939SAndy Fiddaman esac 1377*b30d1939SAndy Fiddaman case $libset in 1378*b30d1939SAndy Fiddaman "") case $i in 1379*b30d1939SAndy Fiddaman $obj) ;; 1380*b30d1939SAndy Fiddaman *) libset=1 1381*b30d1939SAndy Fiddaman lib=$i 1382*b30d1939SAndy Fiddaman ;; 1383*b30d1939SAndy Fiddaman esac 1384*b30d1939SAndy Fiddaman ;; 1385*b30d1939SAndy Fiddaman esac 1386*b30d1939SAndy Fiddaman break 1387*b30d1939SAndy Fiddaman fi 1388*b30d1939SAndy Fiddaman done 1389*b30d1939SAndy Fiddaman fi 1390*b30d1939SAndy Fiddaman ;; 1391*b30d1939SAndy Fiddaman esac 1392*b30d1939SAndy Fiddaman ;; 1393*b30d1939SAndy Fiddaman esac 1394*b30d1939SAndy Fiddaman done 1395*b30d1939SAndy Fiddaman for d in `$ld --verbose 2>&1 | sed -e '/SEARCH_DIR/!d' -e 's/[ ][ ][ ]*/ /g' -e 's/SEARCH_DIR(\([^ ]*\));/\1/g' -e 's, //[^ ]*,,' -e 's,",,g'` 1396*b30d1939SAndy Fiddaman do if test -d $d 1397*b30d1939SAndy Fiddaman then case " $stdlib $libstd " in 1398*b30d1939SAndy Fiddaman *\ ${d}\ *) 1399*b30d1939SAndy Fiddaman ;; 1400*b30d1939SAndy Fiddaman *) libstd="$libstd $d" 1401*b30d1939SAndy Fiddaman ;; 1402*b30d1939SAndy Fiddaman esac 1403*b30d1939SAndy Fiddaman fi 1404*b30d1939SAndy Fiddaman done 1405*b30d1939SAndy Fiddaman case $hosted in 1406*b30d1939SAndy Fiddaman "") tstlib= ;; 1407*b30d1939SAndy Fiddaman *) tstlib="$stdlibroot /usr/ccs/ /usr/local/" ;; 1408*b30d1939SAndy Fiddaman esac 1409*b30d1939SAndy Fiddaman case $stdlibroot in 1410*b30d1939SAndy Fiddaman ?*) d= 1411*b30d1939SAndy Fiddaman for f in $stdinclude 1412*b30d1939SAndy Fiddaman do f=`echo $f | sed -e 's,[^\\\\/]*\$,,'` 1413*b30d1939SAndy Fiddaman d="$d $f" 1414*b30d1939SAndy Fiddaman done 1415*b30d1939SAndy Fiddaman tstlib="$d $tstlib" 1416*b30d1939SAndy Fiddaman ;; 1417*b30d1939SAndy Fiddaman esac 1418*b30d1939SAndy Fiddaman $cc -c doti.$src > all.tmp 1419*b30d1939SAndy Fiddaman for f in $probe_libdir 1420*b30d1939SAndy Fiddaman do for d in $stdlib $libstd $tstlib 1421*b30d1939SAndy Fiddaman do if test -d ${d}${f} 1422*b30d1939SAndy Fiddaman then ls ${d}${f} ${PREROOT:+$PREROOT/../${d}${f}} | 1423*b30d1939SAndy Fiddaman while read i 1424*b30d1939SAndy Fiddaman do for j in ${d}${f}/${i} ${PREROOT:+$PREROOT/../${d}${f}/${i}} 1425*b30d1939SAndy Fiddaman do if test -f $j -a -r $j -a -s $j 1426*b30d1939SAndy Fiddaman then echo $i 1427*b30d1939SAndy Fiddaman break 1428*b30d1939SAndy Fiddaman fi 1429*b30d1939SAndy Fiddaman done 1430*b30d1939SAndy Fiddaman done > tmp.tmp 1431*b30d1939SAndy Fiddaman if test -s tmp.tmp 1432*b30d1939SAndy Fiddaman then if egrep -i "^${prefix_archive}[abcdefghijklmnopqrstuvwxyz0123456789_][abcdefghijklmnopqrstuvwxyz0123456789_]*\\.$lib\$" tmp.tmp >lib.tmp || 1433*b30d1939SAndy Fiddaman egrep -i "\\.$obj\$" tmp.tmp >/dev/null || 1434*b30d1939SAndy Fiddaman egrep -i "^${prefix_shared}[abcdefghijklmnopqrstuvwxyz0123456789_][abcdefghijklmnopqrstuvwxyz0123456789_]*\\$so(.[0-9]+)*\$" tmp.tmp >>lib.tmp 1435*b30d1939SAndy Fiddaman then if test -s lib.tmp 1436*b30d1939SAndy Fiddaman then sed -e "s,.*/,," -e 's,^'${prefix_archive}'\(.*\)\.'$lib'$,\1,g' -e 's,^'${prefix_shared}'\(.*\)\'$so'[.0-9]*,\1,g' lib.tmp | sort -u > tmp.tmp 1437*b30d1939SAndy Fiddaman xs=`sort all.tmp all.tmp tmp.tmp | uniq -u` 1438*b30d1939SAndy Fiddaman case $xs in 1439*b30d1939SAndy Fiddaman '') continue ;; 1440*b30d1939SAndy Fiddaman esac 1441*b30d1939SAndy Fiddaman ok=0 1442*b30d1939SAndy Fiddaman for x in $xs 1443*b30d1939SAndy Fiddaman do case $x in 1444*b30d1939SAndy Fiddaman *_p) continue ;; # linux gcc known to hang for -lc_p 1445*b30d1939SAndy Fiddaman esac 1446*b30d1939SAndy Fiddaman if $cc -o doti.$exe doti.$obj -l$x 2>e 1447*b30d1939SAndy Fiddaman then ok=1 1448*b30d1939SAndy Fiddaman else if test -s e && egrep -i ":.*[ ](find|found|locate|search|-l$x)[ ]" e > /dev/null 1449*b30d1939SAndy Fiddaman then if egrep -i ":.*[ ](access|permission)[ ]" e 1450*b30d1939SAndy Fiddaman then : maybe 1451*b30d1939SAndy Fiddaman else ok=0 1452*b30d1939SAndy Fiddaman break 1453*b30d1939SAndy Fiddaman fi 1454*b30d1939SAndy Fiddaman fi 1455*b30d1939SAndy Fiddaman case $Lflag in 1456*b30d1939SAndy Fiddaman 1) if $cc -L${d}${f} -o doti.$exe doti.$obj -l$x 1457*b30d1939SAndy Fiddaman then ok=0 1458*b30d1939SAndy Fiddaman break 1459*b30d1939SAndy Fiddaman fi 1460*b30d1939SAndy Fiddaman ;; 1461*b30d1939SAndy Fiddaman esac 1462*b30d1939SAndy Fiddaman fi 1463*b30d1939SAndy Fiddaman done 1464*b30d1939SAndy Fiddaman case $ok in 1465*b30d1939SAndy Fiddaman 0) continue ;; 1466*b30d1939SAndy Fiddaman esac 1467*b30d1939SAndy Fiddaman sort -u all.tmp tmp.tmp > lib.tmp 1468*b30d1939SAndy Fiddaman mv lib.tmp all.tmp 1469*b30d1939SAndy Fiddaman fi 1470*b30d1939SAndy Fiddaman case " $stdlib $libstd " in 1471*b30d1939SAndy Fiddaman *" ${d}${f} "*) 1472*b30d1939SAndy Fiddaman ;; 1473*b30d1939SAndy Fiddaman *) if test -d ${d}${f}/fsoft 1474*b30d1939SAndy Fiddaman then stdlib="$stdlib ${d}${f}/"'$(FLOAT_OPTION)' 1475*b30d1939SAndy Fiddaman fi 1476*b30d1939SAndy Fiddaman stdlib="$stdlib ${d}${f}" 1477*b30d1939SAndy Fiddaman ;; 1478*b30d1939SAndy Fiddaman esac 1479*b30d1939SAndy Fiddaman fi 1480*b30d1939SAndy Fiddaman fi 1481*b30d1939SAndy Fiddaman fi 1482*b30d1939SAndy Fiddaman done 1483*b30d1939SAndy Fiddaman done 1484*b30d1939SAndy Fiddaman stdlib="$stdlib $libstd" 1485*b30d1939SAndy Fiddaman case $stdlib in 1486*b30d1939SAndy Fiddaman */shlib*) 1487*b30d1939SAndy Fiddaman dy= 1488*b30d1939SAndy Fiddaman st= 1489*b30d1939SAndy Fiddaman for i in $stdlib $libstd 1490*b30d1939SAndy Fiddaman do case $i in 1491*b30d1939SAndy Fiddaman */shlib) dy="$dy $i" ;; 1492*b30d1939SAndy Fiddaman *) st="$st $i" ;; 1493*b30d1939SAndy Fiddaman esac 1494*b30d1939SAndy Fiddaman done 1495*b30d1939SAndy Fiddaman for i in /var 1496*b30d1939SAndy Fiddaman do if test -d $i/shlib 1497*b30d1939SAndy Fiddaman then dy="$dy $i/shlib" 1498*b30d1939SAndy Fiddaman fi 1499*b30d1939SAndy Fiddaman done 1500*b30d1939SAndy Fiddaman stdlib="$dy $st" 1501*b30d1939SAndy Fiddaman ;; 1502*b30d1939SAndy Fiddaman esac 1503*b30d1939SAndy Fiddaman ;; 1504*b30d1939SAndy Fiddamanesac 1505*b30d1939SAndy Fiddaman 1506*b30d1939SAndy Fiddamanif $cc -c prefix.$src 1507*b30d1939SAndy Fiddamanthen eval set x $probe_symprefix 1508*b30d1939SAndy Fiddaman while : 1509*b30d1939SAndy Fiddaman do shift 1510*b30d1939SAndy Fiddaman case $# in 1511*b30d1939SAndy Fiddaman 0) break ;; 1512*b30d1939SAndy Fiddaman esac 1513*b30d1939SAndy Fiddaman if $nm $nmflags prefix.$obj | grep -c ${1}prefix >/dev/null 1514*b30d1939SAndy Fiddaman then symprefix=$1 1515*b30d1939SAndy Fiddaman break 1516*b30d1939SAndy Fiddaman fi 1517*b30d1939SAndy Fiddaman done 1518*b30d1939SAndy Fiddamanfi 1519*b30d1939SAndy Fiddaman 1520*b30d1939SAndy Fiddamanif $cc -c warn.$src 2>e && test -f warn.$obj 1521*b30d1939SAndy Fiddamanthen e=`wc -c < e` 1522*b30d1939SAndy Fiddaman 1523*b30d1939SAndy Fiddaman eval set x $probe_debug 1524*b30d1939SAndy Fiddaman while : 1525*b30d1939SAndy Fiddaman do shift 1526*b30d1939SAndy Fiddaman case $# in 1527*b30d1939SAndy Fiddaman 0) break ;; 1528*b30d1939SAndy Fiddaman esac 1529*b30d1939SAndy Fiddaman rm -f warn.$obj 1530*b30d1939SAndy Fiddaman $cc $1 -c warn.$src 2>e && test -f warn.$obj || continue 1531*b30d1939SAndy Fiddaman case `wc -c < e` in 1532*b30d1939SAndy Fiddaman $e) debug=$1; break ;; 1533*b30d1939SAndy Fiddaman esac 1534*b30d1939SAndy Fiddaman done 1535*b30d1939SAndy Fiddaman 1536*b30d1939SAndy Fiddaman eval set x $probe_no_protect 1537*b30d1939SAndy Fiddaman while : 1538*b30d1939SAndy Fiddaman do shift 1539*b30d1939SAndy Fiddaman case $# in 1540*b30d1939SAndy Fiddaman 0) break ;; 1541*b30d1939SAndy Fiddaman esac 1542*b30d1939SAndy Fiddaman rm -f warn.$obj 1543*b30d1939SAndy Fiddaman $cc $1 -c warn.$src 2>e && test -f warn.$obj || continue 1544*b30d1939SAndy Fiddaman case `wc -c < e` in 1545*b30d1939SAndy Fiddaman $e) no_protect=$1; break ;; 1546*b30d1939SAndy Fiddaman esac 1547*b30d1939SAndy Fiddaman done 1548*b30d1939SAndy Fiddaman 1549*b30d1939SAndy Fiddaman case $version_string in 1550*b30d1939SAndy Fiddaman $probe_gcc_version) probe_optimize="$probe_gcc_optimize $probe_optimize" ;; 1551*b30d1939SAndy Fiddaman esac 1552*b30d1939SAndy Fiddaman eval set x $probe_optimize 1553*b30d1939SAndy Fiddaman while : 1554*b30d1939SAndy Fiddaman do shift 1555*b30d1939SAndy Fiddaman case $# in 1556*b30d1939SAndy Fiddaman 0) break ;; 1557*b30d1939SAndy Fiddaman esac 1558*b30d1939SAndy Fiddaman rm -f warn.$obj 1559*b30d1939SAndy Fiddaman $cc $1 -c warn.$src 2>e && test -f warn.$obj || continue 1560*b30d1939SAndy Fiddaman case `wc -c < e` in 1561*b30d1939SAndy Fiddaman $e) optimize=$1; break ;; 1562*b30d1939SAndy Fiddaman esac 1563*b30d1939SAndy Fiddaman done 1564*b30d1939SAndy Fiddaman 1565*b30d1939SAndy Fiddaman eval set x $probe_strict 1566*b30d1939SAndy Fiddaman while : 1567*b30d1939SAndy Fiddaman do shift 1568*b30d1939SAndy Fiddaman case $# in 1569*b30d1939SAndy Fiddaman 0) break ;; 1570*b30d1939SAndy Fiddaman esac 1571*b30d1939SAndy Fiddaman rm -f warn.$obj 1572*b30d1939SAndy Fiddaman $cc $1 -c warn.$src 2>e && test -f warn.$obj || continue 1573*b30d1939SAndy Fiddaman n=`wc -c < e` 1574*b30d1939SAndy Fiddaman if test $n -ge $e 1575*b30d1939SAndy Fiddaman then strict=$1 1576*b30d1939SAndy Fiddaman break 1577*b30d1939SAndy Fiddaman fi 1578*b30d1939SAndy Fiddaman done 1579*b30d1939SAndy Fiddaman 1580*b30d1939SAndy Fiddaman $cc -c warn1.$src 2>e 1581*b30d1939SAndy Fiddaman o=`wc -c < e` 1582*b30d1939SAndy Fiddaman eval set x $probe_warn 1583*b30d1939SAndy Fiddaman while : 1584*b30d1939SAndy Fiddaman do shift 1585*b30d1939SAndy Fiddaman case $# in 1586*b30d1939SAndy Fiddaman 0) break ;; 1587*b30d1939SAndy Fiddaman esac 1588*b30d1939SAndy Fiddaman rm -f warn.$obj warn.$exe 1589*b30d1939SAndy Fiddaman $cc -o warn.$exe $1 warn.$src 2>e && test -f warn.$exe || continue 1590*b30d1939SAndy Fiddaman n=`wc -c < e` 1591*b30d1939SAndy Fiddaman for i in $warn_enum 1592*b30d1939SAndy Fiddaman do rm -f warn$i.$obj 1593*b30d1939SAndy Fiddaman $cc -c $1 warn$i.$src 2>e && test -f warn$i.$obj || continue 1594*b30d1939SAndy Fiddaman n=`wc -c < e` 1595*b30d1939SAndy Fiddaman if test $n -gt $o 1596*b30d1939SAndy Fiddaman then warn=$1 1597*b30d1939SAndy Fiddaman break 2 1598*b30d1939SAndy Fiddaman fi 1599*b30d1939SAndy Fiddaman done 1600*b30d1939SAndy Fiddaman done 1601*b30d1939SAndy Fiddaman 1602*b30d1939SAndy Fiddamanfi 1603*b30d1939SAndy Fiddaman 1604*b30d1939SAndy Fiddamanwhile : 1605*b30d1939SAndy Fiddamando case $hosted in 1606*b30d1939SAndy Fiddaman 1) rm -f readonly.$exe 1607*b30d1939SAndy Fiddaman eval set x '""' $probe_readonly 1608*b30d1939SAndy Fiddaman while : 1609*b30d1939SAndy Fiddaman do shift 1610*b30d1939SAndy Fiddaman case $# in 1611*b30d1939SAndy Fiddaman 0) break ;; 1612*b30d1939SAndy Fiddaman esac 1613*b30d1939SAndy Fiddaman for co in '' -Dtest_const 1614*b30d1939SAndy Fiddaman do rm -f readonly.$exe 1615*b30d1939SAndy Fiddaman if $cc -o readonly.$exe $co $1 readonly.$src && $executable readonly.$exe 1616*b30d1939SAndy Fiddaman then if ./readonly.$exe >/dev/null 2>&1 1617*b30d1939SAndy Fiddaman then : 1618*b30d1939SAndy Fiddaman else readonly=$1 1619*b30d1939SAndy Fiddaman break 3 1620*b30d1939SAndy Fiddaman fi 1621*b30d1939SAndy Fiddaman fi 1622*b30d1939SAndy Fiddaman done 1623*b30d1939SAndy Fiddaman done 1624*b30d1939SAndy Fiddaman rm -f readonly.$exe readonly.s 1625*b30d1939SAndy Fiddaman if $cc -S readonly.$src && test -f readonly.s 1626*b30d1939SAndy Fiddaman then if sed -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)data/\1text/' \ 1627*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)zero[ ][ ]*/\1set .,.+/' \ 1628*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*1/\1byte 0/' \ 1629*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*2/\1byte 0,0/' \ 1630*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*3/\1byte 0,0,0/' \ 1631*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*4/\1byte 0,0,0,0/' \ 1632*b30d1939SAndy Fiddaman readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe 1633*b30d1939SAndy Fiddaman then if ./readonly.$exe >/dev/null 2>&1 1634*b30d1939SAndy Fiddaman then : 1635*b30d1939SAndy Fiddaman else readonly='-S.data' 1636*b30d1939SAndy Fiddaman break 1637*b30d1939SAndy Fiddaman fi 1638*b30d1939SAndy Fiddaman fi 1639*b30d1939SAndy Fiddaman rm -f readonly.$exe 1640*b30d1939SAndy Fiddaman if sed -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)idat/\1code/' \ 1641*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)zero[ ][ ]*/\1set .,.+/' \ 1642*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*1/\1byte 0/' \ 1643*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*2/\1byte 0,0/' \ 1644*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*3/\1byte 0,0,0/' \ 1645*b30d1939SAndy Fiddaman -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*4/\1byte 0,0,0,0/' \ 1646*b30d1939SAndy Fiddaman readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe 1647*b30d1939SAndy Fiddaman then if ./readonly.$exe >/dev/null 2>&1 1648*b30d1939SAndy Fiddaman then : 1649*b30d1939SAndy Fiddaman else readonly='-S.idat' 1650*b30d1939SAndy Fiddaman break 1651*b30d1939SAndy Fiddaman fi 1652*b30d1939SAndy Fiddaman fi 1653*b30d1939SAndy Fiddaman if sed -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)data/\1rdata/' \ 1654*b30d1939SAndy Fiddaman readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe 1655*b30d1939SAndy Fiddaman then if ./readonly.$exe >/dev/null 2>&1 1656*b30d1939SAndy Fiddaman then : 1657*b30d1939SAndy Fiddaman else readonly='-S.rdata' 1658*b30d1939SAndy Fiddaman break 1659*b30d1939SAndy Fiddaman fi 1660*b30d1939SAndy Fiddaman fi 1661*b30d1939SAndy Fiddaman fi 1662*b30d1939SAndy Fiddaman ;; 1663*b30d1939SAndy Fiddaman esac 1664*b30d1939SAndy Fiddaman break 1665*b30d1939SAndy Fiddamandone 1666*b30d1939SAndy Fiddaman 1667*b30d1939SAndy Fiddamancase $stdc in 1668*b30d1939SAndy Fiddaman?*) dialect="$dialect ANSI" ;; 1669*b30d1939SAndy Fiddamanesac 1670*b30d1939SAndy Fiddamancase $plusplus in 1671*b30d1939SAndy Fiddaman?*) dialect="$dialect C++" ;; 1672*b30d1939SAndy Fiddamanesac 1673*b30d1939SAndy Fiddamancase $hosted in 1674*b30d1939SAndy Fiddaman"") dialect="$dialect CROSS" ;; 1675*b30d1939SAndy Fiddamanesac 1676*b30d1939SAndy Fiddamancase $doti in 1677*b30d1939SAndy Fiddaman?*) dialect="$dialect DOTI" ;; 1678*b30d1939SAndy Fiddamanesac 1679*b30d1939SAndy Fiddamancase $gnu in 1680*b30d1939SAndy Fiddaman?*) dialect="$dialect GNU" ;; 1681*b30d1939SAndy Fiddamanesac 1682*b30d1939SAndy Fiddamancase $so:$dynamic:$static in 1683*b30d1939SAndy Fiddaman::) ;; 1684*b30d1939SAndy Fiddaman*) dialect="$dialect DYNAMIC" 1685*b30d1939SAndy Fiddaman case $soversion in 1686*b30d1939SAndy Fiddaman ?*) dialect="$dialect VERSION" ;; 1687*b30d1939SAndy Fiddaman esac 1688*b30d1939SAndy Fiddaman ;; 1689*b30d1939SAndy Fiddamanesac 1690*b30d1939SAndy Fiddamancase $implicitc in 1691*b30d1939SAndy Fiddaman?*) dialect="$dialect IMPLICITC" ;; 1692*b30d1939SAndy Fiddamanesac 1693*b30d1939SAndy Fiddamancase $ptrcopy in 1694*b30d1939SAndy Fiddaman?*) dialect="$dialect PTRCOPY" ;; 1695*b30d1939SAndy Fiddamanesac 1696*b30d1939SAndy Fiddamancase $ptrimplicit in 1697*b30d1939SAndy Fiddaman?*) dialect="$dialect PTRIMPLICIT" ;; 1698*b30d1939SAndy Fiddamanesac 1699*b30d1939SAndy Fiddamancase $ptrmkdir in 1700*b30d1939SAndy Fiddaman?*) dialect="$dialect PTRMKDIR" ;; 1701*b30d1939SAndy Fiddamanesac 1702*b30d1939SAndy Fiddamancase $libpp in 1703*b30d1939SAndy Fiddaman?*) dialect="$dialect LIBPP" ;; 1704*b30d1939SAndy Fiddamanesac 1705*b30d1939SAndy Fiddamancase $toucho in 1706*b30d1939SAndy Fiddaman?*) dialect="$dialect TOUCHO" ;; 1707*b30d1939SAndy Fiddamanesac 1708*b30d1939SAndy Fiddamancase $dDflag in 1709*b30d1939SAndy Fiddaman?*) dialect="$dialect -dD" ;; 1710*b30d1939SAndy Fiddamanesac 1711*b30d1939SAndy Fiddaman# 2005-05-25 use $(CC.INCLUDE.LOCAL) instead 1712*b30d1939SAndy Fiddamancase $include_local in 1713*b30d1939SAndy Fiddaman?*) dialect="$dialect -I-" ;; 1714*b30d1939SAndy Fiddamanesac 1715*b30d1939SAndy Fiddamancase $Lflag in 1716*b30d1939SAndy Fiddaman?*) dialect="$dialect -L" ;; 1717*b30d1939SAndy Fiddamanesac 1718*b30d1939SAndy Fiddaman 1719*b30d1939SAndy Fiddamanppcmd='$(CPP)' 1720*b30d1939SAndy Fiddamanppdir='$(CPP:D)' 1721*b30d1939SAndy Fiddamaneval ppopt='"'$ppopt'"' 1722*b30d1939SAndy Fiddamaneval ppenv='"'$ppenv'"' 1723*b30d1939SAndy Fiddaman 1724*b30d1939SAndy Fiddamanset x "" .$exe 1725*b30d1939SAndy Fiddamanshift 1726*b30d1939SAndy Fiddamanexe= 1727*b30d1939SAndy Fiddamanfor i 1728*b30d1939SAndy Fiddamando rm -f require$i 1729*b30d1939SAndy Fiddamandone 1730*b30d1939SAndy Fiddamanif $cc -o require require.$src 1731*b30d1939SAndy Fiddamanthen for i 1732*b30d1939SAndy Fiddaman do if $executable require$i 1733*b30d1939SAndy Fiddaman then exe=$i 1734*b30d1939SAndy Fiddaman break 1735*b30d1939SAndy Fiddaman fi 1736*b30d1939SAndy Fiddaman done 1737*b30d1939SAndy Fiddamanfi 1738*b30d1939SAndy Fiddamancase $sa:$sd:$so in 1739*b30d1939SAndy Fiddaman::?*) eval set x $probe_sa 1740*b30d1939SAndy Fiddaman while : 1741*b30d1939SAndy Fiddaman do shift 1742*b30d1939SAndy Fiddaman case $# in 1743*b30d1939SAndy Fiddaman 0) break ;; 1744*b30d1939SAndy Fiddaman esac 1745*b30d1939SAndy Fiddaman for i in $stdlib 1746*b30d1939SAndy Fiddaman do eval j="'" $i/lib*$1 "'" 1747*b30d1939SAndy Fiddaman case $j in 1748*b30d1939SAndy Fiddaman " $i/lib*$1 ") 1749*b30d1939SAndy Fiddaman eval j="'" $i/lib*$1.[0123456789]* "'" 1750*b30d1939SAndy Fiddaman case $j in 1751*b30d1939SAndy Fiddaman " $i/lib*$1.[0123456789]* ") 1752*b30d1939SAndy Fiddaman continue 1753*b30d1939SAndy Fiddaman ;; 1754*b30d1939SAndy Fiddaman esac 1755*b30d1939SAndy Fiddaman ;; 1756*b30d1939SAndy Fiddaman esac 1757*b30d1939SAndy Fiddaman sa=$1 1758*b30d1939SAndy Fiddaman lddynamic=-Bdynamic 1759*b30d1939SAndy Fiddaman ldstatic=-Bstatic 1760*b30d1939SAndy Fiddaman break 2 1761*b30d1939SAndy Fiddaman done 1762*b30d1939SAndy Fiddaman done 1763*b30d1939SAndy Fiddaman ;; 1764*b30d1939SAndy Fiddamanesac 1765*b30d1939SAndy Fiddamancase $ldscript in 1766*b30d1939SAndy Fiddaman"") case $so in 1767*b30d1939SAndy Fiddaman .lib) ldscript=".def .exp" ;; 1768*b30d1939SAndy Fiddaman *) ldscript=".ld" ;; 1769*b30d1939SAndy Fiddaman esac 1770*b30d1939SAndy Fiddaman ;; 1771*b30d1939SAndy Fiddamanesac 1772*b30d1939SAndy Fiddamancase $hosttype in 1773*b30d1939SAndy Fiddaman'') hosttype=unknown ;; 1774*b30d1939SAndy Fiddamansgi.mips3) dll_variants='sgi.mips2:o32:-mips2 sgi.mips4:64:-mips4' ;; 1775*b30d1939SAndy Fiddamansgi.mips4) dll_variants='sgi.mips2:o32:-mips2 sgi.mips3:n32:-mips3' ;; 1776*b30d1939SAndy Fiddamanesac 1777*b30d1939SAndy Fiddaman 1778*b30d1939SAndy Fiddamancase $hosted in 1779*b30d1939SAndy Fiddaman"") ccnative=`echo $cc | sed -e 's,.*/,,'` 1780*b30d1939SAndy Fiddaman ccs=$ccnative 1781*b30d1939SAndy Fiddaman for c in cc gcc 1782*b30d1939SAndy Fiddaman do case " $ccs " in 1783*b30d1939SAndy Fiddaman *" $c "*) ;; 1784*b30d1939SAndy Fiddaman *) ccs="$ccs $c" ;; 1785*b30d1939SAndy Fiddaman esac 1786*b30d1939SAndy Fiddaman done 1787*b30d1939SAndy Fiddaman for p in $path 1788*b30d1939SAndy Fiddaman do for c in $ccs 1789*b30d1939SAndy Fiddaman do if $executable $p/$c 1790*b30d1939SAndy Fiddaman then rm -f native.$exe 1791*b30d1939SAndy Fiddaman if $p/$c -o native.$exe doti.$src && ./native.$exe 1792*b30d1939SAndy Fiddaman then ccnative=$p/$c 1793*b30d1939SAndy Fiddaman exectype=`package CC="$ccnative" || $SHELL -c "package CC='$ccnative'"` 1794*b30d1939SAndy Fiddaman case $exectype in 1795*b30d1939SAndy Fiddaman *[Uu][Ss][Aa][Gg][Ee]:*) 1796*b30d1939SAndy Fiddaman exectype=`PATH=$_probe_PATH; export PATH; package CC="$ccnative" || $SHELL -c "package CC='$ccnative'"` 1797*b30d1939SAndy Fiddaman ;; 1798*b30d1939SAndy Fiddaman esac 1799*b30d1939SAndy Fiddaman break 2 1800*b30d1939SAndy Fiddaman fi 1801*b30d1939SAndy Fiddaman fi 1802*b30d1939SAndy Fiddaman done 1803*b30d1939SAndy Fiddaman done 1804*b30d1939SAndy Fiddaman ;; 1805*b30d1939SAndy Fiddaman*) ccnative=$cc 1806*b30d1939SAndy Fiddaman exectype=$hosttype 1807*b30d1939SAndy Fiddaman ;; 1808*b30d1939SAndy Fiddamanesac 1809*b30d1939SAndy Fiddaman 1810*b30d1939SAndy Fiddaman# runtime shared lib exported symbol resolution 1811*b30d1939SAndy Fiddaman 1812*b30d1939SAndy Fiddamancase $cc_dll:$shared in 1813*b30d1939SAndy Fiddaman:|:*|*:);; 1814*b30d1939SAndy Fiddaman*) cat > cmd.c <<'!' 1815*b30d1939SAndy Fiddaman#include <stdio.h> 1816*b30d1939SAndy Fiddaman#include <dlfcn.h> 1817*b30d1939SAndy Fiddamantypedef int (*Lib_f)(int**, int**, int**); 1818*b30d1939SAndy Fiddamanint gbl_def = 1; 1819*b30d1939SAndy Fiddamanint gbl_ref = 1; 1820*b30d1939SAndy Fiddamanint gbl_ext; 1821*b30d1939SAndy Fiddamanint main(int argc, char** argv) 1822*b30d1939SAndy Fiddaman{ 1823*b30d1939SAndy Fiddaman void* dll; 1824*b30d1939SAndy Fiddaman Lib_f lib; 1825*b30d1939SAndy Fiddaman int* def; 1826*b30d1939SAndy Fiddaman int* ref; 1827*b30d1939SAndy Fiddaman int* ext; 1828*b30d1939SAndy Fiddaman 1829*b30d1939SAndy Fiddaman if (!(dll = dlopen(*++argv, RTLD_LAZY))) 1830*b30d1939SAndy Fiddaman fprintf(stderr, "library not found\n"); 1831*b30d1939SAndy Fiddaman else if (!((lib = (Lib_f)dlsym(dll, "lib"))) && !(lib = (Lib_f)dlsym(dll, "_lib"))) 1832*b30d1939SAndy Fiddaman fprintf(stderr, "symbol not found\n"); 1833*b30d1939SAndy Fiddaman else if ((*lib)(&def, &ref, &ext)) 1834*b30d1939SAndy Fiddaman fprintf(stderr, "function failed\n"); 1835*b30d1939SAndy Fiddaman else if (def == &gbl_def && ref == &gbl_ref && ext == &gbl_ext) 1836*b30d1939SAndy Fiddaman printf("ALL\n"); 1837*b30d1939SAndy Fiddaman else if (ref == &gbl_ref && ext == &gbl_ext) 1838*b30d1939SAndy Fiddaman printf("REF\n"); 1839*b30d1939SAndy Fiddaman else if (ext == &gbl_ext) 1840*b30d1939SAndy Fiddaman printf("EXT\n"); 1841*b30d1939SAndy Fiddaman return 0; 1842*b30d1939SAndy Fiddaman} 1843*b30d1939SAndy Fiddaman! 1844*b30d1939SAndy Fiddaman cat > lib.c <<'!' 1845*b30d1939SAndy Fiddamanint gbl_def = 1; 1846*b30d1939SAndy Fiddamanint gbl_ref; 1847*b30d1939SAndy Fiddamanint gbl_ext; 1848*b30d1939SAndy Fiddamanint lib(int** def, int** ref, int** ext) 1849*b30d1939SAndy Fiddaman{ 1850*b30d1939SAndy Fiddaman *def = &gbl_def; 1851*b30d1939SAndy Fiddaman *ref = &gbl_ref; 1852*b30d1939SAndy Fiddaman *ext = &gbl_ext; 1853*b30d1939SAndy Fiddaman return 0; 1854*b30d1939SAndy Fiddaman} 1855*b30d1939SAndy Fiddaman! 1856*b30d1939SAndy Fiddaman if $cc -c $cc_dll $cc_pic cmd.c && 1857*b30d1939SAndy Fiddaman $cc -c $cc_dll $cc_pic lib.c && { 1858*b30d1939SAndy Fiddaman $cc $cc_dll $export_dynamic -o cmd.exe cmd.o || 1859*b30d1939SAndy Fiddaman $cc $cc_dll $export_dynamic -o cmd.exe cmd.o -ldl 1860*b30d1939SAndy Fiddaman } && 1861*b30d1939SAndy Fiddaman $dld $shared -o libgbl.dll lib.o 1862*b30d1939SAndy Fiddaman then x=`./cmd.exe ./libgbl.dll` 1863*b30d1939SAndy Fiddaman case $x in 1864*b30d1939SAndy Fiddaman ?*) dialect="$dialect EXPORT=$x" ;; 1865*b30d1939SAndy Fiddaman esac 1866*b30d1939SAndy Fiddaman else case $sd:$hosttype in 1867*b30d1939SAndy Fiddaman .dll:*win*) dialect="$dialect EXPORT=DLL" ;; 1868*b30d1939SAndy Fiddaman esac 1869*b30d1939SAndy Fiddaman fi 1870*b30d1939SAndy Fiddaman ;; 1871*b30d1939SAndy Fiddamanesac 1872*b30d1939SAndy Fiddaman 1873*b30d1939SAndy Fiddaman# shellmagic defined if installed shell scripts need magic 1874*b30d1939SAndy Fiddaman 1875*b30d1939SAndy Fiddamanecho ': got magic : 1876*b30d1939SAndy Fiddamanecho ok' > ok 1877*b30d1939SAndy Fiddamanchmod +x ok 1878*b30d1939SAndy Fiddamancase `(eval ./ok | /bin/sh) 2>/dev/null` in 1879*b30d1939SAndy Fiddamanok) ;; 1880*b30d1939SAndy Fiddaman*) echo '#!/bin/env sh 1881*b30d1939SAndy Fiddaman: got magic : 1882*b30d1939SAndy Fiddamanecho ok' > ok 1883*b30d1939SAndy Fiddaman chmod +x ok 1884*b30d1939SAndy Fiddaman case `(eval ./ok | /bin/sh) 2>/dev/null` in 1885*b30d1939SAndy Fiddaman ok) shellmagic='$("#")!/bin/env sh' 1886*b30d1939SAndy Fiddaman ;; 1887*b30d1939SAndy Fiddaman *) for i in /emx/bin/bash.exe /emx/bin/sh.exe 1888*b30d1939SAndy Fiddaman do if test -x $i 1889*b30d1939SAndy Fiddaman then shellmagic='$("#")!'$i 1890*b30d1939SAndy Fiddaman break 1891*b30d1939SAndy Fiddaman fi 1892*b30d1939SAndy Fiddaman done 1893*b30d1939SAndy Fiddaman ;; 1894*b30d1939SAndy Fiddaman esac 1895*b30d1939SAndy Fiddaman ;; 1896*b30d1939SAndy Fiddamanesac 1897*b30d1939SAndy Fiddaman 1898*b30d1939SAndy Fiddaman# 1899*b30d1939SAndy Fiddaman# path cleanup 1900*b30d1939SAndy Fiddaman# 1901*b30d1939SAndy Fiddaman 1902*b30d1939SAndy Fiddamanfor i in ar ccnative dld ld nm size stdinclude stdlib strip 1903*b30d1939SAndy Fiddamando eval o='$'$i 1904*b30d1939SAndy Fiddaman v=$o 1905*b30d1939SAndy Fiddaman case $v in 1906*b30d1939SAndy Fiddaman *//*) v=`echo $v | sed 's,///*,/,g'` ;; 1907*b30d1939SAndy Fiddaman esac 1908*b30d1939SAndy Fiddaman if (test . -ef "`pwd`") 1909*b30d1939SAndy Fiddaman then k= 1910*b30d1939SAndy Fiddaman for x in $v 1911*b30d1939SAndy Fiddaman do case $x in 1912*b30d1939SAndy Fiddaman */../*|*/..) 1913*b30d1939SAndy Fiddaman case $x in 1914*b30d1939SAndy Fiddaman /*) a=/ ;; 1915*b30d1939SAndy Fiddaman *) a= ;; 1916*b30d1939SAndy Fiddaman esac 1917*b30d1939SAndy Fiddaman IFS=/ 1918*b30d1939SAndy Fiddaman set '' $x 1919*b30d1939SAndy Fiddaman IFS=$ifs 1920*b30d1939SAndy Fiddaman r= 1921*b30d1939SAndy Fiddaman for d 1922*b30d1939SAndy Fiddaman do r="$d $r" 1923*b30d1939SAndy Fiddaman done 1924*b30d1939SAndy Fiddaman p= 1925*b30d1939SAndy Fiddaman g= 1926*b30d1939SAndy Fiddaman for d in $r 1927*b30d1939SAndy Fiddaman do case $d in 1928*b30d1939SAndy Fiddaman ..) g="$g $d" ;; 1929*b30d1939SAndy Fiddaman *) case $g in 1930*b30d1939SAndy Fiddaman '') case $p in 1931*b30d1939SAndy Fiddaman '') p=$d ;; 1932*b30d1939SAndy Fiddaman *) p=$d/$p ;; 1933*b30d1939SAndy Fiddaman esac 1934*b30d1939SAndy Fiddaman ;; 1935*b30d1939SAndy Fiddaman *) set $g 1936*b30d1939SAndy Fiddaman shift 1937*b30d1939SAndy Fiddaman g=$* 1938*b30d1939SAndy Fiddaman ;; 1939*b30d1939SAndy Fiddaman esac 1940*b30d1939SAndy Fiddaman ;; 1941*b30d1939SAndy Fiddaman esac 1942*b30d1939SAndy Fiddaman done 1943*b30d1939SAndy Fiddaman case $a in 1944*b30d1939SAndy Fiddaman '') for d in $g 1945*b30d1939SAndy Fiddaman do p=$d/$p 1946*b30d1939SAndy Fiddaman done 1947*b30d1939SAndy Fiddaman ;; 1948*b30d1939SAndy Fiddaman *) p=$a$p 1949*b30d1939SAndy Fiddaman ;; 1950*b30d1939SAndy Fiddaman esac 1951*b30d1939SAndy Fiddaman case $p in 1952*b30d1939SAndy Fiddaman /) continue ;; 1953*b30d1939SAndy Fiddaman esac 1954*b30d1939SAndy Fiddaman test $x -ef $p && x=$p 1955*b30d1939SAndy Fiddaman ;; 1956*b30d1939SAndy Fiddaman esac 1957*b30d1939SAndy Fiddaman k="$k $x" 1958*b30d1939SAndy Fiddaman done 1959*b30d1939SAndy Fiddaman set '' $k 1960*b30d1939SAndy Fiddaman shift 1961*b30d1939SAndy Fiddaman v=$1 1962*b30d1939SAndy Fiddaman case $# in 1963*b30d1939SAndy Fiddaman 0) ;; 1964*b30d1939SAndy Fiddaman *) shift 1965*b30d1939SAndy Fiddaman while : 1966*b30d1939SAndy Fiddaman do case $# in 1967*b30d1939SAndy Fiddaman 0) break ;; 1968*b30d1939SAndy Fiddaman esac 1969*b30d1939SAndy Fiddaman k= 1970*b30d1939SAndy Fiddaman for d 1971*b30d1939SAndy Fiddaman do for j in $v 1972*b30d1939SAndy Fiddaman do test $d -ef $j && continue 2 1973*b30d1939SAndy Fiddaman done 1974*b30d1939SAndy Fiddaman k="$k $d" 1975*b30d1939SAndy Fiddaman done 1976*b30d1939SAndy Fiddaman set '' $k 1977*b30d1939SAndy Fiddaman case $# in 1978*b30d1939SAndy Fiddaman 1) break ;; 1979*b30d1939SAndy Fiddaman esac 1980*b30d1939SAndy Fiddaman shift 1981*b30d1939SAndy Fiddaman v="$v $1" 1982*b30d1939SAndy Fiddaman shift 1983*b30d1939SAndy Fiddaman done 1984*b30d1939SAndy Fiddaman ;; 1985*b30d1939SAndy Fiddaman esac 1986*b30d1939SAndy Fiddaman fi 1987*b30d1939SAndy Fiddaman case $v in 1988*b30d1939SAndy Fiddaman $o) ;; 1989*b30d1939SAndy Fiddaman *) eval $i='$'v ;; 1990*b30d1939SAndy Fiddaman esac 1991*b30d1939SAndy Fiddamandone 1992*b30d1939SAndy Fiddaman 1993*b30d1939SAndy Fiddamancase $keepstdlib in 1994*b30d1939SAndy Fiddaman1) ;; 1995*b30d1939SAndy Fiddaman*) # 1996*b30d1939SAndy Fiddaman # favor lib64 over lib 1997*b30d1939SAndy Fiddaman # 1998*b30d1939SAndy Fiddaman case $hosttype in 1999*b30d1939SAndy Fiddaman *64|*[!0-9]64[!a-zA-Z0-9]*) 2000*b30d1939SAndy Fiddaman o=$stdlib 2001*b30d1939SAndy Fiddaman stdlib= 2002*b30d1939SAndy Fiddaman for i in $o 2003*b30d1939SAndy Fiddaman do case " $stdlib " in 2004*b30d1939SAndy Fiddaman *" $i "*) 2005*b30d1939SAndy Fiddaman continue 2006*b30d1939SAndy Fiddaman ;; 2007*b30d1939SAndy Fiddaman esac 2008*b30d1939SAndy Fiddaman case $i in 2009*b30d1939SAndy Fiddaman *64) stdlib="$stdlib $i" 2010*b30d1939SAndy Fiddaman continue 2011*b30d1939SAndy Fiddaman ;; 2012*b30d1939SAndy Fiddaman esac 2013*b30d1939SAndy Fiddaman case " $o " in 2014*b30d1939SAndy Fiddaman *" ${i}64 "*) 2015*b30d1939SAndy Fiddaman case " $stdlib " in 2016*b30d1939SAndy Fiddaman *" ${i}64 "*) 2017*b30d1939SAndy Fiddaman ;; 2018*b30d1939SAndy Fiddaman *) stdlib="$stdlib ${i}64" 2019*b30d1939SAndy Fiddaman ;; 2020*b30d1939SAndy Fiddaman esac 2021*b30d1939SAndy Fiddaman ;; 2022*b30d1939SAndy Fiddaman esac 2023*b30d1939SAndy Fiddaman stdlib="$stdlib $i" 2024*b30d1939SAndy Fiddaman done 2025*b30d1939SAndy Fiddaman ;; 2026*b30d1939SAndy Fiddaman esac 2027*b30d1939SAndy Fiddaman ;; 2028*b30d1939SAndy Fiddamanesac 2029*b30d1939SAndy Fiddaman 2030*b30d1939SAndy Fiddaman# 2031*b30d1939SAndy Fiddaman# set up for local override 2032*b30d1939SAndy Fiddaman# 2033*b30d1939SAndy Fiddaman 2034*b30d1939SAndy FiddamanCC_VERSION_STAMP=$version_stamp 2035*b30d1939SAndy FiddamanCC_VERSION_STRING=$version_string 2036*b30d1939SAndy FiddamanCC_CC=$cc 2037*b30d1939SAndy FiddamanCC_NATIVE=$ccnative 2038*b30d1939SAndy FiddamanCC_EXECTYPE=$exectype 2039*b30d1939SAndy FiddamanCC_HOSTTYPE=$hosttype 2040*b30d1939SAndy FiddamanCC_ALTPP_FLAGS=$ppopt 2041*b30d1939SAndy FiddamanCC_ALTPP_ENV=$ppenv 2042*b30d1939SAndy FiddamanCC_AR=$ar 2043*b30d1939SAndy FiddamanCC_AR_ARFLAGS=$ar_arflags 2044*b30d1939SAndy FiddamanCC_ARFLAGS=$arflags 2045*b30d1939SAndy FiddamanCC_DEBUG=$debug 2046*b30d1939SAndy FiddamanCC_DIALECT=$dialect 2047*b30d1939SAndy FiddamanCC_PICBIG=$cc_PIC 2048*b30d1939SAndy FiddamanCC_PICSMALL=$cc_pic 2049*b30d1939SAndy FiddamanCC_PIC=$CC_PICBIG 2050*b30d1939SAndy FiddamanCC_DLL_ONLY=$cc_dll 2051*b30d1939SAndy Fiddamancase $CC_DLL_ONLY in 2052*b30d1939SAndy Fiddaman'') CC_DLLBIG= 2053*b30d1939SAndy Fiddaman CC_DLLSMALL= 2054*b30d1939SAndy Fiddaman CC_DLL= 2055*b30d1939SAndy Fiddaman ;; 2056*b30d1939SAndy Fiddaman*) CC_DLLBIG="$CC_DLL_ONLY $CC_PICBIG" 2057*b30d1939SAndy Fiddaman CC_DLLSMALL="$CC_DLL_ONLY $CC_PICSMALL" 2058*b30d1939SAndy Fiddaman CC_DLL="$CC_DLL_ONLY $CC_PICBIG" 2059*b30d1939SAndy Fiddaman ;; 2060*b30d1939SAndy Fiddamanesac 2061*b30d1939SAndy FiddamanCC_DLL_DIR=$dll_dir 2062*b30d1939SAndy FiddamanCC_DLL_LIBRARIES=$dll_libraries 2063*b30d1939SAndy FiddamanCC_DLL_VARIANTS=$dll_variants 2064*b30d1939SAndy FiddamanCC_DYNAMIC=$dynamic 2065*b30d1939SAndy FiddamanCC_EXPORT_DYNAMIC=$export_dynamic 2066*b30d1939SAndy FiddamanCC_INCLUDE_LOCAL=$include_local 2067*b30d1939SAndy FiddamanCC_LD=$ld 2068*b30d1939SAndy FiddamanCC_LD_DYNAMIC=$lddynamic 2069*b30d1939SAndy FiddamanCC_LD_LAZY=$ldlazy 2070*b30d1939SAndy FiddamanCC_LD_NOLAZY=$ldnolazy 2071*b30d1939SAndy FiddamanCC_LD_ORIGIN=$ldorigin 2072*b30d1939SAndy FiddamanCC_LD_RECORD=$ldrecord 2073*b30d1939SAndy FiddamanCC_LD_NORECORD=$ldnorecord 2074*b30d1939SAndy FiddamanCC_LD_RUNPATH=$ldrunpath 2075*b30d1939SAndy FiddamanCC_LD_STATIC=$ldstatic 2076*b30d1939SAndy FiddamanCC_LD_STRIP=$ldstrip 2077*b30d1939SAndy FiddamanCC_LIB_DLL=$lib_dll 2078*b30d1939SAndy FiddamanCC_LIB_ALL=$lib_all 2079*b30d1939SAndy FiddamanCC_LIB_UNDEF=$lib_undef 2080*b30d1939SAndy FiddamanCC_MAKE_OPTIONS=$makeoptions 2081*b30d1939SAndy FiddamanCC_NM=$nm 2082*b30d1939SAndy FiddamanCC_NMEDIT=$nmedit 2083*b30d1939SAndy FiddamanCC_NMFLAGS=$nmflags 2084*b30d1939SAndy FiddamanCC_NOPROTECT=$no_protect 2085*b30d1939SAndy FiddamanCC_OPTIMIZE=$optimize 2086*b30d1939SAndy FiddamanCC_READONLY=$readonly 2087*b30d1939SAndy FiddamanCC_REPOSITORY=$repository 2088*b30d1939SAndy FiddamanCC_REQUIRE=$require 2089*b30d1939SAndy FiddamanCC_RUNPATH=$runpath 2090*b30d1939SAndy FiddamanCC_SHARED=$shared 2091*b30d1939SAndy FiddamanCC_SHARED_LD=$dld 2092*b30d1939SAndy FiddamanCC_SHARED_NAME=$shared_name 2093*b30d1939SAndy FiddamanCC_SHARED_REGISTRY=$shared_registry 2094*b30d1939SAndy FiddamanCC_SHARED_REGISTRY_PATH=$probe_shared_registry_path 2095*b30d1939SAndy FiddamanCC_SHELLMAGIC=$shellmagic 2096*b30d1939SAndy FiddamanCC_SIZE=$size 2097*b30d1939SAndy FiddamanCC_STATIC=$static 2098*b30d1939SAndy FiddamanCC_STDINCLUDE=$stdinclude 2099*b30d1939SAndy FiddamanCC_STDLIB=$stdlib 2100*b30d1939SAndy FiddamanCC_STRICT=$strict 2101*b30d1939SAndy FiddamanCC_STRIP=$strip 2102*b30d1939SAndy FiddamanCC_STRIP_FLAGS=$stripflags 2103*b30d1939SAndy FiddamanCC_PREFIX_ARCHIVE=$prefix_archive 2104*b30d1939SAndy FiddamanCC_PREFIX_DYNAMIC=$prefix_dynamic 2105*b30d1939SAndy FiddamanCC_PREFIX_SHARED=$prefix_shared 2106*b30d1939SAndy FiddamanCC_PREFIX_SYMBOL=$symprefix 2107*b30d1939SAndy FiddamanCC_SUFFIX_ARCHIVE=.$lib 2108*b30d1939SAndy FiddamanCC_SUFFIX_COMMAND=$suffix_command 2109*b30d1939SAndy FiddamanCC_SUFFIX_DEBUG=$sdb 2110*b30d1939SAndy FiddamanCC_SUFFIX_DYNAMIC=$sd 2111*b30d1939SAndy FiddamanCC_SUFFIX_LD=$ldscript 2112*b30d1939SAndy FiddamanCC_SUFFIX_OBJECT=.$obj 2113*b30d1939SAndy FiddamanCC_SUFFIX_SHARED=$so 2114*b30d1939SAndy FiddamanCC_SUFFIX_SOURCE=.$src 2115*b30d1939SAndy FiddamanCC_SUFFIX_STATIC=$sa 2116*b30d1939SAndy FiddamanCC_VERSION=$version_flags 2117*b30d1939SAndy FiddamanCC_WARN=$warn 2118*b30d1939SAndy FiddamanCC_ATTRIBUTES=$ATTRIBUTES 2119*b30d1939SAndy Fiddaman 2120*b30d1939SAndy Fiddamanexec >&3 2121*b30d1939SAndy Fiddaman 2122*b30d1939SAndy Fiddaman# 2123*b30d1939SAndy Fiddaman# check for local override 2124*b30d1939SAndy Fiddaman# all CC_* but { CC_CC CC_VERSION_STAMP CC_VERSION_STRING } may be modified 2125*b30d1939SAndy Fiddaman# additional CC.* may be printed on stdout 2126*b30d1939SAndy Fiddaman# 2127*b30d1939SAndy Fiddaman 2128*b30d1939SAndy Fiddamanif test -f "$dir/probe.lcl" 2129*b30d1939SAndy Fiddamanthen . "$dir/probe.lcl" 2130*b30d1939SAndy Fiddamanfi 2131*b30d1939SAndy Fiddaman 2132*b30d1939SAndy Fiddaman# 2133*b30d1939SAndy Fiddaman# the payoff 2134*b30d1939SAndy Fiddaman# 2135*b30d1939SAndy Fiddaman 2136*b30d1939SAndy Fiddamancase $version_stamp in 2137*b30d1939SAndy Fiddaman?*) echo "# $version_stamp" ;; 2138*b30d1939SAndy Fiddamanesac 2139*b30d1939SAndy Fiddamanecho CC.CC = $cc 2140*b30d1939SAndy Fiddamanecho CC.NATIVE = $CC_NATIVE 2141*b30d1939SAndy Fiddamanecho CC.EXECTYPE = $CC_EXECTYPE 2142*b30d1939SAndy Fiddamanecho CC.HOSTTYPE = $CC_HOSTTYPE 2143*b30d1939SAndy Fiddamanecho CC.ALTPP.FLAGS = $CC_ALTPP_FLAGS 2144*b30d1939SAndy Fiddamanecho CC.ALTPP.ENV = $CC_ALTPP_ENV 2145*b30d1939SAndy Fiddamanecho CC.AR = $CC_AR 2146*b30d1939SAndy Fiddamanecho CC.AR.ARFLAGS = $CC_AR_ARFLAGS 2147*b30d1939SAndy Fiddamanecho CC.ARFLAGS = $CC_ARFLAGS 2148*b30d1939SAndy Fiddamanecho CC.DEBUG = $CC_DEBUG 2149*b30d1939SAndy Fiddamanecho CC.DIALECT = $CC_DIALECT 2150*b30d1939SAndy Fiddamanecho CC.DLLBIG = $CC_DLLBIG 2151*b30d1939SAndy Fiddamanecho CC.DLLSMALL = $CC_DLLSMALL 2152*b30d1939SAndy Fiddamanecho CC.DLL = $CC_DLL 2153*b30d1939SAndy Fiddamanecho CC.DLL.DEF = $cc_dll_def 2154*b30d1939SAndy Fiddamanecho CC.DLL.DIR = $CC_DLL_DIR 2155*b30d1939SAndy Fiddamanecho CC.DLL.LIBRARIES = $CC_DLL_LIBRARIES 2156*b30d1939SAndy Fiddamanecho CC.DLL.VARIANTS = $CC_DLL_VARIANTS 2157*b30d1939SAndy Fiddamanecho CC.DYNAMIC = $CC_DYNAMIC 2158*b30d1939SAndy Fiddamanecho CC.EXPORT.DYNAMIC = $CC_EXPORT_DYNAMIC 2159*b30d1939SAndy Fiddamanecho CC.INCLUDE.LOCAL = $CC_INCLUDE_LOCAL 2160*b30d1939SAndy Fiddaman# 2161*b30d1939SAndy Fiddaman# 2004-02-14 release workaround 2162*b30d1939SAndy Fiddaman# 2163*b30d1939SAndy Fiddamancase $CC_SHARED_LD in 2164*b30d1939SAndy Fiddaman$CC_CC) echo if LDSHARED 2165*b30d1939SAndy Fiddaman echo CC.LD = $CC_LD 2166*b30d1939SAndy Fiddaman echo else 2167*b30d1939SAndy Fiddaman echo CC.LD = $CC_CC 2168*b30d1939SAndy Fiddaman echo end 2169*b30d1939SAndy Fiddaman ;; 2170*b30d1939SAndy Fiddaman*) echo CC.LD = $CC_LD 2171*b30d1939SAndy Fiddaman ;; 2172*b30d1939SAndy Fiddamanesac 2173*b30d1939SAndy Fiddamanecho CC.LD.DYNAMIC = $CC_LD_DYNAMIC 2174*b30d1939SAndy Fiddamanecho CC.LD.LAZY = $CC_LD_LAZY 2175*b30d1939SAndy Fiddamanecho CC.LD.NOLAZY = $CC_LD_NOLAZY 2176*b30d1939SAndy Fiddamanecho CC.LD.ORIGIN = $CC_LD_ORIGIN 2177*b30d1939SAndy Fiddamanecho CC.LD.RECORD = $CC_LD_RECORD 2178*b30d1939SAndy Fiddamanecho CC.LD.NORECORD = $CC_LD_NORECORD 2179*b30d1939SAndy Fiddamanecho CC.LD.RUNPATH = $CC_LD_RUNPATH 2180*b30d1939SAndy Fiddamanecho CC.LD.STATIC = $CC_LD_STATIC 2181*b30d1939SAndy Fiddamanecho CC.LD.STRIP = $CC_LD_STRIP 2182*b30d1939SAndy Fiddamanecho CC.LIB.DLL = $CC_LIB_DLL 2183*b30d1939SAndy Fiddamanecho CC.LIB.ALL = $CC_LIB_ALL 2184*b30d1939SAndy Fiddamanecho CC.LIB.UNDEF = $CC_LIB_UNDEF 2185*b30d1939SAndy Fiddamanecho CC.MAKE.OPTIONS = $CC_MAKE_OPTIONS 2186*b30d1939SAndy Fiddamanecho CC.NM = $CC_NM 2187*b30d1939SAndy Fiddamancase $CC_NMEDIT in 2188*b30d1939SAndy Fiddaman?*) CC_NMEDIT=" $CC_NMEDIT" ;; 2189*b30d1939SAndy Fiddamanesac 2190*b30d1939SAndy Fiddamanecho CC.NMEDIT ="$CC_NMEDIT" 2191*b30d1939SAndy Fiddamanecho CC.NMFLAGS = $CC_NMFLAGS 2192*b30d1939SAndy Fiddamanecho CC.NOPROTECT = $CC_NOPROTECT 2193*b30d1939SAndy Fiddamanecho CC.OPTIMIZE = $CC_OPTIMIZE 2194*b30d1939SAndy Fiddamanecho CC.PICBIG = $CC_PICBIG 2195*b30d1939SAndy Fiddamanecho CC.PICSMALL = $CC_PICSMALL 2196*b30d1939SAndy Fiddamanecho CC.PIC = $CC_PIC 2197*b30d1939SAndy Fiddamanecho CC.READONLY = $CC_READONLY 2198*b30d1939SAndy Fiddamanecho CC.REPOSITORY = $CC_REPOSITORY 2199*b30d1939SAndy Fiddamanfor f in $CC_REQUIRE 2200*b30d1939SAndy Fiddamando echo CC.REQUIRE.$f =`cat req.$f` 2201*b30d1939SAndy Fiddamandone 2202*b30d1939SAndy Fiddamanecho CC.RUNPATH = $CC_RUNPATH 2203*b30d1939SAndy Fiddamanecho CC.SHARED = $CC_SHARED 2204*b30d1939SAndy Fiddamanecho CC.SHARED.LD = $CC_SHARED_LD 2205*b30d1939SAndy Fiddamanecho CC.SHARED.NAME = $CC_SHARED_NAME 2206*b30d1939SAndy Fiddamanecho CC.SHARED.REGISTRY = $CC_SHARED_REGISTRY 2207*b30d1939SAndy Fiddamanecho CC.SHARED.REGISTRY.PATH = $CC_SHARED_REGISTRY_PATH 2208*b30d1939SAndy Fiddamanecho CC.SHELLMAGIC = $CC_SHELLMAGIC 2209*b30d1939SAndy Fiddamanecho CC.SIZE = $CC_SIZE 2210*b30d1939SAndy Fiddamanecho CC.STATIC = $CC_STATIC 2211*b30d1939SAndy Fiddamanecho CC.STDINCLUDE = $CC_STDINCLUDE 2212*b30d1939SAndy Fiddamanecho CC.STDLIB = $CC_STDLIB 2213*b30d1939SAndy Fiddamanecho CC.STRICT = $CC_STRICT 2214*b30d1939SAndy Fiddamanecho CC.STRIP = $CC_STRIP 2215*b30d1939SAndy Fiddamanecho CC.STRIP.FLAGS = $CC_STRIP_FLAGS 2216*b30d1939SAndy Fiddamanecho CC.PREFIX.ARCHIVE = $CC_PREFIX_ARCHIVE 2217*b30d1939SAndy Fiddamanecho CC.PREFIX.DYNAMIC = $CC_PREFIX_DYNAMIC 2218*b30d1939SAndy Fiddamanecho CC.PREFIX.SHARED = $CC_PREFIX_SHARED 2219*b30d1939SAndy Fiddamanecho CC.PREFIX.SYMBOL = $CC_PREFIX_SYMBOL 2220*b30d1939SAndy Fiddamanecho CC.SUFFIX.ARCHIVE = $CC_SUFFIX_ARCHIVE 2221*b30d1939SAndy Fiddamanecho CC.SUFFIX.COMMAND = $CC_SUFFIX_COMMAND 2222*b30d1939SAndy Fiddamanecho CC.SUFFIX.DEBUG = $CC_SUFFIX_DEBUG 2223*b30d1939SAndy Fiddamanecho CC.SUFFIX.DYNAMIC = $CC_SUFFIX_DYNAMIC 2224*b30d1939SAndy Fiddamanecho CC.SUFFIX.LD = $CC_SUFFIX_LD 2225*b30d1939SAndy Fiddamanecho CC.SUFFIX.OBJECT = $CC_SUFFIX_OBJECT 2226*b30d1939SAndy Fiddamanecho CC.SUFFIX.SHARED = $CC_SUFFIX_SHARED 2227*b30d1939SAndy Fiddamanecho CC.SUFFIX.SOURCE = $CC_SUFFIX_SOURCE 2228*b30d1939SAndy Fiddamanecho CC.SUFFIX.STATIC = $CC_SUFFIX_STATIC 2229*b30d1939SAndy Fiddamanecho CC.VERSION = $CC_VERSION 2230*b30d1939SAndy Fiddamancase $CC_VERSION_STRING in 2231*b30d1939SAndy Fiddaman*\"*) i=`echo " $CC_VERSION_STRING" | sed -e 's,",\\\\",g' -e 's,^ ,,' -e 's,.*,"&",'` ;; 2232*b30d1939SAndy Fiddaman*\'*) i=\"$CC_VERSION_STRING\" ;; 2233*b30d1939SAndy Fiddaman*) i=$CC_VERSION_STRING ;; 2234*b30d1939SAndy Fiddamanesac 2235*b30d1939SAndy Fiddamancat <<! 2236*b30d1939SAndy FiddamanCC.VERSION.STRING = $i 2237*b30d1939SAndy Fiddaman! 2238*b30d1939SAndy Fiddamanecho CC.WARN = $CC_WARN 2239*b30d1939SAndy Fiddaman 2240*b30d1939SAndy Fiddamanfor i in $CC_ATTRIBUTES 2241*b30d1939SAndy Fiddamando eval echo CC.$i = \$$i 2242*b30d1939SAndy Fiddamandone 2243