X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fhpux.sh;h=a03eed6401e50b92996cb49eca21789690b507b4;hb=bf0c440fce1b379160a009c06867702b38dd9366;hp=d1fbb3a4806346a173313d1e7c8bc23b50a7bf04;hpb=959c26a4a6d12a2702abfdc7685ff27cc059a76c;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/hpux.sh b/hints/hpux.sh index d1fbb3a..a03eed6 100644 --- a/hints/hpux.sh +++ b/hints/hpux.sh @@ -20,6 +20,7 @@ # Distinguish between MC68020, MC68030, MC68040 # Don't assume every OS != 10 is < 10, (e.g., 11). # From: Chuck Phillips +# HP-UX 10 pthreads hints: Matthew T Harden # This version: August 15, 1997 # Current maintainer: Jeff Okamoto @@ -60,7 +61,7 @@ # # Lastly, you may want to include the "-z" HP linker flag so that # reading from a NULL pointer causes a SEGV. -ccflags="$ccflags -D_HPUX_SOURCE" +ccflags="$ccflags -D_HPUX_SOURCE -Wl,-z" # Check if you're using the bundled C compiler. This compiler doesn't support # ANSI C (the -Aa flag) nor can it produce shared libraries. Thus we have @@ -100,11 +101,14 @@ EOM ;; esac -# Even if you use gcc, prefer the HP math library over the GNU one. - -case "`$cc -v 2>&1`" in -"*gcc*" ) test -d /lib/pa1.1 && ccflags="$ccflags -L/lib/pa1.1" ;; -esac +# Backward compatibility (uselonglong is deprecated). +case "$uselonglolong" in +"$define"|true|[yY]*) + case "$use64bits" in + '') use64bits="$define" ;; + esac + ;; +esac # Determine the architecture type of this system. # Keep leading tab below -- Configure Black Magic -- RAM, 03/02/97 @@ -138,27 +142,67 @@ else selecttype='int *' fi -# Under 10.X, a threaded perl can be built, but it needs -# libcma and OLD_PTHREADS_API. Also needs to -# be #included before any other includes (in perl.h) -if [ "$xxOsRevMajor" -eq 10 -a "X$usethreads" = "X$define" ]; then +case "$use64bits" in +$define|true|[yY]*) + if [ "$xxOsRevMajor" -lt 11 ]; then + cat <&4 - # HP-UX 10.X uses the old pthreads API - case "$d_oldpthreads" in - '') d_oldpthreads="$define" ;; - esac +64-bit compilation is not supported on HP-UX $xxOsRevMajor. +You need at least HP-UX 11.0. +Cannot continue, aborting. - # include libcma before all the others - libswanted="cma $libswanted" +EOM + exit 1 + fi - # tell perl.h to include before other include files - ccflags="$ccflags -DPTHREAD_H_FIRST" + # Without the 64-bit libc we cannot do much. + if [ ! -f /lib/pa20_64/libc.sl ]; then + cat <&4 - # CMA redefines select to cma_select, and cma_select expects int * - # instead of fd_set * (just like 9.X) - selecttype='int *' -fi +You do not seem to have the 64-bit libraries in /lib/pa20_64. +Most importantly, I cannot find /lib/pa20_64/libc.sl. +Cannot continue, aborting. + +EOM + exit 1 + fi + + ccflags="$ccflags +DD64" + ldflags="$ldflags +DD64" + loclibpth="$loclibpth /lib/pa20_64" + libscheck='case "`file $xxx`" in +*LP64*|*PA-RISC2.0*) ;; +*) xxx=/no/64-bit$xxx ;; +esac' + ld=/usr/bin/ld + ar=/usr/bin/ar + full_ar=$ar + # The strict ANSI mode (-Aa) doesn't like the LL suffixes. + case "$ccflags" in + *-Aa*) + echo "(Changing from strict ANSI compilation to extended because of 64-bitness)" + ccflags=`echo $ccflags|sed 's@ -Aa @ -Ae @'` + ;; + esac + + set `echo " $libswanted " | sed -e 's@ dl @ @'` + libswanted="$*" + + case "`$cc -v 2>&1`" in + *gcc*) ccflags="$ccflags -L/lib/pa20_64" ;; + esac + ;; +*) loclibpth="$loclibpth /lib/pa1.1" + case "`$cc -v 2>&1`" in + *gcc*) ccflags="$ccflags -L/lib/pa20_64" ;; + esac + ;; +esac + +case "`getconf KERNEL_BITS 2>/dev/null`" in +*64*) ldflags="$ldflags -Wl,+vnocompatwarnings" ;; +esac # Remove bad libraries that will cause problems # (This doesn't remove libraries that don't actually exist) @@ -207,6 +251,46 @@ case "$d_dosuid" in '') d_dosuid="$undef" ;; esac +# HP-UX 11 groks also LD_LIBRARY_PATH but SHLIB_PATH +# is recommended for compatibility. +case "$ldlibpthname" in +'') ldlibpthname=SHLIB_PATH ;; +esac + +# HP-UX 10.20 and gcc 2.8.1 break UINT32_MAX. +case "$cc" in +*gcc*) ccflags="$ccflags -DUINT32_MAX_BROKEN" ;; +esac + +cat > UU/cc.cbu <<'EOSH' +# XXX This script UU/cc.cbu will get 'called-back' by Configure after it +# XXX has prompted the user for the C compiler to use. +# Get gcc to share its secrets. +echo 'main() { return 0; }' > try.c + # Indent to avoid propagation to config.sh + verbose=`${cc:-cc} -v -o try try.c 2>&1` +if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then + # Using gcc. + : nothing to see here, move on. +else + # Using cc. + ar=${ar:-ar} + case "`$ar -V 2>&1`" in + *GNU*) + if test -x /usr/bin/ar; then + cat <&2 + +NOTE: You are using HP cc(1) but GNU ar(1). This might lead into trouble +later on, I'm switching to HP ar to play safe. +END + ar=/usr/bin/ar + fi + ;; + esac +fi + +EOSH + # Date: Fri, 6 Sep 96 23:15:31 CDT # From: "Daniel S. Lewart" # I looked through the gcc.info and found this: @@ -214,3 +298,80 @@ esac # assembler of the form: # (warning) Use of GR3 when frame >= 8192 may cause conflict. # These warnings are harmless and can be safely ignored. + +# This script UU/usethreads.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use threads. +cat > UU/usethreads.cbu <<'EOCBU' +case "$usethreads" in +$define|true|[yY]*) + if [ "$xxOsRevMajor" -lt 10 ]; then + cat <&4 +HP-UX $xxOsRevMajor cannot support POSIX threads. +Consider upgrading to at least HP-UX 11. +Cannot continue, aborting. +EOM + exit 1 + fi + case "$xxOsRevMajor" in + 10) + # Under 10.X, a threaded perl can be built, but it needs + # libcma and OLD_PTHREADS_API. Also needs to + # be #included before any other includes (in perl.h) + if [ ! -f /usr/include/pthread.h -o ! -f /usr/lib/libcma.sl ]; then + cat <&4 +In HP-UX 10.X for POSIX threads you need both of the files +/usr/include/pthread.h and /usr/lib/libcma.sl. +Either you must install the CMA package or you must upgrade to HP-UX 11. +Cannot continue, aborting. +EOM + exit 1 + fi + + # HP-UX 10.X uses the old pthreads API + case "$d_oldpthreads" in + '') d_oldpthreads="$define" ;; + esac + + # include libcma before all the others + libswanted="cma $libswanted" + + # tell perl.h to include before other include files + ccflags="$ccflags -DPTHREAD_H_FIRST" + + # CMA redefines select to cma_select, and cma_select expects int * + # instead of fd_set * (just like 9.X) + selecttype='int *' + ;; + 11 | 12) # 12 may want upping the _POSIX_C_SOURCE datestamp... + ccflags=" -D_POSIX_C_SOURCE=199506L $ccflags" + set `echo X "$libswanted "| sed -e 's/ c / pthread c /'` + shift + libswanted="$*" + ;; + esac + usemymalloc='n' + ;; +esac +EOCBU + +# This script UU/uselfs.cbu will get 'called-back' by Configure +# after it has prompted the user for whether to use 64 bits. +cat > UU/uselfs.cbu <<'EOCBU' +case "$uselargefiles" in +$define|true|[yY]*) + # there are largefile flags available via getconf(1) + # but we cheat for now. + ccflags="$ccflags -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" + + # The strict ANSI mode (-Aa) doesn't like large files. + case "$ccflags" in + *-Aa*) + echo "(Changing from strict ANSI compilation to extended because of large files)" + ccflags=`echo $ccflags|sed 's@ -Aa @ -Ae @'` + ;; + esac + ;; +esac +EOCBU + +