Skip to content

To fix Issue#2164, create infrastructure to compile Maiko for Windows System for Linux v1 as a separate OS from Linux #536

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions .github/workflows/Dockerfile_maiko
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,22 @@ 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 \
mv osversion osversion.hold \
&& echo "#!/bin/sh" > osversion \
&& echo "echo wsl1" >> osversion \
&& chmod ugo+x osversion \
&& ./makeright x cleanup \
&& ./makeright x \
&& ./makeright init \
&& mv osversion.hold osversion \
&& chmod ugo+x osversion \
; \
fi
10 changes: 9 additions & 1 deletion .github/workflows/buildRelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
Expand All @@ -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 }}
Expand Down
29 changes: 29 additions & 0 deletions bin/makefile-init-wsl1.aarch64
Original file line number Diff line number Diff line change
@@ -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
29 changes: 29 additions & 0 deletions bin/makefile-init-wsl1.x86_64
Original file line number Diff line number Diff line change
@@ -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
25 changes: 25 additions & 0 deletions bin/makefile-wsl1.aarch64-sdl
Original file line number Diff line number Diff line change
@@ -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
27 changes: 27 additions & 0 deletions bin/makefile-wsl1.aarch64-x
Original file line number Diff line number Diff line change
@@ -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
25 changes: 25 additions & 0 deletions bin/makefile-wsl1.x86_64-sdl
Original file line number Diff line number Diff line change
@@ -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
28 changes: 28 additions & 0 deletions bin/makefile-wsl1.x86_64-x
Original file line number Diff line number Diff line change
@@ -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
4 changes: 3 additions & 1 deletion bin/osversion
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ 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 ;;
Expand Down
12 changes: 11 additions & 1 deletion inc/maiko/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down