mirror of
https://github.com/Interlisp/maiko.git
synced 2026-04-06 05:02:57 +00:00
Compare commits
17 Commits
maiko-2306
...
maiko-2308
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7fce08f92c | ||
|
|
2c55f7923c | ||
|
|
b441a28c34 | ||
|
|
09e73d4153 | ||
|
|
8e43a393bd | ||
|
|
4a9f5500c4 | ||
|
|
44a4a4c42c | ||
|
|
2b24184293 | ||
|
|
c4f8ccc928 | ||
|
|
0ab92f5e65 | ||
|
|
501fb8e87a | ||
|
|
da7025ff02 | ||
|
|
b6328a234d | ||
|
|
74d6728fba | ||
|
|
59f2f2e835 | ||
|
|
8563c8700d | ||
|
|
aa019bdce2 |
18
.github/workflows/Dockerfile_builder
vendored
Executable file
18
.github/workflows/Dockerfile_builder
vendored
Executable file
@@ -0,0 +1,18 @@
|
||||
#*******************************************************************************
|
||||
#
|
||||
# Dockerfile to build image with all the tools to build Maiko
|
||||
#
|
||||
# Copyright 2023 by Interlisp.org
|
||||
#
|
||||
# Frank Halasz 2023-02-21
|
||||
#
|
||||
# ******************************************************************************
|
||||
|
||||
FROM ubuntu:latest
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
USER root:root
|
||||
# Install build tools
|
||||
RUN apt-get update && apt-get install -y make clang libx11-dev gcc
|
||||
USER root
|
||||
WORKDIR /root
|
||||
ENTRYPOINT /bin/bash
|
||||
25
.github/workflows/Dockerfile_maiko
vendored
Executable file
25
.github/workflows/Dockerfile_maiko
vendored
Executable file
@@ -0,0 +1,25 @@
|
||||
#*******************************************************************************
|
||||
#
|
||||
# Dockerfile to build Maiko for Linux to be used by buildRelease github action
|
||||
# The output of this is intended to be a directory in the github workspace
|
||||
# file system it is not intended to be a useable Docker image.
|
||||
#
|
||||
# Copyright 2023 by Interlisp.org
|
||||
#
|
||||
# Frank Halasz 2023-02-21
|
||||
#
|
||||
# ******************************************************************************
|
||||
|
||||
FROM ghcr.io/interlisp/maiko-builder
|
||||
ARG INSTALL_LOCATION=/usr/local/interlisp/maiko
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
# Copy over / clean maiko repo
|
||||
COPY . ${INSTALL_LOCATION}
|
||||
# Build maiko
|
||||
RUN cd ${INSTALL_LOCATION}/bin \
|
||||
&& ./makeright x cleanup \
|
||||
&& ./makeright x
|
||||
RUN cd ${INSTALL_LOCATION}/bin \
|
||||
&& if [ "$(./machinetype)" = "x86_64" ]; then \
|
||||
./makeright init; \
|
||||
fi
|
||||
18
.github/workflows/buildBuilderImage.yml
vendored
18
.github/workflows/buildBuilderImage.yml
vendored
@@ -32,15 +32,9 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Checkout just the relevant Dockerfile
|
||||
- name: Checkout files
|
||||
uses: Bhacaz/checkout-files@v2
|
||||
with:
|
||||
files: .github/workflows/Dockerfile_builder
|
||||
|
||||
# Checkout the branch of maiko code
|
||||
#- name: Checkout
|
||||
# uses: actions/checkout@v3
|
||||
# Checkout maiko
|
||||
- name: Checkout maiko
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Setup docker environment variables
|
||||
- name: Setup Docker Environment Variables
|
||||
@@ -49,7 +43,7 @@ jobs:
|
||||
DOCKER_REGISTRY="ghcr.io"
|
||||
DOCKER_NAMESPACE=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
|
||||
DOCKER_REPO=${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/maiko-builder
|
||||
DOCKER_TAGS="${DOCKER_REPO}:latest
|
||||
DOCKER_TAGS="${DOCKER_REPO}:latest"
|
||||
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_ENV}
|
||||
echo "DOCKER_TAGS=${DOCKER_TAGS}" >> ${GITHUB_ENV}
|
||||
|
||||
@@ -66,7 +60,7 @@ jobs:
|
||||
|
||||
# Login to ghcr.io
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v2
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
@@ -89,5 +83,5 @@ jobs:
|
||||
push: true
|
||||
tags: ${{ env.DOCKER_TAGS }}
|
||||
|
||||
|
||||
|
||||
######################################################################################
|
||||
|
||||
@@ -1,30 +1,27 @@
|
||||
#*******************************************************************************
|
||||
# buidReleaseInclDocker.yml
|
||||
# buidRelease.yml
|
||||
#
|
||||
# Workflow to build a Maiko release that is pushed to github as well as
|
||||
# Docker images incorporating the release, which are pushed to Docker Hub.
|
||||
# For linux: release assets are built/pushed for X86_64, aarch64 and arm7vl and
|
||||
# a multiplatform Docker image is pushed.
|
||||
# For macOS: release assets are built/pushed for X86_64. (No aarch64 as yet.)
|
||||
# Workflow to build a Maiko release that is pushed to github.
|
||||
# For linux: release assets are built/pushed for X86_64, aarch64 and arm7vl.
|
||||
# For macOS: release assets are built/pushed for X86_64 and aarch64 as well as
|
||||
# a set of universal binaries.
|
||||
# For Windows: not supported
|
||||
#
|
||||
# Note release pushed to github automatically includes source code assets
|
||||
# in tar and zip formats.
|
||||
#
|
||||
# 2022-01-16 by Frank Halasz based on earlier workflow called buildDocker.yml
|
||||
# Updated 2023-06-06: Remove docker image push; increase build efficeincy for linux
|
||||
#
|
||||
# Copyright 2022 by Interlisp.org
|
||||
# Copyright 2022-2023 by Interlisp.org
|
||||
#
|
||||
#
|
||||
# ******************************************************************************
|
||||
|
||||
name: 'Build/Push Release & Docker Image'
|
||||
|
||||
env:
|
||||
workflow: 'buildReleaseInclDocker.yml'
|
||||
name: 'Build/Push Release'
|
||||
|
||||
# Run this workflow on ...
|
||||
on:
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
draft:
|
||||
@@ -66,14 +63,18 @@ defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
# 2 separate jobs here that can run in parallel
|
||||
# 3 separate jobs here that can run in parallel
|
||||
#
|
||||
# 1. Linux: Build/push a multiplatform Linux Docker image and use results to
|
||||
# build/push Linux release assets.
|
||||
# 1. Linux: Build a multiplatform Linux Docker file system (not saved) and use
|
||||
# results to build/push Linux release assets.
|
||||
#
|
||||
# 2. MacOs: Build maiko for MacOS (x86_64, aarch64, and universal) then create
|
||||
# 2. MacOs: Build maiko for MacOS (x86_64, aarch64, and universal) then create
|
||||
# and push release assets.
|
||||
#
|
||||
# 3. Windows: Build maiko for cygwin and SDL (x86_64). Build is done within the
|
||||
# cygwin-maiko-builder Docker image by building a new docker files system (and
|
||||
# not a docker container) which is used to build/push Windows(cygwin) assets.
|
||||
#
|
||||
|
||||
jobs:
|
||||
|
||||
@@ -87,6 +88,9 @@ jobs:
|
||||
outputs:
|
||||
draft: ${{ steps.one.outputs.draft }}
|
||||
force: ${{ steps.one.outputs.force }}
|
||||
linux: ${{ steps.one.outputs.linux }}
|
||||
macos: ${{ steps.one.outputs.macos }}
|
||||
windows: ${{ steps.one.outputs.windows }}
|
||||
steps:
|
||||
- id: one
|
||||
run: >
|
||||
@@ -99,9 +103,11 @@ jobs:
|
||||
echo "workflow_call";
|
||||
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
|
||||
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
|
||||
fi
|
||||
|
||||
|
||||
fi;
|
||||
echo "linux=true" >> $GITHUB_OUTPUT;
|
||||
echo "macos=true" >> $GITHUB_OUTPUT;
|
||||
echo "windows=true" >> $GITHUB_OUTPUT;
|
||||
|
||||
|
||||
######################################################################################
|
||||
|
||||
@@ -114,7 +120,7 @@ jobs:
|
||||
outputs:
|
||||
release_not_built: ${{ steps.check.outputs.release_not_built }}
|
||||
|
||||
steps:
|
||||
steps:
|
||||
# Checkout the actions for this repo owner
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v3
|
||||
@@ -124,7 +130,7 @@ jobs:
|
||||
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
||||
|
||||
# Check if build already run for this commit
|
||||
- name: Build already completed?
|
||||
- name: Build already completed?
|
||||
id: check
|
||||
continue-on-error: true
|
||||
uses: ./../actions/check-sentry-action
|
||||
@@ -137,12 +143,15 @@ jobs:
|
||||
# Use docker images to create and push release assets to github
|
||||
|
||||
linux:
|
||||
|
||||
|
||||
needs: [inputs, sentry]
|
||||
if: |
|
||||
needs.sentry.outputs.release_not_built == 'true'
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
|
||||
needs.inputs.outputs.linux == 'true'
|
||||
&& (
|
||||
needs.sentry.outputs.release_not_built == 'true'
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
@@ -154,7 +163,7 @@ jobs:
|
||||
path: ./Actions_${{ github.sha }}
|
||||
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
||||
|
||||
# Checkout the branch
|
||||
# Checkout the branch
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
@@ -174,33 +183,27 @@ jobs:
|
||||
echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
|
||||
echo "docker_tags=${DOCKER_TAGS}" >> $GITHUB_OUTPUT
|
||||
|
||||
# Setup the Docker Machine Emulation environment.
|
||||
# Setup the Docker Machine Emulation environment.
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@master
|
||||
uses: docker/setup-qemu-action@v2
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
|
||||
# Setup the Docker Buildx funtion
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@master
|
||||
|
||||
# Login into DockerHub - required to store the created image
|
||||
- name: Login to DockerHub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
uses: docker/setup-buildx-action@v2
|
||||
|
||||
# Do the Docker Build using the Dockerfile in the repository we
|
||||
# checked out. Push the result to Docker Hub.
|
||||
# checked out. Save the results in a directory under /tmp to be used
|
||||
# for creating release tars. Does not creatre a docker image and does not
|
||||
# push anything to Docker Hub.
|
||||
#
|
||||
# NOTE: THE ACTUAL MAIKO BUILD (FOR LINUX) HAPPENS HERE - I.E., IN THE
|
||||
# DOCKER BUILD CALL. BUILD COMMANDS ARE SPECIFIED IN THE
|
||||
# Dockerfile, NOT HERE IN THE WORKFLOW.
|
||||
#
|
||||
- name: Build Docker Image for Push to Docker Hub
|
||||
if: ${{ true }}
|
||||
- name: Build Docker Image and Save It Locally
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
@@ -208,23 +211,7 @@ jobs:
|
||||
BUILD_DATE=${{ steps.docker_env.outputs.build_time }}
|
||||
RELEASE_TAG=${{ steps.tag.outputs.release_tag }}
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
# Push the result to DockerHub
|
||||
push: true
|
||||
tags: ${{ steps.docker_env.outputs.docker_tags }}
|
||||
|
||||
# Redo the Docker Build (hopefully mostly using the cache from the previous build).
|
||||
# But save the results in a directory under /tmp to be used for creating release tars.
|
||||
- name: Rebuild Docker Image For Saving Locally
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
build-args: |
|
||||
BUILD_DATE=${{ steps.docker_env.outputs.build_time }}
|
||||
RELEASE_TAG=${{ steps.tag.outputs.release_tag }}
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
file: ./.github/workflows/Dockerfile_maiko
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
# Put the results out to the local file system
|
||||
outputs: type=local,dest=/tmp/docker_images
|
||||
@@ -254,7 +241,7 @@ jobs:
|
||||
# Push Release to github
|
||||
- name: Push the release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
with:
|
||||
allowUpdates: true
|
||||
artifacts:
|
||||
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.x86_64.tgz,
|
||||
@@ -273,14 +260,17 @@ jobs:
|
||||
|
||||
needs: [inputs, sentry]
|
||||
if: |
|
||||
needs.sentry.outputs.release_not_built == 'true'
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
needs.inputs.outputs.macos == 'true'
|
||||
&& (
|
||||
needs.sentry.outputs.release_not_built == 'true'
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
|
||||
# Checkout the branch
|
||||
# Checkout the branch
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
@@ -325,7 +315,7 @@ jobs:
|
||||
sudo ditto /Volumes/SDL2/SDL2.framework /Library/Frameworks/SDL2.framework
|
||||
hdiutil detach /Volumes/SDL2/
|
||||
|
||||
# Build maiko
|
||||
# Build maiko
|
||||
- name: Build ldeinit
|
||||
working-directory: ./bin
|
||||
run: |
|
||||
@@ -389,6 +379,98 @@ jobs:
|
||||
draft: ${{ needs.inputs.outputs.draft }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
######################################################################################
|
||||
|
||||
# Windows: build for Windows-Cygwin via Docker build and use results to
|
||||
# create and push release assets to github
|
||||
|
||||
windows:
|
||||
|
||||
needs: [inputs, sentry]
|
||||
if: |
|
||||
needs.inputs.outputs.windows == 'true'
|
||||
&& (
|
||||
needs.sentry.outputs.release_not_built == 'true'
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: windows-2022
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: powershell
|
||||
|
||||
steps:
|
||||
|
||||
# setup git to not mess up line endings
|
||||
- name: git config
|
||||
run: git config --global core.autocrlf input
|
||||
|
||||
# Retrieve Cygwin setup and install cygwin
|
||||
- name: Install cygwin
|
||||
id: cygwin
|
||||
run: |
|
||||
wget https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe
|
||||
Unblock-File setup-x86_64.exe
|
||||
Start-Process setup-x86_64.exe -Wait -ArgumentList @("--root", ".\cygwin", "--quiet-mode", "--no-admin", "--wait", "--no-shortcuts", "--no-write-registry", "--verbose", "--site", "http://www.gtlib.gatech.edu/pub/cygwin/", "--packages", "nano,binutils,make,cmake,gcc,clang")
|
||||
cygwin\bin\bash -login -c 'sed -i -e "s/^none/#none/" /etc/fstab; echo "none / cygdrive binary,posix=0,user 0 0" >>/etc/fstab'
|
||||
|
||||
# Retrieve SDL2 and install in cygwin
|
||||
- name: Install SDL2
|
||||
id: sdl2
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
gh release download 2.26.5 --repo interlisp/cygwin-sdl --pattern *.tgz --output .\cygwin\sdl2.tar.gz
|
||||
cygwin\bin\bash -login -c 'cd /; tar xzf sdl2.tar.gz'
|
||||
|
||||
# Checkout the branch
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: cygwin\maiko
|
||||
|
||||
# Checkout the actions for this repo owner
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: ${{ github.repository_owner }}/.github
|
||||
path: ./Actions_${{ github.sha }}
|
||||
- run: |
|
||||
mv ./Actions_${{ github.sha }}/actions ../actions
|
||||
rm -recurse -force ./Actions_${{ github.sha }}
|
||||
|
||||
# Setup release tag
|
||||
- name: Setup Release Tag
|
||||
id: tag
|
||||
uses: ./../actions/release-tag-action
|
||||
with:
|
||||
path: cygwin/maiko
|
||||
|
||||
# Build maiko TODO-cleanup
|
||||
- name: Build Cygwin-SDL Maiko
|
||||
run: |
|
||||
cygwin\bin\bash -login -c 'cd /maiko/bin && ./makeright sdl cleanup && ./makeright sdl'
|
||||
cygwin\bin\bash -login -c 'mkdir /tmp/maiko; mkdir /tmp/maiko/bin; mkdir /tmp/maiko/cygwin.x86_64'
|
||||
cygwin\bin\bash -login -c 'cp /maiko/bin/osversion /tmp/maiko/bin; cp /maiko/bin/machinetype /tmp/maiko/bin'
|
||||
cygwin\bin\bash -login -c 'cp /maiko/bin/config.guess /tmp/maiko/bin; cp /maiko/bin/config.sub /tmp/maiko/bin'
|
||||
cygwin\bin\bash -login -c 'cp /maiko/cygwin.x86_64/* /tmp/maiko/cygwin.x86_64; cp /usr/local/bin/SDL2.DLL /tmp/maiko/cygwin.x86_64'
|
||||
cygwin\bin\bash -login -c 'chmod +x /tmp/maiko/bin/*; chmod +x /tmp/maiko/cygwin.x86_64/*'
|
||||
cygwin\bin\bash -login -c 'echo lde > /tmp/maiko/cygwin.x86_64/lde.exe.local; echo ldesdl > /tmp/maiko/cygwin.x86_64/ldesdl.exe.local'
|
||||
cygwin\bin\bash -login -c 'mkdir -p /tmp/release_tars'
|
||||
cygwin\bin\bash -login -c 'tar -c -z -C /tmp -f /tmp/release_tars/${{ steps.tag.outputs.release_tag }}-cygwin.x86_64.tgz maiko'
|
||||
|
||||
# Push Release to github
|
||||
- name: Push the release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
allowUpdates: true
|
||||
artifacts:
|
||||
cygwin/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-cygwin.x86_64.tgz
|
||||
tag: ${{ steps.tag.outputs.release_tag }}
|
||||
draft: ${{ needs.inputs.outputs.draft }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
|
||||
######################################################################################
|
||||
@@ -403,9 +485,9 @@ jobs:
|
||||
outputs:
|
||||
build_successful: ${{ steps.output.outputs.build_successful }}
|
||||
|
||||
needs: [inputs, sentry, linux, macos]
|
||||
needs: [inputs, sentry, linux, macos, windows]
|
||||
|
||||
steps:
|
||||
steps:
|
||||
# Checkout the actions for this repo owner
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v3
|
||||
@@ -415,16 +497,15 @@ jobs:
|
||||
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
||||
|
||||
# Set sentry
|
||||
- name: Is build for this commit already completed?
|
||||
- name: Is build for this commit already completed?
|
||||
id: set
|
||||
uses: ./../actions/set-sentry-action
|
||||
with:
|
||||
tag: "release_docker"
|
||||
|
||||
|
||||
- name: Output
|
||||
id: output
|
||||
run: |
|
||||
echo "build_successful=true" >> $GITHUB_OUTPUT
|
||||
|
||||
|
||||
######################################################################################
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -22,9 +22,12 @@ cmake-build-*/**
|
||||
*.armv7l-x/**
|
||||
*.armv7l/**
|
||||
*.aarch64-x/**
|
||||
*.aarch64-sdl/**
|
||||
*.aarch64/**
|
||||
init.386/**
|
||||
*.universal/**
|
||||
# core files
|
||||
core
|
||||
*.core
|
||||
*.swp
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ ENDIF()
|
||||
|
||||
find_program(
|
||||
CLANG_TIDY_EXE
|
||||
NAMES "clang-tidy" "clang-tidy13" "clang-tidy12" "clang-tidy11" "clang-tidy10"
|
||||
NAMES "clang-tidy" "clang-tidy16" "clang-tidy15" "clang-tidy14" "clang-tidy13" "clang-tidy12" "clang-tidy11" "clang-tidy10"
|
||||
DOC "Path to clang-tidy executable"
|
||||
)
|
||||
|
||||
@@ -41,6 +41,10 @@ SET(MAIKO_DEFINITIONS
|
||||
"-DRELEASE=351"
|
||||
)
|
||||
|
||||
SET(MAIKO_INIT_DEFINITIONS
|
||||
"-DRELEASE=351" "-DINIT" "-DNOVERSION"
|
||||
)
|
||||
|
||||
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
|
||||
OPTION(MAIKO_DISPLAY_SDL "Use SDL for display." OFF)
|
||||
|
||||
@@ -454,6 +458,18 @@ IF(MAIKO_DISPLAY_X11)
|
||||
TARGET_COMPILE_DEFINITIONS(ldex PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldex PUBLIC inc)
|
||||
TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
|
||||
|
||||
ADD_EXECUTABLE(ldeinit
|
||||
src/main.c
|
||||
vdate.c
|
||||
${MAIKO_SRCS}
|
||||
${MAIKO_HDRS}
|
||||
${MAIKO_DISPLAY_X11_SRCS}
|
||||
${MAIKO_DISPLAY_X11_HDRS}
|
||||
)
|
||||
TARGET_COMPILE_DEFINITIONS(ldeinit PUBLIC ${MAIKO_INIT_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldeinit PUBLIC inc)
|
||||
TARGET_LINK_LIBRARIES(ldeinit ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
IF(MAIKO_DISPLAY_SDL)
|
||||
|
||||
55
Dockerfile
55
Dockerfile
@@ -1,55 +0,0 @@
|
||||
#*******************************************************************************
|
||||
#
|
||||
# Dockerfile to build Maiko (Stage 1) and create a Docker image and push it
|
||||
# to DockerHub (stage 2).
|
||||
#
|
||||
# Copyright 2022 by Interlisp.org
|
||||
#
|
||||
# ******************************************************************************
|
||||
|
||||
#
|
||||
# Build Maiko Stage
|
||||
#
|
||||
FROM ubuntu:focal AS builder
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
USER root:root
|
||||
# Install build tools
|
||||
RUN apt-get update && apt-get install -y make clang libx11-dev gcc x11vnc xvfb
|
||||
# Copy over / clean maiko repo
|
||||
COPY . /app/maiko
|
||||
RUN rm -rf /app/maiko/linux*
|
||||
# Build maiko
|
||||
WORKDIR /app/maiko/bin
|
||||
RUN ./makeright x
|
||||
RUN if [ "$(./osversion)" = "linux" ] && [ "$(./machinetype)" = "x86_64" ]; then ./makeright init; fi
|
||||
# Prep for Install Stage
|
||||
RUN mv ../$(./osversion).$(./machinetype) ../TRANSFER
|
||||
#
|
||||
# Install Maiko Stage
|
||||
#
|
||||
FROM ubuntu:focal
|
||||
ARG BUILD_DATE="not_available"
|
||||
ARG RELEASE_TAG="not_available"
|
||||
LABEL name="Maiko"
|
||||
LABEL description="Virtual machine for Interlisp Medley"
|
||||
LABEL url="https://github.com/Interlisp/maiko"
|
||||
LABEL build-time=$BUILD_DATE
|
||||
LABEL release_tag=$RELEASE_TAG
|
||||
ENV MAIKO_RELEASE=$RELEASE_TAG
|
||||
ENV MAIKO_BUILD_DATE=$BUILD_DATE
|
||||
ARG BUILD_LOCATION=/app/maiko
|
||||
ARG INSTALL_LOCATION=/usr/local/interlisp/maiko
|
||||
#
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
USER root:root
|
||||
# Copy release files into /usr/local/directories
|
||||
COPY --from=builder ${BUILD_LOCATION}/bin/osversion ${INSTALL_LOCATION}/bin/
|
||||
COPY --from=builder ${BUILD_LOCATION}/bin/machinetype ${INSTALL_LOCATION}/bin/
|
||||
COPY --from=builder ${BUILD_LOCATION}/bin/config.guess ${INSTALL_LOCATION}/bin/
|
||||
COPY --from=builder ${BUILD_LOCATION}/bin/config.sub ${INSTALL_LOCATION}/bin/
|
||||
COPY --from=builder ${BUILD_LOCATION}/TRANSFER/lde* ${INSTALL_LOCATION}/TRANSFER/
|
||||
RUN cd ${INSTALL_LOCATION} && mv TRANSFER "$(cd bin && ./osversion).$(cd bin/ && ./machinetype)"
|
||||
# Some niceties
|
||||
USER root
|
||||
WORKDIR /root
|
||||
ENTRYPOINT /bin/bash
|
||||
@@ -9,7 +9,8 @@
|
||||
# #
|
||||
#########################################################################
|
||||
|
||||
os=${LDEARCH:-`./config.guess`}
|
||||
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||
os=${LDEARCH:-`$SCRIPTPATH/config.guess`}
|
||||
# o/s switch block
|
||||
case "$os" in
|
||||
m68k-*) echo m68k ;;
|
||||
|
||||
20
bin/makefile-cygwin.x86_64-sdl
Normal file
20
bin/makefile-cygwin.x86_64-sdl
Normal file
@@ -0,0 +1,20 @@
|
||||
# Options for Linux, Intel x86_64 and X-Window
|
||||
|
||||
CC = gcc -m64 $(GCC_CFLAGS) -I/usr/local/include
|
||||
#CC = clang -m64 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -lm -L/usr/local/lib -lSDL2
|
||||
#
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
27
bin/makefile-init-openbsd.x86_64
Normal file
27
bin/makefile-init-openbsd.x86_64
Normal file
@@ -0,0 +1,27 @@
|
||||
# Options for OpenBSD, Intel x86_64 and X-Window
|
||||
|
||||
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 = -I/usr/X11R6/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/ldeinit
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/bin/sh
|
||||
os=${LDEARCH:-`./config.guess`}
|
||||
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||
os=${LDEARCH:-`$SCRIPTPATH/config.guess`}
|
||||
case "$os" in
|
||||
m68k-*-amigaos) echo amigaos ;;
|
||||
sparc-sun-sunos*) echo sunos4 ;;
|
||||
|
||||
@@ -97,6 +97,18 @@ struct buf {
|
||||
};
|
||||
#endif /* BIGVM */
|
||||
#else
|
||||
#ifdef BIGVM
|
||||
struct buf {
|
||||
LispPTR filepage;
|
||||
LispPTR vmempage;
|
||||
LispPTR buffernext;
|
||||
unsigned sysnext : 28;
|
||||
unsigned unused : 1;
|
||||
unsigned iodirty : 1;
|
||||
unsigned usermapped : 1;
|
||||
unsigned noreference : 1;
|
||||
};
|
||||
#else
|
||||
struct buf {
|
||||
LispPTR filepage;
|
||||
LispPTR vmempage;
|
||||
@@ -107,6 +119,7 @@ struct buf {
|
||||
unsigned usermapped : 1;
|
||||
unsigned noreference : 1;
|
||||
};
|
||||
#endif /* BIGVM */
|
||||
#endif /* BYTESWAP */
|
||||
|
||||
/************* The following procedure is common !! **************************/
|
||||
|
||||
@@ -531,5 +531,5 @@ void lisp_finish(void) {
|
||||
#ifdef DOS
|
||||
exit_host_filesystem();
|
||||
#endif /* DOS */
|
||||
exit(1);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
@@ -188,6 +188,7 @@ void process_Xevents(DspInterface dsp)
|
||||
XNextEvent(dsp->display_id, &report);
|
||||
if (report.xany.window == dsp->DisplayWindow) /* Try the most important window first. */
|
||||
switch (report.type) {
|
||||
#ifndef INIT
|
||||
case MotionNotify:
|
||||
*CLastUserActionCell68k = MiscStats->secondstmp;
|
||||
*EmCursorX68K = (*((DLword *)EmMouseX68K)) =
|
||||
@@ -235,6 +236,7 @@ void process_Xevents(DspInterface dsp)
|
||||
break;
|
||||
case EnterNotify: Mouse_Included = TRUE; break;
|
||||
case LeaveNotify: Mouse_Included = FALSE; break;
|
||||
#endif
|
||||
case Expose:
|
||||
(dsp->bitblt_to_screen)(dsp, 0, report.xexpose.x + dsp->Visible.x,
|
||||
report.xexpose.y + dsp->Visible.y, report.xexpose.width,
|
||||
|
||||
Reference in New Issue
Block a user