From 23f418823db70e44edaef1d697ffc2dfd6ab771b Mon Sep 17 00:00:00 2001 From: Jarkko Hietaniemi Date: Tue, 30 Oct 2007 03:52:04 -0400 Subject: [PATCH] Re: configure failed in tru64 Message-ID: <47271AE4.5060806@iki.fi> p4raw-id: //depot/perl@32203 --- hints/dec_osf.sh | 116 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 56 deletions(-) diff --git a/hints/dec_osf.sh b/hints/dec_osf.sh index 0b4723c..4c18200 100644 --- a/hints/dec_osf.sh +++ b/hints/dec_osf.sh @@ -60,6 +60,42 @@ cc=${cc:-cc} +# Intentional leading tabs. + myosvers="`/usr/sbin/sizer -v 2>/dev/null || uname -r`" + unamer="`uname -r`" + +# Fancy compiler suites use optimising linker as well as compiler. +# +case "$unamer" in +*[123].*) # old loader + lddlflags="$lddlflags -O3" + ;; +*) if $test "X$optimize" = "X$undef"; then + lddlflags="$lddlflags -msym" + else + case "$myosvers" in + *4.0D*) + # QAR 56761: -O4 + .so may produce broken code, + # fixed in 4.0E or better. + ;; + *) + lddlflags="$lddlflags $optimize" + ;; + esac + # -msym: If using a sufficiently recent /sbin/loader, + # keep the module symbols with the modules. + lddlflags="$lddlflags -msym $_lddlflags_strict_ansi" + fi + ;; +esac +# Yes, the above loses if gcc does not use the system linker. +# If that happens, let me know about it. + +# Because there is no other handy way to recognize 3.X. +case "$unamer" in +*3.*) ccflags="$ccflags -DDEC_OSF1_3_X" ;; +esac + case "`$cc -v 2>&1 | grep cc`" in *gcc*) isgcc=gcc ;; esac @@ -113,8 +149,8 @@ EOF int main() { return 0; } EOF ccversion=`cc -V | awk '/(Compaq|DEC) C/ {print $3}' | grep '^V'` - # the main point is the '-v' flag of 'cc'. - case "`cc -v -c try.c 2>&1`" in + # the main point is the '-v' flag of 'cc'. + case "`cc -v -c try.c 2>&1`" in */gemc_cc*) # we have the new DEC GEM CC _DEC_cc_style=new ;; @@ -127,7 +163,7 @@ EOF # but even then the lddlflags needs to stay -std1. # If it is not, we must use -std1 for both flags. # - case "`cc -c99 try.c 2>&1`" in + case "`cc -c99 try.c 2>&1`" in *"-c99: Unknown flag"*) _ccflags_strict_ansi="-std1" ;; @@ -152,7 +188,10 @@ EOF _lddlflags_strict_ansi="-std1" # -no_ansi_alias because Perl code is not that strict # (also gcc uses by default -fno-strict-aliasing). - _ccflags_strict_ansi="$_ccflags_strict_ansi -no_ansi_alias" + case "$unamer" in + *[1234].*) ;; + *5.*) _ccflags_strict_ansi="$_ccflags_strict_ansi -no_ansi_alias" ;; + esac # Cleanup. rm -f try.c try.o ;; @@ -184,7 +223,7 @@ case "$optimize" in *) case "$_DEC_cc_style" in new) optimize='-O4' ;; old) optimize='-O2 -Olimit 3200' ;; - esac + esac ccflags="$ccflags -D_INTRINSICS" ;; esac @@ -290,47 +329,12 @@ libswanted="`echo $libswanted | sed -e 's/ ndbm / /'`" # the basic lddlflags used always lddlflags='-shared -expect_unresolved "*"' -# Intentional leading tab. - myosvers="`/usr/sbin/sizer -v 2>/dev/null || uname -r`" - -# Fancy compiler suites use optimising linker as well as compiler. -# -case "`uname -r`" in -*[123].*) # old loader - lddlflags="$lddlflags -O3" - ;; -*) if $test "X$optimize" = "X$undef"; then - lddlflags="$lddlflags -msym" - else - case "$myosvers" in - *4.0D*) - # QAR 56761: -O4 + .so may produce broken code, - # fixed in 4.0E or better. - ;; - *) - lddlflags="$lddlflags $optimize" - ;; - esac - # -msym: If using a sufficiently recent /sbin/loader, - # keep the module symbols with the modules. - lddlflags="$lddlflags -msym $_lddlflags_strict_ansi" - fi - ;; -esac -# Yes, the above loses if gcc does not use the system linker. -# If that happens, let me know about it. - -# Because there is no other handy way to recognize 3.X. -case "`uname -r`" in -*3.*) ccflags="$ccflags -DDEC_OSF1_3_X" ;; -esac - # If debugging or (old systems and doing shared) # then do not strip the lib, otherwise, strip. # As noted above the -DDEBUGGING is added automagically by Configure if -g. case "$optimize" in *-g*) ;; # left intentionally blank -*) case "`uname -r`" in +*) case "$unamer" in *[123].*) case "$useshrplib" in false|undef|'') lddlflags="$lddlflags -s" ;; @@ -338,8 +342,8 @@ case "$optimize" in ;; *) lddlflags="$lddlflags -s" ;; - esac - ;; + esac + ;; esac # @@ -371,7 +375,7 @@ esac # The off_t is already 8 bytes, so we do have largefileness. cat > UU/usethreads.cbu <<'EOCBU' -# This script UU/usethreads.cbu will get 'called-back' by Configure +# This script UU/usethreads.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use threads. case "$usethreads" in $define|true|[yY]*) @@ -379,7 +383,7 @@ $define|true|[yY]*) # cannot be used to compile a threaded Perl. cat > pthread.c < -extern int foo; +extern int foo; EOF $cc -c pthread.c 2> pthread.err if egrep -q "unrecognized compiler|syntax error" pthread.err; then @@ -401,13 +405,13 @@ EOF gcc) ccflags="-D_REENTRANT $ccflags" ;; - *) case "`uname -r`" in + *) case "$unamer" in *[123].*) ccflags="-threads $ccflags" ;; *) ccflags="-pthread $ccflags" ;; esac ;; - esac - case "`uname -r`" in + esac + case "$unamer" in *[123].*) libswanted="$libswanted pthreads mach exc c_r" ;; *) libswanted="$libswanted pthread exc" ;; esac @@ -433,7 +437,7 @@ case "$usemallocwrap" in esac cat > UU/uselongdouble.cbu <<'EOCBU' -# This script UU/uselongdouble.cbu will get 'called-back' by Configure +# This script UU/uselongdouble.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use long doubles. case "$uselongdouble" in $define|true|[yY]*) @@ -503,7 +507,7 @@ do '') LD_LIBRARY_PATH=$p ;; *) LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$p ;; esac - fi + fi done case "$LD_LIBRARY_PATH" in "$old_LD_LIBRARY_PATH") ;; @@ -519,7 +523,7 @@ esac # unset _DEC_cc_style - + # # History: # @@ -559,14 +563,14 @@ unset _DEC_cc_style # * Restructuring Spider's suggestions. # # * Older Digital UNIXes cannot handle -Olimit ... for $lddlflags. -# +# # * ld -s cannot be used in older Digital UNIXes when doing shared. # # # 21-Feb-1997 Spider Boardman # # * -hidden removed. -# +# # * -DSTANDARD_C removed. # # * -D_INTRINSICS added. (that -fast does not seem to buy much confirmed) @@ -632,7 +636,7 @@ unset _DEC_cc_style # # * now 'dl' is always removed from libswanted. Not only if # optimize is an empty string. -# +# # # 17-Jan-1997 Achim Bohnet # @@ -642,10 +646,10 @@ unset _DEC_cc_style # Because the dlopen, dlclose,... calls are in the # C library it not necessary at all to check for the # dl library. Therefore dl is removed from libswanted. -# +# # # 1-Jan-1997 Achim Bohnet -# +# # * Set -Olimit to 3200 because perl_yylex.c got too big # for the optimizer. # -- 2.7.4