1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-03-21 08:38:43 +00:00

Compare commits

...

21 Commits

Author SHA1 Message Date
Frank Halasz
de1fafba7e Merge pull request #536 from Interlisp/fgh_fix-2164-WSL1-try2
To fix Issue#2164, create infrastructure to compile Maiko for Windows System for Linux v1 as a separate OS from Linux

Created makefile-wsl1-* files as well as makefile-init-wsl1-* files.  Modified bin/osversion to detect wsl1 as a special case of linux so that the wsl1 makefiles would be selected appropriately by makeright.

Did not make CMAKE changes for WSL1.

Changed Build Release workflow (via changes to Dockerfile-maiko) to build wsl1 versions of lde, ldex, ldesdl and ldeinit for x86_64 and aarch64.  These are now included in the release tars.
2025-06-16 00:30:06 -07:00
Frank Halasz
6f42b353b2 In Dockerfile_maiko, for wsl1 case called makeright XX clean twice. Eliminated second call, which was deleting first run of makefile x 2025-06-16 00:00:54 -07:00
Frank Halasz
8e17c0747d Fix typo in Dockerfile_maiko 2025-06-15 23:32:27 -07:00
Frank Halasz
6aafbbcb05 Enable using LDEARCH to set wsl1 as the osversion. Set LDEARCH to get a WSL1 compile on a standard Linux system in Dockerfile_maiko (and hence in the workflow buildRelease.yml). 2025-06-15 22:56:36 -07:00
Frank Halasz
5dc9233aef One more typo in Dockerfile_maiko 2025-06-03 23:31:46 -07:00
Frank Halasz
b029b98fca Fix Dockerfile_maiko to set execute permissions on osversion while building wsl1 versions of maiko 2025-06-03 23:25:35 -07:00
Frank Halasz
7dd3c90a77 Fix up various makefile-wsl (and -cygwin) errors pointed out by gemini-code-assist! 2025-06-03 22:40:11 -07:00
Frank Halasz
389ecf7874 Fix Dockerfile_maiko so osversion is restored after building the wsl1 lde executables. 2025-06-03 22:27:16 -07:00
Frank Halasz
5d3639a905 Fix another error is Dockerfile_maiko for wsl1 2025-06-03 19:19:08 -07:00
Frank Halasz
59953c2629 Fix error is Dockerfile_maiko for wsl1 2025-06-03 19:01:14 -07:00
Frank Halasz
6d171bff1d Create/update additional makefiles for building maiko for WSL1. Update buildRelease workflow and assicated Dockerfile to build the WSL1 variants along wih standard linux variants. 2025-06-03 18:54:15 -07:00
Frank Halasz
834a6084c3 WIP. Moving to WSL1 environment 2025-05-28 14:03:13 -07:00
Frank Halasz
9343f58b17 Fix typo in bin/mkvdate that was preventing it from executing correctly (#534) 2025-05-27 22:24:10 -07:00
Matt Heffron
4994982a90 Adds the non-keypad arrow keys to be detected.
With additional Medley calls to KEYACTION (below), they should work in TTYIN (i.e., XCL and Interlisp EXECs).
I didn't try TEDIT.
They are unrecognized in SEDIT. (In any case, their use there probably is pretty restricted by the nature of SEDIT.)

(KEYACTION 'KEYPAD8 '(("Meta,^" 56 NOLOCKSHIFT) . IGNORE))
(KEYACTION 'KEYPAD6 '(("Meta,>" 54 NOLOCKSHIFT) . IGNORE))
(KEYACTION 'KEYPAD4 '(("Meta,<" 52 NOLOCKSHIFT) . IGNORE))
(KEYACTION 'KEYPAD2 '(("Meta,^J" 50 NOLOCKSHIFT) . IGNORE))
2025-02-12 11:22:08 -08:00
Frank Halasz
40d4fca8cc Merge pull request #530 from Interlisp/fgh_use-22.04-build-builder
Specify Ubuntu22.04 instead of Ubuntu-latest in various github action scripts to solve libc version issue crashing online
2025-02-03 12:19:50 -08:00
Nick Briggs
c8dc63d418 Clean up display related variable names differing only in case (#529)
Unify the LispDisplayRequested... and lispDisplayRequested...
variables from the SDL and X11 display modules.

Move the storage definitions for LispDisplayRequested... to main.c
leaving external references in the modules that utilize them.
2025-02-02 16:31:43 -08:00
Frank Halasz
7fe0f70640 In buildRelease.yml moving to ubuntu-22.04 instead of latest to see if it fixes these random linux arm64 build failures - crashes inside gcc compiler! 2025-02-01 19:10:38 -08:00
Frank Halasz
55e20ea993 In buildRelease.yml added apt update to emscriptem build since it was failing to find some of the packages called for by apt-get install sdl2 2025-02-01 18:48:38 -08:00
Frank Halasz
7d85a59e6f Change ubuntu version from latest to 22.04 in Dockerfile_builder to handle issue where the Medley-online docker image was failing to find the lastest versions of libc and libm when loading maiko 2025-02-01 17:53:01 -08:00
Nick Briggs
511a1b523e Eliminate extra gotos in common branch tail code (#528)
The implementation of various JUMP opcodes tried to use a common tail
that did a POP and branched to the next opcode. While the extra gotos
probably aren't harmful, neither are they beneficial to code size or speed.
2025-01-30 11:07:29 -08:00
Frank Halasz
04f9905ca0 Fix MacOS SDL build in buildRelease github workflow (#527)
* Update buildRelease workflow to use sdl2-2.30.11 on MacOS

* In buildRelease workflow, update Macos build for SDL to use  -DMAIKO_DISPLAY_SDL=2 instead of =ON
2025-01-29 08:51:47 -08:00
17 changed files with 221 additions and 41 deletions

View File

@@ -8,7 +8,7 @@
#
# ******************************************************************************
FROM ubuntu:latest
FROM ubuntu:22.04
SHELL ["/bin/bash", "-c"]
USER root:root
# Install build tools

View File

@@ -18,8 +18,17 @@ COPY . ${INSTALL_LOCATION}
# Build maiko
RUN cd ${INSTALL_LOCATION}/bin \
&& ./makeright x cleanup \
&& ./makeright x
RUN cd ${INSTALL_LOCATION}/bin \
&& ./makeright x \
&& if [ "$(./machinetype)" = "x86_64" ]; then \
./makeright init; \
fi
# Build specially for WSL1 by "fooling" a linux build
RUN cd ${INSTALL_LOCATION}/bin \
&& arch="$(./machinetype)" \
&& if [ "$arch" = "x86_64" ] || [ "$arch" = "aarch64" ]; then \
export LDEARCH="${arch}-microsoft-wsl1" \
&& ./makeright x cleanup \
&& ./makeright x \
&& ./makeright init \
; \
fi

View File

@@ -152,7 +152,7 @@ jobs:
|| needs.inputs.outputs.force == 'true'
)
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
# Checkout the actions for this repo owner
@@ -224,7 +224,13 @@ jobs:
RELEASE_TAG: ${{ steps.tag.outputs.release_tag }}
run: |
mkdir -p /tmp/release_tars
for OSARCH in "linux.x86_64:linux_amd64" "linux.aarch64:linux_arm64" "linux.armv7l:linux_arm_v7" ; \
for OSARCH in \
"linux.x86_64:linux_amd64" \
"linux.aarch64:linux_arm64" \
"linux.armv7l:linux_arm_v7" \
"wsl1.x86_64:linux_amd64" \
"wsl1.aarch64:linux_arm64" \
; \
do \
pushd /tmp/docker_images/${OSARCH##*:}/usr/local/interlisp >/dev/null ; \
/usr/bin/tar -c -z \
@@ -246,6 +252,8 @@ jobs:
artifacts:
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.x86_64.tgz,
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.aarch64.tgz,
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-wsl1.x86_64.tgz,
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-wsl1.aarch64.tgz,
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.armv7l.tgz
tag: ${{ steps.tag.outputs.release_tag }}
draft: ${{ needs.inputs.outputs.draft }}
@@ -310,8 +318,8 @@ jobs:
env:
GH_TOKEN: ${{ github.token }}
run: |
gh release download release-2.26.5 --repo libsdl-org/SDL --pattern SDL2-2.26.5.dmg
hdiutil attach SDL2-2.26.5.dmg
gh release download release-2.30.11 --repo libsdl-org/SDL --pattern SDL2-2.30.11.dmg
hdiutil attach SDL2-2.30.11.dmg
sudo ditto /Volumes/SDL2/SDL2.framework /Library/Frameworks/SDL2.framework
hdiutil detach /Volumes/SDL2/
@@ -337,7 +345,7 @@ jobs:
# -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12
cmake .. \
-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \
-DMAIKO_DISPLAY_SDL=ON \
-DMAIKO_DISPLAY_SDL=2 \
-DMAIKO_DISPLAY_X11=ON \
-DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release
@@ -503,6 +511,7 @@ jobs:
- name: Install SDL2
run: |
export DEBIAN_FRONTEND=noninteractive
sudo -E apt-get update
sudo -E apt-get install -y libsdl2-dev libsdl2-2.0-0
# Install Emscripten SDK

View File

@@ -0,0 +1,29 @@
# Options for Windows System for Linux v1, aarch64 processor, X windows, for INIT processing
CC = gcc $(GCC_CFLAGS)
#CC = clang $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g
DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT -D__wsl1__
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -0,0 +1,29 @@
# Options for Windows System for Linux v1, Intel x86_64 processor, X windows, for INIT processing
CC = gcc $(GCC_CFLAGS)
#CC = clang $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g
DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT -D__wsl1__
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldeinit

View File

@@ -0,0 +1,25 @@
# Options for Windows System for Linux v1, ARM64 and SDL
CC = gcc $(GCC_CFLAGS)
#CC = clang $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
#
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS
#
SDLFLAGS = -DSDL=2
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__
LDFLAGS = -lSDL2 -lm
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl

View File

@@ -0,0 +1,27 @@
# Options for Windows System for Linux v1, aarch64 and X-Window
CC = gcc $(GCC_CFLAGS)
#CC = clang $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -0,0 +1,25 @@
# Options for Windows System for Linux v1, Intel x86_64 and SDL
CC = gcc -m64 $(GCC_CFLAGS)
# CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
#
# For SDL version 2
# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS
#
XFLAGS = -DSDL=2
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__
LDFLAGS = -lm -lSDL2
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl

View File

@@ -0,0 +1,28 @@
# Options for Windows System for Linux v1, Intel x86_64 and X-Window
CC = gcc -m64 $(GCC_CFLAGS)
# CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)xmkicon.o \
$(OBJECTDIR)xbbt.o \
$(OBJECTDIR)dspif.o \
$(OBJECTDIR)xinit.o \
$(OBJECTDIR)xscroll.o \
$(OBJECTDIR)xcursor.o \
$(OBJECTDIR)xlspwin.o \
$(OBJECTDIR)xrdopt.o \
$(OBJECTDIR)xwinman.o
XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex

View File

@@ -1,7 +1,7 @@
#!/bin/sh
if command -v "git" >/dev/null 2>&1; then
MAIKO_REV="$(git status --porcelain)"
if [ $? == 0 ]; then
if [ $? -eq 0 ]; then
if [ ! -z "$(git status --porcelain)" ]; then
MAIKO_REV="$(git rev-parse --short HEAD)-dirty"
else

View File

@@ -8,11 +8,14 @@ case "$os" in
*-*-solaris2*) echo sunos5 ;;
alpha-dec-osf1) echo osf1 ;;
*-apple-darwin*) echo darwin ;;
*-*-linux*) echo linux ;;
*-*-linux*)
if [ -n "${WSL_DISTRO_NAME}" ] && [ -z "${WSL_INTEROP}" ];
then echo wsl1; else echo linux; fi ;;
*-*-openbsd*) echo openbsd ;;
*-*-freebsd*) echo freebsd ;;
*-*-cygwin*) echo cygwin ;;
*-*-haiku*) echo haiku ;;
*-microsoft-wsl1) echo wsl1 ;;
esac
### Don't leave the variable set.
unset os

