xxcpu=`printf '0x%x' $xxcpu`; # convert to hex
archname=`sed -n -e "s/^#[ \t]*define[ \t]*CPU_//p" /usr/include/sys/unistd.h |
sed -n -e "s/[ \t]*$xxcpu[ \t].*//p" |
- sed -e s/_RISC/-RISC/ -e s/HP_// -e s/_/./`;
+ sed -e s/_RISC/-RISC/ -e s/HP_// -e s/_/./ -e "s/[[:space:]]*//g"`;
else
# This system is running <= 9.x
# Tested on 9.0[57] PA and [78].0 MC680[23]0. Idea: After removing
selecttype='int *'
fi
+# For some strange reason, the u32align test from Configure hangs in
+# HP-UX 10.20 since the December 2001 patches. So hint it to avoid
+# the test.
+if [ "$xxOsRevMajor" -le 10 ]; then
+ d_u32align=$define
+ fi
+
echo "Archname is $archname"
+# Fix XSlib (CPAN) confusion when re-using a prefix but changing from ILP32
+# to LP64 builds. They're NOT binary compatible, so quit claiming they are.
+archname64=LP64
+
### HP-UX OS specific behaviour
case `$cc -v 2>&1`"" in
*gcc*) ccisgcc="$define"
ccflags="$cc_cppflags"
+ if [ "X$gccversion" = "X" ]; then
+ # Done too late in Configure if hinted
+ gccversion=`$cc --version`
+ fi
+ case "$gccversion" in
+ [012]*) # HP-UX and gcc-2.* break UINT32_MAX :-(
+ ccflags="$ccflags -DUINT32_MAX_BROKEN"
+ ;;
+ esac
case "`getconf KERNEL_BITS 2>/dev/null`" in
*64*)
echo "main(){}">try.c
- # gcc with gas will not accept +DA2.0
- case "`$cc -c -Wa,+DA2.0 try.c 2>&1`" in
- *"+DA2.0"*) # gas
- gnu_as=yes
+ case "$gccversion" in
+ 3*)
+ case "$archname" in
+ PA-RISC*) ccflags="$ccflags -mpa-risc-2-0" ;;
+ esac
;;
- *) # HPas
- case "$gccversion" in
- [12]*) ccflags="$ccflags -Wa,+DA2.0" ;;
- esac
+ *) # gcc with gas will not accept +DA2.0
+ case "`$cc -c -Wa,+DA2.0 try.c 2>&1`" in
+ *"+DA2.0"*) # gas
+ gnu_as=yes
+ ;;
+ *) # HPas
+ ccflags="$ccflags -Wa,+DA2.0"
+ ;;
+ esac
;;
esac
# gcc with gld will not accept +vnocompatwarnings
gnu_ld=yes
;;
*) # HPld
- case "$gccversion" in
- [12]*)
- ldflags="$ldflags -Wl,+vnocompatwarnings"
- ccflags="$ccflags -Wl,+vnocompatwarnings"
- ;;
- esac
+ case "$gccversion" in
+ [12]*)
+ # Why not 3 as well here?
+ # Since not relevant to IA64, not changed.
+ ldflags="$ldflags -Wl,+vnocompatwarnings"
+ ccflags="$ccflags -Wl,+vnocompatwarnings"
+ ;;
+ esac
;;
esac
+ rm -f try.c
;;
esac
;;
*) ccisgcc=''
ccversion=`which cc | xargs what | awk '/Compiler/{print $2}'`
- ccflags="-Ae $cc_cppflags -Wl,+vnocompatwarnings"
+ case "$ccflags" in
+ "-Ae "*) ;;
+ *) ccflags="-Ae $cc_cppflags -Wl,+vnocompatwarnings" ;;
+ esac
# Needed because cpp does only support -Aa (not -Ae)
cpplast='-'
cppminus='-'
cppstdin='cc -E -Aa -D__STDC_EXT__'
cpprun=$cppstdin
- case "$d_casti32" in
- "") d_casti32='undef' ;;
- esac
+# case "$d_casti32" in
+# "") d_casti32='undef' ;;
+# esac
;;
esac
gcc_64native=no
case "$ccisgcc" in
$define|true|[Yy])
- echo 'int main(){long l;printf("%d\\n",sizeof(l));}'>try.c
+ echo 'int main(){long l;printf("%d\\n",sizeof(l));}'>try.c
$cc -o try $ccflags $ldflags try.c
if [ "`try`" = "8" ]; then
cat <<EOM >&4
$define|true|[yY]*) use64bitint="$define"; uselongdouble="$define" ;;
esac
-case "$uselongdouble" in
- $define|true|[yY]*)
- cat <<EOM >&4
+case "$archname" in
+ IA64*)
+ # While here, override so=sl auto-detection
+ so='so'
+ ;;
+ *)
+ case "$uselongdouble" in
+ *) ;;
+ $define|true|[yY]*)
+ cat <<EOM >&4
*** long doubles are not (yet) supported on HP-UX (any version)
*** Until it does, we cannot continue, aborting.
EOM
- exit 1 ;;
+ exit 1 ;;
+ esac
+ ;;
esac
case "$use64bitint" in
# anyway. Expect auto-detection of 64-bit enabled gcc on
# HP-UX soon, including a user-friendly exit
case $gcc_64native in
- no) ccflags="$ccflags -mlp64"
- ldflags="$ldflags -Wl,+DD64"
+ no) case "$gccversion" in
+ [123]*) ccflags="$ccflags -mlp64"
+ case "$archname" in
+ PA-RISC*)
+ ldflags="$ldflags -Wl,+DD64"
+ ;;
+ IA64*)
+ ldflags="$ldflags -mlp64"
+ ;;
+ esac
+ ;;
+ esac
;;
esac
;;
# Reset the library checker to make sure libraries
# are the right type
+ # (NOTE: on IA64, this doesn't work with .a files.)
libscheck='case "`/usr/bin/file $xxx`" in
*ELF-64*|*LP64*|*PA-RISC2.0*) ;;
*) xxx=/no/64-bit$xxx ;;
EOF
$cc -o try $ccflags $ldflags try.c
maxdsiz=`try`
+rm -f try try.c core
if [ $maxdsiz -le 64 ]; then
# 64 Mb is probably not enough to optimize toke.c
# and regexp.c with -O2
to at least 0x08000000 (128 Mb) and rebuild your kernel.
EOM
regexec_cflags=''
+doop_cflags=''
fi
case "$ccisgcc" in
"") optimize="+O2 +Onolimit" ;;
*O[3456789]*) optimize=`echo "$optimize" | sed -e 's/O[3-9]/O2/'` ;;
esac
+ case "$optimize" in
+ *-O*|\
+ *O2*) opt=`echo "$optimize" | sed -e 's/-O/+O2/' -e 's/O2/O1/' -e 's/ *+Onolimit//'`
+ ;;
+ *) opt="$optimize"
+ ;;
+ esac
if [ $maxdsiz -le 64 ]; then
- case "$optimize" in
- *-O*|\
- *O2*) opt=`echo "$optimize" | sed -e 's/-O/+O2/' -e 's/O2/O1/' -e 's/ *+Onolimit//'`
- toke_cflags="$toke_cflags;optimize=\"$opt\""
- regexec_cflags="optimize=\"$opt\""
- ;;
- esac
+ toke_cflags="$toke_cflags;optimize=\"$opt\""
+ regexec_cflags="optimize=\"$opt\""
fi
+ case "$archname" in
+ IA64*)
+ doop_cflags="optimize=\"$opt\""
+ ;;
+ esac
ld=/usr/bin/ld
cccdlflags='+Z'
lddlflags='-b +vnocompatwarnings'
# but we cheat for now. (Keep that in the left margin.)
ccflags_uselargefiles="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
- ccflags="$ccflags $ccflags_uselargefiles"
+ case " $ccflags " in
+ *" $ccflags_uselargefiles "*) ;;
+ *) ccflags="$ccflags $ccflags_uselargefiles" ;;
+ esac
- if test -z "$ccisgcc" -a -z "$gccversion"; then
+ if test -z "$ccisgcc" -a -z "$gccversion"; then
# The strict ANSI mode (-Aa) doesn't like large files.
ccflags=`echo " $ccflags "|sed 's@ -Aa @ @g'`
case "$ccflags" in
if [ -f /usr/lib/libcma.sl ]; then
# DCE (from Core OS CD) is installed
+ # Check if it is pristine, or patched
+ cmavsn=`what /usr/lib/libcma.sl 2>&1 | grep 1996`
+ if [ ! -z "$cmavsn" ]; then
+ cat <<EOM >&4
+\a
+***************************************************************************
+
+Perl will support threading through /usr/lib/libcma.sl from
+the HP DCE package, but the version found is too old to be
+reliable.
+
+If you are not depending on this specific version of the library,
+consider to upgrade using patch PHSS_23672 (read README.hpux)
+
+***************************************************************************
+
+(sleeping for 10 seconds...)
+EOM
+ sleep 10
+ fi
+
# It needs # libcma and OLD_PTHREADS_API. Also
# <pthread.h> needs to be #included before any
# other includes (in perl.h)
fi
else
# 12 may want upping the _POSIX_C_SOURCE datestamp...
- ccflags=" -D_POSIX_C_SOURCE=199506L $ccflags"
+ ccflags=" -D_POSIX_C_SOURCE=199506L -D_REENTRANT $ccflags"
set `echo X "$libswanted "| sed -e 's/ c / pthread c /'`
shift
libswanted="$*"
;;
esac
EOCBU
+
+# fpclassify() is a macro, the library call is Fpclassify
+# Similarly with the others below.
+d_fpclassify='define'
+d_isnan='define'
+d_isinf='define'
+d_isfinite='define'
+d_unordered='define'
+# Next one(s) need the leading tab. These are special 'hint' symbols that
+# are not to be propagated to config.sh, all related to pthreads draft 4
+# interfaces.
+case "$d_oldpthreads" in
+ ''|$undef)
+ d_crypt_r_proto='undef'
+ d_getgrent_r_proto='undef'
+ d_getpwent_r_proto='undef'
+ d_strerror_r_proto='undef'
+ ;;
+ esac