Ilya Zakharevich on Sun, 30 Nov 1997 01:54:49 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Os/2 portablity patch for pari2.0-alpha |
Karim Belabas writes: > while preparing the 2.0.1.alpha update, I finally had a look at your OS/2 > patch (msg 19). > > 1) I think your diff was not complete: it can't possibly work the way it is > now. Presumably, modifications to Configure are missing (we need to set > osname=os2 somewhere. As well, your introduce variables make_sh, shell_q, > ln_s, exe_suff which are not defined anywhere). Ouch! My edited ./Configure disappeared, this is why `diff' could not find it! Fortunately, I saved a copy in ./config/, see below. > 2) your change of doc/Makefile to make_doc.SH is problematic. We don't want > to extract this file, since I want it to be usable even if Configure fails > completely. That's the reason why there's the ugly target "force" which > substitutes @version@ (we don't want to expand this particular @version@). This is simple. Ship both doc/Makefile and config/doc_make.SH. Then there is a fallback version if Configure fails (which works on most platforms), which is substituted by a portable version if Configure succeeds. In the patch below I also added some other configure/ ===> config/ changes. Apply them _after_ the previous patch, since there may be a conflict for TOPmakefile.SH. Enjoy, Ilya --- ./Configure~ Fri Nov 14 05:55:44 1997 +++ ./Configure Sat Nov 22 00:27:30 1997 @@ -12,7 +12,7 @@ TOP=`pwd` dflt_conf_file=dft.Config.in # Directories -config_dir=configure +config_dir=config src_dir=src perl_dir=perl emacs_dir=emacs @@ -96,6 +96,8 @@ the questions end, edit the file "$dflt_ ========================================================================== EOT +if test -z "$OS2_SHELL"; then dir_sep=':' ; else dir_sep=';' ; fi + # # Proper PATH setting # @@ -132,19 +134,19 @@ pth=' \ for p in $pth do - case ":$PATH:" in - *:$p:*) ;; - *) test -d $p && PATH=$PATH:$p ;; + case "$dir_sep$PATH$dir_sep" in + *$dir_sep$p$dir_sep*) ;; + *) test -d $p && PATH=$PATH$dir_sep$p ;; esac done -PATH=.:$PATH; export PATH +PATH=.$dir_sep$PATH; export PATH # # We might need the following : # echo Looking for some tools first ... -list='as ld cc acc gcc g++ zcat gunzip ranlib perl etags emacs' -pth=`echo $PATH | sed -e 's/:/ /g'` +list='as ld cc acc gcc g++ zcat gunzip gzip ranlib perl etags 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 @@ -153,10 +155,15 @@ for file in $list; do esac case $x in /*) echo ..."$file is $x";; + ?:/*) echo ..."$file is $x";; *) echo ..."I could not find $file." >&2;; esac done +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 + echo "Checking echo to see how to suppress newlines..." (echo "hi there\c" ; echo " ") > echotmp if grep c echotmp >/dev/null 2>&1 ; then @@ -176,7 +183,7 @@ rm -f echotmp # ask user. # arch=none; osname=unknown -myuname=`( (uname -a) 2>/dev/null || arch) 2>&1` +myuname=`(uname -a) 2>/dev/null || arch 2>&1` if test -d /NextApps; then myuname=nextstep; fi if test -n "$myuname"; then myuname=`echo $myuname | sed -e 's/^[^=]*=//' -e 's/\///g' | \ @@ -186,7 +193,7 @@ if test -n "$myuname"; then case "$osname" in fx2800) arch=fx2800; osname=concentrix;; hp*) arch=hppa; osname=hpux;; - freebsd) arch=i386;; + freebsd|os2) arch=i386;; ultrix) arch=mips;; nextstep) arch=`file /bin/sh | sed 's/.*(for architecture \(.*\))/\1/'`;; osf1) case "$5" in @@ -300,7 +307,7 @@ ASMFILE=''; create_asmfile=''; depend_as kbuildcc='${CC} -c ${CFLAGS} ${CPPFLAGS}' kbuildas='${AS} ${ASFLAGS}' case "$osname-$asmarch" in - linux-i386|freebsd-i386) + linux-i386|freebsd-i386|os2-i386) # KERNEL is not in $asmdir but in $objdir because built by make. KERNEL="ker$asmarch.s"; kbuild="$kbuildcc"; depend_asmfile="$asmdir/ker$asmarch.c" @@ -373,8 +380,12 @@ if test -f $Xincroot/X11/Xos.h; then test -n "$extralib" && echo ..."Extra Libraries are $extralib" echo ..."Found X11 header files in $Xincroot/X11"; fi +case "$osname" in + os2) pth=`echo $LIBRARY_PATH | sed 's/;/ /g' | sed 's/\\\\/\//g'` ;; + *) pth=$dftpth ;; +esac + # LIB : GNU Plot -pth=$dftpth lib=gnuplot; . ./locatelib # LIB : GNU ReadLine @@ -399,24 +410,27 @@ if test -n "$readline"; then x=`(strings $rl_fullname | grep "\<_rl_copy\>")2>/dev/null` case "$x" in _*) addsunview=; which_rl=1 ;; - *) x=`(strings $rl_fullname | grep "LibraryVersion") 2>/dev/null` + *) x=`(strings $rl_fullname | grep "LibraryVersion\|rl_library_version") 2>/dev/null` if test -n "$x"; then which_rl=2; else which_rl=1; fi;; esac # Readline -- Headers - pth=' \ - /usr/local/include/readline \ - /usr/include/readline \ - /opt/gnu/include/readline \ - /usr/unsupported/include/readline \ - /usr/local/include \ - /usr/include \ - /opt/gnu/include \ - /a/lix/share/lix/sys/share/include \ - '; + case "$osname" in + os2) pth=`echo $C_INCLUDE_PATH | sed 's/\([^;]\)$/\1;/g' | sed 's/;/\/readline /g' | sed 's/\\\\/\//g'` ;; + *) pth=' \ + /usr/local/include/readline \ + /usr/include/readline \ + /opt/gnu/include/readline \ + /usr/unsupported/include/readline \ + /usr/local/include \ + /usr/include \ + /opt/gnu/include \ + /a/lix/share/lix/sys/share/include \ + ';; + esac x=`./locate 'readline.h' '' $pth` CPPF_defined='' case $x in - /*) rl_include=`echo $x | sed -e 's/\/readline.h//'` + ?:/*|/*) rl_include=`echo $x | sed -e 's/\/readline.h//'` if (grep CPPFunction $x 2>&1 > /dev/null); then CPPF_defined=yes fi;; @@ -626,7 +640,12 @@ int main(){return 0;} int main(){return 1;} #endif EOT_GNU -$CC -o /tmp/gnu /tmp/gnu.c + +case "$osname-$arch" in + os2-*) $CC -Zexe -o /tmp/gnu /tmp/gnu.c ;; + *) $CC -o /tmp/gnu /tmp/gnu.c ;; +esac + if /tmp/gnu; then case "$ASFLAGS" in *-P*) ASFLAGS="$ASFLAGS -D__GNUC__";;esac case "$osname-$arch" in @@ -691,6 +710,7 @@ case "$osname-$arch" in LDFLAGS='-std0 -call_shared /usr/lib/cmplrs/cc/crt0.o';; esac;; solaris-*) LD=$CC; LDFLAGS=$cflags; runpathprefix=-R ;; + os2-*) LD=$CC; LDFLAGS="$cflags -Zexe" ;; *) LD=$CC; LDFLAGS=$cflags ;; esac @@ -766,6 +786,14 @@ echo "No Dynamic Lib"; DLLDFLAGS=no-dyna echo "Dynamic Lib linker is $DLLD $DLLDFLAGS" fi +# +# Which Copy, shell ? +# +case "$osname-$arch" in + os2-*) ln_s=cp make_sh=sh exe_suff=.exe shell_q='"';; + *) ln_s="ln -s" make_sh="/bin/sh" exe_suff= shell_q="'";; +esac + if test "$fastread" != yes; then cat << EOT ========================================================================== @@ -784,9 +812,9 @@ fi # # Long integer ? # -endian=4321; rm -f a.out -if ($CC endian.c -o a.out 2>/dev/null); then - endian=`a.out`; +endian=4321; rm -f endian +if ($CC $LDFLAGS endian.c -o endian 2>/dev/null); then + endian=`endian`; fi case $endian in @@ -922,14 +950,14 @@ for variable in \ arch asmarch osname pretty \ AS ASFLAGS CC cflags DBGFLAGS OPTFLAGS LD LDFLAGS DLLD DLLDFLAGS EXTRADLLDFLAGS\ runpath runpathprefix LDDYN LIBS \ - ranlib zcat gunzip perl etags emacs \ + ranlib zcat gunzip perl etags emacs ln_s make_sh \ ASMFILE KERNEL kbuild create_asmfile depend_asmfile \ readline completionfun which_rl CPPF_defined rl_include RLINCLUDE RLLIBS \ sizeof_long endian has_exp2\ has_getrusage has_times has_ulong has_ftime \ has_sigrelse has_sigsetmask has_dlopen has_TIOCGWINSZ\ gnuplot extralib X11 Xincroot which_graphic_lib \ - TOP config_dir src_dir emacs_dir perl_dir doc_dir \ + TOP config_dir src_dir emacs_dir perl_dir doc_dir exe_suff shell_q \ ; do eval "echo $variable=\'"'$'"$variable\'" \>\> $dflt_conf_file done diff -pru pari-2.0.alpha.my/config/tar_include pari-2.0.alpha.my.newer/config/tar_include --- pari-2.0.alpha.my/config/tar_include Tue Nov 11 14:29:54 1997 +++ pari-2.0.alpha.my.newer/config/tar_include Sat Nov 29 16:39:46 1997 @@ -1,5 +1,5 @@ src -configure +config emacs examples perl diff -pru pari-2.0.alpha.my/config/TOPMakefile.SH pari-2.0.alpha.my.newer/config/TOPMakefile.SH --- pari-2.0.alpha.my/config/TOPMakefile.SH Fri Nov 21 18:06:20 1997 +++ pari-2.0.alpha.my.newer/config/TOPMakefile.SH Sat Nov 29 16:40:26 1997 @@ -41,26 +41,26 @@ doc:: undo:: @\$(RM) Configure; mv Configure.orig Configure - @for dir in configure src doc perl; do \$(RM) -r \$\$dir; \\ + @for dir in config src doc perl; do \$(RM) -r \$\$dir; \\ mv \$\$dir.orig \$\$dir; done @\$(RM) exp exp:: - @for dir in configure src doc perl; do if test -d \$\$dir.orig; then \\ + @for dir in config src doc perl; do if test -d \$\$dir.orig; then \\ echo "Remove \$\$dir.orig before building an experimental release";\\ exit 1; fi; done - for dir in configure src doc perl; do \\ + for dir in config src doc perl; do \\ mv \$\$dir \$\$dir.orig; cp -pr \$\$dir.orig \$\$dir; done $ln_s src exp sed "s,patch_level=.*,patch_level=exp," \\ - < configure.orig/version > configure/version + < config.orig/version > config/version patch:: pl$next_patch pl$next_patch: @if diff -c src exp >/dev/null 2>/dev/null; then :; else \\ echo "'src' should be a link to 'exp'"; exit 1; fi -diff -c Configure.orig Configure > pl$next_patch - @for dir in configure src doc perl; do \\ + @for dir in config src doc perl; do \\ echo "diff -c \$\$dir.orig \$\$dir"; \\ for i in \`find \$\$dir -type f -print\`; do \\ diff -c \`echo \$\$i|sed s,\$\$dir/,\$\$dir.orig/,\` \$\$i; \\ @@ -69,7 +69,7 @@ pl$next_patch: update-version:: sed -e "s,^patch_level=.*,patch_level=$next_patch," \\ -e "s,^next_patch=.*,next_patch=`expr $next_patch + 1`," \\ - < configure.orig/version > configure/version + < config.orig/version > config/version rel: update-version pl$next_patch \$(RM) exp diff -pru pari-2.0.alpha.my/doc/usersch4.tex pari-2.0.alpha.my.newer/doc/usersch4.tex --- pari-2.0.alpha.my/doc/usersch4.tex Thu Nov 13 17:47:44 1997 +++ pari-2.0.alpha.my.newer/doc/usersch4.tex Sat Nov 29 16:39:24 1997 @@ -1755,7 +1755,7 @@ in this document, e.g if you happen to w exemplifying some fine points that you think were unduly omitted. The second type is to expand or modify the configure routines and skeleton -files (the {\tt Configure} script and anything in the {\tt configure/} +files (the {\tt Configure} script and anything in the {\tt config/} subdirectory) so that compilation is possible (or easier, or more efficient) on a new system. This includes suppressing any idiosyncrasies in the code that would hinder its portability.