summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--etc/=MACHINES341
-rw-r--r--src/callproc.c90
2 files changed, 254 insertions, 177 deletions
diff --git a/etc/=MACHINES b/etc/=MACHINES
index 01eebd5a2ee..377872976fe 100644
--- a/etc/=MACHINES
+++ b/etc/=MACHINES
@@ -1,19 +1,26 @@
This is a list of the status of GNU Emacs on various machines and systems.
-Last updated 27 December 1990.
+Last updated 4 March 1991.
+
+For each system and machine, we give the `-opsystem' and `-machine'
+options you should pass to config.emacs to prepare to build Emacs for
+that system/machine.
+
+These options tell Emacs which machine- and system-descriptive files
+to include. For each `-machine=MACHNAME' option, there exists a file
+`src/m/MACHNAME.h', and for each `-opsystem=OSNAME' option, there
+exists a file `src/s/OSNAME.h'.
Systems:
- For each type of system, the name of the appropriate s- header file
- is given.
-Berkeley 4.1 (s-bsd4-1.h)
+Berkeley 4.1 (-opsystem=bsd4-1)
Works on vaxes.
-Berkeley 4.2 (s-bsd4-2.h)
+Berkeley 4.2 (-opsystem=bsd4-2)
Works on several machines.
-Berkeley 4.3 (s-bsd4-3.h)
+Berkeley 4.3 (-opsystem=bsd4-3)
Works, on Vaxes at least.
@@ -21,27 +28,27 @@ Microport
See under "Intel 386".
-System V rel 0 (s-usg5-0.h)
+System V rel 0 (-opsystem=usg5-0)
Works, on Vaxes and 3bxxx's.
There are some problems in 18.37 due to shortnames/cccp problems:
use the emacs 17 cpp if you have it.
-System V rel 2 (s-usg5-2.h)
+System V rel 2 (-opsystem=usg5-2)
Works on various machines.
On some (maybe all) machines the library -lPW exists and contains
a version of `alloca'. On these machines, to use it, put
#define HAVE_ALLOCA
#define LIB_STANDARD -lPW -lc
- in the m-...h file for the machine.
+ in the src/m/MACHINENAME.h file for the machine.
If you find that the character Meta-DEL makes Emacs crash,
find where function init_sys_modes in sysdep.c sets sg.c_cc[VQUIT]
and make it store 7 there. I have as yet no evidence of whether
this problem, known in HP-UX, exists in other system V versions.
-System V rel 2.2 (s-usg5-2-2.h)
+System V rel 2.2 (-opsystem=usg5-2-2)
In 5.2.2 AT&T undid, incompatibly, their previous incompatible
change to the way the nlist library is called. A different s- file
@@ -54,7 +61,7 @@ System V rel 2.2 (s-usg5-2-2.h)
NO_REMAP. It is not yet known whether this applies to all
machines running 5.2.2.
-System V rel 3 (s-usg5-3.h)
+System V rel 3 (-opsystem=usg5-3)
Some versions of this system support ptys and BSD-style sockets.
On such systems, you should define HAVE_PTYS and HAVE_SOCKETS in config.h.
@@ -62,7 +69,7 @@ System V rel 3 (s-usg5-3.h)
If you want to link Emacs with shared libraries, define
USG_SHARED_LIBRARIES.
-System V rel 4 (s-usg5-4.h)
+System V rel 4 (-opsystem=usg5-4)
Supported, including shared libraries for ELF, but ptys do not
work because TIOCGPGRP fails to work on ptys.
@@ -75,7 +82,7 @@ System V rel 4 (s-usg5-4.h)
The standard C preprocessor generate xmakefile incorrectly. However,
/lib/cpp will work, so use `make CPP=/lib/cpp'.
-Ultrix (s-bsd4-2.h)
+Ultrix (-opsystem=bsd4-2)
DEC's Ultrix OS is essentially Berkeley 4.2. It does not correctly
implement certain features of 4.3.
@@ -96,11 +103,11 @@ Ultrix (s-bsd4-2.h)
The problem is said to be gone in UWS version 2.1.
-Uniplus 5.2 (s-unipl5-2.h)
+Uniplus 5.2 (-opsystem=unipl5-2)
Works, on Dual machines at least.
-VMS (s-vms.h)
+VMS (-opsystem=vms)
Works except for certain features (directory listing, dired,
sending and receiving mail) that use synchronous subprocesses.
@@ -114,34 +121,37 @@ VMS (s-vms.h)
Xenix
Should work in 18.50, but you will need to edit the files
- etc/Makefile and src/ymakefile
+ lib-src/Makefile and src/ymakefile
(see the comments that mention "Xenix" for what to change.)
Compiling Emacs with -O is said not to work.
If you want Emacs to work with Smail (installed as /usr/bin/smail)
then add the line #define SMAIL to config.h.
- The file etc/XENIX suggests some useful things to do to Xenix
+ The file share-lib/XENIX suggests some useful things to do to Xenix
to make the Emacs meta key work.
Machines:
- For each type of machine, the names of the m- and s- header files
- are given.
-Alliant (m-alliant4.h or m-alliant.h or m-alliant1.h; s-bsd4-2.h)
+Alliant (-machine=alliant4, -machine=alliant or -machine=alliant1;
+ -opsystem=bsd4-2)
18.52 works on system version 4. Previous Emacs versions were
known to work on previous system versions.
- Use m-alliant1.h on version 1 of their operating system
- and use m-alliant.h on version 2 or 3.
- Use m-alliant4.h on version 4.
+ Use -machine=alliant1 on version 1 of their operating system
+ and use -machine=alliant on version 2 or 3.
+ Use -machine=alliant4 on version 4.
+
+Alliant FX/2800 (-machine=alliant-2800; -opsystem=bsd4-3)
+
+ Known to work with 18.58 and OS version 2.2, compiler version 1.3.
-Altos 3068 (m-altos.h; s-usg5-2.h)
+Altos 3068 (-machine=altos; -opsystem=usg5-2)
18.52 is said to work, provided you don't compile unexec.c with -O.
-Amdahl UTS (m-amdahl.h; s-usg5-2-2.h)
+Amdahl UTS (-machine=amdahl; -opsystem=usg5-2-2)
Small changes for 18.38 were merged in 18.39. It is mostly
working, but at last report a bug sometimes causes Emacs to
@@ -154,21 +164,21 @@ Amdahl UTS (m-amdahl.h; s-usg5-2-2.h)
even worth trying to use it. Success was obtained with the
uts native C compiler on uts version 5.2.5.
-Apollo running Domain (m-apollo.h; s-bsd4-2.h)
+Apollo running Domain (-machine=apollo; -opsystem=bsd4-2)
18.52 works, to some extent.
Code for dumping Emacs has been written, but we cannot
distribute it yet.
There are reports of bugs in cc -O on this system.
- In etc/Makefile, don't expect emacsclient and emacsserver to
+ In lib-src/Makefile, don't expect emacsclient and emacsserver to
compile. You might want to remove them from your makefile.
Supposedly something in dired.c runs into a compiler bug.
- Paraphrasing the statement should avoid the problem.
- I havenot yet received word as to the exact statement this is.
+ Paraphrasing the statement should avoid the problem. I have not yet
+ received word as to the exact statement this is.
-AT&T 3b2, 3b5, 3b15, 3b20 (m-att3b.h; s-usg5-2-2.h)
+AT&T 3b2, 3b5, 3b15, 3b20 (-machine=att3b; -opsystem=usg5-2-2)
Emacs will probably not work with certain kernel constants too small.
@@ -189,17 +199,18 @@ AT&T 3b2, 3b5, 3b15, 3b20 (m-att3b.h; s-usg5-2-2.h)
The MAXMEM may also prevent Emacs from running. The file
3B-MAXMEM in this directory explains how to increase MAXMEM.
-AT&T 7300 or 3b1 (m-7300.h; s-usg5-2-2.h)
+AT&T 7300 or 3b1 (-machine=7300; -opsystem=usg5-2-2)
- 18.52 seems to work. If you have strange troubles with dumping Emacs,
- delete the last few lines from m-7300.h and recompile. These lines
- are supposed to produce a sharable executable.
+ 18.52 seems to work. If you have strange troubles with dumping
+ Emacs, delete the last few lines from -machine=7300 and recompile.
+ These lines are supposed to produce a sharable executable.
- m-7300.h defines SHORTNAMES because operating system versions
+ -machine=7300 defines SHORTNAMES because operating system versions
older than 3.5 did not support long symbol names. Version 3.5 does
- support them, so you can remove the #define SHORTNAMES in that version.
+ support them, so you can remove the #define SHORTNAMES in that
+ version.
-Bull sps7 (m-sps7.h; s-usg5-2.h)
+Bull sps7 (-machine=sps7; -opsystem=usg5-2)
Changes partially merged in version 19, but some fixes are probably required.
@@ -207,59 +218,66 @@ CCI 5/32, 6/32
See "Tahoe".
-Celerity (m-celerity.h; s-bsd4-2.h)
+Celerity (-machine=celerity; -opsystem=bsd4-2)
Version 18.49 works.
-Clipper (m-clipper.h; ???)
+Clipper (-machine=clipper; ???)
Version 19 has support for some brand of clipper system.
Note that the Orion 105 is also a clipper, but some system-related
parameters are different.
-Convex (m-convex.h; s-bsd4-3.h)
+Convex (-machine=convex; -opsystem=bsd4-3)
18.53 is supposed to work.
-Cubix QBx/386 (m-intel386.h; s-usg5-3.h)
+Cubix QBx/386 (-machine=intel386; -opsystem=usg5-3)
Changes merged in 19.1. Systems before 2/A/0 may fail to compile etags.c
due to a compiler bug.
-Cydra 5 (m-cydra5.h; s-usg5-3.h)
+Cydra 5 (-machine=cydra5; -opsystem=usg5-3)
18.51 worked in one version of their operating system but stopped
working in a newer version. This has not been fixed.
-DECstation (m-pmax.h; s-bsd4-2.h)
+DECstation (-machine=pmax; -opsystem=bsd4-2)
Works, as of 18.55. See under Ultrix for problems using X windows
on Ultrix. Note that this is a MIPS machine.
+ For Ultrix versions prior to 4.0, you may need to delete
+ the definition of START_FILES from src/m/pmax.h.
-Delta (m-delta.h; s-usg5-3.h)
+Motorola Delta 147 (-machine=delta; -opsystem=usg5-3)
Motorola Delta boxes running System V/68 release 3.
(tested on sys1147 with SVR3V5). Changes merged in 19.1.
-Dual running System V (m-dual.h; s-usg5-2.h)
+Motorola Delta 187 (-machine=delta88k; -opsystem=usg5-3)
+
+ Machine support added in version 19.
+ HAVE_X_MENU does not work due to lack of insque.
+
+Dual running System V (-machine=dual; -opsystem=usg5-2)
As of 17.46, this works except for a few changes
needed in unexec.c.
-Dual running Uniplus (m-dual.h; s-unipl5-2.h)
+Dual running Uniplus (-machine=dual; -opsystem=unipl5-2)
Works, as of 17.51.
-Elxsi 6400 (m-elxsi; s-usg5-2.h)
+Elxsi 6400 (-machine=elxsi; -opsystem=usg5-2)
Changes for 12.0 release are in 19.1.
Dumping should work now.
-Encore machine (m-ns16000.h; s-umax.h)
+Encore machine (-machine=ns16000; -opsystem=umax)
This machine bizarrely uses 4.2BSD modified to use the COFF format
for object files. Works (as of 18.40). For the APC processor you
- must enable two lines at the end of s-umax.h, which are commented
+ must enable two lines at the end of src/s/umax.h, which are commented
out in the file as distributed.
WARNING: If you compile Emacs with the "-O" compiler switch, you
@@ -269,36 +287,37 @@ Encore machine (m-ns16000.h; s-umax.h)
A kernel bug in some system versions causes input characters to be lost
occasionally.
-GEC 93 (m-gec93.h; s-usg5-2.h?)
+GEC 93 (-machine=gec93; -opsystem=usg5-2?)
Changes are partially merged in version 18, but
certainly require more work.
-Gould Power Node (m-gould.h; s-bsd4-2.h or s-bsd4-3.h)
+Gould Power Node (-machine=gould; -opsystem=bsd4-2 or -opsystem=bsd4-3)
18.36 worked on versions 1.2 and 2.0 of the operating system.
- On UTX/32 2.0, use s-bsd4-3.h.
+ On UTX/32 2.0, use -opsystem=bsd4-3.
- On UTX/32 1.2 and UTX/32S 1.0, use s-bsd4-2.h and note that compiling
- etc/sorted-doc tickles a compiler bug: remove the -g flag to cc in the
- makefile.
+ On UTX/32 1.2 and UTX/32S 1.0, use -opsystem=bsd4-2 and note that
+ compiling lib-src/sorted-doc tickles a compiler bug: remove the -g
+ flag to cc in the makefile.
UTX/32 1.3 has a bug in the bcopy library routine. Fix it by
- #undef BSTRING in m-gould.h.
+ #undef BSTRING in -machine=gould.
Version 19 incorporates support for releases 2.1 and later of UTX/32.
A site running a pre-release of 2.1 should #define RELEASE2_1 in config.h.
-Gould NP1 (m-gould-np1.h; s-bsd4-3.h)
+Gould NP1 (-machine=gould-np1; -opsystem=bsd4-3)
Version 19 supposedly works.
-Honeywell XPS100 (m-xps100.h; s-usg5-2.h)
+Honeywell XPS100 (-machine=xps100; -opsystem=usg5-2)
Config file added in version 19.
-HP 9000 series 200 or 300 (m-hp9000s300.h; s-hpux.h or s-bsd4-3.h)
+HP 9000 series 200 or 300 (-machine=hp9000s300;
+ -opsystem=hpux or -opsystem=bsd4-3)
Version 18 works.
These machines are 68000-series CPUs running HP-UX
@@ -328,9 +347,9 @@ HP 9000 series 200 or 300 (m-hp9000s300.h; s-hpux.h or s-bsd4-3.h)
that include the `netunam' system call. This is refered to as
Network Services (NS/9000) in HP literature.
-HP 9000 series 300 running BSD 4.3 (m-hp300bsd.h; s-bsd4-3.h)
+HP 9000 series 300 running BSD 4.3 (-machine=hp300bsd; -opsystem=bsd4-3)
- Version 18.55 works.
+ Version 19.1 works.
HP 9000 series 500: not supported.
@@ -338,18 +357,18 @@ HP 9000 series 500: not supported.
which relocates data in memory during execution of a program,
and support for it would be difficult to implement.
-HP 9000 series 800 (Spectrum) (m-hp9000s800.h; s-hpux.h)
+HP 9000 series 800 (Spectrum) (-machine=hp9000s800; -opsystem=hpux)
These files support HP's Precision Architecture machines
running HP-UX. It has been moderately tested on the Series
840.
-High Level Hardware Orion (m-orion.h; s-bsd4-2.h)
+High Level Hardware Orion (-machine=orion; -opsystem=bsd4-2)
This is the original microprogrammed hardware.
- m- file ought to work.
+ Machine description file ought to work.
-High Level Hardware Orion 1/05 (m-orion105.h; s-bsd4-2.h)
+High Level Hardware Orion 1/05 (-machine=orion105; -opsystem=bsd4-2)
Changes merged in 18.52. This is the one with the Clipper cpu.
Note that systems which lack NFS need LOAD_AVE_TYPE changed to `double'.
@@ -357,12 +376,16 @@ High Level Hardware Orion 1/05 (m-orion105.h; s-bsd4-2.h)
C compiler has a bug; it loops compiling eval.c.
Compile it by hand without optimization.
-IBM PS/2 (m-ibmps2-aix.h; s-usg5-2-2.h)
+IBM PS/2 (-machine=ibmps2-aix; -opsystem=usg5-2-2 or -opsystem=usg5-3)
Changes merged in version 19. You may need to copy
/usr/lib/samples/hft/hftctl.c to the Emacs src directory.
-IBM RS/6000 (m-ibmrs6000.h; s-aix3-1.h)
+ Use -opsystem=usg5-3 on AIX 1.2.
+ -opsystem=usg5-2-2 should work on either AIX 1.1 or 1.2, but may not
+ work with certain new X window managers, and may be suboptimal.
+
+IBM RS/6000 (-machine=ibmrs6000; -opsystem=aix3-1)
Changes merged in version 19.
@@ -372,10 +395,12 @@ IBM RS/6000 (m-ibmrs6000.h; s-aix3-1.h)
but every few days or weeks it changes to a new steady state.
When this happens, the dumped Emacs data file becomes invalid.
-IBM RT/PC (m-ibmrt.h or m-ibmrt-aix.h; s-bsd4-2.h or s-usg5-2-2.h)
+IBM RT/PC (-machine=ibmrt or -machine=ibmrt-aix;
+ -opsystem=bsd4-2 or -opsystem=usg5-2-2)
18.52 works on both operating systems.
- Use s-bsd-4-2.h for the 4.2-like system and s-usg5-2-2.h for AIX.
+ Use -opsystem=bsd4-2 for the 4.2-like system and -opsystem=usg5-2-2
+ for AIX.
On BSD, if you have trouble, try compiling with a different compiler.
@@ -385,7 +410,8 @@ IBM RT/PC (m-ibmrt.h or m-ibmrt-aix.h; s-bsd4-2.h or s-usg5-2-2.h)
window.c must not be compiled with -O on AIX.
-Integrated Solutions `Optimum V' (m-isi-ov.h; s-bsd4-2.h or s-bsd4-3.h)
+Integrated Solutions `Optimum V' (-machine=isi-ov;
+ -opsystem=bsd4-2 or -opsystem=bsd4-3)
18.52 said to work on some sort of ISI machine.
Version 18.45 worked (running on a Optimum V (VME bus, 68020)
@@ -397,14 +423,19 @@ Integrated Solutions `Optimum V' (m-isi-ov.h; s-bsd4-2.h or s-bsd4-3.h)
Compilation with -O is rumored to break something.
On recent system versions, you may need to undefine the macro UMAX
- in etc/loadst.c and src/getpagesize.h. They stupidly defined this
+ in lib-src/loadst.c and src/getpagesize.h. They stupidly defined this
in a system header file, which confuses Emacs (which thinks that UMAX
indicates the Umax operating system).
-Intel 80386 (m-intel386.h or m-is386.h; s-bsd4-2.h, s-usg5-2-2.h, s-usg5-3.h,
- s-386-ix.h, s-esix.h or s-xenix.h)
+Intel 386 (-machine=intel386 or -machine=is386;
+ -opsystem=bsd4-2, usg5-2-2, usg5-3, isc2-2, 386-ix,
+ esix, or xenix)
+
+ 18.58 should support a wide variety of operating systems.
+ Use -opsystem=isc2-2 for Interactive 386/ix version 2.2.
+ Use -opsystem=386ix for prior versions.
+ Use -opsystem=esix for Esix. It isn't clear what to do on an SCO system.
- Changes merged in 18.50 for all three operating systems.
If you are using Xenix, see notes above under Xenix.
Some sysV.3 systems seem to have bugs in `opendir';
@@ -437,20 +468,20 @@ Intel 80386 (m-intel386.h or m-is386.h; s-bsd4-2.h, s-usg5-2-2.h, s-usg5-3.h,
but define `struct tc' instead; add `#define tchars tc'
to config.h to solve this problem.
- The file m-is386.h is used for an Integrated Solutions 386 machine.
+ The file -machine=is386 is used for an Integrated Solutions 386 machine.
It may also be correct for Microport systems.
-Iris 2500 (m-irist.h; s-iris3-5.h or s-iris3-6.h)
+Iris 2500 (-machine=irist; -opsystem=iris3-5 or -opsystem=iris3-6)
- Version 18 said to work; use s-irist3-5.h for system version 2.5
- and s-iris3-6.h for system version 3.6.
+ Version 18 said to work; use -opsystem=irist3-5 for system version 2.5
+ and -opsystem=iris3-6 for system version 3.6.
-Iris 2500 Turbo (m-irist.h; s-iris3-5.h or s-iris3-6.h)
+Iris 2500 Turbo (-machine=irist; -opsystem=iris3-5 or -opsystem=iris3-6)
- 18.49 works. Use s-iris3-6.h for system versions 3.6 and up.
+ 18.49 works. Use -opsystem=iris3-6 for system versions 3.6 and up.
Note that the 3030 is the same machine as this.
-Iris 4D (m-iris4d.h; s-iris3-6.h or s-irix3-3.h)
+Iris 4D (-machine=iris4d; -opsystem=irix3-3)
18.56 is known to work on 4D series machines with Irix 3.3 or later.
@@ -459,12 +490,15 @@ Iris 4D (m-iris4d.h; s-iris3-6.h or s-irix3-3.h)
RANLIB=true
- Someone says that with the yellow pages you must change two definitions
- in m-iris4d.h as follows:
+ Someone said that with the yellow pages you must change two definitions
+ in -machine=iris4d as follows:
#define LIBS_MACHINE -lsun -lbsd -lPW -lmld
#define C_SWITCH_MACHINE -I/usr/include/sun -I/usr/include/bsd
+ jg@bambi.esd.sgi.com says this isn't true anymore,
+ but the info might as well be here just in case.
+
Macintosh
We are boycotting Apple because of Apple's efforts to take away
@@ -475,7 +509,7 @@ Macintosh
See the file APPLE in this directory for more information.
-Masscomp (m-masscomp.h; s-rtu.h)
+Masscomp (-machine=masscomp; -opsystem=rtu)
18.36 worked on a 5500DP running RTU v3.1a and compiler version 3.2
with minor fixes that are included in 18.37. However, bizarre behavior
@@ -488,73 +522,74 @@ Masscomp (m-masscomp.h; s-rtu.h)
to take the time to install the numerous workarounds required to
compensate for this bug; go complain to Masscomp.
- For RTU version 3.1, define FIRST_PTY_LETTER to be 'p' in s-rtu.h
+ For RTU version 3.1, define FIRST_PTY_LETTER to be 'p' in src/s/rtu.h
(or #undef and redefine it in config.h) so that ptys will be used.
GNU Emacs is said to have no chance of compiling on RTU versions
prior to v3.0.
-Megatest (m-mega68.h; s-bsd4-2.h)
+Megatest (-machine=mega68; -opsystem=bsd4-2)
Emacs 15 worked; do not have any reports about Emacs 16 or 17
but any new bugs are probably not difficult.
-Mips (m-mips.h or m-mips4.h; s-usg5-2-2.h, s-bsd4-3.h)
+Mips (-machine=mips or -machine=mips4; -opsystem=usg5-2-2, -opsystem=bsd4-3)
Changes merged in 18.39. Some fixes in 18.56.
- Use m-mips4.h for RISCOS version 4; use s-bsd4-3.h with the BSD world.
+ Use -machine=mips4 for RISCOS version 4; use -opsystem=bsd4-3 with
+ the BSD world.
-Motorola Delta (m-delta.h; s-usg5-3.h)
+Motorola Delta (-machine=delta; -opsystem=usg5-3)
- m- file added in version 18.56.
+ Machine support added in version 18.56.
-National Semiconductor 32000 (m-ns32000.h; s-usg5-2.h)
+National Semiconductor 32000 (-machine=ns32000; -opsystem=usg5-2)
This is for a complete machine from National Semiconductor,
running Genix. Changes merged in version 19.
-NCR Tower 32 running System V release 2 (m-tower32.h; s-usg5-2-2.h)
+NCR Tower 32 running System V release 2 (-machine=tower32; -opsystem=usg5-2-2)
Works as of 17.56. If you change src/ymakefile so that CFLAGS includes
C_OPTIMIZE_SWITCH rather than C_DEBUG_SWITCH, check out the comments
- in src/m-tower32.h about this.
+ in src/m/tower32.h about this.
There is a report that compilation with -O did not work with 18.54.
-NCR Tower 32 running System V release 3 (m-tower32v3.h; s-usg5-3.h)
+NCR Tower 32 running System V release 3 (-machine=tower32v3; -opsystem=usg5-3)
Works as of 18.56. If you change src/ymakefile so that CFLAGS includes
C_OPTIMIZE_SWITCH rather than C_DEBUG_SWITCH, and do not use gcc, check
- out the comments in src/m-tower32v3.h about this.
+ out the comments in src/m/tower32v3.h about this.
-Nixdorf Targon 31 (m-targon31.h; s-usg5-2-2.h)
+Nixdorf Targon 31 (-machine=targon31; -opsystem=usg5-2-2)
- m- file for version 17 is included in 18
+ Machine description file for version 17 is included in 18
but whether it works is not known.
src/unexec.c bombs if compiled with -O.
Note that the "Targon 35" is really a Pyramid.
-Nu (TI or LMI) (m-nu.h; s-usg5-2.h)
+Nu (TI or LMI) (-machine=nu; -opsystem=usg5-2)
Version 18 is believed to work.
-Plexus (m-plexus.h; s-usg5-2.h)
+Plexus (-machine=plexus; -opsystem=usg5-2)
Works as of 17.56.
-Pmax (DEC Mips) (m-pmax.h; s-bsd4-2.h)
+Pmax (DEC Mips) (-machine=pmax; -opsystem=bsd4-2)
See under DECstation, above.
-Prime EXL (m-intel386.h; s-usg5-3.h)
+Prime EXL (-machine=intel386; -opsystem=usg5-3)
Minor changes merged in 19.1.
-Pyramid (m-pyramid.h; s-bsd4-2.h)
+Pyramid (-machine=pyramid; -opsystem=bsd4-2)
In OSx 4.0, it seems necessary to add the following two lines
- to m-pyramid.h:
+ to src/m/pyramid.h:
#define _longjmp longjmp
#define _setjmp setjmp
@@ -565,26 +600,29 @@ Pyramid (m-pyramid.h; s-bsd4-2.h)
Some versions of the pyramid compiler get fatal
errors when the -gx compiler switch is used; if this
- happens to you, change src/m-pyramid.h to define
+ happens to you, change src/m/pyramid.h to define
C_DEBUG_SWITCH with an empty definition.
Some old system versions may require you to define PYRAMID_OLD
in when alloca.s is preprocessed, in order to define _longjmp and _setjmp.
-Sequent Balance (m-sequent.h; s-bsd4-2.h, or s-bsd4-3.h on newer systems)
+Sequent Balance (-machine=sequent;
+ -opsystem=bsd4-2, or -opsystem=bsd4-3 on newer systems)
Emacs 18.51 should work on system version 3.0. 18.52 is said to work.
- Delete some lines at the end of m-sequent.h for earlier system versions.
+ Delete some lines at the end of src/m/sequent.h for earlier system
+ versions.
-Sequent Symmetry (m-symmetry.h; s-bsd4-3.h)
+Sequent Symmetry (-machine=symmetry; -opsystem=bsd4-3)
Emacs 19 should work.
-SONY News (m-news.h; s-bsd4-2.h, or s-bsd4-3.h for system release 3)
+SONY News (-machine=news;
+ -opsystem=bsd4-2, or -opsystem=bsd4-3 for system release 3)
18.52 should work.
-SONY News 3000 series (RISC NEWS) (m-news-risc.h; s-bsd4-3.h)
+SONY News 3000 series (RISC NEWS) (-machine=news-risc; -opsystem=bsd4-3)
Works, as of 18.56. Note that this is a MIPS architecture machine.
@@ -592,24 +630,26 @@ Stardent 1500 or 3000
See Titan.
-Stride (m-stride.h; s-usg5-2.h)
+Stride (-machine=stride; -opsystem=usg5-2)
Works (most recent news for 18.30) on their release 2.0.
- For release 2.2, see the end of m-stride.h.
+ For release 2.2, see the end of src/m/stride.h.
It may be possible to run on their V.1 system but changes
in the s- file would be needed.
-Sun 1, 2 and 3 (m-sun1.h, m-sun2.h, m-sun3.h; s-bsd4-2.h or s-sunos4.h)
+Sun 1, 2 and 3 (-machine=sun1, -machine=sun2, -machine=sun3;
+ -opsystem=bsd4-2, sunos4-0, or sunos4-1)
- There are three m- files for different versions of SunOS.
+ There are three machine files for different versions of SunOS.
All are derived from Berkeley 4.2. Emacs 17 has run on all of them.
- Whether you should use m-sun1.h, m-sun2.h or m-sun3.h depends
- on the VERSION OF THE OPERATING SYSTEM you have.
- You will need to use m-sun3.h on Sun 2's running SunOS release 3.
+ Whether you should use -machine=sun1, -machine=sun2 or -machine=sun3
+ depends on the VERSION OF THE OPERATING SYSTEM you have.
+ You will need to use -machine=sun3 on Sun 2's running SunOS release 3.
- For SunOS release 4 on a Sun 3, use m-sun3.h and s-sunos4.h.
- See the file etc/SUNBUG for how to solve problems caused by bugs in
- the "export" version of SunOS 4.
+ For SunOS release 4 on a Sun 3, use -machine=sun3 and
+ -opsystem=sunos4-0 or -opsystem=sunos4-1.
+ See the file share-lib/SUNBUG for how to solve problems caused by
+ bugs in the "export" version of SunOS 4.
If you have trouble using open-network-stream, get the
distribution of `bind' (the BSD name-server), build libresolv.a,
@@ -618,7 +658,7 @@ Sun 1, 2 and 3 (m-sun1.h, m-sun2.h, m-sun3.h; s-bsd4-2.h or s-sunos4.h)
If you want to use SunWindows, define HAVE_SUN_WINDOWS
in config.h to enable a special interface called `emacstool'.
- The definition must *precede* the #include "m-sun3.h".
+ The definition must *precede* the #include "machine.h".
System version 3.2 is required for this facility to work.
We recommend that you instead use the X window system, which
@@ -627,7 +667,7 @@ Sun 1, 2 and 3 (m-sun1.h, m-sun2.h, m-sun3.h; s-bsd4-2.h or s-sunos4.h)
If you are compiling for X windows, and the X window library was
compiled to use the 68881, then you must edit config.h according
- the comments at the end of m-sun3.h.
+ the comments at the end of -machine=sun3.
Note that Emacs on a Sun is not really as big as it looks.
As dumped, it includes around 200k of zeros between the
@@ -638,82 +678,97 @@ Sun 1, 2 and 3 (m-sun1.h, m-sun2.h, m-sun3.h; s-bsd4-2.h or s-sunos4.h)
To build a single Emacs that will run on Sun 2 and Sun 3
HARDWARE, just build it on the Sun 2.
-Sun 4 (m-sparc.h; s-bsd4-2.h or s-sunos4.h)
+Sun 4 (-machine=sparc;
+ -opsystem=bsd4-2, -opsystem=sunos4-0, -opsystem=sunos4-1)
Changes merged in 18.50. Some people say optimizing compilation
does not work; some say that -O2 (whatever that is) works
perhaps with a small change.
- Use s-sunos4.h for operating system version 4.
- See the file etc/SUNBUG for how to solve problems caused by bugs in
- the "export" version of SunOS 4.
+ Use -opsystem=sunos4-0 for operating system version 4.0, and
+ -opsystem=sunos4-1 for later versions.
+ See the file share-lib/SUNBUG for how to solve problems caused by
+ bugs in the "export" version of SunOS 4.
-Sun Roadrunner (m-sun386.h; s-sunos4.h)
+Sun Roadrunner (-machine=sun386; -opsystem=sunos4-0 or -opsystem=sunos4-1)
Changes merged in 18.51.
-Tahoe (m-tahoe.h; s-bsd4-2.h or s-bsd4-3.h)
+Tadpole 68K (-machine=tad68k; -opsystem=usg5-3)
+
+ Changes merged in 19.1.
+
+ You may need to edit Makefile to change the variables LIBDIR and
+ BINDIR from /usr/local to /usr/contrib.
+
+ To give movemail access to /usr/mail, you may need to execute
+
+ chmod 2755 etc/movemail; chgrp mail etc/movemail
+
+Tahoe (-machine=tahoe; -opsystem=bsd4-2 or -opsystem=bsd4-3)
18.52 known to work on some Tahoes, but a compiler bug intervenes
on others. Some Emacs versions have worked in Unisys 1r4
(not in 1r3) and CCI I.21.
- If you have trouble compiling etc/loadst.c, turn off the definition
- of DKSTAT_HEADER_FILE in m-tahoe.h.
+ If you have trouble compiling lib-src/loadst.c, turn off the definition
+ of DKSTAT_HEADER_FILE in -machine=tahoe.
-Tandem Integrity S2 (m-tandem-s2.h; s-usg5-3.h)
+Tandem Integrity S2 (-machine=tandem-s2; -opsystem=usg5-3)
Changes merged in 18.56 but subprocess support is turned off.
You will probably want to see if you can make subprocesses work.
- You must edit etc/Makefile to define LOADLIBES = -mld.
+ You must edit lib-src/Makefile to define LOADLIBES = -mld.
-Tektronix 16000 box (6130?) (m-ns16000.h; s-bsd4-2.h)
+Tektronix 16000 box (6130?) (-machine=ns16000; -opsystem=bsd4-2)
Emacs 17.61 worked.
-Tektronix 4300 (m-tex4300.h; s-bsd4-3.h)
+Tektronix 4300 (-machine=tek4300; -opsystem=bsd4-3)
Emacs 18.51 should work.
-Titan P2 or P3 (m-titan.h; s-usg5-3.h)
+Titan P2 or P3 (-machine=titan; -opsystem=usg5-3)
Changes probably merged in version 19.
-Ustation E30 (SS5E) (m-ustation.h; s-unipl5-2.h).
+Ustation E30 (SS5E) (-machine=ustation; -opsystem=unipl5-2).
Changes merged in 18.52; don't know whether they work.
-Vax running Berkeley Unix (m-vax.h; s-bsd4-1.h, s-bsd4-2.h or s-bsd4-3.h)
+Vax running Berkeley Unix (-machine=vax;
+ -opsystem=bsd4-1, bsd4-2 or bsd4-3)
Works.
-Vax running Ultrix (m-vax.h; s-bsd4-2.h)
+Vax running Ultrix (-machine=vax; -opsystem=bsd4-2)
Works. See under Ultrix for problems using X windows on Ultrix.
-Vax running System V rel 2 (m-vax.h; s-usg5-2.h)
+Vax running System V rel 2 (-machine=vax; -opsystem=usg5-2)
18.27 Works.
-Vax running System V rel 0 (m-vax.h; s-usg5-0.h)
+Vax running System V rel 0 (-machine=vax; -opsystem=usg5-0)
Works as of 18.36.
-Vax running VMS (m-vax.h; s-vms.h but on VMS they are m_vax.h and s_vms.h)
+Vax running VMS (-machine=vax; -opsystem=vms
+ but on VMS they are m_vax.h and s_vms.h)
18.36 believed to work. Addition of features is necessary to make
this Emacs version more usable.
-Whitechapel MG1 (m-mg1.h, s-?)
+Whitechapel MG1 (-machine=mg1, s-?)
May work. Supposedly no changes were needed except the m- file.
I do not know what Unix version runs on them.
-Wicat (m-wicat.h; s-usg5-2.h)
+Wicat (-machine=wicat; -opsystem=usg5-2)
Changes merged as of 18.6; whether they work is unknown.
- See comments in m-wicat.h for things you should change
+ See comments in src/m/wicat.h for things you should change
depending on the system and compiler version you have.
Local variables:
diff --git a/src/callproc.c b/src/callproc.c
index e033a8bf018..e9374aabe13 100644
--- a/src/callproc.c
+++ b/src/callproc.c
@@ -19,6 +19,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include <signal.h>
+#include <errno.h>
#include "config.h"
@@ -104,7 +105,7 @@ If you quit, the process is killed with SIGKILL.")
int nargs;
register Lisp_Object *args;
{
- Lisp_Object display, buffer, path;
+ Lisp_Object display, infile, buffer, path, current_dir;
int fd[2];
int filefd;
register int pid;
@@ -118,23 +119,27 @@ If you quit, the process is killed with SIGKILL.")
#endif
CHECK_STRING (args[0], 0);
- if (nargs <= 1 || NILP (args[1]))
- args[1] = build_string ("/dev/null");
+ if (nargs >= 2 && ! NILP (args[1]))
+ {
+ infile = Fexpand_file_name (args[1], current_buffer->directory);
+ CHECK_STRING (infile, 1);
+ }
else
- args[1] = Fexpand_file_name (args[1], current_buffer->directory);
-
- CHECK_STRING (args[1], 1);
+ infile = build_string ("/dev/null");
{
register Lisp_Object tem;
- buffer = tem = args[2];
- if (nargs <= 2)
+ if (nargs < 3)
buffer = Qnil;
- else if (!(EQ (tem, Qnil) || EQ (tem, Qt)
- || XFASTINT (tem) == 0))
+ else
{
- buffer = Fget_buffer (tem);
- CHECK_BUFFER (buffer, 2);
+ buffer = tem = args[2];
+ if (!(EQ (tem, Qnil) || EQ (tem, Qt)
+ || XFASTINT (tem) == 0))
+ {
+ buffer = Fget_buffer (tem);
+ CHECK_BUFFER (buffer, 2);
+ }
}
}
@@ -152,10 +157,10 @@ If you quit, the process is killed with SIGKILL.")
new_argv[i - 3] = 0;
}
- filefd = open (XSTRING (args[1])->data, O_RDONLY, 0);
+ filefd = open (XSTRING (infile)->data, O_RDONLY, 0);
if (filefd < 0)
{
- report_file_error ("Opening process input file", Fcons (args[1], Qnil));
+ report_file_error ("Opening process input file", Fcons (infile, Qnil));
}
/* Search for program; barf if not found. */
openp (Vexec_path, args[0], "", &path, 1);
@@ -177,6 +182,14 @@ If you quit, the process is killed with SIGKILL.")
#endif
}
+ /* Make sure that the child will be able to chdir to the current
+ buffer's current directory. We can't just have the child check
+ for an error when it does the chdir, since it's in a vfork. */
+ current_dir = expand_and_dir_to_file (current_buffer->directory, Qnil);
+ if (NILP (Ffile_accessible_directory_p (current_dir)))
+ report_file_error ("Setting current directory",
+ Fcons (current_buffer->directory, Qnil));
+
{
/* child_setup must clobber environ in systems with true vfork.
Protect it from permanent change. */
@@ -204,7 +217,7 @@ If you quit, the process is killed with SIGKILL.")
#else
setpgrp (pid, pid);
#endif /* USG */
- child_setup (filefd, fd1, fd1, new_argv, env, 0);
+ child_setup (filefd, fd1, fd1, new_argv, env, 0, current_dir);
}
#if 0
@@ -338,13 +351,19 @@ If you quit, the process is killed with SIGKILL.")
ENV is the environment for the subprocess.
SET_PGRP is nonzero if we should put the subprocess into a separate
- process group. */
+ process group.
+
+ CURRENT_DIR is an elisp string giving the path of the current
+ directory the subprocess should have. Since we can't really signal
+ a decent error from within the child, this should be verified as an
+ executable directory by the parent. */
-child_setup (in, out, err, new_argv, env, set_pgrp)
+child_setup (in, out, err, new_argv, env, set_pgrp, current_dir)
int in, out, err;
register char **new_argv;
char **env;
int set_pgrp;
+ Lisp_Object current_dir;
{
register int pid = getpid();
@@ -361,21 +380,24 @@ child_setup (in, out, err, new_argv, env, set_pgrp)
the superior's static variables as if the superior had done alloca
and will be cleaned up in the usual way. */
- if (XTYPE (current_buffer->directory) == Lisp_String)
- {
- register unsigned char *temp;
- register int i;
-
- i = XSTRING (current_buffer->directory)->size;
- temp = (unsigned char *) alloca (i + 2);
- bcopy (XSTRING (current_buffer->directory)->data, temp, i);
- if (temp[i - 1] != '/') temp[i++] = '/';
- temp[i] = 0;
- /* Switch to that directory, and report any error. */
- if (chdir (temp) < 0)
- report_file_error ("In chdir",
- Fcons (current_buffer->directory, Qnil));
- }
+ {
+ register unsigned char *temp;
+ register int i;
+
+ i = XSTRING (current_dir)->size;
+ temp = (unsigned char *) alloca (i + 2);
+ bcopy (XSTRING (current_dir)->data, temp, i);
+ if (temp[i - 1] != '/') temp[i++] = '/';
+ temp[i] = 0;
+
+ /* We can't signal an Elisp error here; we're in a vfork. Since
+ the callers check the current directory before forking, this
+ should only return an error if the directory's permissions
+ are changed between the check and this chdir, but we should
+ at least check. */
+ if (chdir (temp) < 0)
+ exit (errno);
+ }
/* Set `env' to a vector of the strings in Vprocess_environment. */
{
@@ -435,7 +457,7 @@ getenv_internal (var, varlen, value, valuelen)
char *var;
int varlen;
char **value;
- int **valuelen;
+ int *valuelen;
{
Lisp_Object scan;
@@ -448,7 +470,7 @@ getenv_internal (var, varlen, value, valuelen)
&& XSTRING (entry)->data[varlen] == '='
&& ! bcmp (XSTRING (entry)->data, var, varlen))
{
- *value = XSTRING (entry)->data + (varlen + 1);
+ *value = (char *) XSTRING (entry)->data + (varlen + 1);
*valuelen = XSTRING (entry)->size - (varlen + 1);
return 1;
}