* Remove F_SETSIG call from Linux on X11 display.
Presumably, this was added to be like the `I_SETSIG` call on Solaris.
But it is the only `F_SETSIG` done on Linux and there isn't an
equivalent on the other platforms that we support as it is a GNU
extension.
Also, `F_SETSIG` with an argument of `0`, as here, means to send
the `SIGIO` signal, which is what is done by default.
From the man page:
F_SETSIG (int)
Set the signal sent when input or output becomes possible
to the value given in arg. A value of zero means to send
the default SIGIO signal. Any other value (including SIGIO)
is the signal to send instead, and in this case additional
info is available to the signal handler if installed with
SA_SIGINFO.
By using F_SETSIG with a nonzero value, and setting
SA_SIGINFO for the signal handler (see sigaction(2)),
extra information about I/O events is passed to the
handler in a siginfo_t structure. If the si_code field
indicates the source is SI_SIGIO, the si_fd field gives
the file descriptor associated with the event. Otherwise,
there is no indication which file descriptors are
pending, and you should use the usual mechanisms
(select(2), poll(2), read(2) with O_NONBLOCK set etc.)
to determine which file descriptors are available for I/O.
We aren't setting a non-zero value and we aren't establishing signal
handlers via `sigaction` with `SA_SIGINFO` set, so this shouldn't
be doing anything important for us.
* Stop setting _GNU_SOURCE for GNU libc extensions.
We were previously doing this to get access to the
`F_SETSIG` flag for `fcntl`, but this isn't being
used any longer.
* Update comments describing configuration this makefile fragment supports.
* Remove extra compiler options for suggested gcc build
* Remove unnecessary -m32 option for suggested clang build
* switch default compiler from clang to gcc
* Default to NOETHER, only enable on Solaris.
* DOS: NOETHER controlled by inc/version.h
We set NOETHER by default on DOS, so no need for it here in the
build system.
When `RELEASE` is set, then `inc/version.h` configures some
defines appropriately, including `BIGATOMS`, `BIGVM`, and
`NEWCDRCODING`. There's no need to manage it directly on
the compiler command line.
* Always follow NEW_STORAGE code paths.
This removes the code paths for the pre-NEW_STORAGE code.
* Remove NEW_STORAGE from build system.
The code no longer refers to `NEW_STORAGE`, so we can remove
this from the build system.
This flag was for SunOS 3 and 4 on sun3 hardware (68k).
It enabled some unsafe optimizations via assembler. This hasn't
actually been built since the DOS port (since the header for this
was renamed, but the code in `xc.c` wasn't updated).
The optimizations here made assumptions that were specific to the
68k hardware and register allocation. They aren't likely to be
of much use moving forward, and we've got plenty of safe performance
improvements from the last 30 years of hardware advances.
* Check.h, Stipple.h, XCursors.h, XWaitCur.h, Xcursdef.h,
Xdefcur.h, and Xicon.h were combined into xbitmaps.h.
* Xdisplay.h is not used and the contents are in MyWindow.h, which
is used.
* XVersion.h and Xdeflt.h became xdefs.h. Remove 2 stragglers
that were still including XVersion.h.
`timer.c` uses `F_SETSIG` which is a GNU extension. As such, it
needs `_GNU_SOURCE` to be defined, but this was only done for
x86_64, not the other Linux platforms that we have build system
support for.
Closesinterlisp/medley#97.
* Move clang/gcc options into makefile-header.
This puts all of the shared options into a single place so that
we can easily update it.
* Add -fwrapv to the clang/gcc command lines.
This is a step along the way to fixing interlisp/medley#90.
Enabling `-fwrapv` will let overflow checks that rely upon undefined
behavior to work correctly. Without this, with modern versions of
clang and gcc, the overflow checks in the C code are eliminated
by the compiler, resulting in incorrect behavior on the part of
Maiko.
See the linked bug for details and discussion.
Hopefully, this usage of `-fwrapv` will go away once we're using
the correct compiler builtins to detect and handle overflow
correctly.
CLX is a Common Lisp implementation of the X client library.
It has some code in C, which was present here as `src/socket.c`
and `src/socdvr.c`, exposed via opcodes in `src/subr.c`. This code
had been removed (with prejudice apparently) by commenting out
the code in `src/subr.c` with `#if NEVER`.
This code would've been used by the Medley system images, but
that code doesn't appear to be present. (There may or may not
be something related in `XMAS` in the Medley repository.)
The FSERROR define is on all the time now. It was not controlling
all of the functionality, with many places setting Lisp_errnno
outside of the code controlled by the define.
On SunOS4, we build `xc.c` by jumping through a lot of hoops to
perform a particular set of operations. We don't do that on other
platforms and this will help clean up the Linux and FreeBSD makefiles.
These directives were already not present in the macOS makefiles.
This is an internal macro to GNU libc and wasn't meant to be
defined like this. Well, it was. It was deprecated and removed
some years ago, so it isn't doing anything at all here now.
We don't want to modify emulation code yet as ISC support included
a number of other things, including some i386 code that isn't used
on other platforms, but is still useful as a reference.
These were binaries built for SPARC to test some assembler
optimizations.
They aren't needed as part of the version control as they're just
artifacts of the past.
This also removes support for the DEC3100 keyboard, but leaves a
constant behind for it as I'm not sure about re-numbering.
[NBriggs: keyboard type numbers are stored within all sysouts. Do not renumber supported keyboards, do not reuse previously used keyboard numbers]
This removes code related to HP9000, HPTIMERBUG, and HPUX defines.
It leaves KB_HP9000 for now as I'm not sure about renumbering
those constants.
This should not impact any of the core emulation code.
This platform had no emulation-related changes.
Remove code for IRIX40, INDIGO definitions.
In disk code, simplify a chain of #ifdef's around fsync handling.
Ultrix hasn't seen an update since 1995 and the DEC3100 hardware
that this was originally written for was released in 1989.
It isn't likely that anyone has Ultrix running on hardware where
they would also want to run this.
This was replaced by medleyfp.h. Perhaps this happened because
some systems have an fp.h in their system includes and the naming
collision was an issue. But nothing uses fp.h and medleyfp.h is
an updated version of the contents.
This also updates a bunch of manually managed dependency lists
to reflect the usage of medleyfp.h rather than fp.h.
Nick Briggs: Note that on OSF1 medleyfp.h includes the system fp.h (probably the origin of the renaming)
The config.guess script returns "aarch64-apple-darwin20.1.0" for an M1 Big Sur mac mini.
modified: bin/machinetype
new file: bin/makefile-darwin.aarch64-x
* Docker compatibility: makefile and headers
- _GNU_SOURCE required for F_SETSIG
* Remove duplicate makeright.sh script
* Update some includes that don't exist on modern Linux (termio.h); Clang in Docker
has trouble resolving them automatically