diff options
Diffstat (limited to 'unix')
-rw-r--r-- | unix/Makefile.in | 5 | ||||
-rw-r--r-- | unix/README | 32 | ||||
-rw-r--r-- | unix/configure.in | 24 | ||||
-rw-r--r-- | unix/porting.notes | 11 | ||||
-rw-r--r-- | unix/porting.old | 384 | ||||
-rw-r--r-- | unix/tcl.m4 | 9 |
6 files changed, 35 insertions, 430 deletions
diff --git a/unix/Makefile.in b/unix/Makefile.in index 2aaf216..1674db2 100644 --- a/unix/Makefile.in +++ b/unix/Makefile.in @@ -5,7 +5,7 @@ # "autoconf" program (constructs like "@foo@" will get replaced in the # actual Makefile. # -# RCS: @(#) $Id: Makefile.in,v 1.57 2000/02/07 21:35:03 ericm Exp $ +# RCS: @(#) $Id: Makefile.in,v 1.58 2000/02/10 08:55:25 hobbs Exp $ VERSION = @TCL_VERSION@ @@ -460,7 +460,7 @@ topDirName: gendate: yacc -l $(GENERIC_DIR)/tclGetDate.y sed -e 's/yy/TclDate/g' -e '/^#include <values.h>/d' \ - -e 's?SCCSID?RCS: @(#) $$Id: Makefile.in,v 1.57 2000/02/07 21:35:03 ericm Exp $$?' \ + -e 's?SCCSID?RCS: @(#) $$Id: Makefile.in,v 1.58 2000/02/10 08:55:25 hobbs Exp $$?' \ -e '/#ifdef __STDC__/,/#endif/d' -e '/TclDateerrlab:/d' \ -e '/TclDatenewstate:/d' -e '/#pragma/d' \ -e '/#include <inttypes.h>/d' -e 's/const /CONST /g' \ @@ -1057,7 +1057,6 @@ dist: $(UNIX_DIR)/configure cp $(UNIX_DIR)/configure $(UNIX_DIR)/configure.in \ $(UNIX_DIR)/tcl.m4 $(UNIX_DIR)/aclocal.m4 \ $(UNIX_DIR)/tclConfig.sh.in $(UNIX_DIR)/install-sh \ - $(UNIX_DIR)/porting.notes $(UNIX_DIR)/porting.old \ $(UNIX_DIR)/README $(UNIX_DIR)/ldAix \ $(DISTDIR)/unix chmod 775 $(DISTDIR)/unix/configure $(DISTDIR)/unix/configure.in diff --git a/unix/README b/unix/README index 684970c..702c5b4 100644 --- a/unix/README +++ b/unix/README @@ -10,6 +10,10 @@ used on the PC or Mac platform too, but they all depend on UNIX Updated forms of the information found in this file is available at: http://www.scriptics.com/support/howto/compile.html#unix +For information on platforms where Tcl is known to compile, along +with any porting notes for getting it to work on those platforms, see: + http://dev.scriptics.com/services/support/platforms.html + The rest of this file contains instructions on how to do this. The release should compile and run either "out of the box" or with trivial changes on any UNIX-like system that approximates POSIX, BSD, or System @@ -18,7 +22,7 @@ SGI, as well as PCs running Linux, BSDI, and SCO UNIX. To compile for a PC running Windows, see the README file in the directory ../win. To compile for a Macintosh, see the README file in the directory ../mac. -RCS: @(#) $Id: README,v 1.9 2000/02/05 12:09:16 hobbs Exp $ +RCS: @(#) $Id: README,v 1.10 2000/02/10 08:55:26 hobbs Exp $ How To Compile And Install Tcl: ------------------------------- @@ -71,15 +75,15 @@ How To Compile And Install Tcl: Note: be sure to use only absolute path names (those starting with "/") in the --prefix and --exec_prefix options. -(e) Type "make". This will create a library archive called "libtcl.a" - or "libtcl.so" and an interpreter application called "tclsh" that - allows you to type Tcl commands interactively or execute script files. +(e) Type "make". This will create a library archive called + "libtcl<version>.a" or "libtcl<version>.so" and an interpreter + application called "tclsh" that allows you to type Tcl commands + interactively or execute script files. (f) If the make fails then you'll have to personalize the Makefile for your site or possibly modify the distribution in other ways. - First check the file "porting.notes" to see if there are hints - for compiling on your system. Then look at the porting Web page - described later in this file. If you need to modify Makefile, there + First check the porting Web page above to see if there are hints + for compiling on your system. If you need to modify Makefile, are comments at the beginning of it that describe the things you might want to change and how to change them. @@ -101,15 +105,11 @@ How To Compile And Install Tcl: to use the installed versions, either specify the version number or create a symbolic link (e.g. from "tclsh" to "tclsh8.3"). -If you have trouble compiling Tcl, check out the following Web URL: - http://www.scriptics.com/software/install.html#Database -This is an on-line database of porting information. We make no -guarantees that this information is accurate, complete, or up-to-date, -but you may find it useful. If you get Tcl running on a new -configuration, we would be happy to receive new information to add to -the database. We're also interested in hearing how to change the -configuration setup so that Tcl compiles out of the box on more -platforms. +If you have trouble compiling Tcl, see the URL noted above about working +platforms. It contains information that people have provided about changes +they had to make to compile Tcl in various environments. We're also +interested in hearing how to change the configuration setup so that Tcl +compiles on additional platforms "out of the box". Test suite ---------- diff --git a/unix/configure.in b/unix/configure.in index ae36606..603de33 100644 --- a/unix/configure.in +++ b/unix/configure.in @@ -1,8 +1,9 @@ +#! /bin/bash -norc dnl This file is an input file used by the GNU "autoconf" program to dnl generate the file "configure", which is run during Tcl installation dnl to configure the system for the local environment. AC_INIT(../generic/tcl.h) -# RCS: @(#) $Id: configure.in,v 1.55 2000/02/08 10:06:58 hobbs Exp $ +# RCS: @(#) $Id: configure.in,v 1.56 2000/02/10 08:55:27 hobbs Exp $ TCL_VERSION=8.3 TCL_MAJOR_VERSION=8 @@ -36,18 +37,6 @@ AC_HAVE_HEADERS(unistd.h limits.h) SC_ENABLE_THREADS -#------------------------------------------------------------------------ -# set the warning flags depending on whether or not we are using gcc -#------------------------------------------------------------------------ - -if test "${GCC}" = "yes" ; then - CFLAGS_WARNING="-Wall -Wconversion" -else - CFLAGS_WARNING="" -fi - -AC_SUBST(CFLAGS_WARNING) - #------------------------------------------------------------------------------ # If we're using GCC, see if the compiler understands -pipe. If so, use it. # It makes compiling go faster. (This is only a performance feature.) @@ -499,8 +488,13 @@ else # Replace DBGX with TCL_DBGX eval "TCL_EXP_FILE=\"${TCL_EXP_FILE}\"" - TCL_BUILD_LIB_SPEC="-bI:`pwd`/${TCL_BUILD_EXP_FILE}" - TCL_LIB_SPEC="-bI:${exec_prefix}/lib/${TCL_EXP_FILE}" + if test "$using_gcc" = "yes" ; then + TCL_BUILD_LIB_SPEC="-Wl,-bI:`pwd`/${TCL_BUILD_EXP_FILE} -L`pwd`" + TCL_LIB_SPEC="-Wl,-bI:${exec_prefix}/lib/${TCL_EXP_FILE} -L`pwd`" + else + TCL_BUILD_LIB_SPEC="-bI:`pwd`/${TCL_BUILD_EXP_FILE}" + TCL_LIB_SPEC="-bI:${exec_prefix}/lib/${TCL_EXP_FILE}" + fi fi VERSION='${VERSION}' eval "CFG_TCL_SHARED_LIB_SUFFIX=${TCL_SHARED_LIB_SUFFIX}" diff --git a/unix/porting.notes b/unix/porting.notes deleted file mode 100644 index 5376663..0000000 --- a/unix/porting.notes +++ /dev/null @@ -1,11 +0,0 @@ -RCS: @(#) $Id: porting.notes,v 1.3 1999/04/16 00:48:03 stanton Exp $ - -This file used to contain a collection of notes that various people -had provided about porting Tcl to various machines and operating -systems. This information is now available in the Tcl porting -database at the following location: - - http://www.scriptics.com/software/install.html#Database - -If you port Tcl or Tk to a new platform, you can share any information -you might have by adding a new entry to this database. 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 - diff --git a/unix/tcl.m4 b/unix/tcl.m4 index f8828b1..0939379 100644 --- a/unix/tcl.m4 +++ b/unix/tcl.m4 @@ -557,6 +557,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ else using_gcc="no" fi + AC_MSG_RESULT([$using_gcc ($CC)]) # Step 2: check for existence of -ldl library. This is needed because @@ -576,6 +577,11 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ TCL_LIB_VERSIONS_OK=ok CFLAGS_DEBUG=-g CFLAGS_OPTIMIZE=-O + if test "$using_gcc" = "yes" ; then + CFLAGS_WARNING="-Wall -Wconversion -Wno-implicit-int" + else + CFLAGS_WARNING="" + fi TCL_NEEDS_EXP_FILE=0 TCL_BUILD_EXP_FILE="" TCL_EXP_FILE="" @@ -805,7 +811,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ SHLIB_SUFFIX=".so" DL_OBJS="tclLoadDl.o" DL_LIBS="" - LDFLAGS="" + LDFLAGS="-export-dynamic" LD_SEARCH_FLAGS="" ;; NEXTSTEP-*) @@ -1155,6 +1161,7 @@ AC_DEFUN(SC_CONFIG_CFLAGS, [ AC_SUBST(DL_LIBS) AC_SUBST(CFLAGS_DEBUG) AC_SUBST(CFLAGS_OPTIMIZE) + AC_SUBST(CFLAGS_WARNING) ]) #-------------------------------------------------------------------- |