View File

@@ -221,17 +221,17 @@ static const int generic_X_keymap[] = {
/* keypad digit assignments above, try assigning */
/* the new arrow-key key#s assigned for RS/6000 */
/* Failing that, try assigning the keypad #s. */
1, 84, XK_Left,
0, 129, XK_Left,
0, 84, XK_Left,
1, 82, XK_Up,
0, 130, XK_Up,
0, 82, XK_Up,
1, 69, XK_Down,
0, 131, XK_Down,
0, 69, XK_Down,
1, 87, XK_Right,
0, 132, XK_Right,
0, 87, XK_Right,
0, 93, XK_Multi_key, /* Expand, Sun type-4 */
0, 93, XK_Alt_R, /* Expand, RH Alt key */

View File

@@ -217,7 +217,7 @@
#define FJUMPMACRO(x) \
do { \
if (TOPOFSTACK != 0) { goto PopNextop1; } \
if (TOPOFSTACK != 0) { POP; nextop1; } \
{ \
CHECK_INTERRUPT; \
POP; \
@@ -227,7 +227,7 @@
} while (0)
#define TJUMPMACRO(x) \
do { \
if (TOPOFSTACK == 0) { goto PopNextop1; } \
if (TOPOFSTACK == 0) { POP; nextop1; } \
{ \
CHECK_INTERRUPT; \
POP; \

View File

@@ -38,13 +38,23 @@
# define MAIKO_OS_DETECTED 1
#endif
#ifdef __linux__
#if defined(__linux__) && !defined(__wsl1__)
# define MAIKO_OS_LINUX 1
# define MAIKO_OS_NAME "Linux"
# define MAIKO_OS_UNIX_LIKE 1
# define MAIKO_OS_DETECTED 1
#endif
#if defined(__linux__) && defined(__wsl1__)
# define MAIKO_OS_LINUX 1
# define MAIKO_OS_WSL1 1
# define MAIKO_OS_NAME "Windows System for Linux v1"
# define MAIKO_OS_UNIX_LIKE 1
# define MAIKO_EMULATE_TIMER_INTERRUPTS 1
# define MAIKO_EMULATE_ASYNC_INTERRUPTS 1
# define MAIKO_OS_DETECTED 1
#endif
#ifdef __NetBSD__
# define MAIKO_OS_NETBSD 1
# define MAIKO_OS_NAME "NetBSD"

View File

@@ -327,10 +327,10 @@ extern char backgroundColorName[64];
#endif
char windowTitle[255] = "Medley";
extern char windowTitle[255];
int lispDisplayRequestedWidth = 1024;
extern int lispDisplayRequestedWidth;
int lispDisplayRequestedHeight = 768;
extern int lispDisplayRequestedHeight;
unsigned LispDisplayRequestedWidth = 1024, LispDisplayRequestedHeight = 768;
extern unsigned LispDisplayRequestedWidth, LispDisplayRequestedHeight;
int LispDisplayRequestedX = 0, LispDisplayRequestedY = 0;
extern int LispDisplayRequestedX, LispDisplayRequestedY;
int pixelScale = 1;
extern int pixelScale;
@@ -474,7 +474,7 @@ int main(int argc, char *argv[])
#ifdef SDL
else if ((strcmp(argv[i], "-sc") == 0) || (strcmp(argv[i], "-SC") == 0)) {
if (argc > ++i) {
int read = sscanf(argv[i], "%dx%d", &lispDisplayRequestedWidth, &lispDisplayRequestedHeight);
int read = sscanf(argv[i], "%dx%d", &LispDisplayRequestedWidth, &LispDisplayRequestedHeight);
if(read != 2) {
(void)fprintf(stderr, "Could not parse -sc argument %s\n", argv[i]);
exit(1);
@@ -717,7 +717,7 @@ int main(int argc, char *argv[])
make_dsp_instance(currentdsp, 0, 0, 0, 1); /* All defaults the first time */
#endif /* DOS || XWINDOW */
#if defined(SDL)
init_SDL(windowTitle, lispDisplayRequestedWidth, lispDisplayRequestedHeight, pixelScale);
init_SDL(windowTitle, LispDisplayRequestedWidth, LispDisplayRequestedHeight, pixelScale);
#endif /* SDL */
/* Load sysout to VM space and returns real sysout_size(not 0) */
sysout_size = sysout_loader(sysout_name, sysout_size);

View File

@@ -814,7 +814,7 @@ nextopcode:
/******* FJumpx *******/
case 0262:
case262 : {
if (TOPOFSTACK != 0) { goto PopNextop2; }
if (TOPOFSTACK != 0) { POP; nextop2; }
CHECK_INTERRUPT;
POP;
PCMACL += Get_SBYTE_PCMAC1;
@@ -825,7 +825,7 @@ nextopcode:
case 0263:
case263 : {
if (TOPOFSTACK == 0) { goto PopNextop2; }
if (TOPOFSTACK == 0) { POP; nextop2; }
CHECK_INTERRUPT;
POP;
PCMACL += Get_SBYTE_PCMAC1;
@@ -836,7 +836,7 @@ nextopcode:
case 0264:
case264 : {
if (TOPOFSTACK != 0) { goto PopNextop2; }
if (TOPOFSTACK != 0) { POP; nextop2; }
CHECK_INTERRUPT;
PCMACL += Get_SBYTE_PCMAC1;
nextop0;
@@ -846,7 +846,7 @@ nextopcode:
case 0265:
case265 : {
if (TOPOFSTACK == 0) { goto PopNextop2; }
if (TOPOFSTACK == 0) { POP; nextop2; }
CHECK_INTERRUPT;
PCMACL += Get_SBYTE_PCMAC1;
nextop0;
@@ -1261,19 +1261,7 @@ check_interrupt:
}
}
}
nextop0;
/************************************************************************/
/* Common Jump Tails (they have to jump anyway, so use common Tail) */
/************************************************************************/
PopNextop1:
POP;
nextop1;
PopNextop2:
POP;
nextop2;
}
void do_brk(void) {}

View File

@@ -50,8 +50,6 @@ unsigned LispWindowRequestedHeight = DEF_WIN_HEIGHT;
extern int LispDisplayRequestedX, LispDisplayRequestedY;
extern unsigned LispDisplayRequestedWidth, LispDisplayRequestedHeight;
int LispDisplayRequestedX, LispDisplayRequestedY;
unsigned LispDisplayRequestedWidth, LispDisplayRequestedHeight;
extern Colormap Colors;
Colormap Colors;