Louis . Granboulan on Tue, 28 Apr 1998 21:00:15 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
HP UX |
This is for HP-UX. I have only two machines to test gp on HP-UX, so this patch may break something for other machines. These machines are : - an old HP9000/710 under HPUX A.09.05 - a more recent HP9000/720 with HP-UX B.10.20 1) Nigel made a new version of the level0 asm file. It works only with the second machine. With HPUX A.09.05, the linker complains with : /bin/ld: Data address is out of range for short load or store This level0.s has to be compiled with HP as, because GNU as makes an "Internal error" and dies. 2) I changed Configure, so it detects much more precisely which cc and as are best to use. There is a problem with Position-Independent Code : When not compiled for PIC, the error message for making libpari.sl is : /bin/ld: DP-Relative Code in file kernel.o - Shared Library must be Position-Independent We can make PIC with the option +z for HP cc and with -fPIC for gcc, but the resulting code is much slower. Here are the benches gp-sta gp-dyn cc -O -Aa 114142 cc -O -Aa +z 126474 168306 gcc -O2 104612 gcc -O2 -fPIC 123054 136664 We should avoid gcc, because it has bugs. For example, with gcc 2.8.0, the initialisation of static variables in the dynamic library does not work well. The following (small) patch handles one of these bugs : *** ./src/language/anal.c.ORIG Sat Feb 7 17:12:11 1998 --- ./src/language/anal.c Tue Feb 17 19:17:12 1998 *************** *** 1023,1028 **** --- 1023,1033 ---- GEN *fakepGEN = NULL, fakeGEN, argvec[9]; void *call = ep->value; + #if defined(__hpux__) && defined(__GNUC__) + /* This is needed for gp-dyn */ + if (limit==buffer) limit = buffer+TOTAL_STRING_ARG-2; + #endif + current_function=ep->name; if (*analyseur != '(') { 3) This patch includes an other change : ./Configure -verbhelp will give a longer help message, to help if you want to customize your installation of pari. This change is not complete. Apply this patch : *** pari-2.0.7.alpha/src/kernel/hppa/level0.s.orig Sat Mar 21 04:31:50 1998 --- pari-2.0.7.alpha/src/kernel/hppa/level0.s Tue Apr 28 18:38:06 1998 *************** *** 1,180 **** ! ; $Id: level0.s,v 2.0.0.7 1998/03/21 03:30:31 karim Exp karim $ ! .SHORTDATA ! .EXPORT hiremainder ! .EXPORT overflow ! .WORD ! .ALIGN 8 ! hiremainder .WORD ! .ALIGN 8 ! overflow .WORD ! ! .CODE ! .EXPORT addll,ENTRY ! .EXPORT addllx,ENTRY ! .EXPORT subll,ENTRY ! .EXPORT subllx,ENTRY ! .EXPORT shiftl,ENTRY ! .EXPORT shiftlr,ENTRY ! .EXPORT bfffo,ENTRY ! .EXPORT mulll,ENTRY ! .EXPORT addmul,ENTRY ! .EXPORT divll,ENTRY ! ! .PROC ! .CALLINFO ! addll .ENTER ! ADD %arg0,%arg1,%ret0 ! ADDC 0,0,%t1 ! STW %t1,overflow-$global$(%dp) ! .LEAVE ! .PROCEND ! ! .PROC ! .CALLINFO ! addllx .ENTER ! LDW overflow-$global$(%dp),%t1 ! ADDB,UV %t1,%arg0,addllx2 ! ADD %arg0,%arg1,%ret0 ! ADDC 0,0,%t1 ! STW %t1,overflow-$global$(%dp) ! .LEAVE ! addllx2 LDI 1,%t1 ! STW %t1,overflow-$global$(%dp) ! .LEAVE ! .PROCEND ! ! .PROC ! .CALLINFO ! subll .ENTER ! SUB %arg0,%arg1,%ret0 ! ADDC 0,0,%t1 ! SUBI 1,%t1,%t1 ! STW %t1,overflow-$global$(%dp) ! .LEAVE ! .PROCEND ! ! .PROC ! .CALLINFO ! subllx .ENTER ! LDW overflow-$global$(%dp),%t1 ! SUB,>>= %arg0,%arg1,%ret0 ! SUB,TR %ret0,%t1,%ret0 ! SUB,>>= %ret0,%t1,%ret0 ! ADDI,TR 1,0,%t1 ! LDI 0,%t1 ! STW %t1,overflow-$global$(%dp) ! .LEAVE ! .PROCEND ! ! .PROC ! .CALLINFO ! shiftl .ENTER ! SUBI 32,%arg1,%arg1 ! L$30 MFCTL 11,%t1 ! MTCTL %arg1,11 ! VSHD %arg0,0,%ret0; ! VSHD 0,%arg0,%t2 ! MTCTL %t1,11 ! L$31 STW %t2,hiremainder-$global$(%dp) ! .LEAVE ! .PROCEND ! ! .PROC ! .CALLINFO ! shiftlr .ENTER ! L$40 MFCTL 11,%t1 ! MTCTL %arg1,11 ! VSHD 0,%arg0,%ret0; ! VSHD %arg0,0,%t2 ! MTCTL %t1,11 ! L$41 STW %t2,hiremainder-$global$(%dp) ! .LEAVE ! .PROCEND ! ! .PROC ! .CALLINFO ! bfffo .ENTER ! COMB,=,N %r0,%arg0,L$0 ! LDI 31,%ret0 ! EXTRU,<> %arg0,15,16,%r0 ! SHD,TR %arg0,%r0,16,%arg0 ! ADDI -16,%ret0,%ret0 ! EXTRU,<> %arg0,7,8,%r0 ! SHD,TR %arg0,%r0,24,%arg0 ! ADDI -8,%ret0,%ret0 ! EXTRU,<> %arg0,3,4,%r0 ! SHD,TR %arg0,%r0,28,%arg0 ! ADDI -4,%ret0,%ret0 ! EXTRU,<> %arg0,1,2,%r0 ! SHD,TR %arg0,%r0,30,%arg0 ! ADDI -2,%ret0,%ret0 ! EXTRU,= %arg0,0,1,%r0 ! ADDI -1,%ret0,%ret0 ! B,N L$1 ! L$0 LDI 32,%ret0 ! L$1 .LEAVE ! .PROCEND ! .PROC ! .CALLINFO ! mulll .ENTER ! LDO hiremainder-$global$(%dp),%r1 ! STW %arg0,0(%r1) ! FLDWS 0(%r1),%fr4 ! STW %arg1,0(%r1) ! FLDWS 0(%r1),%fr5 ! XMPYU 4,5,6 ! FSTDS 6,0(%r1) ! LDWS 4(%r1),%ret0 ! .LEAVE ! .PROCEND ! ! .PROC ! .CALLINFO ! addmul .ENTER ! LDO hiremainder-$global$(%dp),%r1 ! LDW 0(%r1),%t1 ! STW %arg0,0(%r1) ! FLDWS 0(%r1),%fr4 ! STW %arg1,0(%r1) ! FLDWS 0(%r1),%fr5 ! XMPYU 4,5,6 ! FSTDS 6,0(%r1) ! LDWS 4(%r1),%ret0 ! ADD,NUV %t1,%ret0,%ret0 ! B,N suite ! .LEAVE ! suite LDW 0(%r1),%ret1 ! ADDI 1,%ret1,%ret1 ! STW %ret1,0(%r1) ! .LEAVE ! .PROCEND ! ! hirem .REG %t1 ! loquo .REG %ret0 ! div .REG %arg1 ! ! nibble .MACRO ! DS hirem,div,hirem ! ADDC loquo,loquo,loquo ! DS hirem,div,hirem ! ADDC loquo,loquo,loquo ! DS hirem,div,hirem ! ADDC loquo,loquo,loquo ! DS hirem,div,hirem ! ADDC loquo,loquo,loquo ! .ENDM ! divll .PROC ! .CALLINFO ! .ENTER ! LDW hiremainder-$global$(%dp),hirem ! COMB,< div,0,L$50 ! COPY %arg0,loquo ! SUB 0,div,%t2 ! DS 0,%t2,0 ! ADDC loquo,loquo,loquo nibble nibble nibble --- 1,183 ---- ! ; $id: level0.s,v 2.0.0.6 1998/02/21 17:30:11 karim exp karim $ ! ; This file has been written by Nigel. ! ; Hp's as is needed, with +DA1.1 ! .shortdata ! .import $global$ ; The value in the %dp register ! .export hiremainder ! .export overflow ! .word ! .align 8 ! hiremainder .word ! .align 8 ! overflow .word ! ! .code ! .export addll,entry ! .export addllx,entry ! .export subll,entry ! .export subllx,entry ! .export shiftl,entry ! .export shiftlr,entry ! .export bfffo,entry ! .export mulll,entry ! .export addmul,entry ! .export divll,entry ! ! .proc ! .callinfo ! addll .enter ! add %arg0,%arg1,%ret0 ! addc 0,0,%t1 ! stw %t1,overflow-$global$(%dp) ! .leave ! .procend ! ! .proc ! .callinfo ! addllx .enter ! ldw overflow-$global$(%dp),%t1 ! addb,uv %t1,%arg0,addllx2 ! add %arg0,%arg1,%ret0 ! addc 0,0,%t1 ! stw %t1,overflow-$global$(%dp) ! .leave ! addllx2 ldi 1,%t1 ! stw %t1,overflow-$global$(%dp) ! .leave ! .procend ! ! .proc ! .callinfo ! subll .enter ! sub %arg0,%arg1,%ret0 ! addc 0,0,%t1 ! subi 1,%t1,%t1 ! stw %t1,overflow-$global$(%dp) ! .leave ! .procend ! ! .proc ! .callinfo ! subllx .enter ! ldw overflow-$global$(%dp),%t1 ! sub,>>= %arg0,%arg1,%ret0 ! sub,tr %ret0,%t1,%ret0 ! sub,>>= %ret0,%t1,%ret0 ! addi,tr 1,0,%t1 ! ldi 0,%t1 ! stw %t1,overflow-$global$(%dp) ! .leave ! .procend ! ! .proc ! .callinfo ! shiftl .enter ! subi 32,%arg1,%arg1 ! l$30 mfctl %cr11,%t1 ! mtctl %arg1,%cr11 ! vshd %arg0,0,%ret0; ! vshd 0,%arg0,%t2 ! mtctl %t1,%cr11 ! l$31 stw %t2,hiremainder-$global$(%dp) ! .leave ! .procend ! ! .proc ! .callinfo ! shiftlr .enter ! l$40 mfctl %cr11,%t1 ! mtctl %arg1,%cr11 ! vshd 0,%arg0,%ret0; ! vshd %arg0,0,%t2 ! mtctl %t1,%cr11 ! l$41 stw %t2,hiremainder-$global$(%dp) ! .leave ! .procend ! ! .proc ! .callinfo ! bfffo .enter ! comb,=,n %r0,%arg0,l$0 ! ldi 31,%ret0 ! extru,<> %arg0,15,16,%r0 ! shd,tr %arg0,%r0,16,%arg0 ! addi -16,%ret0,%ret0 ! extru,<> %arg0,7,8,%r0 ! shd,tr %arg0,%r0,24,%arg0 ! addi -8,%ret0,%ret0 ! extru,<> %arg0,3,4,%r0 ! shd,tr %arg0,%r0,28,%arg0 ! addi -4,%ret0,%ret0 ! extru,<> %arg0,1,2,%r0 ! shd,tr %arg0,%r0,30,%arg0 ! addi -2,%ret0,%ret0 ! extru,= %arg0,0,1,%r0 ! addi -1,%ret0,%ret0 ! b,n l$1 ! l$0 ldi 32,%ret0 ! l$1 .leave ! .procend ! .proc ! .callinfo ! mulll .enter ! ldo hiremainder-$global$(%dp),%r1 ! stw %arg0,0(%r1) ! fldws 0(%r1),%fr4 ! stw %arg1,0(%r1) ! fldws 0(%r1),%fr5 ! xmpyu %fr4,%fr5,%fr6 ! fstds %fr6,0(%r1) ! ldws 4(%r1),%ret0 ! .leave ! .procend ! ! .proc ! .callinfo ! addmul .enter ! ldo hiremainder-$global$(%dp),%r1 ! ldw 0(%r1),%t1 ! stw %arg0,0(%r1) ! fldws 0(%r1),%fr4 ! stw %arg1,0(%r1) ! fldws 0(%r1),%fr5 ! xmpyu %fr4,%fr5,%fr6 ! fstds %fr6,0(%r1) ! ldws 4(%r1),%ret0 ! add,nuv %t1,%ret0,%ret0 ! b,n suite ! .leave ! suite ldw 0(%r1),%ret1 ! addi 1,%ret1,%ret1 ! stw %ret1,0(%r1) ! .leave ! .procend ! ! hirem .reg %t1 ! loquo .reg %ret0 ! div .reg %arg1 ! ! nibble .macro ! ds hirem,div,hirem ! addc loquo,loquo,loquo ! ds hirem,div,hirem ! addc loquo,loquo,loquo ! ds hirem,div,hirem ! addc loquo,loquo,loquo ! ds hirem,div,hirem ! addc loquo,loquo,loquo ! .endm ! divll .proc ! .callinfo ! .enter ! ldw hiremainder-$global$(%dp),hirem ! comb,< div,0,l$50 ! copy %arg0,loquo ! sub 0,div,%t2 ! ds 0,%t2,0 ! addc loquo,loquo,loquo nibble nibble nibble *************** *** 183,209 **** nibble nibble nibble ! ADD,>= 0,hirem,0 ! ADD hirem,div,hirem ! STW hirem,hiremainder-$global$(%dp) ! .LEAVE ! L$50 COPY div,%arg0 ! EXTRU,<> div,31,1,%t3 ! B L$51 ! EXTRU div,30,31,div ! ADDB,NSV %t3,div,L$51 ! COPY hirem,%t4 ! COPY loquo,hirem ! B L$52 ! COPY %t4,loquo ! L$51 EXTRU loquo,31,1,%t4 ! SHD hirem,loquo,1,loquo ! EXTRU hirem,30,31,hirem ! SUB 0,div,%t2 ! DS 0,%t2,0 ! ADDC loquo,loquo,loquo nibble nibble nibble --- 186,212 ---- nibble nibble nibble ! add,>= 0,hirem,0 ! add hirem,div,hirem ! stw hirem,hiremainder-$global$(%dp) ! .leave ! l$50 copy div,%arg0 ! extru,<> div,31,1,%t3 ! b l$51 ! extru div,30,31,div ! addb,nsv %t3,div,l$51 ! copy hirem,%t4 ! copy loquo,hirem ! b l$52 ! copy %t4,loquo ! l$51 extru loquo,31,1,%t4 ! shd hirem,loquo,1,loquo ! extru hirem,30,31,hirem ! sub 0,div,%t2 ! ds 0,%t2,0 ! addc loquo,loquo,loquo nibble nibble nibble *************** *** 212,231 **** nibble nibble nibble ! ADD,>= 0,hirem,0 ! ADD hirem,div,hirem ! COMB,= 0,%t3,L$53 ! SH1ADD hirem,%t4,hirem ! L$52 COPY %arg0,div ! ADDB,NUV,N loquo,hirem,L$54 ! SUB hirem,div,hirem ! ADDI 1,loquo,loquo ! L$54 COMB,<<,N hirem,div,L$53 ! SUB hirem,div,hirem ! ADDI 1,loquo,loquo ! L$53 STW hirem,hiremainder-$global$(%dp) ! .LEAVE ! .PROCEND ! .END --- 215,234 ---- nibble nibble nibble ! add,>= 0,hirem,0 ! add hirem,div,hirem ! comb,= 0,%t3,l$53 ! sh1add hirem,%t4,hirem ! l$52 copy %arg0,div ! addb,nuv,n loquo,hirem,l$54 ! sub hirem,div,hirem ! addi 1,loquo,loquo ! l$54 comb,<<,n hirem,div,l$53 ! sub hirem,div,hirem ! addi 1,loquo,loquo ! l$53 stw hirem,hiremainder-$global$(%dp) ! .leave ! .procend ! .end *** pari-2.0.7.alpha/config/Makefile.SH.orig Thu Mar 19 20:41:29 1998 --- pari-2.0.7.alpha/config/Makefile.SH Mon Apr 6 20:33:18 1998 *************** *** 49,55 **** done OINLINE='' for f in $inline; do ! if test "$__gnuc__" = yes -a "$optimization" != debugging; then OINLINE="$OINLINE $f.o" else OBJS="$OBJS $f.o" --- 49,55 ---- done OINLINE='' for f in $inline; do ! if test -n "$__gnuc__" -a "$optimization" != debugging; then OINLINE="$OINLINE $f.o" else OBJS="$OBJS $f.o" *** pari-2.0.7.alpha/Configure.orig Wed Mar 18 19:32:43 1998 --- pari-2.0.7.alpha/Configure Tue Apr 28 20:10:11 1998 *************** *** 58,64 **** -a|-ask) fastread=no;; -g) optimization=debugging;; -pg) optimization=profiling;; ! -h|-help|-?) error=true;; *) echo "*** Unrecognized option $1." >&2; error=true;; esac shift --- 58,65 ---- -a|-ask) fastread=no;; -g) optimization=debugging;; -pg) optimization=profiling;; ! -h|-help|-\?)error=true;; ! -v|-verbhelp)error=verb;; *) echo "*** Unrecognized option $1." >&2; error=true;; esac shift *************** *** 68,81 **** true) cat >&2 <<EOT Usage: Configure [-ask|-help|-g|-pg] [ -load <filename> ] [ -prefix <dir> ] Options: names can be abbreviated to one character (e.g -h = -help) ! -ask interactively ask for answers (defaults are still computed) ! -help this message ! -load specify a default config file ($dflt_conf_file if none is given) ! -prefix install files in <dir> (default $prefix) Additional developer options: ! -g creates debugging version ! -pg creates profiling version EOT exit 1 ;; --- 69,99 ---- true) cat >&2 <<EOT Usage: Configure [-ask|-help|-g|-pg] [ -load <filename> ] [ -prefix <dir> ] Options: names can be abbreviated to one character (e.g -h = -help) ! -ask interactively ask for answers (defaults are still computed) ! -help this message ! -verbhelp a longer help message ! -load specify a default config file ($dflt_conf_file if none is given) ! -prefix install files in <dir> (default $prefix) Additional developer options: ! -g creates debugging version ! -pg creates profiling version ! EOT ! exit 1 ! ;; ! verb) cat >&2 <<EOT ! Architecture, operating system and asm kernel. ! Configure tries to detect what is the architecture of the ! machine (the type of CPU) and what operating system it is ! running. Then, it decide if a specific asm kernel exists ! and should be used. ! You can override this with Configure -ask. ! Which compiler will be used ? ! Depending on the machine (architecture and operating system) ! and on what is found in the path, a compiler is automatically ! chosen. ! If you set the environment variable CC before typing Configure, ! this will be used instead. EOT exit 1 ;; *************** *** 127,132 **** --- 145,151 ---- /bsd4.3/usr/bin \ /usr/bsd \ /bsd43/bin \ + /opt/ansic/bin \ /usr/ccs/bin \ /usr/lib \ /usr/ucblib \ *************** *** 164,178 **** # We might need the following : # echo Looking for some tools first ... ! list='as ld cc acc gcc g++ zcat gunzip gzip ranlib perl ctags emacs' ! pth=`echo $PATH | sed -e "s/$dir_sep/ /g" | sed -e 's/\\\\/\//g'` for file in $list; do ! x=`./locate $file '' $pth` ! case "$file" in ! g++) gplusplus=$x ;; ! *) eval $file=$x ;; ! esac case $x in # support also DOS filesystems (hard drive prepended) ?:/*|/*) echo ..."$file is $x";; --- 183,194 ---- # We might need the following : # echo Looking for some tools first ... ! list='ld zcat gunzip gzip ranlib perl ctags emacs' ! pathspace=`echo $PATH | sed -e "s/$dir_sep/ /g" | sed -e 's/\\\\/\//g'` for file in $list; do ! x=`./locate $file '' $pathspace` ! eval $file=$x case $x in # support also DOS filesystems (hard drive prepended) ?:/*|/*) echo ..."$file is $x";; *************** *** 182,188 **** if test -z "$zcat" -a -n "$gzip" ; then zcat="$gzip -dc" ; fi if test -z "$gunzip" -a -n "$gzip" ; then gunzip="$gzip -d" ; fi - if test -z "$gplusplus" -a -n "$gcc" ; then gplusplus="$gcc -x c++" ; fi ####################### CONFIGURE - ARCHITECTURE ############################ # --- 198,203 ---- *************** *** 201,207 **** irix*) osname=irix;; fx2800) arch=fx2800; osname=concentrix;; hp*) arch=hppa; osname=hpux;; ! freebsd|os2) arch=i386;; ultrix) arch=mips;; nextstep) arch=`file /bin/sh | sed 's/.*(for architecture \(.*\))/\1/'`;; osf1) case "$5" in --- 216,222 ---- irix*) osname=irix;; fx2800) arch=fx2800; osname=concentrix;; hp*) arch=hppa; osname=hpux;; ! freebsd|os2) arch=ix86;; ultrix) arch=mips;; nextstep) arch=`file /bin/sh | sed 's/.*(for architecture \(.*\))/\1/'`;; osf1) case "$5" in *************** *** 209,218 **** esac;; linux) arch=`uname -m` case "`cat /proc/cpuinfo`" in ! *TMS390Z5[05]*) arch=sparcv8_super;; ! *TMS390S10*) arch=sparcv8_micro;; ! *MB8690[47]*) arch=sparcv8_micro;; ! *RT625*) arch=sparcv8_hyper;; *CY605*) arch=sparcv8_super;; esac;; sunos) case "$3" in --- 224,235 ---- esac;; linux) arch=`uname -m` case "`cat /proc/cpuinfo`" in ! *TMS390Z5[05]*) arch=sparcv8_super;; # SuperSparc I or II ! *TMS390S1[05]*) arch=sparcv8_micro;; # MicroSparc I ! *MB86904*) arch=sparcv8_micro;; # MicroSparc II ! *MB86907*) arch=sparcv8_micro;; # TurboSparc ! *MB86934*) arch=sparcv8_super;; # SparcLite ! *RT625*) arch=sparcv8_super;; # HyperSparc *CY605*) arch=sparcv8_super;; esac;; sunos) case "$3" in *************** *** 223,232 **** sun4[ce]) arch=sparcv7;; sun4[dm]) cpu="TI,|FMI,|Cypress,|Ross," case "`(prtconf||devinfo)2>&- |egrep $cpu`" in ! *TI,TMS390Z5[05]*) arch=sparcv8_super;; ! *TI,TMS390S10*) arch=sparcv8_micro;; ! *FMI,MB8690[47]*) arch=sparcv8_micro;; ! *Ross,RT625*) arch=sparcv8_hyper;; *Cypress,CY605*) arch=sparcv8_super;; *) arch=sparcv8;; esac;; --- 240,251 ---- sun4[ce]) arch=sparcv7;; sun4[dm]) cpu="TI,|FMI,|Cypress,|Ross," case "`(prtconf||devinfo)2>&- |egrep $cpu`" in ! *TI,TMS390Z5[05]*) arch=sparcv8_super;; # SuperSparc I or II ! *TI,TMS390S1[05]*) arch=sparcv8_micro;; # MicroSparc I ! *FMI,MB86904*) arch=sparcv8_micro;; # MicroSparc II ! *FMI,MB86907*) arch=sparcv8_micro;; # TurboSparc ! *FMI,MB86934*) arch=sparcv8_super;; # SparcLite ! *Ross,RT625*) arch=sparcv8_super;; # HyperSparc *Cypress,CY605*) arch=sparcv8_super;; *) arch=sparcv8;; esac;; *************** *** 241,248 **** ========================================================================== Currently supported architectures: EOM ! rep='sparcv7 sparcv8_micro sparcv8_super sparcv8_hyper sparcv9 ! m68k i386 i486 i586 i686 hppa alpha mips fx2800' . ./display echo $n ..."Which of these apply, if any ? $c" dflt=$arch; . ./myread; arch=$ans --- 260,267 ---- ========================================================================== Currently supported architectures: EOM ! rep='sparcv7 sparcv8_super sparcv8_micro sparcv9 ! m68k ix86 i386 i486 i586 i686 hppa alpha mips fx2800' . ./display echo $n ..."Which of these apply, if any ? $c" dflt=$arch; . ./myread; arch=$ans *************** *** 268,307 **** # The asm file used (if any) # case "$arch" in ! sparc) asmarch=none; pretty=Sparc ;; ! sparcv7) asmarch=$arch; pretty=SparcV7 ;; ! sparcv8_micro) asmarch=$arch; pretty=MicroSparc ;; ! sparcv8_super) asmarch=$arch; pretty=SuperSparc ;; ! sparcv8_hyper) asmarch=$arch; pretty=HyperSparc ;; ! sparcv9) asmarch=$arch; pretty=UltraSparc ;; ! m68k) asmarch=$arch; pretty="MC680x0, x>=2" ;; ! i?86) asmarch=ix86 ; pretty=$arch ;; ! hppa) asmarch=none ; pretty=HP ;; ! alpha) asmarch=$arch; pretty=Alpha ;; ! mips) asmarch=none ; pretty=Mips ;; ! fx2800) asmarch=none ; pretty="Alliant FX/2800" ;; ! none) asmarch=none; pretty="unknown" ;; # NB: Not reached ! *) asmarch=none; pretty=$arch ! echo " Warning ! architecture $arch not tested";; esac # # Modifications for pretty name and asm file # case "$osname" in - nextstep) pretty="$pretty running $osname"; - case "$arch" in - m68k) asmarch=none;; - i?86) asmarch=ix86;; - hppa) asmarch=none;; - esac;; linux|freebsd|os2) pretty="$pretty running $osname";; ! esac ! case "$asmarch" in ! sparcv8_hyper) asmarch=sparcv8_super ;; ! sparcv9) asmarch=sparcv8_micro ;; ! sparc) asmarch=sparcv8_micro ;; esac if test "$fastread" != yes; then --- 287,319 ---- # The asm file used (if any) # case "$arch" in ! sparc) asmarch=sparcv8_micro; pretty=Sparc ;; ! sparcv7) asmarch=$arch; pretty=SparcV7 ;; ! sparcv8_micro) asmarch=$arch; pretty=MicroSparc ;; ! sparcv8_super) asmarch=$arch; pretty=SuperSparc ;; ! sparcv9) asmarch=sparcv8_micro; pretty=UltraSparc ;; ! m68k) asmarch=$arch; pretty="MC680x0, x>=2" ;; ! i?86) asmarch=ix86 ; pretty=$arch ;; ! alpha) asmarch=$arch; pretty=Alpha ;; ! hppa) case "`uname -r`" in ! ?.09.*) asmarch=none ; pretty=HP ;; ! ?.10.*) asmarch=$arch; pretty=HP ;; ! esac ;; ! mips) asmarch=none ; pretty=Mips ;; ! fx2800) asmarch=none ; pretty="Alliant FX/2800" ;; ! none) asmarch=none; pretty="unknown" ;; # NB: Not reached ! *) asmarch=none; pretty=$arch ! echo " Warning ! architecture $arch not tested";; esac # # Modifications for pretty name and asm file # case "$osname" in linux|freebsd|os2) pretty="$pretty running $osname";; ! nextstep) pretty="$pretty running $osname" ! if test "$arch" = m68k; then asmarch=none; fi ;; esac if test "$fastread" != yes; then *************** *** 310,316 **** An optimized Pari kernel is available for these architectures ("none" means that will use the portable C version of GP/PARI) EOM ! rep='none sparcv7 sparcv8_micro sparcv8_super m68k ix86 alpha' . ./display echo $n ..."Which of these apply, if any ? $c" dflt=$asmarch; . ./myread; asmarch=$ans --- 322,328 ---- An optimized Pari kernel is available for these architectures ("none" means that will use the portable C version of GP/PARI) EOM ! rep='none sparcv7 sparcv8_super sparcv8_micro m68k ix86 alpha hppa' . ./display echo $n ..."Which of these apply, if any ? $c" dflt=$asmarch; . ./myread; asmarch=$ans *************** *** 322,329 **** if test "$arch" != "$asmarch"; then case "$asmarch" in none) pretty="$pretty (C portable kernel)" ;; sparcv7) pretty="$pretty (SparcV7 kernel)" ;; - sparcv8_micro) pretty="$pretty (MicroSparc kernel)" ;; sparcv8_super) pretty="$pretty (SuperSparc kernel)" ;; m68k) pretty="$pretty (MC680x0, x>=2 kernel)" ;; ix86) pretty="$pretty (ix86 kernel)" ;; hppa) pretty="$pretty (HPPA kernel)" ;; --- 334,341 ---- if test "$arch" != "$asmarch"; then case "$asmarch" in none) pretty="$pretty (C portable kernel)" ;; sparcv7) pretty="$pretty (SparcV7 kernel)" ;; sparcv8_super) pretty="$pretty (SuperSparc kernel)" ;; + sparcv8_micro) pretty="$pretty (MicroSparc kernel)" ;; m68k) pretty="$pretty (MC680x0, x>=2 kernel)" ;; ix86) pretty="$pretty (ix86 kernel)" ;; hppa) pretty="$pretty (HPPA kernel)" ;; *************** *** 575,581 **** # # Which Assembler ? # ! AS=$as if (echo | $AS -v 2>&1 | grep GNU > /dev/null); then echo "...Hum, this looks like GNU as" else --- 587,601 ---- # # Which Assembler ? # ! if test -z "$AS"; then ! echo Looking for an assembler ... ! if test "$osname" = hpux ! then AS=`./locate as '' /usr/ccs/bin /bin` # We don't want GNU as ! else AS=`./locate as '' $pathspace` ! fi ! case "$AS" in ?:/*|/*) echo ..."as is $AS";; ! *) echo ..."I could not find as." ;; esac ! fi if (echo | $AS -v 2>&1 | grep GNU > /dev/null); then echo "...Hum, this looks like GNU as" else *************** *** 584,589 **** --- 604,610 ---- osf1-alpha) ASFLAGS="-O1";; sunos-sparc*) ASFLAGS="-P -I.";; solaris-sparc*) ASFLAGS="-P -T -I.";; + hpux-hppa) ASFLAGS="+DA1.1";; *) ASFLAGS=;; esac fi *************** *** 592,611 **** # # Which Compiler ? # - # If CC is already defined, keep it. - # Else, use gcc, else g++, else acc, else cc - # Except for some architectures : use cc if test -z "$CC"; then ! if test -n "$cc"; then CC=$cc; else CC=cc; fi ! case "$osname-$arch" in ! hpux-*);; # Pour avoir du PIC code, pour la lib dynamique ! osf1-alpha|aix-*);; ! concentrix-*) CC=/bin/cc ;; # i.e. /bin/scc ou /bin/fxc ! *) if test -n "$acc"; then CC=$acc; fi ! if test -n "$gplusplus"; then CC=$gplusplus; fi ! if test -n "$gcc"; then CC=$gcc; fi ! ;; esac fi if test "$fastread" != yes; then --- 613,651 ---- # # Which Compiler ? # if test -z "$CC"; then ! echo Looking for the compilers ... ! # Native Compilers ! cc=`./locate cc '' $pathspace` ! case "$osname" in ! hpux) if test "$cc" = /usr/ccs/bin/cc -a -f /opt/ansic/bin/cc; then ! cc=/opt/ansic/bin/cc; fi ;; # This is a better compiler esac + case "$cc" in ?:/*|/*) echo ..."cc is $cc";; + *) echo ..."I could not find cc.";; esac + # GNU Compilers + gcc=`./locate gcc '' $pathspace` + if test -z "$gcc"; then + case "$osname" in os2) $cc -Zexe -o gnu gnu.c ;; *) $cc -o gnu gnu.c ;; esac + if gnu; then gcc=$cc; fi; rm -f gnu + fi + case "$gcc" in ?:/*|/*) echo ..."gcc is $gcc";; + *) echo ..."I could not find gcc."; gcc=;; esac + if test -n "$gcc"; then + __gnuc__=`$gcc -v 2>&1 | sed -n 's/.*version //p'` + if test -z "$__gnuc__"; then __gnuc__=unknown; fi + echo GNU compiler version $__gnuc__ + fi + case "$osname" in + osf1|aix) __gnuc__='' ;; # Native compilers are faster + hpux) __gnuc__='' ;; # versions older than 2.7 cannot build PIC code + # gp built with recent versions has bugs + concentrix) __gnuc__='' ;; # cedre.polytechnique.fr has only gcc 2.1 + concentrix) case "$__gnuc__" in 2.[78].*) ;; *) + __gnuc__='' ;; esac ;; + esac + # Choosing the compiler + if test -n "$__gnuc__"; then CC=$gcc; else CC=$cc; fi fi if test "$fastread" != yes; then *************** *** 626,656 **** # # Which Flags for Compiler ? # ! case "$osname-$arch" in ! os2-*) $CC -Zexe -o gnu gnu.c ;; ! *) $CC -o gnu gnu.c ;; ! esac ! ! if gnu; then ! __gnuc__=yes ! case "$ASFLAGS" in *-P*) ASFLAGS="$ASFLAGS -D__GNUC__";;esac case "$osname-$arch" in ! linux-i?86) OPTFLAGS="-O3 -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2";; ! *) OPTFLAGS="-O2" ;; esac DBGFLAGS="-g -Wall -Wno-implicit" PRFFLAGS="-pg -static" case "$osname-$asmarch" in *-sparcv8*) CFLAGS="$CFLAGS -mv8" ;; esac else CFLAGS= DBGFLAGS="-g" PRFFLAGS="-pg -static" case "$osname-$arch" in ! hpux-*) OPTFLAGS='-O'; CFLAGS='-Aa'; DLCFLAGS='+z';; ! aix-*) OPTFLAGS='-O2'; CFLAGS='-qlanglvl=ansi';; ! linux-*) OPTFLAGS='-O2'; CFLAGS='-m486';; ! freebsd-*) OPTFLAGS='-O2'; CFLAGS='-m486';; ! osf1-alpha) OPTFLAGS='-O4 -migrate -ifo -Olimit 9999';; sunos-*) OPTFLAGS='-fast'; PRFFLAGS='-pg -Bstatic';; solaris-*) OPTFLAGS='-fast'; PRFFLAGS='-xpg';; concentrix-*) OPTFLAGS='-Ogi' ;; --- 666,705 ---- # # Which Flags for Compiler ? # ! if test "$CC" != "$gcc"; then __gnuc__=; fi ! if test -z "$__gnuc__"; then case "$osname-$arch" in ! os2-*) $CC -Zexe -o gnu gnu.c ;; ! *) $CC -o gnu gnu.c ;; esac + if gnu; then __gnuc__=yes; fi + rm -f gnu + fi + + if test -n "$__gnuc__"; then + OPTFLAGS="-O2" DBGFLAGS="-g -Wall -Wno-implicit" PRFFLAGS="-pg -static" + # Some architectures need -fPIC for building dynamic lib + case "$osname-$arch" in hpux-*) DLCFLAGS='-fPIC';; esac + # Specific optimisations for some architectures + case "$osname-$arch" in linux-i?86) OPTFLAGS="-O3 -fexpensive-optimizations -malign-loops=2 -malign-jumps=2 -malign-functions=2";; esac case "$osname-$asmarch" in *-sparcv8*) CFLAGS="$CFLAGS -mv8" ;; esac + # What for ??? + case "$ASFLAGS" in *-P*) ASFLAGS="$ASFLAGS -D__GNUC__";;esac else CFLAGS= DBGFLAGS="-g" PRFFLAGS="-pg -static" case "$osname-$arch" in ! hpux-*) # The flag -Aa is for ANSI C, the flag +z for PIC code ! # Those flags work only with non-free HPUX compilers ! OPTFLAGS='-O'; CFLAGS='-Aa'; DLCFLAGS='+z';; ! aix-*) OPTFLAGS='-O2'; CFLAGS='-qlanglvl=ansi -qtune=601';; ! # This is the best tuning option, even for PPC604 ! linux-i?86) OPTFLAGS='-O2'; CFLAGS='-m486';; ! freebsd-i?86) OPTFLAGS='-O2'; CFLAGS='-m486';; ! osf1-*) OPTFLAGS='-O4 -migrate -ifo -Olimit 9999';; sunos-*) OPTFLAGS='-fast'; PRFFLAGS='-pg -Bstatic';; solaris-*) OPTFLAGS='-fast'; PRFFLAGS='-xpg';; concentrix-*) OPTFLAGS='-Ogi' ;; *************** *** 658,664 **** esac fi CFLAGS="$CFLAGS $DLCFLAGS" - rm -f gnu case "$osname" in nextstep) CFLAGS="-traditional-cpp $CFLAGS";; --- 707,712 ----