| Ilya Zakharevich on Sun, 23 Nov 1997 00:05:28 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| Os/2 portablity patch for pari2.0-alpha |
This patch makes it possible to compile PARI on OS/2 (if one has enough tools).
Everything works except
1) Dynamic loading (how AIX does it - it also needs export
list, right?);
2) Extended help is (wrongly) reported missing;
3) I did not check that gphelp works without -detex if XFree86
is loaded;
4) I did not check 'make install';
The following problems not related to OS/2 are noted/corrected:
a) gcc is prefered to g++, is it correct?
b) I changed uname test to
myuname=`(uname -a) 2>/dev/null || arch 2>&1`
to make it possible to run Configure with -x option, otherwise
(additional parens) it is set to "+ 2>&1 something";
c) Version check for readline was checking for older variable
LibraryVersion, not present in newer readlines;
d) GPHELP_DOCDIR environment variable granted;
e) tutorial was rebuilt every time;
f) Non-portable [BUG] in shell script quoted;
g) Refcard is clipped on top and bottom on Letter paper (at least with LJ4);
To apply:
mv configure config # Avoid name clash with Configure
mv doc/Makefile config/doc_make.SH
patch -p1 < file-name-this-file
diff -pru pari-2.0.alpha/config/config.h.SH pari-2.0.alpha.my/config/config.h.SH
--- pari-2.0.alpha/config/config.h.SH Wed Sep 24 17:28:28 1997
+++ pari-2.0.alpha.my/config/config.h.SH Sat Nov 22 00:46:40 1997
@@ -8,6 +8,12 @@ case "$optimization" in
*) debuginfo=" -- $optimization";;
esac
+case "$osname" in
+ os2) gphelp="perl -S gphelp -detex" ;;
+ *) gphelp="$miscdir/gphelp" ;;
+esac
+
+
cat > $file << EOT
/* This file was created by Configure. Any change made to it will be lost
* next time configure is run.
@@ -16,8 +22,9 @@ cat > $file << EOT
#define __CONFIG_H__
#define UNIX
-#define GPHELP "$miscdir/gphelp"
+#define GPHELP "$gphelp"
#define GPDATADIR "$datadir"
+#define SHELL_Q '\\$shell_q'
#define PARIVERSION "GP/PARI CALCULATOR Version ${revision}"
#ifdef __cplusplus
diff -pru pari-2.0.alpha/config/doc_make.SH pari-2.0.alpha.my/config/doc_make.SH
--- pari-2.0.alpha/config/doc_make.SH Thu Nov 6 05:07:44 1997
+++ pari-2.0.alpha.my/config/doc_make.SH Sat Nov 22 13:40:08 1997
@@ -1,3 +1,13 @@
+cat >doc/Makefile <<EOT
+
+# This file was created by Configure. Any change made to it will be lost
+# next time configure is run.
+SHELL = $make_sh
+
+EOT
+
+cat >>doc/Makefile <<'EOT'
+
all: doc refcard tutorial
macros.tex: macros.tex.in
@@ -7,7 +17,9 @@ force: macros.tex all
doc manual: users.dvi
-tutorial: tutorial.tex
+tutorial: tutorial.dvi
+
+tutorial.dvi: tutorial.tex
tex $<
refcard.dvi: refcard.tex
@@ -32,3 +44,5 @@ halfclean:
clean: halfclean
rm -f macros.tex users.aux users.std users.toc
+
+EOT
diff -pru pari-2.0.alpha/config/GENMakefile.SH pari-2.0.alpha.my/config/GENMakefile.SH
--- pari-2.0.alpha/config/GENMakefile.SH Sat Oct 18 04:46:38 1997
+++ pari-2.0.alpha.my/config/GENMakefile.SH Fri Nov 21 18:05:54 1997
@@ -5,7 +5,6 @@ lnfile=$dir/Makefile
echo Extracting $file
rm -f $file $lnfile
-ln -s $name $lnfile
case "$osname" in
aix) dynlib=a ;;
@@ -41,6 +40,7 @@ cat > $file << EOT
# change this TARGET to compile your own programs
TARGET = matexp
+SHELL = $make_sh
DBGFLAGS = $DBGFLAGS $CFLAGS
CFLAGS = $OPTFLAGS $CFLAGS
@@ -103,3 +103,5 @@ dynlib: \$(DYN)
clean:
-\$(RM) *.o \$(ALL)
EOT
+
+$ln_s $name $lnfile
diff -pru pari-2.0.alpha/config/locate pari-2.0.alpha.my/config/locate
--- pari-2.0.alpha/config/locate Thu Oct 3 04:00:56 1996
+++ pari-2.0.alpha.my/config/locate Fri Nov 21 17:17:08 1997
@@ -6,5 +6,9 @@ for dir in $*; do
if test -f $file; then
echo $file; exit 0
fi
+ file=$file.exe
+ if test -f $file; then
+ echo $file; exit 0
+ fi
done
echo $dflt; exit 1
diff -pru pari-2.0.alpha/config/locatelib pari-2.0.alpha.my/config/locatelib
--- pari-2.0.alpha/config/locatelib Thu Dec 19 12:42:54 1996
+++ pari-2.0.alpha.my/config/locatelib Fri Nov 21 18:52:26 1997
@@ -1,5 +1,8 @@
for dir in $pth; do
- try=`ls $dir/lib$lib.* 2> /dev/null`
+ case "$osname" in
+ os2) try=`ls $dir/$lib.a 2> /dev/null`;;
+ *) try=`ls $dir/lib$lib.* 2> /dev/null`;;
+ esac
if test ! -z "$try"; then
echo ..."Found lib$lib in $dir";
eval $lib=$dir;
diff -pru pari-2.0.alpha/config/Makefile.SH pari-2.0.alpha.my/config/Makefile.SH
--- pari-2.0.alpha/config/Makefile.SH Fri Nov 14 07:38:32 1997
+++ pari-2.0.alpha.my/config/Makefile.SH Fri Nov 21 18:40:52 1997
@@ -115,6 +115,7 @@ cat > $file << EOT
# This file was created by Configure. Any change made to it will be
# lost when Configure is run.
#
+SHELL = $make_sh
AS = $AS
ASFLAGS = $ASFLAGS
@@ -135,7 +136,7 @@ DLCFLAGS = $DLCFLAGS
LIBS = -lm $LIBS
RM = rm -f
-LN = ln -s
+LN = $ln_s
# Change these installation directories to suit your needs.
@@ -162,12 +163,12 @@ $rr RLLIBS = $RLLIBS
OBJS = $OBJS
OBJSGP = $OBJSGP
-dft gp: gp-$dft lib-$dft ../gp$suffix
+dft gp: gp-$dft lib-$dft ../gp$suffix$exe_suff
-
-../gp$suffix: gp-$dft
+../gp$suffix$exe_suff: gp-$dft
-\$(RM) \$@
- -\$(LN) $objdir/gp-$dft \$@
+ -\$(LN) gp-$dft$exe_suff \$@
all: gp-sta gp-dyn lib-sta lib-dyn
@@ -251,14 +252,14 @@ install-bin: gp-$dft-install
\$(INSTALL_PROGRAM) gp-$dft \$(BINDIR)/gp-$version
strip \$(BINDIR)/gp-$version
-\$(RM) \$(BINDIR)/gp
- -\$(LN) gp-$version \$(BINDIR)/gp
+ -\$(LN) gp-$version$exe_suff \$(BINDIR)/gp$exe_suff
install-bin-sta: gp-sta-install
-mkdir -p \$(BINDIR)
\$(INSTALL_PROGRAM) gp-sta \$(BINDIR)/gp-$version
strip \$(BINDIR)/gp-$version
-\$(RM) \$(BINDIR)/gp
- -\$(LN) gp-$version \$(BINDIR)/gp
+ -\$(LN) gp-$version$exe_suff \$(BINDIR)/gp$exe_suff
install-man::
-mkdir -p \$(MANDIR)
diff -pru pari-2.0.alpha/config/TOPMakefile.SH pari-2.0.alpha.my/config/TOPMakefile.SH
--- pari-2.0.alpha/config/TOPMakefile.SH Sun Nov 9 10:45:50 1997
+++ pari-2.0.alpha.my/config/TOPMakefile.SH Fri Nov 21 18:06:20 1997
@@ -4,7 +4,6 @@ rm -f $file
tarfile=pari-$revision.tar
file=Makefile.$osname-$arch$suffix
-ln -s $file Makefile
rm -f $file
if test -n "$GP_INSTALL_PREFIX"; then
@@ -17,6 +16,7 @@ cat > $file << EOT
# next time Configure is run.
#
RM = /bin/rm -f
+SHELL = $make_sh
dft target::
@echo "Possible targets are :"
@@ -51,7 +51,7 @@ exp::
exit 1; fi; done
for dir in configure src doc perl; do \\
mv \$\$dir \$\$dir.orig; cp -pr \$\$dir.orig \$\$dir; done
- ln -s src exp
+ $ln_s src exp
sed "s,patch_level=.*,patch_level=exp," \\
< configure.orig/version > configure/version
@@ -113,3 +113,5 @@ EOT
EOT
;;
esac
+
+$ln_s $file Makefile
diff -pru pari-2.0.alpha/INSTALL.QUICK pari-2.0.alpha.my/INSTALL.QUICK
--- pari-2.0.alpha/INSTALL.QUICK Mon Nov 10 05:12:22 1997
+++ pari-2.0.alpha.my/INSTALL.QUICK Fri Nov 21 18:25:40 1997
@@ -11,3 +11,5 @@ e) copy lib/gprc.default to $HOME/.gprc.
f) copy/modify lib/gpalias somewhere and call it from your .gprc (if desired)
That's it ! Read INSTALL.tex for more detailed information.
+
+(Same procedure should work on OS/2 with EMX, GNU tools, and pdksh.)
diff -pru pari-2.0.alpha/perl/gphelp.in pari-2.0.alpha.my/perl/gphelp.in
--- pari-2.0.alpha/perl/gphelp.in Mon Nov 10 20:07:58 1997
+++ pari-2.0.alpha.my/perl/gphelp.in Sat Nov 22 00:06:02 1997
@@ -6,7 +6,7 @@
# The manual file can be compressed (see the %zcat statement below).
#
$version= "@version@";
-$docdir = "@miscdir@";
+$docdir = $ENV{GPHELP_DOCDIR} || "@miscdir@";
%zcat = (
'.gz', '@gunzip@ -c',
diff -pru pari-2.0.alpha/src/gp/gp.c pari-2.0.alpha.my/src/gp/gp.c
--- pari-2.0.alpha/src/gp/gp.c Thu Nov 13 19:53:34 1997
+++ pari-2.0.alpha.my/src/gp/gp.c Sat Nov 22 00:28:26 1997
@@ -1660,7 +1660,7 @@ external_help(char *s)
if (!help_prg)
err(talker,"No available external help program");
- sprintf(thestring,"%s -fromgp '%s'",help_prg,s);
+ sprintf(thestring,"%s -fromgp %c%s%c",help_prg,SHELL_Q,s,SHELL_Q);
file = (FILE *) popen(thestring,"r");
if (!file) err(talker,"%s %s failed !",GPHELP,s);
diff -pru pari-2.0.alpha/src/gp/gp_rl.c pari-2.0.alpha.my/src/gp/gp_rl.c
--- pari-2.0.alpha/src/gp/gp_rl.c Thu Nov 13 19:53:36 1997
+++ pari-2.0.alpha.my/src/gp/gp_rl.c Sat Nov 22 00:32:50 1997
@@ -339,8 +339,8 @@ init_readline(int i)
Bind('H', (Function*) rl_long_help, vi_movement_keymap);
# ifdef EMACS_DOS_KEYMAP
- Bind(';', (char*) rl_short_help, emacs_dos_keymap); /* F1 */
- Bind('T', (char*) rl_long_help, emacs_dos_keymap); /* Shift-F1 */
+ Bind(';', (Function*) rl_short_help, emacs_dos_keymap); /* F1 */
+ Bind('T', (Function*) rl_long_help, emacs_dos_keymap); /* Shift-F1 */
# endif
}
#endif
diff -pru pari-2.0.alpha/src/test-bench/dotest pari-2.0.alpha.my/src/test-bench/dotest
--- pari-2.0.alpha/src/test-bench/dotest Mon Nov 3 11:34:50 1997
+++ pari-2.0.alpha.my/src/test-bench/dotest Sat Nov 22 11:08:44 1997
@@ -14,14 +14,15 @@ test -z "$testlist" && testlist="\
nfields_200\
"
-confdir=../configure
+confdir=../config
testdir=../src/test-bench
execdir=.
+if test -f /bin/rm ; then RM=/bin/rm; else RM=rm ; fi
if sh -c 'test -x /bin/sh' 2>&-; then x=-x; else x=-r; fi
(echo "hi there\c" ; echo " ") > echotmp
if grep c echotmp >/dev/null 2>&1 ; then n='-n'; c=''; else n=''; c='\c'; fi
-/bin/rm echotmp
+$RM echotmp
case "$1" in
8) bitlen=64 ;;
@@ -51,7 +52,7 @@ esac
BUG=":"
. $confdir/version
file_bench=Bench-$revision
-/bin/rm -f $file_bench
+$RM -f $file_bench
for dft in $dotestARG; do eval time$dft=0; done
for testdata in $testlist; do
# testname : nom du fichier
@@ -80,7 +81,7 @@ for testdata in $testlist; do
echo $n "TIME=$time$c">>$file_bench
eval time$dft='`'expr $time '\\*' $testmul / 1000 + '$'time$dft'`'
else
- eval BUG$dft="[BUG]"
+ eval BUG$dft="'[BUG]'"
echo $n "BUG [$time]$c"
echo $n "BUG [$time]$c">>$file_bench
fi