diff options
author | Kevin B Kenny <kennykb@acm.org> | 2001-05-31 23:45:44 (GMT) |
---|---|---|
committer | Kevin B Kenny <kennykb@acm.org> | 2001-05-31 23:45:44 (GMT) |
commit | f16a9d29ec4b0f401338397dee7f5d24f9acffb5 (patch) | |
tree | fdd7e6cc3e4c627755440c7f60e6ebe4311248fc /unix/porting.old | |
parent | 97464e6cba8eb0008cf2727c15718671992b913f (diff) | |
download | tcl-f16a9d29ec4b0f401338397dee7f5d24f9acffb5.zip tcl-f16a9d29ec4b0f401338397dee7f5d24f9acffb5.tar.gz tcl-f16a9d29ec4b0f401338397dee7f5d24f9acffb5.tar.bz2 |
Development branch for TIPs 22 and 33
kennykb_tip_22_33_botched
Diffstat (limited to 'unix/porting.old')
-rw-r--r-- | unix/porting.old | 384 |
1 files changed, 0 insertions, 384 deletions
diff --git a/unix/porting.old b/unix/porting.old deleted file mode 100644 index d56c593..0000000 --- a/unix/porting.old +++ /dev/null @@ -1,384 +0,0 @@ -This is an old version of the file "porting.notes". It contains -porting information that people submitted for Tcl releases numbered -7.3 and earlier. You may find information in this file useful if -there is no information available for your machine in the current -version of "porting.notes". - -I don't have personal access to any of these machines, so I make -no guarantees that the notes are correct, complete, or up-to-date. -If you see the word "I" in any explanations, it refers to the person -who contributed the information, not to me; this means that I -probably can't answer any questions about any of this stuff. In -some cases, a person has volunteered to act as a contact point for -questions about porting Tcl to a particular machine; in these -cases the person's name and e-mail address are listed. - -sccsid = RCS: @(#) $Id: porting.old,v 1.2 1998/09/14 18:40:16 stanton Exp $ - ---------------------------------------------- -Cray machines running UNICOS: -Contact: John Freeman (jlf@cray.com) ---------------------------------------------- - -1. There is an error in the strstr function in UNICOS such that if the -string to be searched is empty (""), the search will continue past the -end of the string. Because of this, the history substitution loop -will sometimes run past the end of its target string and trash -malloc's free list, resulting in a core dump some time later. (As you -can probably guess, this took a while to diagnose.) I've submitted a -problem report to the C library maintainers, but in the meantime here -is a workaround. - ------------------------------------------------------------------ -diff -c1 -r1.1 tclHistory.c -*** 1.1 1991/11/12 16:01:58 ---- tclHistory.c 1991/11/12 16:14:22 -*************** -*** 23,24 **** ---- 23,29 ---- - #include "tclInt.h" -+ -+ #ifdef _CRAY -+ /* There is a bug in strstr in UNICOS; this works around it. */ -+ #define strstr(s1,s2) ((s1)?(*(s1)?strstr((s1),(s2)):0):0) -+ #endif _CRAY - ---------------------------------------------- -MIPS systems runing EP/IX: ---------------------------------------------- - -1. Need to add a line "#include <bsd/sys/time.h>" in tclUnix.h. - -2. Need to add "-lbsd" into the line that makes tclTest: - - ${CC} ${CFLAGS} tclTest.o libtcl.a -lbsd -o tclTest - ---------------------------------------------- -IBM RS/6000 systems running AIX: ---------------------------------------------- - -1. The system version of strtoul is buggy, at least under some -versions of AIX. If the expression tests fail, try forcing Tcl -to use its own version of strtoul instead of the system version. -To do this, first copy strtoul.c from the compat subdirectory up -to the main Tcl directory. Then modify the Makefile so that -the definition for COMPAT_OBJS includes "strtoul.o". Note: the -"config" script should now detect the buggy strtoul and substitute -Tcl's version automatically. - -2. You may have to comment out the declaration of open in tclUnix.h. - -3. You may need to add "-D_BSD -lbsd" to the CFLAGS definition. This -causes the system include files to look like BSD include files and -causes C library routines to act like bsd library routines. Without -this, the system may choke on "struct wait". - ---------------------------------------------- -AT&T 4.03 OS: ---------------------------------------------- - -Machine: i386/33Mhz i387 32k Cache 16MByte -OS: AT&T SYSV Release 4 Version 3 -X: X11R5 fixlevel 9 -Xserver: X386 1.2 - -1. Change the Tk Makefile as follows: -XLIB = -lX11 - should be changed to: -XLIB = -lX11 -lsocket -lnsl - -------------------------------------------------------- -Silicon Graphics systems: -------------------------------------------------------- - -1. Change the CC variable in the Makefile to: - -CC = cc -xansi -D__STDC__ -signed - -2. In Irix releases 4.0.1 or earlier the C compiler has a buggy optimizer. - If Tcl fails its test suite or generates inexplicable errors, - compile tclVar.c with -O0 instead of -O. - -3. For IRIX 5.1 or later, comments 1 and 2 are no longer relevant, -but you must add -D_BSD_SIGNALS to CFLAGS to get the proper signal -routines. - -4. Add a "-lsun" switch in the targets for tclsh and tcltest, -just before ${MATH_LIBS}. - -5. Rumor has it that you also need to add the "-lmalloc" library switch -in the targets for tclsh and tcltest. - -6. In IRIX 5.2 you'll have to modify Makefile to fix the following problems: - - The "-c" option is illegal with this version of install, but - the "-F" switch is needed instead. Change this in the "INSTALL =" - definition line. - - The order of file and directory have to be changed in all the - invocations of INSTALL_DATA or INSTALL_PROGRAM. - ---------------------------------------------- -NeXT machines running NeXTStep 3.1: ---------------------------------------------- - -1. Run configure with predefined CPP: - CPP='cc -E' ./configure - (If your shell is [t]csh, do a "setenv CPP 'cc -E' ") - -2. Edit Makefile: - -add tmpnam.o to COMPAT_OBJS: - COMPAT_OBJS = getcwd.o waitpid.o strtod.o tmpnam.o - -add the following to AC_FLAGS: - -Dstrtod=tcl_strtod - -3. Edit compat/tmpnam.c and replace "/usr/tmp" with "/tmp" - -After this, tcl7.0 will be build fine on NeXT (ignore linker warning) -and run all the tests. There are some formatting problems in printf() or -scanf() which come from NeXT's lacking POSIX conformance. Ignore those -errors, they don't matter much. - -4. Additional information that may apply to NeXTStep 3.2 only: - - The problem on NEXTSTEP 3.2 is that the configure script makes some - bad assumptions about the uid_t and gid_t types. Actually, the may - have been valid for NEXTSTEP 3.0, or it may be NEXTSTEP's rudimentary - attempt at POSIX support under 3.2, but no matter what the reason, the - configure script sets up the Makefile with CFLAGS '-Duid_t=int' and - '-Dgid_t=int', which are, unfortunately, incorrect, since they shoudl - actually be (I think) unsigned shorts. This causes problems when the - 'stat' structure is included, since it throws off the field offsets - from what the 'fstat' function thinks they should be. - - Anyway, the quick fix is to run configure and then edit the Makefile - to remove the uid_t and gid_t defines. This will allow tcl and Tk to - compile and run. There are some other problems on NEXTSTEP, - specifically with %g in the printf family of functions, but making the - uid_t and gid_t change will get it up and running. - ---------------------------------------------- -NeXT machines running NeXTStep 3.2: ---------------------------------------------- - -1. Run configure with predefined CPP: - CPP='cc -E' ./configure - (If your shell is [t]csh, do a "setenv CPP 'cc -E' ") - -2. Edit Makefile: - -add tmpnam.o to COMPAT_OBJS: - COMPAT_OBJS = getcwd.o waitpid.o strtod.o tmpnam.o - -add the following to AC_FLAGS: - -Dstrtod=tcl_strtod - -add '-m' to MATH_LIBS: - MATH_LIBS = -m -lm - -add '-O2 -arch m68k -arch i386' to CFLAGS: - CFLAGS = -O2 -arch m68k -arch i386 - -------------------------------------------------- -ISC 2.2 UNIX (using standard ATT SYSV compiler): -------------------------------------------------- - -In Makefile, change - -CFLAGS = -g -I. -DTCL_LIBRARY=\"${TCL_LIBRARY}\" - -to - -CFLAGS = -g -I. -DPOSIX_JC -DTCL_LIBRARY=\"${TCL_LIBRARY}\" - -This brings in the typedef for pid_t, which is needed for -/usr/include/sys/wait.h in tclUnix.h. - ---------------------------------------------- -DEC Alphas: ---------------------------------------------- - -1. There appears to be a compiler/library bug that causes core-dumps -unless you compile tclVar.c without optimization (remove the -O compiler -switch). The problem appears to have been fixed in the 1.3-4 version -of the compiler. - ---------------------------------------------- -CDC 4680MP, EP/IX 1.4.3: ---------------------------------------------- - -The installation was done in the System V environment (-systype sysv) -with the BSD extensions available (-I/usr/include/bsd and -lbsd). It was -built with the 2.20 level C compiler. The 2.11 level should not be used -because it has a problem with detecting NaN values in lines like: - if (x != x) ... -which appear in the TCL code. - -To make the configure script find the BSD extensions, I set environment -variable DEFS to "-I/usr/include/bsd" and LIBS to "-lbsd" before -running it. I would have also set CC to "cc2.20", but that compiler -driver has a bug that loader errors (e.g. not finding a library routine, -which the script uses to tell what is available) do not cause an error -status to be returned to the shell (but see the comments about "-non_shared" -below in the 2.1.1 notes). - -There is a bug in the <sys/wait.h> include file that mis-defines the -structure fields and causes WIFEXITED and WIFSIGNALED to return incorrect -values. My solution was to create a subdirectory "sys" of the main TCL -source directory and put a corrected wait.h in it. The "-I." already on -all the compile lines causes it to be used instead of the system version. -To fix this, compare the structure definition in /usr/include/bsd/sys/wait.h -with /bsd43/include/sys/wait.h (or mail to John Jackson, jrj@cc.purdue.edu, -and he'll send you a context diff). - -After running configure, I made the following changes to Makefile: - - 1) In AC_FLAGS, change: - -DNO_WAIT3=1 - to - -DNO_WAIT3=0 -Dwait3=wait2 - EP/IX (in the System V environment) provides a wait2() system - call with what TCL needs (the WNOHANG flag). The extra parameter - TCL passes to what it thinks is wait3() (the resources used by - the child process) is always zero and will be safely ignored. - - 2) Change: - CC=cc - to - CC=cc2.20 - because of the NaN problem mentioned earlier. Skip this if the - default compiler is already 2.20 (or later). - - 3) Add "-lbsd" to the commands that create tclsh and tcltest - (look for "-o"). - ---------------------------------------------- -CDC 4680MP, EP/IX 2.1.1: ---------------------------------------------- - -The installation was done in the System V environment (-systype sysv) -with the BSD extensions available (-I/usr/include/bsd and -lbsd). It was -built with the 3.11 level C compiler. The 2.11 level should not be used -because it has a problem with detecting NaN values in lines like: - if (x != x) ... -which appear in the TCL code. The 2.20 compiler does not have this -problem. - -To make the configure script find the BSD extensions, I set environment -variable DEFS to: - - "-I/usr/include/bsd -D__STDC__=0 -non_shared" - -and LIBS to: - - "-lbsd" - -before running it. The "-non_shared" is needed because with shared -libraries, the compiler (actually, the loader) does not report an -error for "missing" routines. The configuration script depends on this -error to know what routines are available. This is the real problem -I reported above for EP/IX 1.4.3 that I incorrectly attributed to a -compiler driver bug. I don't have 1.4.3 available any more, but it's -possible using "-non_shared" on it would have solved the problem. - -The same <sys/wait.h> bug exists at 2.1.1 (yes, I have reported it to -CDC), and the same fix as described in the 1.4.3 porting notes works. - -In addition to the three Makefile changes described in the 1.4.3 notes, -you can remove the "-non_shared" flag from AC_FLAGS. It is only needed -for the configuration step, not the build. - -You will get duplicate definition compilation warnings of: - - DBL_MIN - DBL_MAX - FLT_MIN - FLT_MAX - -during tclExpr.c. These can be ignored. - -During expr.test, you will get a failure for one of the "fmod" tests -unless you have CDC patch CC40038311 installed. - ---------------------------------------------- -Convex systems, OS 10.1 and 10.2: -Contact: Lennart Sorth (ls@dmi.min.dk) ---------------------------------------------- - -1. tcl7.0b2 compiles on Convex systems (OS 10.1 and 10.2) by just running - configure, typing make, except tclUnixUtil.c needs to be compiled - with option "-pcc" (portable cc, =!ANSI) due to: - cc: Error on line 1111 of tclUnixUtil.c: 'waitpid' redeclared: - incompatible types. - -------------------------------------------------- -Pyramid, OSx 5.1a (UCB universe, GCC installed): -------------------------------------------------- - -1. The procedures memcpy, strchr, fmod, and strrchr are all missing, -so you'll need to provide substitutes for them. After you do that -everything should compile fine. There will be one error in a scan -test, but it's an obscure one because of a non-ANSI implementation -of sscanf on the machine; you can ignore it. - -2. You may also have to add "tmpnam.o" to COMPAT_OBJS in Makefile: -the system version appears to be bad. - -------------------------------------------------- -Encore 91, UMAX V 3.0.9.3: -------------------------------------------------- - -1. Modify the CFLAGS assignment in file Makefile.in to include the --DENCORE flag in Makefile: - - CFLAGS = -O -DENCORE - -2. "mkdir" does not by default create the parent directories. The mkdir -directives should be modified to "midir -p". - -------------------------------------------------- -Sequent machines running Dynix: -Contact: Andrew Swan (aswan@soda.berkeley.edu) -------------------------------------------------- - -1. Use gcc instead of the cc distributed by Sequent - -2. The distributed math library does not include the fmod - function. Source for fmod can be retrieved from a BSD - source archive (such as ftp.uu.net) and included in the - compat directory. Add fmod.o to the COMPAT_OBJS variable - in the Makefile. You may need to comment out references - to 'isnan' and 'finite' in fmod.c - -3. If the linker complains that there are two copies of the - 'tanh' function, use the ar command to extract the objects - from the math library and build a new one without tanh.o - -4. The *scanf functions in the Sequent libraries are apparently - broken, which will cause the scanning tests to fail. The - cases that fail are fairly obscure. Using GNU libc apparently - solves this problem. - -------------------------------------------------- -Systems running Interactive 4.0: -------------------------------------------------- - -1. Add "-posix -D_SYSV3" to CFLAGS in Makefile (or Makefile.in). - -------------------------------------------------- -Systems running FreeBSD 1.1.5.1: -------------------------------------------------- - -The following changes comprise the entire porting effort of tcl7.3 to -FreeBSD (i.e. these were the changes to tclTest.c) and should probably -be made part of the tcl distribution. The changes only effect the way that -floating point exceptions are reported. I've choosen to move the changes -out of tclTest.c and into tclBasic.c. - -in tclBasic.c at top-of-file: - -#ifdef BSD_NET2 -#include <floatingpoint.h> -#endif - -in tclBasic.c in Tcl_Init(): - -#ifdef BSD_NET2 - fpsetround(FP_RN); - fpsetmask(0L); -#endif - |