1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-03-19 16:11:45 +00:00

Compare commits

..

6 Commits

Author SHA1 Message Date
Frank Halasz
5f69aa4242 Update buildRelease workflow to accomodate move from wasm_nl to wasm. 2024-02-16 00:41:47 -08:00
Frank Halasz
7564790bfe Remove debugging code and add -DMAIKO_OS_EMSCRIPTEN to makefile-emscripten.wasm-wasm 2024-02-16 00:22:31 -08:00
Frank Halasz
fa17cddf68 Merge branch 'fgh_emscripten-02' of https://github.com/Interlisp/maiko into fgh_emscripten-02 2024-02-14 22:20:48 -08:00
Frank Halasz
6793137280 Merge branch 'master' into fgh_emscripten-02 2024-02-14 22:07:40 -08:00
Frank Halasz
610b7f42bb 1. Fixed makefile-tail so it uses $(LD) for linker operations instead of $(CC);
$(LD) is set to $(CC) if $(LD) not set before makefile-tail.
2. In makefile-tail added $(UPFRONT_LDFLAGS) to accomdate emscripten build
   where -lidbfs.js needs to come before files in ld call.
3) replaced wasm builds with wasm_nl builds; removed wasm_nl builds.
2024-02-13 12:49:55 -08:00
Frank Halasz
461b6a901c WIP. Adding -lidbfs.js to emscripten build 2024-02-13 10:34:01 -08:00
110 changed files with 1406 additions and 2928 deletions

View File

@@ -1,6 +1,6 @@
name: Build name: Build
on: [push, pull_request, workflow_dispatch] on: [push, pull_request]
defaults: defaults:
run: run:
@@ -11,7 +11,7 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [macos-12, macos-13, macos-14, macos-15, ubuntu-24.04, ubuntu-22.04, ubuntu-20.04] os: [macos-11, macos-12, ubuntu-22.04, ubuntu-20.04]
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Install X11 dependencies on MacOS - name: Install X11 dependencies on MacOS
@@ -37,7 +37,7 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [macos-12, macos-13, macos-14, macos-15, ubuntu-24.04, ubuntu-22.04, ubuntu-20.04] os: [macos-11, macos-12, ubuntu-22.04, ubuntu-20.04]
env: env:
BUILD_TYPE: Release BUILD_TYPE: Release
steps: steps:

View File

@@ -29,7 +29,7 @@ jobs:
buildBuilder: buildBuilder:
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
steps: steps:
# Checkout maiko # Checkout maiko

View File

@@ -84,7 +84,7 @@ jobs:
# the result of a workflow_dispatch or a workflow_call # the result of a workflow_dispatch or a workflow_call
inputs: inputs:
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
outputs: outputs:
draft: ${{ steps.one.outputs.draft }} draft: ${{ steps.one.outputs.draft }}
force: ${{ steps.one.outputs.force }} force: ${{ steps.one.outputs.force }}
@@ -116,7 +116,7 @@ jobs:
sentry: sentry:
needs: inputs needs: inputs
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
outputs: outputs:
release_not_built: ${{ steps.check.outputs.release_not_built }} release_not_built: ${{ steps.check.outputs.release_not_built }}
@@ -152,7 +152,7 @@ jobs:
|| needs.inputs.outputs.force == 'true' || needs.inputs.outputs.force == 'true'
) )
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
steps: steps:
# Checkout the actions for this repo owner # Checkout the actions for this repo owner
@@ -185,14 +185,14 @@ jobs:
# Setup the Docker Machine Emulation environment. # Setup the Docker Machine Emulation environment.
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v2
with: with:
platforms: linux/amd64,linux/arm64,linux/arm/v7 platforms: linux/amd64,linux/arm64,linux/arm/v7
# Setup the Docker Buildx funtion # Setup the Docker Buildx funtion
- name: Set up Docker Buildx - name: Set up Docker Buildx
id: buildx id: buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v2
# Do the Docker Build using the Dockerfile in the repository we # Do the Docker Build using the Dockerfile in the repository we
# checked out. Save the results in a directory under /tmp to be used # checked out. Save the results in a directory under /tmp to be used
@@ -204,7 +204,7 @@ jobs:
# Dockerfile, NOT HERE IN THE WORKFLOW. # Dockerfile, NOT HERE IN THE WORKFLOW.
# #
- name: Build Docker Image and Save It Locally - name: Build Docker Image and Save It Locally
uses: docker/build-push-action@v6 uses: docker/build-push-action@v4
with: with:
builder: ${{ steps.buildx.outputs.name }} builder: ${{ steps.buildx.outputs.name }}
build-args: | build-args: |
@@ -266,7 +266,7 @@ jobs:
|| needs.inputs.outputs.force == 'true' || needs.inputs.outputs.force == 'true'
) )
runs-on: macos-12 runs-on: macos-latest
steps: steps:
@@ -290,13 +290,13 @@ jobs:
# Uninstall exisitng X11 stuff preconfigured on runner then install correct X11 dependencies # Uninstall exisitng X11 stuff preconfigured on runner then install correct X11 dependencies
- name: Unistall X components already on the runner - name: Unistall X components already on the runner
run: | run: |
brew uninstall --ignore-dependencies --force libxft brew uninstall --ignore-dependencies libxft
brew uninstall --ignore-dependencies --force libxrender brew uninstall --ignore-dependencies libxrender
brew uninstall --ignore-dependencies --force libxext brew uninstall --ignore-dependencies libxext
brew uninstall --ignore-dependencies --force libx11 brew uninstall --ignore-dependencies libx11
brew uninstall --ignore-dependencies --force xorgproto brew uninstall --ignore-dependencies xorgproto
brew uninstall --ignore-dependencies --force libxdmcp brew uninstall --ignore-dependencies libxdmcp
brew uninstall --ignore-dependencies --force libxau brew uninstall --ignore-dependencies libxau
- name: Install X11 dependencies on MacOS - name: Install X11 dependencies on MacOS
env: env:
@@ -412,7 +412,7 @@ jobs:
run: | run: |
wget https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe wget https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe
Unblock-File 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", "https://mirrors.kernel.org/sourceware/cygwin/", "--packages", "nano,binutils,make,cmake,gcc,clang") 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' 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 # Retrieve SDL2 and install in cygwin
@@ -487,7 +487,7 @@ jobs:
|| needs.inputs.outputs.force == 'true' || needs.inputs.outputs.force == 'true'
) )
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
steps: steps:
@@ -532,8 +532,8 @@ jobs:
- name: Compile Maiko using Emscripten - name: Compile Maiko using Emscripten
working-directory: ./bin working-directory: ./bin
run: | run: |
./makeright wasm_nl ./makeright wasm
cd ../emscripten.wasm_nl cd ../emscripten.wasm
tar -c -z -f ../${{ steps.tag.outputs.release_tag }}-emscripten.tgz * tar -c -z -f ../${{ steps.tag.outputs.release_tag }}-emscripten.tgz *
# Push Release to github # Push Release to github
@@ -554,7 +554,7 @@ jobs:
complete: complete:
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
outputs: outputs:
build_successful: ${{ steps.output.outputs.build_successful }} build_successful: ${{ steps.output.outputs.build_successful }}

1
.gitignore vendored
View File

@@ -10,7 +10,6 @@ cmake-build-*/**
.idea/ .idea/
*.m68k-x/** *.m68k-x/**
*.m68k/** *.m68k/**
*.386-sdl/**
*.386-x/** *.386-x/**
*.386/** *.386/**
*.ppc-x/** *.ppc-x/**

View File

@@ -37,21 +37,16 @@ IF(NEED_LIB_M)
SET(MAIKO_LIBRARIES m) SET(MAIKO_LIBRARIES m)
ENDIF() ENDIF()
SET (MAIKO_RELEASE 351 CACHE STRING "Release version to build. Release: 115, 200, 201, 210, 300, 350, 351")
SET_PROPERTY(CACHE MAIKO_RELEASE PROPERTY STRINGS 115 200 201 210 300 350 351)
MESSAGE("-- Configured for release ${MAIKO_RELEASE}")
SET(MAIKO_DEFINITIONS SET(MAIKO_DEFINITIONS
"-DRELEASE=${MAIKO_RELEASE}" "-DRELEASE=351"
) )
SET(MAIKO_INIT_DEFINITIONS SET(MAIKO_INIT_DEFINITIONS
"-DRELEASE=${MAIKO_RELEASE}" "-DINIT" "-DNOVERSION" "-DRELEASE=351" "-DINIT" "-DNOVERSION"
) )
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON) OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
SET(MAIKO_DISPLAY_SDL OFF CACHE STRING "Use SDL for display. Version: OFF, 2, 3") OPTION(MAIKO_DISPLAY_SDL "Use SDL for display." OFF)
SET_PROPERTY(CACHE MAIKO_DISPLAY_SDL PROPERTY STRINGS OFF 2 3)
IF(MAIKO_DISPLAY_X11) IF(MAIKO_DISPLAY_X11)
FIND_PACKAGE(X11 REQUIRED) FIND_PACKAGE(X11 REQUIRED)
@@ -86,34 +81,19 @@ IF(MAIKO_DISPLAY_X11)
MESSAGE("-- Configured for X11 display") MESSAGE("-- Configured for X11 display")
ENDIF() ENDIF()
IF(MAIKO_DISPLAY_SDL STREQUAL "2") IF(MAIKO_DISPLAY_SDL)
FIND_PACKAGE(SDL2 REQUIRED CONFIG REQUIRED COMPONENTS SDL2) FIND_PACKAGE(SDL2 REQUIRED)
SET(MAIKO_DISPLAY_SDL_DEFINITIONS SET(MAIKO_DISPLAY_SDL_DEFINITIONS
"-DSDL=2" "-DSDL"
) )
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS SDL2::Headers) SET(MAIKO_DISPLAY_SDL_LIBRARIES ${SDL2_LIBRARIES})
SET(MAIKO_DISPLAY_SDL_LIBRARIES SDL2::SDL2)
SET(MAIKO_DISPLAY_SDL_SRCS SET(MAIKO_DISPLAY_SDL_SRCS
src/sdl.c src/sdl.c
) )
SET(MAIKO_DISPLAY_SDL_HDRS SET(MAIKO_DISPLAY_SDL_HDRS
inc/sdldefs.h inc/sdldefs.h
) )
MESSAGE("-- Configured for SDL2 display") MESSAGE("-- Configured for SDL display")
ELSEIF(MAIKO_DISPLAY_SDL STREQUAL "3")
FIND_PACKAGE(SDL3 REQUIRED CONFIG REQUIRED COMPONENTS SDL3)
SET(MAIKO_DISPLAY_SDL_DEFINITIONS
"-DSDL=3"
)
SET(MAIKO_DISPLAY_SDL_INCLUDE_DIRS SDL3::Headers)
SET(MAIKO_DISPLAY_SDL_LIBRARIES SDL3::SDL3)
SET(MAIKO_DISPLAY_SDL_SRCS
src/sdl.c
)
SET(MAIKO_DISPLAY_SDL_HDRS
inc/sdldefs.h
)
MESSAGE("-- Configured for SDL3 display")
ENDIF() ENDIF()
# according to: https://cmake.org/pipermail/cmake/2016-October/064342.html # according to: https://cmake.org/pipermail/cmake/2016-October/064342.html
@@ -448,23 +428,23 @@ ADD_CUSTOM_TARGET(gen-vdate
) )
ADD_EXECUTABLE(lde src/ldeboot.c src/unixfork.c) ADD_EXECUTABLE(lde src/ldeboot.c src/unixfork.c)
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(lde PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(lde PUBLIC inc)
IF(MAIKO_DISPLAY_X11) IF(MAIKO_DISPLAY_X11)
# Tell it that the X11 launcher is available. # Tell it that the X11 launcher is available.
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DISPLAY_X11_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_X11_DEFINITIONS})
# This is needed so that it can call XOpenDisplay. # This is needed so that it can call XOpenDisplay.
TARGET_LINK_LIBRARIES(lde X11::X11) TARGET_LINK_LIBRARIES(lde X11::X11)
ENDIF() ENDIF()
IF(MAIKO_DISPLAY_SDL) IF(MAIKO_DISPLAY_SDL)
# Tell it that the SDL launcher is available. # Tell it that the SDL launcher is available.
TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DISPLAY_SDL_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_SDL_DEFINITIONS})
ENDIF() ENDIF()
ADD_EXECUTABLE(ldeether src/ldeether.c src/dlpi.c) ADD_EXECUTABLE(ldeether src/ldeether.c src/dlpi.c)
TARGET_COMPILE_DEFINITIONS(ldeether PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(ldeether PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldeether PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(ldeether PUBLIC inc)
IF(MAIKO_DISPLAY_X11) IF(MAIKO_DISPLAY_X11)
ADD_EXECUTABLE(ldex ADD_EXECUTABLE(ldex
@@ -475,8 +455,8 @@ IF(MAIKO_DISPLAY_X11)
${MAIKO_DISPLAY_X11_SRCS} ${MAIKO_DISPLAY_X11_SRCS}
${MAIKO_DISPLAY_X11_HDRS} ${MAIKO_DISPLAY_X11_HDRS}
) )
TARGET_COMPILE_DEFINITIONS(ldex PRIVATE ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(ldex PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldex PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(ldex PUBLIC inc)
TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES}) TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
ADD_EXECUTABLE(ldeinit ADD_EXECUTABLE(ldeinit
@@ -487,8 +467,8 @@ IF(MAIKO_DISPLAY_X11)
${MAIKO_DISPLAY_X11_SRCS} ${MAIKO_DISPLAY_X11_SRCS}
${MAIKO_DISPLAY_X11_HDRS} ${MAIKO_DISPLAY_X11_HDRS}
) )
TARGET_COMPILE_DEFINITIONS(ldeinit PRIVATE ${MAIKO_INIT_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(ldeinit PUBLIC ${MAIKO_INIT_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldeinit PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(ldeinit PUBLIC inc)
TARGET_LINK_LIBRARIES(ldeinit ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES}) TARGET_LINK_LIBRARIES(ldeinit ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
ENDIF() ENDIF()
@@ -501,32 +481,20 @@ IF(MAIKO_DISPLAY_SDL)
${MAIKO_DISPLAY_SDL_SRCS} ${MAIKO_DISPLAY_SDL_SRCS}
${MAIKO_DISPLAY_SDL_HDRS} ${MAIKO_DISPLAY_SDL_HDRS}
) )
TARGET_COMPILE_DEFINITIONS(ldesdl PRIVATE ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_SDL_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(ldesdl PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_SDL_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(ldesdl PUBLIC inc)
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE ${MAIKO_DISPLAY_SDL_INCLUDE_DIRS}) TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE ${SDL2_INCLUDE_DIRS})
IF(APPLE)
IF(MAIKO_DISPLAY_SDL STREQUAL "3")
#
# Until CMake properly supports .xcframeworks, https://gitlab.kitware.com/cmake/cmake/-/issues/25998
# we need to manually set the RPATH to produce a working executable
#
MESSAGE("-- Applying fixup for macOS RPATH for SDL3.xcframework")
SET_PROPERTY(TARGET ldesdl APPEND PROPERTY BUILD_RPATH "/Library/Frameworks/SDL3.xcframework/macos-arm64_x86_64")
#
ENDIF()
ENDIF()
TARGET_LINK_LIBRARIES(ldesdl ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_SDL_LIBRARIES}) TARGET_LINK_LIBRARIES(ldesdl ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_SDL_LIBRARIES})
ENDIF() ENDIF()
ADD_EXECUTABLE(mkvdate src/mkvdate.c) ADD_EXECUTABLE(mkvdate src/mkvdate.c)
TARGET_COMPILE_DEFINITIONS(mkvdate PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(mkvdate PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(mkvdate PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(mkvdate PUBLIC inc)
ADD_EXECUTABLE(setsout src/setsout.c src/byteswap.c) ADD_EXECUTABLE(setsout src/setsout.c src/byteswap.c)
TARGET_COMPILE_DEFINITIONS(setsout PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(setsout PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(setsout PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(setsout PUBLIC inc)
ADD_EXECUTABLE(tstsout src/tstsout.c src/byteswap.c) ADD_EXECUTABLE(tstsout src/tstsout.c src/byteswap.c)
TARGET_COMPILE_DEFINITIONS(tstsout PRIVATE ${MAIKO_DEFINITIONS}) TARGET_COMPILE_DEFINITIONS(tstsout PUBLIC ${MAIKO_DEFINITIONS})
TARGET_INCLUDE_DIRECTORIES(tstsout PRIVATE inc) TARGET_INCLUDE_DIRECTORIES(tstsout PUBLIC inc)

1239
bin/config.guess vendored

File diff suppressed because it is too large Load Diff

310
bin/config.sub vendored
View File

@@ -1,14 +1,12 @@
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright 1992-2024 Free Software Foundation, Inc. # Copyright 1992-2020 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale timestamp='2020-08-17'
timestamp='2024-01-01'
# This file is free software; you can redistribute it and/or modify it # This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by # under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or # the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, but # This program is distributed in the hope that it will be useful, but
@@ -35,7 +33,7 @@ timestamp='2024-01-01'
# Otherwise, we print the canonical config type on stdout and succeed. # Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from: # You can get the latest version of this script from:
# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages # This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases # and recognize all the CPU types, system types and aliases
@@ -52,13 +50,6 @@ timestamp='2024-01-01'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification. # It is wrong to echo any other type of specification.
# The "shellcheck disable" line above the timestamp inhibits complaints
# about features and limitations of the classic Bourne shell that were
# superseded or lifted in POSIX. However, this script identifies a wide
# variety of pre-POSIX systems that do not have POSIX shells at all, and
# even some reasonably current systems (Solaris 10 as case-in-point) still
# have a pre-POSIX /bin/sh.
me=`echo "$0" | sed -e 's,.*/,,'` me=`echo "$0" | sed -e 's,.*/,,'`
usage="\ usage="\
@@ -76,13 +67,13 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\ version="\
GNU config.sub ($timestamp) GNU config.sub ($timestamp)
Copyright 1992-2024 Free Software Foundation, Inc. Copyright 1992-2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
help=" help="
Try '$me --help' for more information." Try \`$me --help' for more information."
# Parse command line # Parse command line
while test $# -gt 0 ; do while test $# -gt 0 ; do
@@ -121,16 +112,14 @@ esac
# Split fields of configuration type # Split fields of configuration type
# shellcheck disable=SC2162 # shellcheck disable=SC2162
saved_IFS=$IFS
IFS="-" read field1 field2 field3 field4 <<EOF IFS="-" read field1 field2 field3 field4 <<EOF
$1 $1
EOF EOF
IFS=$saved_IFS
# Separate into logical components for further validation # Separate into logical components for further validation
case $1 in case $1 in
*-*-*-*-*) *-*-*-*-*)
echo "Invalid configuration '$1': more than four components" >&2 echo Invalid configuration \`"$1"\': more than four components >&2
exit 1 exit 1
;; ;;
*-*-*-*) *-*-*-*)
@@ -145,8 +134,7 @@ case $1 in
nto-qnx* | linux-* | uclinux-uclibc* \ nto-qnx* | linux-* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ | storm-chaos* | os2-emx* | rtmk-nova*)
| windows-* )
basic_machine=$field1 basic_machine=$field1
basic_os=$maybe_os basic_os=$maybe_os
;; ;;
@@ -175,10 +163,6 @@ case $1 in
basic_machine=$field1 basic_machine=$field1
basic_os=$field2 basic_os=$field2
;; ;;
zephyr*)
basic_machine=$field1-unknown
basic_os=$field2
;;
# Manufacturers # Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
| att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
@@ -938,13 +922,11 @@ case $basic_machine in
*-*) *-*)
# shellcheck disable=SC2162 # shellcheck disable=SC2162
saved_IFS=$IFS
IFS="-" read cpu vendor <<EOF IFS="-" read cpu vendor <<EOF
$basic_machine $basic_machine
EOF EOF
IFS=$saved_IFS
;; ;;
# We use 'pc' rather than 'unknown' # We use `pc' rather than `unknown'
# because (1) that's what they normally are, and # because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users. # (2) the word "unknown" tends to confuse beginning users.
i*86 | x86_64) i*86 | x86_64)
@@ -1021,11 +1003,6 @@ case $cpu-$vendor in
;; ;;
# Here we normalize CPU types with a missing or matching vendor # Here we normalize CPU types with a missing or matching vendor
armh-unknown | armh-alt)
cpu=armv7l
vendor=alt
basic_os=${basic_os:-linux-gnueabihf}
;;
dpx20-unknown | dpx20-bull) dpx20-unknown | dpx20-bull)
cpu=rs6000 cpu=rs6000
vendor=bull vendor=bull
@@ -1076,7 +1053,7 @@ case $cpu-$vendor in
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586 cpu=i586
;; ;;
pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
cpu=i686 cpu=i686
;; ;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
@@ -1127,7 +1104,7 @@ case $cpu-$vendor in
xscale-* | xscalee[bl]-*) xscale-* | xscalee[bl]-*)
cpu=`echo "$cpu" | sed 's/^xscale/arm/'` cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
;; ;;
arm64-* | aarch64le-*) arm64-*)
cpu=aarch64 cpu=aarch64
;; ;;
@@ -1181,14 +1158,14 @@ case $cpu-$vendor in
case $cpu in case $cpu in
1750a | 580 \ 1750a | 580 \
| a29k \ | a29k \
| aarch64 | aarch64_be | aarch64c | arm64ec \ | aarch64 | aarch64_be \
| abacus \ | abacus \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
| alphapca5[67] | alpha64pca5[67] \ | alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \ | am33_2.0 \
| amdgcn \ | amdgcn \
| arc | arceb | arc32 | arc64 \ | arc | arceb \
| arm | arm[lb]e | arme[lb] | armv* \ | arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \ | avr | avr32 \
| asmjs \ | asmjs \
@@ -1200,29 +1177,45 @@ case $cpu-$vendor in
| d10v | d30v | dlx | dsp16xx \ | d10v | d30v | dlx | dsp16xx \
| e2k | elxsi | epiphany \ | e2k | elxsi | epiphany \
| f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \
| javascript \
| h8300 | h8500 \ | h8300 | h8500 \
| hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \ | hexagon \
| i370 | i*86 | i860 | i960 | ia16 | ia64 \ | i370 | i*86 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \ | ip2k | iq2000 \
| k1om \ | k1om \
| kvx \
| le32 | le64 \ | le32 | le64 \
| lm32 \ | lm32 \
| loongarch32 | loongarch64 \
| m32c | m32r | m32rle \ | m32c | m32r | m32rle \
| m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
| m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
| m88110 | m88k | maxq | mb | mcore | mep | metag \ | m88110 | m88k | maxq | mb | mcore | mep | metag \
| microblaze | microblazeel \ | microblaze | microblazeel \
| mips* \ | mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64eb | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \
| mmix \ | mmix \
| mn10200 | mn10300 \ | mn10200 | mn10300 \
| moxie \ | moxie \
| mt \ | mt \
| msp430 \ | msp430 \
| nanomips* \
| nds32 | nds32le | nds32be \ | nds32 | nds32le | nds32be \
| nfp \ | nfp \
| nios | nios2 | nios2eb | nios2el \ | nios | nios2 | nios2eb | nios2el \
@@ -1236,7 +1229,7 @@ case $cpu-$vendor in
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \ | powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \ | pru \
| pyramid \ | pyramid \
| riscv | riscv32 | riscv32be | riscv64 | riscv64be \ | riscv | riscv32 | riscv64 \
| rl78 | romp | rs6000 | rx \ | rl78 | romp | rs6000 | rx \
| s390 | s390x \ | s390 | s390x \
| score \ | score \
@@ -1248,13 +1241,11 @@ case $cpu-$vendor in
| sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \
| spu \ | spu \
| tahoe \ | tahoe \
| thumbv7* \
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
| tron \ | tron \
| ubicom32 \ | ubicom32 \
| v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
| vax \ | vax \
| vc4 \
| visium \ | visium \
| w65 \ | w65 \
| wasm32 | wasm64 \ | wasm32 | wasm64 \
@@ -1266,7 +1257,7 @@ case $cpu-$vendor in
;; ;;
*) *)
echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2
exit 1 exit 1
;; ;;
esac esac
@@ -1287,45 +1278,34 @@ esac
# Decode manufacturer-specific aliases for certain operating systems. # Decode manufacturer-specific aliases for certain operating systems.
if test x"$basic_os" != x if test x$basic_os != x
then then
# First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
# set os. # set os.
obj=
case $basic_os in case $basic_os in
gnu/linux*) gnu/linux*)
kernel=linux kernel=linux
os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` os=`echo $basic_os | sed -e 's|gnu/linux|gnu|'`
;;
os2-emx)
kernel=os2
os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'`
;; ;;
nto-qnx*) nto-qnx*)
kernel=nto kernel=nto
os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` os=`echo $basic_os | sed -e 's|nto-qnx|qnx|'`
;; ;;
*-*) *-*)
# shellcheck disable=SC2162 # shellcheck disable=SC2162
saved_IFS=$IFS
IFS="-" read kernel os <<EOF IFS="-" read kernel os <<EOF
$basic_os $basic_os
EOF EOF
IFS=$saved_IFS
;; ;;
# Default OS when just kernel was specified # Default OS when just kernel was specified
nto*) nto*)
kernel=nto kernel=nto
os=`echo "$basic_os" | sed -e 's|nto|qnx|'` os=`echo $basic_os | sed -e 's|nto|qnx|'`
;; ;;
linux*) linux*)
kernel=linux kernel=linux
os=`echo "$basic_os" | sed -e 's|linux|gnu|'` os=`echo $basic_os | sed -e 's|linux|gnu|'`
;;
managarm*)
kernel=managarm
os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'`
;; ;;
*) *)
kernel= kernel=
@@ -1346,7 +1326,7 @@ case $os in
os=cnk os=cnk
;; ;;
solaris1 | solaris1.*) solaris1 | solaris1.*)
os=`echo "$os" | sed -e 's|solaris1|sunos4|'` os=`echo $os | sed -e 's|solaris1|sunos4|'`
;; ;;
solaris) solaris)
os=solaris2 os=solaris2
@@ -1375,7 +1355,7 @@ case $os in
os=sco3.2v4 os=sco3.2v4
;; ;;
sco3.2.[4-9]*) sco3.2.[4-9]*)
os=`echo "$os" | sed -e 's/sco3.2./sco3.2v/'` os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
;; ;;
sco*v* | scout) sco*v* | scout)
# Don't match below # Don't match below
@@ -1387,7 +1367,13 @@ case $os in
os=psos os=psos
;; ;;
qnx*) qnx*)
os=qnx case $cpu in
x86 | i*86)
;;
*)
os=nto-$os
;;
esac
;; ;;
hiux*) hiux*)
os=hiuxwe2 os=hiuxwe2
@@ -1451,7 +1437,7 @@ case $os in
;; ;;
# Preserve the version number of sinix5. # Preserve the version number of sinix5.
sinix5.*) sinix5.*)
os=`echo "$os" | sed -e 's|sinix|sysv|'` os=`echo $os | sed -e 's|sinix|sysv|'`
;; ;;
sinix*) sinix*)
os=sysv4 os=sysv4
@@ -1492,16 +1478,10 @@ case $os in
os=eabi os=eabi
;; ;;
*) *)
os= os=elf
obj=elf
;; ;;
esac esac
;; ;;
aout* | coff* | elf* | pe*)
# These are machine code file formats, not OSes
obj=$os
os=
;;
*) *)
# No normalization, but not necessarily accepted, that comes below. # No normalization, but not necessarily accepted, that comes below.
;; ;;
@@ -1520,15 +1500,12 @@ else
# system, and we'll never get to this point. # system, and we'll never get to this point.
kernel= kernel=
obj=
case $cpu-$vendor in case $cpu-$vendor in
score-*) score-*)
os= os=elf
obj=elf
;; ;;
spu-*) spu-*)
os= os=elf
obj=elf
;; ;;
*-acorn) *-acorn)
os=riscix1.2 os=riscix1.2
@@ -1538,35 +1515,28 @@ case $cpu-$vendor in
os=gnu os=gnu
;; ;;
arm*-semi) arm*-semi)
os= os=aout
obj=aout
;; ;;
c4x-* | tic4x-*) c4x-* | tic4x-*)
os= os=coff
obj=coff
;; ;;
c8051-*) c8051-*)
os= os=elf
obj=elf
;; ;;
clipper-intergraph) clipper-intergraph)
os=clix os=clix
;; ;;
hexagon-*) hexagon-*)
os= os=elf
obj=elf
;; ;;
tic54x-*) tic54x-*)
os= os=coff
obj=coff
;; ;;
tic55x-*) tic55x-*)
os= os=coff
obj=coff
;; ;;
tic6x-*) tic6x-*)
os= os=coff
obj=coff
;; ;;
# This must come before the *-dec entry. # This must come before the *-dec entry.
pdp10-*) pdp10-*)
@@ -1588,24 +1558,19 @@ case $cpu-$vendor in
os=sunos3 os=sunos3
;; ;;
m68*-cisco) m68*-cisco)
os= os=aout
obj=aout
;; ;;
mep-*) mep-*)
os= os=elf
obj=elf
;; ;;
mips*-cisco) mips*-cisco)
os= os=elf
obj=elf
;; ;;
mips*-*|nanomips*-*) mips*-*)
os= os=elf
obj=elf
;; ;;
or32-*) or32-*)
os= os=coff
obj=coff
;; ;;
*-tti) # must be before sparc entry or we get the wrong os. *-tti) # must be before sparc entry or we get the wrong os.
os=sysv3 os=sysv3
@@ -1614,8 +1579,7 @@ case $cpu-$vendor in
os=sunos4.1.1 os=sunos4.1.1
;; ;;
pru-*) pru-*)
os= os=elf
obj=elf
;; ;;
*-be) *-be)
os=beos os=beos
@@ -1696,12 +1660,10 @@ case $cpu-$vendor in
os=uxpv os=uxpv
;; ;;
*-rom68k) *-rom68k)
os= os=coff
obj=coff
;; ;;
*-*bug) *-*bug)
os= os=coff
obj=coff
;; ;;
*-apple) *-apple)
os=macos os=macos
@@ -1719,20 +1681,13 @@ esac
fi fi
# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). # Now, validate our (potentially fixed-up) OS.
case $os in case $os in
# Sometimes we do "kernel-libc", so those need to count as OSes. # Sometimes we do "kernel-abi", so those need to count as OSes.
llvm* | musl* | newlib* | relibc* | uclibc*) musl* | newlib* | uclibc*)
;; ;;
# Likewise for "kernel-abi" # Likewise for "kernel-libc"
eabi* | gnueabi*) eabi | eabihf | gnueabi | gnueabihf)
;;
# VxWorks passes extra cpu info in the 4th filed.
simlinux | simwindows | spe)
;;
# See `case $cpu-$os` validation below
ghcjs)
;; ;;
# Now accept the basic system types. # Now accept the basic system types.
# The portable systems comes first. # The portable systems comes first.
@@ -1742,20 +1697,20 @@ case $os in
| hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
| sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
| hiux* | abug | nacl* | netware* | windows* \ | hiux* | abug | nacl* | netware* | windows* \
| os9* | macos* | osx* | ios* | tvos* | watchos* \ | os9* | macos* | osx* | ios* \
| mpw* | magic* | mmixware* | mon960* | lnews* \ | mpw* | magic* | mmixware* | mon960* | lnews* \
| amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
| aos* | aros* | cloudabi* | sortix* | twizzler* \ | aos* | aros* | cloudabi* | sortix* | twizzler* \
| nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
| clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
| mirbsd* | netbsd* | dicos* | openedition* | ose* \ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
| bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
| ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
| bosx* | nextstep* | cxux* | oabi* \ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
| ptx* | ecoff* | winnt* | domain* | vsta* \ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
| udi* | lites* | ieee* | go32* | aux* | hcos* \ | udi* | lites* | ieee* | go32* | aux* | hcos* \
| chorusrdb* | cegcc* | glidix* | serenity* \ | chorusrdb* | cegcc* | glidix* \
| cygwin* | msys* | moss* | proelf* | rtems* \ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
| midipix* | mingw32* | mingw64* | mint* \ | midipix* | mingw32* | mingw64* | mint* \
| uxpv* | beos* | mpeix* | udk* | moxiebox* \ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
| interix* | uwin* | mks* | rhapsody* | darwin* \ | interix* | uwin* | mks* | rhapsody* | darwin* \
@@ -1767,117 +1722,42 @@ case $os in
| skyos* | haiku* | rdos* | toppers* | drops* | es* \ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ | nsk* | powerunix* | genode* | zvmoe* )
| fiwix* | mlibc* | cos* | mbr* | ironclad* )
;; ;;
# This one is extra strict with allowed versions # This one is extra strict with allowed versions
sco3.2v2 | sco3.2v[4-9]* | sco5v6*) sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
# Don't forget version if it is 3.2v4 or newer. # Don't forget version if it is 3.2v4 or newer.
;; ;;
# This refers to builds using the UEFI calling convention
# (which depends on the architecture) and PE file format.
# Note that this is both a different calling convention and
# different file format than that of GNU-EFI
# (x86_64-w64-mingw32).
uefi)
;;
none) none)
;; ;;
kernel* | msvc* )
# Restricted further below
;;
'')
if test x"$obj" = x
then
echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2
fi
;;
*) *)
echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
exit 1
;;
esac
case $obj in
aout* | coff* | elf* | pe*)
;;
'')
# empty is fine
;;
*)
echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2
exit 1
;;
esac
# Here we handle the constraint that a (synthetic) cpu and os are
# valid only in combination with each other and nowhere else.
case $cpu-$os in
# The "javascript-unknown-ghcjs" triple is used by GHC; we
# accept it here in order to tolerate that, but reject any
# variations.
javascript-ghcjs)
;;
javascript-* | *-ghcjs)
echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2
exit 1 exit 1
;; ;;
esac esac
# As a final step for OS-related things, validate the OS-kernel combination # As a final step for OS-related things, validate the OS-kernel combination
# (given a valid OS), if there is a kernel. # (given a valid OS), if there is a kernel.
case $kernel-$os-$obj in case $kernel-$os in
linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
| linux-mlibc*- | linux-musl*- | linux-newlib*- \
| linux-relibc*- | linux-uclibc*- )
;; ;;
uclinux-uclibc*- ) -dietlibc* | -newlib* | -musl* | -uclibc* )
;;
managarm-mlibc*- | managarm-kernel*- )
;;
windows*-msvc*-)
;;
-dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \
| -uclibc*- )
# These are just libc implementations, not actual OSes, and thus # These are just libc implementations, not actual OSes, and thus
# require a kernel. # require a kernel.
echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
exit 1 exit 1
;; ;;
-kernel*- ) kfreebsd*-gnu* | kopensolaris*-gnu*)
echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2
exit 1
;; ;;
*-kernel*- ) nto-qnx*)
echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2
exit 1
;; ;;
*-msvc*- ) *-eabi* | *-gnueabi*)
echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2
exit 1
;; ;;
kfreebsd*-gnu*- | kopensolaris*-gnu*-) -*)
;;
vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-)
;;
nto-qnx*-)
;;
os2-emx-)
;;
*-eabi*- | *-gnueabi*-)
;;
none--*)
# None (no kernel, i.e. freestanding / bare metal),
# can be paired with an machine code file format
;;
-*-)
# Blank kernel with real OS is always fine. # Blank kernel with real OS is always fine.
;; ;;
--*) *-*)
# Blank kernel and OS with real machine code file format is always fine. echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
;;
*-*-*)
echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2
exit 1 exit 1
;; ;;
esac esac
@@ -1960,7 +1840,7 @@ case $vendor in
;; ;;
esac esac
echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" echo "$cpu-$vendor-${kernel:+$kernel-}$os"
exit exit
# Local variables: # Local variables:

View File

@@ -5,17 +5,11 @@ CC = gcc -m64 $(GCC_CFLAGS) -I/usr/local/include
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# XFLAGS = -DSDL
# 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 is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lm -L/usr/local/lib -lSDL2 LDFLAGS = -lm -L/usr/local/lib -lSDL2
# #

View File

@@ -18,7 +18,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -19,7 +19,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \ DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
-DRELEASE=$(RELEASE) # -DSTACKCHECK -DFSBCHECK -DPCTRACE -DRELEASE=351 # -DSTACKCHECK -DFSBCHECK -DPCTRACE
LDFLAGS = -L/opt/X11/lib -lX11 -lm LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm LDELDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -4,21 +4,14 @@ CC = clang -target aarch64-apple-darwin $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL -F /Library/Frameworks
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -framework SDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -framework SDL3 in LDFLAGS
#
SDLFLAGS = -DSDL=2 -F /Library/Frameworks
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -rpath /Library/Frameworks -F /Library/Frameworks -framework SDL2 LDFLAGS = -F /Library/Frameworks -framework SDL2
LDELDFLAGS = LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/ OBJECTDIR = ../$(RELEASENAME)/

View File

@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 OPTFLAGS = -O2
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/opt/X11/lib -lX11 -lm LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm LDELDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -19,7 +19,7 @@ XFLAGS = -I/usr/X11/include -DXWINDOW
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \ DFLAGS = $(DEBUGFLAGS) $(XFLAGS) \
-DRELEASE=$(RELEASE) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lm LDFLAGS = -L/usr/X11/lib -lX11 -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lm

View File

@@ -2,22 +2,16 @@
CC = clang -m64 -target x86_64-apple-darwin $(CLANG_CFLAGS) CC = clang -m64 -target x86_64-apple-darwin $(CLANG_CFLAGS)
#
# For SDL version 2
# -DSDL=2 in SDLFLAGS and -framework SDL2 in LDFLAGS
# For SDL version 3
# -DSDL=3 in SDLFLAGS and -framework SDL3 in LDFLAGS
#
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
SDLFLAGS = -DSDL=2 -F /Library/Frameworks SDLFLAGS = -DSDL -F /Library/Frameworks
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -rpath /Library/Frameworks -F /Library/Frameworks -framework SDL2 LDFLAGS = -F /Library/Frameworks -framework SDL2
LDELDFLAGS = LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/ OBJECTDIR = ../$(RELEASENAME)/

View File

@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O1 -g OPTFLAGS = -O1 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/opt/X11/lib -lX11 -lm LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm LDELDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -4,34 +4,15 @@ CC = emcc $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# XFLAGS = -DSDL -sUSE_SDL=2
# For SDL version 2
# -DSDL=2 and -sUSE_SDL=2 in XFLAGS and -sUSE_SDL=2 in LDFLAGS
# For SDL version 3
# -DSDL=3 and -sUSE_SDL=3 in XFLAGS and -sUSE_SDL=3 in LDFLAGS
#
XFLAGS = -DSDL=2 -sUSE_SDL=2
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 OPTFLAGS = -O2
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DMAIKO_ENABLE_NETHUB DFLAGS = $(XFLAGS) -DRELEASE=351 -DMAIKO_OS_EMSCRIPTEN -DMAIKO_ENABLE_NETHUB
MEDLEY?=../../medley
SYSOUT?=$(MEDLEY)/loadups/full.sysout
LD = emcc LD = emcc
LDFLAGS = -sUSE_SDL=2 -sASYNCIFY -sALLOW_MEMORY_GROWTH -sEXIT_RUNTIME=1 \ LDFLAGS = -sUSE_SDL=2 -sASYNCIFY -sALLOW_MEMORY_GROWTH -sEXIT_RUNTIME=1 -sFORCE_FILESYSTEM -sLZ4
--preload-file $(SYSOUT)@medley/loadups/full.sysout \ UPFRONT_LDFLAGS = -lidbfs.js
--preload-file $(MEDLEY)/loadups/whereis.hash@medley/loadups/whereis.hash \
--preload-file $(MEDLEY)/greetfiles/MEDLEYDIR-INIT.LCOM@usr/local/lde/site-init.lisp \
--preload-file $(MEDLEY)/docs/@medley/docs \
--preload-file $(MEDLEY)/doctools/@medley/doctools \
--preload-file $(MEDLEY)/greetfiles/@medley/greetfiles \
--preload-file $(MEDLEY)/internal/@medley/internal \
--preload-file $(MEDLEY)/sources/@medley/sources \
--preload-file $(MEDLEY)/library/@medley/library \
--preload-file $(MEDLEY)/lispusers/@medley/lispusers \
--preload-file $(MEDLEY)/fonts/@medley/fonts
LDELDFLAGS = LDELDFLAGS =

View File

@@ -1,29 +0,0 @@
# Options for Emscripten, WASM and SDL
CC = emcc $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o
#
# For SDL version 2
# -DSDL=2 and -sUSE_SDL=2 in XFLAGS and -sUSE_SDL=2 in LDFLAGS
# For SDL version 3
# -DSDL=3 and -sUSE_SDL=3 in XFLAGS and -sUSE_SDL=3 in LDFLAGS
#
XFLAGS = -DSDL=2 -sUSE_SDL=2
# OPTFLAGS is normally -O2.
OPTFLAGS = -O2
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DMAIKO_ENABLE_NETHUB
MEDLEY?=../../medley
SYSOUT?=$(MEDLEY)/loadups/full.sysout
LD = emcc
LDFLAGS = -sUSE_SDL=2 -sASYNCIFY -sALLOW_MEMORY_GROWTH -sEXIT_RUNTIME=1 -sFORCE_FILESYSTEM -sLZ4
LDELDFLAGS =
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/ldesdl.js

View File

@@ -4,17 +4,11 @@ CC = clang -m32 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL -I/usr/local/include
# 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 -I/usr/local/include
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lSDL2 -lm LDFLAGS = -L/usr/local/lib -lSDL2 -lm
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -4,17 +4,11 @@ CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL -I/usr/local/include
# 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 -I/usr/local/include
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lSDL2 -lm LDFLAGS = -L/usr/local/lib -lSDL2 -lm
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -4,17 +4,11 @@ CC = clang -m64 $(CLANG_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL -I/usr/local/include
# 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 -I/usr/local/include
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lSDL2 -lm LDFLAGS = -L/usr/local/lib -lSDL2 -lm
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g OPTFLAGS = -O2 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -1,25 +0,0 @@
# Options for Haiku, 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)
LDFLAGS = -lSDL2 -lnetwork
LDELDFLAGS = -lnetwork -lbsd
OBJECTDIR = ../$(RELEASENAME)/
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl

View File

@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it # OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DEBUGFLAGS = DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11/lib -lX11 -lm LDFLAGS = -L/usr/X11/lib -lX11 -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lm

View File

@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O0 -g3 OPTFLAGS = -O0 -g3
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/opt/X11/lib -lX11 -lm LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm LDELDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -18,7 +18,7 @@ XFLAGS = -I/opt/X11/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DEBUGFLAGS = # -DDEBUG -DOPTRACE DEBUGFLAGS = # -DDEBUG -DOPTRACE
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/opt/X11/lib -lX11 -lm LDFLAGS = -L/opt/X11/lib -lX11 -lm
LDELDFLAGS = -L/opt/X11/lib -lX11 -lm LDELDFLAGS = -L/opt/X11/lib -lX11 -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O0 for init # OPTFLAGS is normally -O0 for init
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O0 for init # OPTFLAGS is normally -O0 for init
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/local/include -DXWINDOW
# OPTFLAGS is normally -O0 for init # OPTFLAGS is normally -O0 for init
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDFLAGS = -L/usr/local/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/local/lib -lX11 -lc -lm

View File

@@ -19,7 +19,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it # OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DEBUGFLAGS = DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -19,7 +19,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it # OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
OPTFLAGS = -O0 -g OPTFLAGS = -O0 -g
DEBUGFLAGS = DEBUGFLAGS =
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/X11R6/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm

View File

@@ -50,7 +50,7 @@ DFLAGS = -DINIT \
$(XFLAGS) \ $(XFLAGS) \
$(DEBUGFLAGS) \ $(DEBUGFLAGS) \
$(MACHINEFLAGS) \ $(MACHINEFLAGS) \
-DNOVERSION -DRELEASE=$(RELEASE) -DNOVERSION -DRELEASE=351
LDFLAGS = -lX11 -lc -lm -lsocket -lnsl LDFLAGS = -lX11 -lc -lm -lsocket -lnsl

View File

@@ -5,17 +5,11 @@ CC = gcc -m32 $(GCC_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# XFLAGS = -DSDL
# 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 is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lm -lSDL2 LDFLAGS = -lm -lSDL2
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -5,17 +5,11 @@ CC = gcc $(GCC_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# SDLFLAGS = -DSDL
# 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 is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(SDLFLAGS) -DRELEASE=351
LDFLAGS = -lSDL2 -lm LDFLAGS = -lSDL2 -lm
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -5,17 +5,11 @@ CC = gcc $(GCC_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# XFLAGS = -DSDL
# 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 is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lm -lSDL2 LDFLAGS = -lm -lSDL2
LDELDFLAGS = LDELDFLAGS =

View File

@@ -17,7 +17,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -5,17 +5,11 @@ CC = gcc -m64 $(GCC_CFLAGS)
XFILES = $(OBJECTDIR)sdl.o XFILES = $(OBJECTDIR)sdl.o
# XFLAGS = -DSDL
# 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 is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -lm -lSDL2 LDFLAGS = -lm -lSDL2
LDELDFLAGS = LDELDFLAGS =

View File

@@ -18,7 +18,7 @@ XFLAGS = -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm

View File

@@ -17,7 +17,7 @@ XFLAGS = -I/usr/X11R6/include -DXWINDOW
# OPTFLAGS is normally -O2. # OPTFLAGS is normally -O2.
OPTFLAGS = -O2 -g3 OPTFLAGS = -O2 -g3
DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) DFLAGS = $(XFLAGS) -DRELEASE=351
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm

View File

@@ -36,7 +36,7 @@ DEBUGFLAGS = # -DSTACKCHECK -DFNSTKCHECK
DFLAGS = $(XFLAGS) \ DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \ $(DEBUGFLAGS) \
-DOS5 \ -DOS5 \
-DRELEASE=$(RELEASE) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl

View File

@@ -45,7 +45,7 @@ MACHINEFLAGS = -DOS5 -DUSE_DLPI
DFLAGS = $(XFLAGS) \ DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \ $(DEBUGFLAGS) \
$(MACHINEFLAGS) \ $(MACHINEFLAGS) \
-DRELEASE=$(RELEASE) -DRELEASE=351
LDFLAGS = -lX11 -lc -lm -lsocket -lnsl LDFLAGS = -lX11 -lc -lm -lsocket -lnsl
LDELDFLAGS = -lX11 -lc -lm -lsocket -lnsl LDELDFLAGS = -lX11 -lc -lm -lsocket -lnsl

View File

@@ -37,7 +37,7 @@ DFLAGS = $(XFLAGS) \
$(DEBUGFLAGS) \ $(DEBUGFLAGS) \
-DOS5 \ -DOS5 \
-DUSE_DLPI \ -DUSE_DLPI \
-DRELEASE=$(RELEASE) -DRELEASE=351
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lsocket -lnsl

View File

@@ -35,6 +35,7 @@
REQUIRED-INCS = $(INCDIR)version.h $(INCDIR)maiko/platform.h REQUIRED-INCS = $(INCDIR)version.h $(INCDIR)maiko/platform.h
LD ?= $(CC)
CFLAGS = $(OPTFLAGS) $(DFLAGS) CFLAGS = $(OPTFLAGS) $(DFLAGS)
RFLAGS = -c $(CFLAGS) -I$(INCDIR) -I$(INCLUDEDIR) RFLAGS = -c $(CFLAGS) -I$(INCDIR) -I$(INCLUDEDIR)
@@ -145,21 +146,21 @@ EXTFILES = $(OBJECTDIR)usrsubr.o
################################################################################ ################################################################################
$(OSARCHDIR)lde: $(OBJECTDIR)ldeboot.o $(OBJECTDIR)unixfork.o $(OSARCHDIR)lde: $(OBJECTDIR)ldeboot.o $(OBJECTDIR)unixfork.o
$(CC) $(OBJECTDIR)ldeboot.o $(OBJECTDIR)unixfork.o $(LDELDFLAGS) -o $(OSARCHDIR)lde $(LD) $(OBJECTDIR)ldeboot.o $(OBJECTDIR)unixfork.o $(LDELDFLAGS) -o $(OSARCHDIR)lde
$(OSARCHDIR)$(LDENAME): $(LIBFILES) $(EXTFILES) $(OBJECTDIR)vdate.o $(OSARCHDIR)$(LDENAME): $(LIBFILES) $(EXTFILES) $(OBJECTDIR)vdate.o
$(CC) $(LIBFILES) $(EXTFILES) $(OBJECTDIR)vdate.o $(LDFLAGS) -o $(OSARCHDIR)$(LDENAME) $(LD) $(UPFRONT_LDFLAGS) $(LIBFILES) $(EXTFILES) $(OBJECTDIR)vdate.o $(LDFLAGS) -o $(OSARCHDIR)$(LDENAME)
@ echo "" @ echo ""
@ echo "Executable is now named '$(OSARCHDIR)$(LDENAME)'" @ echo "Executable is now named '$(OSARCHDIR)$(LDENAME)'"
$(OSARCHDIR)ldeether: $(OBJECTDIR)ldeether.o $(DLPIFILES) $(OSARCHDIR)ldeether: $(OBJECTDIR)ldeether.o $(DLPIFILES)
$(CC) $(OBJECTDIR)ldeether.o $(DLPIFILES) $(LDEETHERLDFLAGS) -o $(OSARCHDIR)ldeether $(LD) $(OBJECTDIR)ldeether.o $(DLPIFILES) $(LDEETHERLDFLAGS) -o $(OSARCHDIR)ldeether
$(OSARCHDIR)tstsout: $(OBJECTDIR)tstsout.o $(BYTESWAPFILES) $(REQUIRED-INCS) $(OSARCHDIR)tstsout: $(OBJECTDIR)tstsout.o $(BYTESWAPFILES) $(REQUIRED-INCS)
$(CC) $(OBJECTDIR)tstsout.o $(BYTESWAPFILES) $(LDFLAGS) -lc -lm -o $(OSARCHDIR)tstsout $(LD) $(OBJECTDIR)tstsout.o $(BYTESWAPFILES) $(LDFLAGS) -lc -lm -o $(OSARCHDIR)tstsout
$(OSARCHDIR)setsout: $(OBJECTDIR)setsout.o $(REQUIRED-INCS) $(OSARCHDIR)setsout: $(OBJECTDIR)setsout.o $(REQUIRED-INCS)
$(CC) $(OBJECTDIR)setsout.o $(BYTESWAPFILES) $(LDFLAGS) -lc -lm -o $(OSARCHDIR)setsout $(LD) $(OBJECTDIR)setsout.o $(BYTESWAPFILES) $(LDFLAGS) -lc -lm -o $(OSARCHDIR)setsout
#### Component files ###################################################### #### Component files ######################################################

View File

@@ -20,7 +20,7 @@
# Nov 20 2001 JDS: Convert to use BASH, not CSH, for open-source... # Nov 20 2001 JDS: Convert to use BASH, not CSH, for open-source...
# #
# usage: makeright [display-option] [other-option] # usage: makeright [display-option] [other-option]
# #
# example: makeright single ; make lde for mmaped displayFB # example: makeright single ; make lde for mmaped displayFB
# makeright multi ; make lde for cg3,cg6 # makeright multi ; make lde for cg3,cg6
# makeright x ; make lde for X-windows # makeright x ; make lde for X-windows
@@ -54,10 +54,9 @@ if test $# -gt 0
shift shift
fi fi
: ${RELEASE=351}
architecture=`machinetype` architecture=`machinetype`
osversion=`osversion` osversion=`osversion`
echo "making release ${RELEASE} for ${osversion} on ${architecture}." echo "making so far for ${osversion} on ${architecture}."
case "$display" in case "$display" in
init) display=single init) display=single
releasename=init-${osversion}.${architecture} releasename=init-${osversion}.${architecture}
@@ -72,7 +71,7 @@ case "$display" in
x) releasename=${osversion}.${architecture}-${display} x) releasename=${osversion}.${architecture}-${display}
ldename=ldex ldename=ldex
;; ;;
sdl*) releasename=${osversion}.${architecture}-${display} sdl) releasename=${osversion}.${architecture}-${display}
ldename=ldesdl ldename=ldesdl
;; ;;
wasm) osversion=emscripten wasm) osversion=emscripten
@@ -80,11 +79,6 @@ case "$display" in
releasename=${osversion}.${architecture}-${display} releasename=${osversion}.${architecture}-${display}
ldename=ldesdl.js ldename=ldesdl.js
;; ;;
wasm_nl) osversion=emscripten
architecture=wasm_nl
releasename=${osversion}.${architecture}-${display}
ldename=ldesdl.js
;;
*) echo "display-option: $display is not supported." *) echo "display-option: $display is not supported."
exit exit
;; ;;
@@ -107,12 +101,12 @@ if [ ! -d ../${releasename} ]; then
mkdir ../${releasename} mkdir ../${releasename}
fi fi
echo start making lde for ${releasename} echo start making lde for ${releasename}.
# then finally do the make, including the right stuff # then finally do the make, including the right stuff
# With makefile-tail merged, this should only take ONE make command.... # With makefile-tail merged, this should only take ONE make command....
make RELEASENAME=${releasename} RELEASE=${RELEASE} LDENAME=${ldename} \ make RELEASENAME=${releasename} LDENAME=${ldename} \
OSARCHNAME=${osversion}.${architecture} \ OSARCHNAME=${osversion}.${architecture} \
-f makefile-header -f makefile-${releasename} \ -f makefile-header -f makefile-${releasename} \
-f makefile-tail $* -f makefile-tail $*

View File

@@ -12,7 +12,6 @@ case "$os" in
*-*-openbsd*) echo openbsd ;; *-*-openbsd*) echo openbsd ;;
*-*-freebsd*) echo freebsd ;; *-*-freebsd*) echo freebsd ;;
*-*-cygwin*) echo cygwin ;; *-*-cygwin*) echo cygwin ;;
*-*-haiku*) echo haiku ;;
esac esac
### Don't leave the variable set. ### Don't leave the variable set.
unset os unset os

View File

@@ -63,8 +63,8 @@ static inline DLword StackOffsetFromNative(void *SAddr)
{ {
/* Stack offsets are expressed as an offset in DLwords from the stack base */ /* Stack offsets are expressed as an offset in DLwords from the stack base */
ptrdiff_t hoffset = (DLword *)SAddr - Stackspace; ptrdiff_t hoffset = (DLword *)SAddr - Stackspace;
if (hoffset > 0xffff || hoffset < 0) { if (hoffset > 0xffff) {
printf("Stack offset is out of range: 0x%tx\n", hoffset); printf("Stack offset is too large: 0x%tx\n", hoffset);
} }
return (DLword)hoffset; return (DLword)hoffset;
} }

View File

@@ -18,7 +18,8 @@
*/ */
/**********************************************************************/ /**********************************************************************/
#include "lispemul.h" /* for LispPTR, DLword */ #include "lispemul.h" /* for LispPTR, DLword */
#include "version.h" /* for BIGVM */ #include "version.h" /* for USHORT */
#include "gchtfinddefs.h"
#define ADDREF 0 /* for gclookup routine. */ #define ADDREF 0 /* for gclookup routine. */
#define DELREF 1 /* for gclookup routine. */ #define DELREF 1 /* for gclookup routine. */
@@ -131,10 +132,10 @@
#ifdef BIGVM #ifdef BIGVM
struct hashentry struct hashentry
{ /* GC hashtable entry */ { /* GC hashtable entry */
DLword count :15; unsigned short count :15;
DLword stackref :1; unsigned short stackref :1;
DLword segnum :15; unsigned short segnum :15;
DLword collision :1; unsigned short collision :1;
}; };
struct htlinkptr struct htlinkptr
@@ -162,10 +163,10 @@ struct htoverflow
#else #else
struct hashentry struct hashentry
{ /* GC hashtable entry */ { /* GC hashtable entry */
DLword count :6; USHORT count :6;
DLword stackref :1; USHORT stackref :1;
DLword segnum :8; USHORT segnum :8;
DLword collision :1; USHORT collision :1;
}; };
struct htlinkptr struct htlinkptr
@@ -200,10 +201,10 @@ struct htoverflow
#ifdef BIGVM #ifdef BIGVM
struct hashentry struct hashentry
{ /* GC hashtable entry */ { /* GC hashtable entry */
DLword collision :1; USHORT collision :1;
DLword segnum :15; USHORT segnum :15;
DLword stackref :1; USHORT stackref :1;
DLword count :15; USHORT count :15;
}; };
struct htlinkptr struct htlinkptr
@@ -231,10 +232,10 @@ struct htoverflow
#else #else
struct hashentry struct hashentry
{ /* GC hashtable entry */ { /* GC hashtable entry */
DLword collision :1; USHORT collision :1;
DLword segnum :8; USHORT segnum :8;
DLword stackref :1; USHORT stackref :1;
DLword count :6; USHORT count :6;
}; };
struct htlinkptr struct htlinkptr

View File

@@ -1,9 +1,8 @@
#ifndef GCHTFINDDEFS_H #ifndef GCHTFINDDEFS_H
#define GCHTFINDDEFS_H 1 #define GCHTFINDDEFS_H 1
#include "lispemul.h" /* for LispPTR, DLword */ #include "lispemul.h" /* for LispPTR, DLword */
#include "gcdata.h" /* for GCENTRY */
void enter_big_reference_count(LispPTR ptr); void enter_big_reference_count(LispPTR ptr);
void modify_big_reference_count(GCENTRY *entry, DLword casep, LispPTR ptr); void modify_big_reference_count(LispPTR *entry, DLword casep, LispPTR ptr);
LispPTR htfind(LispPTR ptr, int casep); LispPTR htfind(LispPTR ptr, int casep);
LispPTR rec_htfind(LispPTR ptr, int casep); LispPTR rec_htfind(LispPTR ptr, int casep);
#endif #endif

View File

@@ -4,7 +4,6 @@
void process_io_events(void); void process_io_events(void);
void kb_trans(u_short keycode, u_short upflg); void kb_trans(u_short keycode, u_short upflg);
void taking_mouse_down(void); void taking_mouse_down(void);
void taking_mouse_up(int newx, int newy);
void copy_cursor(int newx, int newy); void copy_cursor(int newx, int newy);
void cursor_hidden_bitmap(int x, int y); void cursor_hidden_bitmap(int x, int y);
#endif #endif

View File

@@ -267,22 +267,22 @@ struct state {
/* For bit test */ /* For bit test */
typedef struct wbits { typedef struct wbits {
DLword LSB : 1; USHORT LSB : 1;
DLword B14 : 1; USHORT B14 : 1;
DLword B13 : 1; USHORT B13 : 1;
DLword B12 : 1; USHORT B12 : 1;
DLword B11 : 1; USHORT B11 : 1;
DLword B10 : 1; USHORT B10 : 1;
DLword B9 : 1; USHORT B9 : 1;
DLword B8 : 1; USHORT B8 : 1;
DLword B7 : 1; USHORT B7 : 1;
DLword B6 : 1; USHORT B6 : 1;
DLword B5 : 1; USHORT B5 : 1;
DLword B4 : 1; USHORT B4 : 1;
DLword B3 : 1; USHORT B3 : 1;
DLword B2 : 1; USHORT B2 : 1;
DLword B1 : 1; USHORT B1 : 1;
DLword xMSB : 1; USHORT xMSB : 1;
} WBITS; } WBITS;
#define PUTBASEBIT68K(base68k, offset, bitvalue) \ #define PUTBASEBIT68K(base68k, offset, bitvalue) \

View File

@@ -499,8 +499,7 @@ do { \
#define MAXVERSION 999999999 #define MAXVERSION 999999999
#define LASTVERSIONARRAY ((unsigned) -1) #define LASTVERSIONARRAY ((unsigned) -1)
#define VERSIONARRAYCHUNKLENGTH 200 #define VERSIONARRAYLENGTH 200
#define VERSIONARRAYMAXLENGTH 2000
#define NoFileP(varray) \ #define NoFileP(varray) \
(((varray)->version_no == LASTVERSIONARRAY)? 1 : 0) (((varray)->version_no == LASTVERSIONARRAY)? 1 : 0)

View File

@@ -166,12 +166,6 @@
# define MAIKO_ARCH_DETECTED 1 # define MAIKO_ARCH_DETECTED 1
#endif #endif
#ifdef __HAIKU__
# define MAIKO_OS_HAIKU 1
# define MAIKO_OS_NAME "Haiku"
# define MAIKO_OS_UNIX_LIKE 1
# define MAIKO_OS_DETECTED 1
#endif
/* Modern GNU C, Clang, Sun Studio provide __BYTE_ORDER__ /* Modern GNU C, Clang, Sun Studio provide __BYTE_ORDER__
* Older GNU C (ca. 4.0.1) provides __BIG_ENDIAN__/__LITTLE_ENDIAN__ * Older GNU C (ca. 4.0.1) provides __BIG_ENDIAN__/__LITTLE_ENDIAN__
*/ */

View File

@@ -20,7 +20,6 @@
#include "version.h" // for BIGVM #include "version.h" // for BIGVM
#include "adr68k.h" // for NativeAligned2FromLAddr, NativeAligned4FromLAddr, LAddrFromNative #include "adr68k.h" // for NativeAligned2FromLAddr, NativeAligned4FromLAddr, LAddrFromNative
#include "arith.h" // for N_ARITH_SWITCH, N_GETNUMBER #include "arith.h" // for N_ARITH_SWITCH, N_GETNUMBER
#include "gchtfinddefs.h"// for htfind, rec_htfind, from gcdata.h macros
#include "gcdata.h" // for ADDREF, DELREF #include "gcdata.h" // for ADDREF, DELREF
#include "lispemul.h" // for ERROR_EXIT, LispPTR, DLword, SEGMASK, state #include "lispemul.h" // for ERROR_EXIT, LispPTR, DLword, SEGMASK, state
#include "lispmap.h" // for S_POSITIVE, S_CHARACTER, S_NEGATIVE #include "lispmap.h" // for S_POSITIVE, S_CHARACTER, S_NEGATIVE

View File

@@ -1,8 +0,0 @@
#ifndef RAWCOLORDEFS_H
#define RAWCOLORDEFS_H 1
#include "lispemul.h" /* for LispPTR */
void C_slowbltchar(LispPTR *args);
LispPTR Colorize_Bitmap(LispPTR args[]);
void Draw_8BppColorLine(LispPTR *args);
void Uncolorize_Bitmap(LispPTR args[]);
#endif

View File

@@ -37,7 +37,7 @@
#define FastRetCALL \ #define FastRetCALL \
do { \ do { \
/* Get IVar from Returnee's IVAR offset slot(BF) */ \ /* Get IVar from Returnee's IVAR offset slot(BF) */ \
IVar = NativeAligned2FromStackOffset(GETWORD((DLword *)CURRENTFX - 1)); \ IVar = NativeAligned2FromLAddr(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \ /* Get FuncObj from Returnee's FNHEAD slot in FX */ \
FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \ FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \
/* Get PC from Returnee's pc slot in FX */ \ /* Get PC from Returnee's pc slot in FX */ \
@@ -47,7 +47,7 @@
#define FastRetCALL \ #define FastRetCALL \
do { \ do { \
/* Get IVar from Returnee's IVAR offset slot(BF) */ \ /* Get IVar from Returnee's IVAR offset slot(BF) */ \
IVar = NativeAligned2FromStackOffset(GETWORD((DLword *)CURRENTFX - 1)); \ IVar = NativeAligned2FromLAddr(STK_OFFSET | GETWORD((DLword *)CURRENTFX -1)); \
/* Get FuncObj from Returnee's FNHEAD slot in FX */ \ /* Get FuncObj from Returnee's FNHEAD slot in FX */ \
FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \ FuncObj = (struct fnhead *)NativeAligned4FromLAddr(FX_FNHEADER); \
/* Get PC from Returnee's pc slot in FX */ \ /* Get PC from Returnee's pc slot in FX */ \

View File

@@ -79,22 +79,22 @@ typedef struct fnhead {
} FNHEAD; } FNHEAD;
typedef struct frameex1 { typedef struct frameex1 {
DLword flags : 3; unsigned flags : 3;
DLword fast : 1; unsigned fast : 1;
DLword nil2 : 1; /* not used, prev: This frame treats N-func */ unsigned nil2 : 1; /* not used, prev: This frame treats N-func */
DLword incall : 1; unsigned incall : 1;
DLword validnametable : 1; unsigned validnametable : 1;
/* 0: look for FunctionHeader /* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */ 1: look for NameTable on this FrameEx */
DLword nopush : 1; unsigned nopush : 1;
DLword usecount : 8; unsigned usecount : 8;
DLword alink; /* alink pointer (Low addr) */ DLword alink; /* alink pointer (Low addr) */
#ifdef BIGVM #ifdef BIGVM
LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */ LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */
#else #else
DLword lofnheader; /* pointer to FunctionHeader (Low addr) */ DLword lofnheader; /* pointer to FunctionHeader (Low addr) */
DLword hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */ unsigned hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
DLword hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */ unsigned hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
#endif /* BIGVM */ #endif /* BIGVM */
DLword nextblock; /* pointer to FreeStackBlock */ DLword nextblock; /* pointer to FreeStackBlock */
DLword pc; /* Program counter */ DLword pc; /* Program counter */
@@ -102,23 +102,23 @@ typedef struct frameex1 {
LispPTR nametable; /* ptr to NameTable of this FrameEx (Hi2 addr) */ LispPTR nametable; /* ptr to NameTable of this FrameEx (Hi2 addr) */
#else #else
DLword lonametable; /* ptr to NameTable of this FrameEx (Low addr) */ DLword lonametable; /* ptr to NameTable of this FrameEx (Low addr) */
DLword hi1nametable : 8; /* ptr to NameTable of this FrameEx (Hi1 addr) */ unsigned hi1nametable : 8; /* ptr to NameTable of this FrameEx (Hi1 addr) */
DLword hi2nametable : 8; /* ptr to NameTable of this FrameEx (Hi2 addr) */ unsigned hi2nametable : 8; /* ptr to NameTable of this FrameEx (Hi2 addr) */
#endif /* BIGVM */ #endif /* BIGVM */
DLword blink; /* blink pointer (Low addr) */ DLword blink; /* blink pointer (Low addr) */
DLword clink; /* clink pointer (Low addr) */ DLword clink; /* clink pointer (Low addr) */
} FX; } FX;
typedef struct frameex2 { typedef struct frameex2 {
DLword flags : 3; unsigned flags : 3;
DLword fast : 1; unsigned fast : 1;
DLword nil2 : 1; /* not used, prev: This frame treats N-func */ unsigned nil2 : 1; /* not used, prev: This frame treats N-func */
DLword incall : 1; unsigned incall : 1;
DLword validnametable : 1; unsigned validnametable : 1;
/* 0: look for FunctionHeader /* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */ 1: look for NameTable on this FrameEx */
DLword nopush : 1; unsigned nopush : 1;
DLword usecount : 8; unsigned usecount : 8;
DLword alink; /* alink pointer (Low addr) */ DLword alink; /* alink pointer (Low addr) */
LispPTR fnheader; /* pointer to FunctionHeader */ LispPTR fnheader; /* pointer to FunctionHeader */
DLword nextblock; /* pointer to FreeStackBlock */ DLword nextblock; /* pointer to FreeStackBlock */
@@ -135,19 +135,19 @@ typedef struct fxblock {
} FXBLOCK; } FXBLOCK;
typedef struct basic_frame { typedef struct basic_frame {
DLword flags : 3; unsigned flags : 3;
DLword nil : 3; unsigned nil : 3;
DLword residual : 1; unsigned residual : 1;
DLword padding : 1; unsigned padding : 1;
DLword usecnt : 8; unsigned usecnt : 8;
DLword ivar; /* stk offset of IVARs for this frame ?? */ DLword ivar; /* stk offset of IVARs for this frame ?? */
} Bframe; } Bframe;
typedef struct stkword { typedef struct stkword {
DLword flags : 3; unsigned short flags : 3;
DLword nil : 5; unsigned short nil : 5;
DLword usecount : 8; unsigned short usecount : 8;
} StackWord; } StackWord;
typedef struct stack_block { typedef struct stack_block {
@@ -185,33 +185,33 @@ typedef struct fnhead {
unsigned nil3 : 2; /* not used */ unsigned nil3 : 2; /* not used */
unsigned nil2 : 2; /* not used */ unsigned nil2 : 2; /* not used */
#endif /* BIGVM */ #endif /* BIGVM */
DLword argtype : 2; /* ?? */ unsigned argtype : 2; /* ?? */
DLword byteswapped : 1; /* code was reswapped. */ unsigned byteswapped : 1; /* code was reswapped. */
DLword nil4 : 1; /* not used, prev: native translated? */ unsigned nil4 : 1; /* not used, prev: native translated? */
DLword fvaroffset : 8; unsigned fvaroffset : 8;
/* DLword offset from head of NameTable */ /* DLword offset from head of NameTable */
DLword nlocals : 8; /* ?? */ unsigned nlocals : 8; /* ?? */
DLword ntsize; /* size of NameTable */ DLword ntsize; /* size of NameTable */
/* NameTable of variable length is following with this structure. */ /* NameTable of variable length is following with this structure. */
} FNHEAD; } FNHEAD;
typedef struct frameex1 { typedef struct frameex1 {
DLword alink; /* alink pointer (Low addr) */ DLword alink; /* alink pointer (Low addr) */
DLword usecount : 8; unsigned usecount : 8;
DLword nopush : 1; unsigned nopush : 1;
DLword validnametable : 1; unsigned validnametable : 1;
/* 0: look for FunctionHeader /* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */ 1: look for NameTable on this FrameEx */
DLword incall : 1; unsigned incall : 1;
DLword nil2 : 1; /* not used, prev: This frame treats N-func */ unsigned nil2 : 1; /* not used, prev: This frame treats N-func */
DLword fast : 1; unsigned fast : 1;
DLword flags : 3; /* hi word */ unsigned flags : 3; /* hi word */
#ifdef BIGVM #ifdef BIGVM
LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */ LispPTR fnheader; /* pointer to FunctionHeader (Hi2 addr) */
#else #else
DLword hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */ unsigned hi2fnheader : 8; /* pointer to FunctionHeader (Hi2 addr) */
DLword hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */ unsigned hi1fnheader : 8; /* pointer to FunctionHeader (Hi1 addr) */
DLword lofnheader; /* pointer to FunctionHeader (Low addr) */ DLword lofnheader; /* pointer to FunctionHeader (Low addr) */
#endif /* BIGVM */ #endif /* BIGVM */
@@ -221,8 +221,8 @@ typedef struct frameex1 {
#ifdef BIGVM #ifdef BIGVM
LispPTR nametable; /* pointer to NameTable of this FX (Hi2 addr) */ LispPTR nametable; /* pointer to NameTable of this FX (Hi2 addr) */
#else #else
DLword hi2nametable : 8; /* pointer to NameTable of this FX (Hi2 addr) */ unsigned hi2nametable : 8; /* pointer to NameTable of this FX (Hi2 addr) */
DLword hi1nametable : 8; /* pointer to NameTable of this FX (Hi1 addr) */ unsigned hi1nametable : 8; /* pointer to NameTable of this FX (Hi1 addr) */
DLword lonametable; /* pointer to NameTable of this FX (Low addr) */ DLword lonametable; /* pointer to NameTable of this FX (Low addr) */
#endif /* BIGVM */ #endif /* BIGVM */
@@ -232,15 +232,15 @@ typedef struct frameex1 {
typedef struct frameex2 { typedef struct frameex2 {
DLword alink; /* alink pointer (Low addr) */ DLword alink; /* alink pointer (Low addr) */
DLword usecount : 8; unsigned usecount : 8;
DLword nopush : 1; unsigned nopush : 1;
DLword validnametable : 1; unsigned validnametable : 1;
/* 0: look for FunctionHeader /* 0: look for FunctionHeader
1: look for NameTable on this FrameEx */ 1: look for NameTable on this FrameEx */
DLword incall : 1; unsigned incall : 1;
DLword nil2 : 1; /* not used, prev: This frame treats N-func */ unsigned nil2 : 1; /* not used, prev: This frame treats N-func */
DLword fast : 1; unsigned fast : 1;
DLword flags : 3; unsigned flags : 3;
LispPTR fnheader; /* pointer to FunctionHeader (swapped) */ LispPTR fnheader; /* pointer to FunctionHeader (swapped) */
@@ -261,18 +261,18 @@ typedef struct fxblock {
typedef struct basic_frame { typedef struct basic_frame {
DLword ivar; DLword ivar;
DLword usecnt : 8; unsigned usecnt : 8;
DLword padding : 1; unsigned padding : 1;
DLword residual : 1; unsigned residual : 1;
DLword nil : 3; unsigned nil : 3;
DLword flags : 3; unsigned flags : 3;
} Bframe; } Bframe;
typedef struct stkword { typedef struct stkword {
DLword usecount : 8; USHORT usecount : 8;
DLword nil : 5; USHORT nil : 5;
DLword flags : 3; USHORT flags : 3;
} StackWord; } StackWord;
typedef struct stack_block { typedef struct stack_block {

View File

@@ -227,6 +227,9 @@ typedef unsigned char u_char;
typedef unsigned long u_int; typedef unsigned long u_int;
typedef unsigned short u_short; typedef unsigned short u_short;
#undef UNALIGNED_FETCH_OK #undef UNALIGNED_FETCH_OK
typedef unsigned USHORT;
#else
typedef unsigned short USHORT;
#endif /* DOS */ #endif /* DOS */
/****************************************************************/ /****************************************************************/
@@ -234,14 +237,6 @@ typedef unsigned short u_short;
/* --Start of system-specific flags */ /* --Start of system-specific flags */
/* */ /* */
/****************************************************************/ /****************************************************************/
#ifdef MAIKO_OS_MACOS
/* macOS does not follow the POSIX standard for the names of the stat
fields that allow access to the nanosecond resolution times
*/
#define st_atim st_atimespec
#define st_mtim st_mtimespec
#define st_ctim st_ctimespec
#endif
/****************************************************************/ /****************************************************************/
/* End of system-specific flag settings */ /* End of system-specific flag settings */

View File

@@ -49,6 +49,7 @@
#include "stack.h" #include "stack.h"
#include "return.h" #include "return.h"
#include "cell.h" #include "cell.h"
#include "gcdata.h"
#include "bbtsubdefs.h" #include "bbtsubdefs.h"
#include "car-cdrdefs.h" #include "car-cdrdefs.h"
@@ -1663,7 +1664,7 @@ void ccfuncall(unsigned int atom_index, int argnum, int bytenum)
CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */; CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */;
/* Setup IVar */ /* XXX: is it really only 2-byte aligned? */ /* Setup IVar */ /* XXX: is it really only 2-byte aligned? */
IVar = NativeAligned2FromStackOffset(CURRENTFX->nextblock); IVar = NativeAligned2FromLAddr((((LispPTR)(CURRENTFX->nextblock)) | STK_OFFSET));
/* Set PC to the Next Instruction and save into FX */ /* Set PC to the Next Instruction and save into FX */
CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum; CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum;

View File

@@ -38,7 +38,6 @@
#include "conspagedefs.h" // for next_conspage #include "conspagedefs.h" // for next_conspage
#include "emlglob.h" #include "emlglob.h"
#include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF #include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for ConsCell, LispPTR, DLword, NIL_PTR, state #include "lispemul.h" // for ConsCell, LispPTR, DLword, NIL_PTR, state
#include "lspglob.h" // for ListpDTD #include "lspglob.h" // for ListpDTD
#include "lsptypes.h" // for Listp, dtd #include "lsptypes.h" // for Listp, dtd

View File

@@ -64,14 +64,14 @@ LispPTR Uraid_mess = NIL;
int error(const char *cp) { int error(const char *cp) {
char *ptr; char *ptr;
if (device_before_raid() < 0) { if (device_before_raid() < 0) {
(void)fprintf(stderr, "Can't Enter URAID.\n"); fprintf(stderr, "Can't Enter URAID.\n");
exit(-1); exit(-1);
} }
/* comm read */ /* comm read */
URaid_errmess = cp; URaid_errmess = cp;
(void)fprintf(stderr, "\n*Error* %s\n", cp); fprintf(stderr, "\n*Error* %s\n", cp);
fflush(stdin); fflush(stdin);
(void)fprintf(stderr, "Enter the URaid\n"); fprintf(stderr, "Enter the URaid\n");
print(Uraid_mess); print(Uraid_mess);
putchar('\n'); putchar('\n');
/* XXX: make sure output is flushed so we can see where we are */ /* XXX: make sure output is flushed so we can see where we are */

View File

@@ -23,7 +23,6 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "conspagedefs.h" // for N_OP_cons, cons, next_conspage #include "conspagedefs.h" // for N_OP_cons, cons, next_conspage
#include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF #include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for ConsCell, DLword, LispPTR, NIL_PTR, DLWORD... #include "lispemul.h" // for ConsCell, DLword, LispPTR, NIL_PTR, DLWORD...
#include "lspglob.h" #include "lspglob.h"
#include "lsptypes.h" // for dtd, Listp, TYPE_LISTP #include "lsptypes.h" // for dtd, Listp, TYPE_LISTP

View File

@@ -303,14 +303,14 @@ int sf(struct frameex1 *fx_addr68k) {
if (((fx_addr68k)->alink & 1) == 0) { /* FAST */ if (((fx_addr68k)->alink & 1) == 0) { /* FAST */
bf = (Bframe *)(((DLword *)fx_addr68k) - 2); bf = (Bframe *)(((DLword *)fx_addr68k) - 2);
} else { /* SLOW */ } else { /* SLOW */
bf = (Bframe *)NativeAligned4FromStackOffset((fx_addr68k)->blink); bf = (Bframe *)NativeAligned4FromLAddr(((fx_addr68k)->blink + STK_OFFSET));
} }
/* Print IVARs */ /* Print IVARs */
printf("IVAR -------\n"); printf("IVAR -------\n");
BT_morep; BT_morep;
ptr = NativeAligned2FromStackOffset(bf->ivar); ptr = NativeAligned2FromLAddr(STK_OFFSET + bf->ivar);
i = 0; i = 0;
while (ptr != (DLword *)bf) { while (ptr != (DLword *)bf) {
ptrlo = ptr + 1; ptrlo = ptr + 1;
@@ -475,7 +475,7 @@ int sf(struct frameex1 *fx_addr68k) {
i++; i++;
} }
if (fx_addr68k->alink == 11) /* for contextsw */ if (fx_addr68k->alink == 11) /* for contextsw */
next68k = NativeAligned2FromStackOffset(fx_addr68k->nextblock); next68k = (DLword *)NativeAligned2FromLAddr((fx_addr68k->nextblock + STK_OFFSET));
else else
next68k = CurrentStackPTR; next68k = CurrentStackPTR;
@@ -493,7 +493,7 @@ int sf(struct frameex1 *fx_addr68k) {
return (-1); return (-1);
} }
next68k = NativeAligned2FromStackOffset(fx_addr68k->nextblock); next68k = (DLword *)NativeAligned2FromLAddr((fx_addr68k->nextblock + STK_OFFSET));
ptr = (DLword *)(fx_addr68k + 1); ptr = (DLword *)(fx_addr68k + 1);
i = 0; i = 0;
@@ -589,8 +589,8 @@ void bt1(FX *startFX) {
BT_morep; BT_morep;
while ((fnobj->framename != ATOM_T) && (fx->alink != 11)) { while ((fnobj->framename != ATOM_T) && (fx->alink != 11)) {
if (fnum > URMAXFXNUM - 1) { if (fnum > URMAXFXNUM - 1) {
/* Internal buf overflow, too many stack frames */ /* Internal buf overflow,more than 100 stacks */
printf("***There are more than %d stack frames.\n", URMAXFXNUM); printf("***There are more than 100 stack frames.\n");
printf( printf(
"If you want to continue, Uraid will smash its internal table for FX pointer. Do you " "If you want to continue, Uraid will smash its internal table for FX pointer. Do you "
"accept?(Y or N)\n"); "accept?(Y or N)\n");

View File

@@ -188,7 +188,7 @@ int setup_dlpi_dev(char *device)
dlbindreq(fd, 0x0600, 0, DL_CLDLS, 0, 0); dlbindreq(fd, 0x0600, 0, DL_CLDLS, 0, 0);
if (dlbindack(fd, buf) < 0) { if (dlbindack(fd, buf) < 0) {
(void)fprintf(stderr, "%s: dlbindack failed.\n", pname); fprintf(stderr, "%s: dlbindack failed.\n", pname);
return (-1); return (-1);
} }
@@ -202,14 +202,14 @@ int setup_dlpi_dev(char *device)
dlpromisconreq(fd, DL_PROMISC_SAP); dlpromisconreq(fd, DL_PROMISC_SAP);
if (dlokack(fd, buf) < 0) { if (dlokack(fd, buf) < 0) {
(void)fprintf(stderr, "%s: DL_PROMISC_SAP failed.\n", pname); fprintf(stderr, "%s: DL_PROMISC_SAP failed.\n", pname);
return (-1); return (-1);
} }
dlpromisconreq(fd, DL_PROMISC_MULTI); dlpromisconreq(fd, DL_PROMISC_MULTI);
if (dlokack(fd, buf) < 0) { if (dlokack(fd, buf) < 0) {
(void)fprintf(stderr, "%s: DL_PROMISC_MULTI failed.\n", pname); fprintf(stderr, "%s: DL_PROMISC_MULTI failed.\n", pname);
return (-1); return (-1);
} }
@@ -329,8 +329,8 @@ int dlpi_devtype(int fd)
case DL_FDDI: return (DLT_FDDI); case DL_FDDI: return (DLT_FDDI);
#endif #endif
default: default:
(void)fprintf(stderr, "%s: DLPI MACtype %ld unknown, ", pname, (long)dlp->info_ack.dl_mac_type); fprintf(stderr, "%s: DLPI MACtype %ld unknown, ", pname, (long)dlp->info_ack.dl_mac_type);
(void)fprintf(stderr, "assuming ethernet.\n"); fprintf(stderr, "assuming ethernet.\n");
return (DLT_EN10MB); return (DLT_EN10MB);
} }
} }
@@ -585,7 +585,7 @@ static int strgetmsg(int fd, struct strbuf *ctlp, struct strbuf *datap, int *fla
/* /*
* sigalrm - handle alarms. * sigalrm - handle alarms.
*/ */
static void sigalrm(int sig) { (void)(void)fprintf(stderr, "dlpi: timeout\n"); } static void sigalrm(int sig) { (void)fprintf(stderr, "dlpi: timeout\n"); }
/* /*
* savestr - save string in dynamic memory. * savestr - save string in dynamic memory.
@@ -595,7 +595,7 @@ static char *savestr(char *s)
char *t; char *t;
if ((t = malloc(strlen(s) + 1)) == NULL) { if ((t = malloc(strlen(s) + 1)) == NULL) {
(void)(void)fprintf(stderr, "%s: out of memory.\n", pname); (void)fprintf(stderr, "%s: out of memory.\n", pname);
(void)exit(1); (void)exit(1);
} }

421
src/dsk.c
View File

@@ -13,7 +13,7 @@
#include <fcntl.h> // for O_RDWR, O_CREAT, open, O_RDONLY, O_TRUNC #include <fcntl.h> // for O_RDWR, O_CREAT, open, O_RDONLY, O_TRUNC
#include <stdio.h> // for NULL, sprintf, size_t, rename, SEEK_SET #include <stdio.h> // for NULL, sprintf, size_t, rename, SEEK_SET
#include <stddef.h> // for ptrdiff_t #include <stddef.h> // for ptrdiff_t
#include <stdlib.h> // for strtoul, qsort #include <stdlib.h> // for strtoul
#include <string.h> // for strcpy, strcmp, strlen, strncpy, strchr #include <string.h> // for strcpy, strcmp, strlen, strncpy, strchr
#include <sys/stat.h> // for stat, fstat, mkdir, S_ISREG, st_atime, chmod #include <sys/stat.h> // for stat, fstat, mkdir, S_ISREG, st_atime, chmod
#include <sys/types.h> // for ino_t, time_t, off_t #include <sys/types.h> // for ino_t, time_t, off_t
@@ -38,13 +38,12 @@
#include <pwd.h> // for getpwuid, passwd #include <pwd.h> // for getpwuid, passwd
#include <sys/param.h> // for MAXPATHLEN #include <sys/param.h> // for MAXPATHLEN
#include <sys/statvfs.h> // for statvfs #include <sys/statvfs.h> // for statvfs
#include <sys/time.h> // for timeval, utimes, futimens #include <sys/time.h> // for timeval, utimes
#else #else
#include <direct.h> #include <direct.h>
#include <dos.h> #include <dos.h>
#include <time.h> #include <time.h>
#include <io.h> #include <io.h>
#include <search.h> // for qsort(?)
#define MAXPATHLEN _MAX_PATH #define MAXPATHLEN _MAX_PATH
#define MAXNAMLEM _MAX_PATH #define MAXNAMLEM _MAX_PATH
#define alarm(x) 0 #define alarm(x) 0
@@ -58,31 +57,25 @@ typedef struct filename_entry {
unsigned version_no; unsigned version_no;
} FileName; } FileName;
/* typedef struct current_varray {
* VA, a structure representing the file names and version numbers char path[MAXPATHLEN]; /* pathname of directory */
* that were present in a directory at a particular moment in time. char file[MAXPATHLEN]; /* file name (down cased name) */
* The {DSK} device presents a case-insensitive (to Medley) but time_t mtime;
* case-preserving (to the host) file system. The VA (Version Array) } CurrentVArray;
*/
static struct { static FileName VersionArray[VERSIONARRAYLENGTH];
char name[MAXPATHLEN]; /* lowercase unversioned file name */ static CurrentVArray VArrayInfo;
struct timespec lastMTime; /* modification time of the directory */
int allocated; /* number of entries in the files array */
int lastUsed; /* index of the last entry in use in files array */
FileName *files; /* array of files */
} VA = {0};
static int locate_file(char *dir, char *name); static int locate_file(char *dir, char *name);
static int make_directory(char *dir); static int make_directory(char *dir);
static int maintain_version(char *file, int forcep); static int maintain_version(char *file, FileName *varray, int forcep);
static int compare_file_versions(const void *a, const void *b);
static int get_versionless(FileName *varray, char *file, char *dir); static int get_versionless(FileName *varray, char *file, char *dir);
static int check_vless_link(char *vless, FileName *varray, char *to_file, int *highest_p); static int check_vless_link(char *vless, FileName *varray, char *to_file, int *highest_p);
static int get_old(char *dir, FileName *varray, char *afile, char *vfile); static int get_old(char *dir, FileName *varray, char *afile, char *vfile);
static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile); static int get_oldest(char *dir, FileName *varray, char *afile, char *vfile);
static int get_new(char *dir, FileName *varray, char *afile, char *vfile); static int get_new(char *dir, FileName *varray, char *afile, char *vfile);
static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile); static int get_old_new(char *dir, FileName *varray, char *afile, char *vfile);
static int get_version_array(char *dir, char *file); static int get_version_array(char *dir, char *file, FileName *varray, CurrentVArray *cache);
#ifdef DOS #ifdef DOS
static void separate_drive(char *lfname, char *drive) static void separate_drive(char *lfname, char *drive)
@@ -374,24 +367,24 @@ LispPTR COM_openfile(LispPTR *args)
if (dskp) { if (dskp) {
if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL); if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL);
if (true_name(dir) != -1) return (0); if (true_name(dir) != -1) return (0);
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, file); ConcNameAndVersion(name, ver, file);
switch (args[1]) { switch (args[1]) {
case RECOG_OLD: case RECOG_OLD:
if (get_old(dir, VA.files, file, name) == 0) return (NIL); if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
break; break;
case RECOG_OLDEST: case RECOG_OLDEST:
if (get_oldest(dir, VA.files, file, name) == 0) return (NIL); if (get_oldest(dir, VersionArray, file, name) == 0) return (NIL);
break; break;
case RECOG_NEW: case RECOG_NEW:
if (get_new(dir, VA.files, file, name) == 0) return (NIL); if (get_new(dir, VersionArray, file, name) == 0) return (NIL);
break; break;
case RECOG_OLD_NEW: case RECOG_OLD_NEW:
if (get_old_new(dir, VA.files, file, name) == 0) return (NIL); if (get_old_new(dir, VersionArray, file, name) == 0) return (NIL);
break; break;
default: return (NIL); default: return (NIL);
@@ -446,7 +439,7 @@ LispPTR COM_openfile(LispPTR *args)
* Actually we are creating a new file. We have to * Actually we are creating a new file. We have to
* maintain a version status. * maintain a version status.
*/ */
if (maintain_version(file, 1) == 0) { if (maintain_version(file, (FileName *)NULL, 1) == 0) {
TIMEOUT(rval = close(fd)); TIMEOUT(rval = close(fd));
*Lisp_errno = errno; *Lisp_errno = errno;
return (NIL); return (NIL);
@@ -492,7 +485,7 @@ LispPTR COM_openfile(LispPTR *args)
* the entirely newly created file, versionless file, should not * the entirely newly created file, versionless file, should not
* be linked to any file. * be linked to any file.
*/ */
if (maintain_version(file, 0) == 0) { if (maintain_version(file, (FileName *)NULL, 0) == 0) {
TIMEOUT(close(fd)); TIMEOUT(close(fd));
*Lisp_errno = errno; *Lisp_errno = errno;
return (NIL); return (NIL);
@@ -677,7 +670,7 @@ LispPTR COM_closefile(LispPTR *args)
*Lisp_errno = errno; *Lisp_errno = errno;
return (NIL); return (NIL);
} }
#ifndef DOS /* effectively NEVER, since we're in an ifdef DOS */ #ifndef DOS
TIMEOUT(rval = utimes(file, time)); TIMEOUT(rval = utimes(file, time));
if (rval != 0) { if (rval != 0) {
*Lisp_errno = errno; *Lisp_errno = errno;
@@ -688,9 +681,13 @@ LispPTR COM_closefile(LispPTR *args)
int fd, fatp, dskp, rval; int fd, fatp, dskp, rval;
time_t cdate; time_t cdate;
char lfname[MAXPATHLEN + 5], host[MAXNAMLEN]; char lfname[MAXPATHLEN + 5], host[MAXNAMLEN];
char file[MAXPATHLEN]; char file[MAXPATHLEN], dir[MAXPATHLEN], name[MAXNAMLEN + 1];
char ver[VERSIONLEN];
DIR *dirp;
struct dirent *dp;
struct stat sbuf; struct stat sbuf;
struct timespec timesp[2]; struct timeval time[2];
ino_t ino;
ERRSETJMP(NIL); ERRSETJMP(NIL);
Lisp_errno = (int *)NativeAligned4FromLAddr(args[3]); Lisp_errno = (int *)NativeAligned4FromLAddr(args[3]);
@@ -755,24 +752,60 @@ LispPTR COM_closefile(LispPTR *args)
} }
} }
/* introduction of futimens() allows us to set the times on an open if (!unpack_filename(file, dir, name, ver, 1)) return (NIL);
* file descriptor so a lot of directory manipulation to find the
* appropriate name associated with the inode is no longer required
*/
timesp[0].tv_sec = (long)sbuf.st_atime; if (dskp) {
timesp[0].tv_nsec = 0L; /*
timesp[1].tv_sec = (long)ToUnixTime(cdate); * On {DSK}, we have to make sure dir is case sensitively existing
timesp[1].tv_nsec = 0L; * directory.
*/
if (true_name(dir) != -1) return (NIL);
TIMEOUT(rval = futimens(fd, timesp)); /*
if (rval != 0) { * There is a very troublesome problem here. The file name Lisp
* recognizes is not always the same as the name which COM_openfile
* used to open the file. Sometimes COM_openfile uses the versionless
* file name to open a file, although Lisp always recognizes with
* *versioned* file name.
* Thus, we compare i-node number of the requested file with ones of all
* of files on the directory. This is time spending implementation.
* More clean up work is needed.
*/
TIMEOUT(rval = fstat(fd, &sbuf));
if (rval != 0) {
*Lisp_errno = errno;
return (NIL);
}
ino = sbuf.st_ino;
errno = 0;
TIMEOUT0(dirp = opendir(dir));
if (dirp == (DIR *)NULL) {
*Lisp_errno = errno;
return (NIL);
}
for (S_TOUT(dp = readdir(dirp)); dp != (struct dirent *)NULL || errno == EINTR;
errno = 0, S_TOUT(dp = readdir(dirp)))
if (dp) {
if (ino == (ino_t)dp->d_ino) sprintf(file, "%s/%s", dir, dp->d_name);
}
TIMEOUT(closedir(dirp));
}
time[0].tv_sec = (long)sbuf.st_atime;
time[0].tv_usec = 0L;
time[1].tv_sec = (long)ToUnixTime(cdate);
time[1].tv_usec = 0L;
TIMEOUT(rval = close(fd));
if (rval == -1) {
*Lisp_errno = errno; *Lisp_errno = errno;
return (NIL); return (NIL);
} }
TIMEOUT(rval = close(fd)); TIMEOUT(rval = utimes(file, time));
if (rval == -1) { if (rval != 0) {
*Lisp_errno = errno; *Lisp_errno = errno;
return (NIL); return (NIL);
} }
@@ -885,10 +918,10 @@ LispPTR DSK_getfilename(LispPTR *args)
* Recognizing a file on DSK device needs the version information. * Recognizing a file on DSK device needs the version information.
* We gather version information in a version array first. * We gather version information in a version array first.
*/ */
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname); ConcNameAndVersion(name, ver, aname);
if (get_old(dir, VA.files, aname, vname) == 0) return (NIL); if (get_old(dir, VersionArray, aname, vname) == 0) return (NIL);
if ((rval = true_name(aname)) == 0) return (NIL); if ((rval = true_name(aname)) == 0) return (NIL);
if (rval == -1) { if (rval == -1) {
@@ -925,10 +958,10 @@ LispPTR DSK_getfilename(LispPTR *args)
strcpy(vname, dir); strcpy(vname, dir);
dirp = 1; dirp = 1;
} else { } else {
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname); ConcNameAndVersion(name, ver, aname);
if (get_oldest(dir, VA.files, aname, vname) == 0) return (NIL); if (get_oldest(dir, VersionArray, aname, vname) == 0) return (NIL);
if ((rval = true_name(aname)) == 0) return (NIL); if ((rval = true_name(aname)) == 0) return (NIL);
if (rval == -1) { if (rval == -1) {
@@ -974,10 +1007,10 @@ LispPTR DSK_getfilename(LispPTR *args)
* Here, dir is an existing directory. We have to perform * Here, dir is an existing directory. We have to perform
* "new" recognition with the version information. * "new" recognition with the version information.
*/ */
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname); ConcNameAndVersion(name, ver, aname);
if (get_new(dir, VA.files, aname, vname) == 0) return (NIL); if (get_new(dir, VersionArray, aname, vname) == 0) return (NIL);
dirp = 0; dirp = 0;
} }
} }
@@ -1000,10 +1033,10 @@ LispPTR DSK_getfilename(LispPTR *args)
strcpy(vname, aname); strcpy(vname, aname);
dirp = 1; dirp = 1;
} else { } else {
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, aname); ConcNameAndVersion(name, ver, aname);
if (get_old_new(dir, VA.files, aname, vname) == 0) return (NIL); if (get_old_new(dir, VersionArray, aname, vname) == 0) return (NIL);
dirp = 0; dirp = 0;
} }
} }
@@ -1099,6 +1132,7 @@ LispPTR DSK_deletefile(LispPTR *args)
char file[MAXPATHLEN], fbuf[MAXPATHLEN], vless[MAXPATHLEN]; char file[MAXPATHLEN], fbuf[MAXPATHLEN], vless[MAXPATHLEN];
char dir[MAXPATHLEN], ver[VERSIONLEN]; char dir[MAXPATHLEN], ver[VERSIONLEN];
int rval, fatp; int rval, fatp;
FileName *varray;
#ifdef DOS #ifdef DOS
char drive[1], rawname[MAXNAMLEN]; char drive[1], rawname[MAXNAMLEN];
int extlen; /* len of extension, for making backup filename */ int extlen; /* len of extension, for making backup filename */
@@ -1126,9 +1160,10 @@ LispPTR DSK_deletefile(LispPTR *args)
#endif #endif
if (unpack_filename(file, dir, fbuf, ver, 1) == 0) return (NIL); if (unpack_filename(file, dir, fbuf, ver, 1) == 0) return (NIL);
if (get_version_array(dir, fbuf) == 0) return (NIL); if (get_version_array(dir, fbuf, VersionArray, &VArrayInfo) == 0) return (NIL);
varray = VersionArray;
if (NoFileP(VA.files)) if (NoFileP(varray))
return (NIL); /* return (NIL); /*
* If the specified file is deleted from * If the specified file is deleted from
* outside of Lisp during the last time * outside of Lisp during the last time
@@ -1143,9 +1178,9 @@ LispPTR DSK_deletefile(LispPTR *args)
*/ */
ConcNameAndVersion(fbuf, ver, file); ConcNameAndVersion(fbuf, ver, file);
if (get_oldest(dir, VA.files, file, fbuf) == 0) return (NIL); if (get_oldest(dir, varray, file, fbuf) == 0) return (NIL);
if (get_versionless(VA.files, vless, dir) == 0) { if (get_versionless(varray, vless, dir) == 0) {
/* /*
* There is no versionless file. All we have to do is to simply * There is no versionless file. All we have to do is to simply
* try to unlink the specified file. * try to unlink the specified file.
@@ -1164,7 +1199,7 @@ LispPTR DSK_deletefile(LispPTR *args)
* file is linked will destroy the consistency of the version status. * file is linked will destroy the consistency of the version status.
*/ */
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) return (NIL); if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
if (strcmp(file, vless) == 0 || strcmp(file, fbuf) == 0) { if (strcmp(file, vless) == 0 || strcmp(file, fbuf) == 0) {
if (*fbuf != '\0') { if (*fbuf != '\0') {
@@ -1185,12 +1220,12 @@ LispPTR DSK_deletefile(LispPTR *args)
/* /*
* Finally, we have to maintain the version status. * Finally, we have to maintain the version status.
*/ */
if (maintain_version(vless, 0) == 0) return (NIL); if (maintain_version(vless, (FileName *)NULL, 0) == 0) return (NIL);
return (ATOM_T); return (ATOM_T);
} else { } else {
/* /*
* Although the versionfile is specified, it is not linked * Although the versionfile is specified, it is not linked
* to any file in VA.files. We should not maintain the version * to any file in varray. We should not maintain the version
* status after deleting the versionless file, because * status after deleting the versionless file, because
* we cannot say whether the versionless file is actually under * we cannot say whether the versionless file is actually under
* control of the Medley DSK file system or not. * control of the Medley DSK file system or not.
@@ -1245,6 +1280,7 @@ LispPTR DSK_renamefile(LispPTR *args)
char dir[MAXPATHLEN], ver[VERSIONLEN]; char dir[MAXPATHLEN], ver[VERSIONLEN];
int rval, fatp; int rval, fatp;
int need_maintain_flg; int need_maintain_flg;
FileName *varray;
#ifdef DOS #ifdef DOS
char drive1[1], drive2[1]; char drive1[1], drive2[1];
int extlen1, extlen2; /* len of extension */ int extlen1, extlen2; /* len of extension */
@@ -1295,9 +1331,10 @@ LispPTR DSK_renamefile(LispPTR *args)
* We maintain the destination to handle the link damaged case correctly. * We maintain the destination to handle the link damaged case correctly.
*/ */
ConcDirAndName(dir, fbuf, dst); ConcDirAndName(dir, fbuf, dst);
if (maintain_version(dst, 0) == 0) return (NIL); if (maintain_version(dst, (FileName *)NULL, 0) == 0) return (NIL);
if (get_version_array(dir, fbuf) == 0) return (NIL); if (get_version_array(dir, fbuf, VersionArray, &VArrayInfo) == 0) return (NIL);
varray = VersionArray;
/* /*
* Although the file should have been recognized with "new" mode in Lisp * Although the file should have been recognized with "new" mode in Lisp
@@ -1306,7 +1343,7 @@ LispPTR DSK_renamefile(LispPTR *args)
*/ */
ConcNameAndVersion(fbuf, ver, dst); ConcNameAndVersion(fbuf, ver, dst);
if (get_new(dir, VA.files, dst, fbuf) == 0) return (NIL); if (get_new(dir, varray, dst, fbuf) == 0) return (NIL);
/* /*
* At this point, there are three cases for the destination. If there is * At this point, there are three cases for the destination. If there is
@@ -1316,9 +1353,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* "real" destination file is the file to which the versionless file is linked, * "real" destination file is the file to which the versionless file is linked,
* we have to unlink the versionless file. * we have to unlink the versionless file.
*/ */
if (!NoFileP(VA.files)) { if (!NoFileP(varray)) {
if (OnlyVersionlessP(VA.files)) { if (OnlyVersionlessP(varray)) {
get_versionless(VA.files, vless, dir); get_versionless(varray, vless, dir);
if (strcmp(dst, vless) != 0) { if (strcmp(dst, vless) != 0) {
ConcNameAndVersion(vless, "1", fbuf); ConcNameAndVersion(vless, "1", fbuf);
TIMEOUT(rval = rename(vless, fbuf)); TIMEOUT(rval = rename(vless, fbuf));
@@ -1332,8 +1369,8 @@ LispPTR DSK_renamefile(LispPTR *args)
* We are sure that the versionless file is linked to one of * We are sure that the versionless file is linked to one of
* the higher versioned file here. * the higher versioned file here.
*/ */
get_versionless(VA.files, vless, dir); get_versionless(varray, vless, dir);
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) { return (NIL); } if (check_vless_link(vless, varray, fbuf, &rval) == 0) { return (NIL); }
if (strcmp(dst, fbuf) == 0) { if (strcmp(dst, fbuf) == 0) {
TIMEOUT(rval = unlink(vless)); TIMEOUT(rval = unlink(vless));
if (rval == -1) { if (rval == -1) {
@@ -1345,9 +1382,9 @@ LispPTR DSK_renamefile(LispPTR *args)
} }
if (unpack_filename(src, dir, fbuf, ver, 1) == 0) return (NIL); if (unpack_filename(src, dir, fbuf, ver, 1) == 0) return (NIL);
if (get_version_array(dir, fbuf) == 0) return (NIL); if (get_version_array(dir, fbuf, varray, &VArrayInfo) == 0) return (NIL);
if (NoFileP(VA.files)) if (NoFileP(varray))
return (NIL); /* return (NIL); /*
* If the specified file is deleted from * If the specified file is deleted from
* outside of Lisp during the last time * outside of Lisp during the last time
@@ -1361,9 +1398,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* of it. * of it.
*/ */
ConcNameAndVersion(fbuf, ver, src); ConcNameAndVersion(fbuf, ver, src);
if (get_old(dir, VA.files, src, fbuf) == 0) return (NIL); if (get_old(dir, varray, src, fbuf) == 0) return (NIL);
if (get_versionless(VA.files, vless, dir) == 0) { if (get_versionless(varray, vless, dir) == 0) {
/* /*
* There is no versionless file. All we have to do is to simply * There is no versionless file. All we have to do is to simply
* try to rename the specified file. * try to rename the specified file.
@@ -1376,7 +1413,7 @@ LispPTR DSK_renamefile(LispPTR *args)
* versionless file is linked will destroy the consistency of the * versionless file is linked will destroy the consistency of the
* version status. * version status.
*/ */
if (check_vless_link(vless, VA.files, fbuf, &rval) == 0) return (NIL); if (check_vless_link(vless, varray, fbuf, &rval) == 0) return (NIL);
if (strcmp(src, vless) == 0 && *fbuf != '\0') { if (strcmp(src, vless) == 0 && *fbuf != '\0') {
/* /*
@@ -1421,9 +1458,9 @@ LispPTR DSK_renamefile(LispPTR *args)
* is on. * is on.
*/ */
if (maintain_version(dst, 0) == 0) return (NIL); if (maintain_version(dst, (FileName *)NULL, 0) == 0) return (NIL);
if (need_maintain_flg) { if (need_maintain_flg) {
if (maintain_version(src, 0) == 0) return (NIL); if (maintain_version(src, (FileName *)NULL, 0) == 0) return (NIL);
} }
return (ATOM_T); return (ATOM_T);
@@ -1621,9 +1658,9 @@ LispPTR COM_getfileinfo(LispPTR *args)
*/ */
strcpy(file, dir); strcpy(file, dir);
} else { } else {
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, file); ConcNameAndVersion(name, ver, file);
if (get_old(dir, VA.files, file, name) == 0) return (NIL); if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
} }
} }
@@ -1810,9 +1847,9 @@ LispPTR COM_setfileinfo(LispPTR *args)
if (dskp) { if (dskp) {
if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL); if (unpack_filename(file, dir, name, ver, 1) == 0) return (NIL);
if (true_name(dir) != -1) return (0); if (true_name(dir) != -1) return (0);
if (get_version_array(dir, name) == 0) return (NIL); if (get_version_array(dir, name, VersionArray, &VArrayInfo) == 0) return (NIL);
ConcNameAndVersion(name, ver, file); ConcNameAndVersion(name, ver, file);
if (get_old(dir, VA.files, file, name) == 0) return (NIL); if (get_old(dir, VersionArray, file, name) == 0) return (NIL);
} }
switch (args[1]) { switch (args[1]) {
@@ -2766,26 +2803,34 @@ static int make_directory(char *dir)
* and highest version number respectively. * and highest version number respectively.
* *
* Description: * Description:
* Finds the highest versioned entry in varray.
* *
* Preconditions: * Find the highest versioned entry in varray. Varray has to include at least
* Varray must include at least one versioned file, satisfying the condition: * one versioned file, that is varray has to satisfy (!NoFileP(varray) &&
* (!NoFileP(varray) && !OnlyVersionlessP(varray)) * !OnlyVersionlessP(varray)).
* Varray must be sorted from highest to lowest version *
*/ */
#ifdef DOS #ifdef DOS
#define FindHighestVersion(varray, mentry, max_no) \ #define FindHighestVersion(varray, mentry, max_no) \
do { \ do { \
(max_no) = varray[0].version_no; \ FileName *centry; \
(mentry) = &varray[0]; \ for (centry = varray, max_no = -1; centry->version_no != LASTVERSIONARRAY; centry++) { \
} while (0) if (centry->version_no > max_no) { \
max_no = centry->version_no; \
mentry = centry; \
} \
} \
} while (0)
#else #else
#define FindHighestVersion(varray, mentry, max_no) \ #define FindHighestVersion(varray, mentry, max_no) \
do { \ do { \
(max_no) = varray[0].version_no; \ FileName *centry; \
(mentry) = &varray[0]; \ for (centry = (varray), (max_no) = 0; centry->version_no != LASTVERSIONARRAY; centry++) { \
} while (0) if (centry->version_no > (max_no)) { \
(max_no) = centry->version_no; \
(mentry) = centry; \
} \
} \
} while (0)
#endif /* DOS */ #endif /* DOS */
/* /*
@@ -2872,19 +2917,6 @@ static int make_directory(char *dir)
} \ } \
} while (0) } while (0)
/*
* comparison function for qsort to sort file versions in descending order
*/
static int compare_file_versions(const void *a, const void *b)
{
unsigned a_ver = ((FileName *)a)->version_no;
unsigned b_ver = ((FileName *)b)->version_no;
if (a_ver > b_ver) return (-1);
if (a_ver < b_ver) return (1);
return (0);
}
/************************************************************************/ /************************************************************************/
/* */ /* */
/* g e t _ v e r s i o n _ a r r a y */ /* g e t _ v e r s i o n _ a r r a y */
@@ -2896,6 +2928,7 @@ static int compare_file_versions(const void *a, const void *b)
/* guarantee that the directory exists. */ /* guarantee that the directory exists. */
/* file File name, optionally including a (unix) version */ /* file File name, optionally including a (unix) version */
/* varray Place to put the version array entries. */ /* varray Place to put the version array entries. */
/* cache Place to hold info about the new version array */
/* */ /* */
/* Read thru DIR and gather all files that match FILE into */ /* Read thru DIR and gather all files that match FILE into */
/* VARRAY. DIR's case must match existing directory's, but */ /* VARRAY. DIR's case must match existing directory's, but */
@@ -2905,15 +2938,15 @@ static int compare_file_versions(const void *a, const void *b)
/* */ /* */
/************************************************************************/ /************************************************************************/
static int get_version_array(char *dir, char *file) static int get_version_array(char *dir, char *file, FileName *varray, CurrentVArray *cache)
{ {
#ifdef DOS #ifdef DOS
/* DOS version-array builder */
char lcased_file[MAXPATHLEN]; char lcased_file[MAXPATHLEN];
char old_file[MAXPATHLEN]; char old_file[MAXPATHLEN];
char name[MAXNAMLEN]; char name[MAXNAMLEN];
char ver[VERSIONLEN]; char ver[VERSIONLEN];
int varray_index = 0; FileName *svarray;
struct find_t dirp; struct find_t dirp;
struct direct *dp; struct direct *dp;
int rval, drive = 0, isslash = 0; int rval, drive = 0, isslash = 0;
@@ -2954,12 +2987,14 @@ static int get_version_array(char *dir, char *file)
make_old_version(old_file, lcased_file); make_old_version(old_file, lcased_file);
svarray = varray;
TIMEOUT(res = _dos_findfirst(old_file, _A_NORMAL | _A_SUBDIR, &dirp)); TIMEOUT(res = _dos_findfirst(old_file, _A_NORMAL | _A_SUBDIR, &dirp));
if (res == 0) { if (res == 0) {
strcpy(name, dirp.name); strcpy(name, dirp.name);
strcpy(VA.files[varray_index].name, name); strcpy(svarray->name, name);
VA.files[varray_index].version_no = 0; svarray->version_no = 0;
varray_index++; svarray++;
} }
/*******************************/ /*******************************/
@@ -2978,48 +3013,34 @@ static int get_version_array(char *dir, char *file)
separate_version(name, ver, 1); separate_version(name, ver, 1);
DOWNCASE(name); DOWNCASE(name);
strcpy(VA.files[varray_index].name, dirp.name); strcpy(svarray->name, dirp.name);
if (*ver == '\0') { if (*ver == '\0') {
/* Versionless file */ /* Versionless file */
VA.files[varray_index].version_no = 1; svarray->version_no = 1;
} else { } else {
/* /*
* separate_version guarantees ver is a numeric string. * separator_version guarantees ver is a numeric
* string.
*/ */
VA.files[varray_index].version_no = strtoul(ver, (char **)NULL, 10); svarray->version_no = strtoul(ver, (char **)NULL, 10);
}
varray_index++;
if (varray_index >= VERSIONARRAYMAXLENGTH) {
*Lisp_errno = EIO;
return (0);
} else if (varray_index >= VA.allocated) {
VA.allocated += VERSIONARRAYCHUNKLENGTH;
VA.files = realloc(VA.files,
sizeof(*VA.files) * VA.allocated);
} }
svarray++;
} }
/* /*
* The last entry of VA.files is indicated by setting LASTVERSIONARRAY into * The last entry of varray is indicated by setting LASTVERSIONARRAY into
* version_no field. * version_no field.
*/ */
VA.files[varray_index].version_no = LASTVERSIONARRAY; svarray->version_no = LASTVERSIONARRAY;
VA.lastUsed = varray_index;
/* /*
* If any files have been stored in VA.files, we store the name * If more than one files have been stored in varray, we store the name
* without version in the last marker entry. * without version in the last marker entry.
*
* NOTE: sorting "varray_index" entries will leave the LASTVERSIONARRAY item
* untouched by the sort, which is intentional.
*/ */
if (!NoFileP(VA.files)) { if (!NoFileP(varray)) {
strcpy(name, VA.files[0].name); strcpy(name, varray->name);
separate_version(name, ver, 1); separate_version(name, ver, 1);
strcpy(VA.files[varray_index].name, name); strcpy(svarray->name, name);
if (varray_index > 1) {
qsort(VA.files, varray_index, sizeof(*VA.files), compare_file_versions);
}
} }
return (1); return (1);
@@ -3029,11 +3050,13 @@ static int get_version_array(char *dir, char *file)
char lcased_file[MAXNAMLEN]; char lcased_file[MAXNAMLEN];
char name[MAXNAMLEN]; char name[MAXNAMLEN];
char ver[VERSIONLEN]; char ver[VERSIONLEN];
int varray_index = 0; FileName *svarray;
DIR *dirp; DIR *dirp;
struct dirent *dp; struct dirent *dp;
/* Used in commented out code below:
int rval; int rval;
struct stat sbuf; struct stat sbuf;
*/
/* /*
* First of all, prepare a lower cased file name for the case insensitive * First of all, prepare a lower cased file name for the case insensitive
@@ -3043,27 +3066,30 @@ static int get_version_array(char *dir, char *file)
separate_version(lcased_file, ver, 1); separate_version(lcased_file, ver, 1);
DOWNCASE(lcased_file); DOWNCASE(lcased_file);
/* Cache for VA.files reinstated using nanosecond timestamps which many /*
* systems provide for directory modification times. TIMEOUT(rval = stat(dir, &sbuf));
* POSIX defines the struct stat field containing the nanosecond resolution if (rval == -1) {
* modification time as "st_mtim". See "version.h" for accomodations *Lisp_errno = errno;
* for systems that call it something else (e.g., macOS st_mtimespec). return(0);
}
*/
/*
* If the cached version array is still valid, we can return immediately.
*/ */
TIMEOUT(rval = stat(dir, &sbuf)); /*
if (rval == -1) { * Cache mechanism is not used now, because of the bug of Sun OS.
*Lisp_errno = errno; * Sometimes just after unlinking a file on a directory, the st_mtime
return(0); * of the directory does not change. This will make Maiko believe
} * cached version array is still valid, although it is already invalid.
if (0 == strcmp(lcased_file, VA.name) && * sync(2) has no effect on such case.
sbuf.st_mtim.tv_sec == VA.lastMTime.tv_sec && */
sbuf.st_mtim.tv_nsec == VA.lastMTime.tv_nsec) {
return (1);
} else {
VA.lastMTime = sbuf.st_mtim;
strcpy(VA.name, lcased_file);
}
/*
if ((sbuf.st_mtime == cache->mtime) && strcmp(dir, cache->path) == 0
&& strcmp(lcased_file, cache->file) == 0) return(1);
*/
errno = 0; errno = 0;
TIMEOUT0(dirp = opendir(dir)); TIMEOUT0(dirp = opendir(dir));
if (dirp == NULL) { if (dirp == NULL) {
@@ -3071,13 +3097,7 @@ static int get_version_array(char *dir, char *file)
return (0); return (0);
} }
/* There is no initialization call for the local file system, so we for (S_TOUT(dp = readdir(dirp)), svarray = varray; dp != NULL || errno == EINTR;
* must ensure there is initial storage allocated for the version array */
if (VA.files == NULL) {
VA.files = calloc(VERSIONARRAYCHUNKLENGTH, sizeof(*VA.files));
VA.allocated = VERSIONARRAYCHUNKLENGTH;
}
for (S_TOUT(dp = readdir(dirp)); dp != NULL || errno == EINTR;
errno = 0, S_TOUT(dp = readdir(dirp))) errno = 0, S_TOUT(dp = readdir(dirp)))
if (dp) { if (dp) {
strcpy(name, dp->d_name); strcpy(name, dp->d_name);
@@ -3087,50 +3107,44 @@ static int get_version_array(char *dir, char *file)
/* /*
* This file can be regarded as a same file in Lisp sense. * This file can be regarded as a same file in Lisp sense.
*/ */
strcpy(VA.files[varray_index].name, dp->d_name); strcpy(svarray->name, dp->d_name);
if (*ver == '\0') { if (*ver == '\0') {
/* Versionless file */ /* Versionless file */
VA.files[varray_index].version_no = 0; svarray->version_no = 0;
} else { } else {
/* /*
* separate_version guarantees ver is a numeric string. * separator_version guarantees ver is a numeric
* string.
*/ */
VA.files[varray_index].version_no = strtoul(ver, (char **)NULL, 10); svarray->version_no = strtoul(ver, (char **)NULL, 10);
}
varray_index++;
if (varray_index >= VERSIONARRAYMAXLENGTH) {
*Lisp_errno = EIO;
return (0);
} else if (varray_index >= VA.allocated) {
VA.allocated += VERSIONARRAYCHUNKLENGTH;
VA.files = realloc(VA.files,
sizeof(*VA.files) * VA.allocated);
} }
svarray++;
} }
} }
/* /*
* The last entry of varray is indicated by setting LASTVERSIONARRAY into * The last entry of varray is indicated by setting LASTVERSIONARRAY into
* version_no field. * version_no field.
*/ */
VA.files[varray_index].version_no = LASTVERSIONARRAY; svarray->version_no = LASTVERSIONARRAY;
VA.lastUsed = varray_index;
/* /*
* If any files have been stored in VA.files, we store the name * If more than one files have been stored in varray, we store the name
* without version in the last marker entry. * without version in the last marker entry.
*
* NOTE: sorting "varray_index" entries will leave the LASTVERSIONARRAY item
* untouched by the sort, which is intentional.
*/ */
if (!NoFileP(VA.files)) { if (!NoFileP(varray)) {
strcpy(name, VA.files[0].name); strcpy(name, varray->name);
separate_version(name, ver, 1); separate_version(name, ver, 1);
strcpy(VA.files[varray_index].name, name); strcpy(svarray->name, name);
if (varray_index > 1) {
qsort(VA.files, varray_index, sizeof(*VA.files), compare_file_versions);
}
} }
/*
* Update cache information.
*/
/*
strcpy(cache->path, dir);
strcpy(cache->file, lcased_file);
cache->mtime = sbuf.st_mtime;
*/
TIMEOUT(closedir(dirp)); TIMEOUT(closedir(dirp));
return (1); return (1);
#endif /* DOS */ #endif /* DOS */
@@ -3162,7 +3176,7 @@ static int get_version_array(char *dir, char *file)
* to maintain the directory on which a file is being created. * to maintain the directory on which a file is being created.
*/ */
static int maintain_version(char *file, int forcep) static int maintain_version(char *file, FileName *varray, int forcep)
{ {
char dir[MAXPATHLEN], fname[MAXNAMLEN], ver[VERSIONLEN]; char dir[MAXPATHLEN], fname[MAXNAMLEN], ver[VERSIONLEN];
char old_file[MAXPATHLEN], vless[MAXPATHLEN]; char old_file[MAXPATHLEN], vless[MAXPATHLEN];
@@ -3170,14 +3184,17 @@ static int maintain_version(char *file, int forcep)
int rval, max_no; int rval, max_no;
FileName *entry; FileName *entry;
if (unpack_filename(file, dir, fname, ver, 1) == 0) return (0); if (varray == (FileName *)NULL) {
/* if (unpack_filename(file, dir, fname, ver, 1) == 0) return (0);
* We have to make sure that dir is the existing directory. /*
*/ * We have to make sure that dir is the existing directory.
if (true_name(dir) != -1) return (0); */
if (get_version_array(dir, fname) == 0) return (0); if (true_name(dir) != -1) return (0);
if (get_version_array(dir, fname, VersionArray, &VArrayInfo) == 0) return (0);
varray = VersionArray;
}
if (NoFileP(VA.files)) { if (NoFileP(varray)) {
/* /*
* We don't need to care about such case that there is no such file * We don't need to care about such case that there is no such file
* or an only versionless file exists. * or an only versionless file exists.
@@ -3185,14 +3202,14 @@ static int maintain_version(char *file, int forcep)
return (1); return (1);
} }
if (OnlyVersionlessP(VA.files)) { if (OnlyVersionlessP(varray)) {
if (forcep) { if (forcep) {
/* /*
* If forcep, we link the versionless file to the version * If forcep, we link the versionless file to the version
* 1 file. * 1 file.
*/ */
#ifndef DOS #ifndef DOS
get_versionless(VA.files, vless, dir); get_versionless(varray, vless, dir);
ConcNameAndVersion(vless, "1", fname); ConcNameAndVersion(vless, "1", fname);
TIMEOUT(rval = link(vless, fname)); TIMEOUT(rval = link(vless, fname));
if (rval == -1) { if (rval == -1) {
@@ -3209,13 +3226,13 @@ static int maintain_version(char *file, int forcep)
* exists. Thus, FindHighestVersion works fine from now on. * exists. Thus, FindHighestVersion works fine from now on.
*/ */
if (get_versionless(VA.files, vless, dir) == 0) { if (get_versionless(varray, vless, dir) == 0) {
/* /*
* There is not a versionless file, but at least one versioned file. * There is not a versionless file, but at least one versioned file.
* Thus, the thing we have to do is to link a versionless file * Thus, the thing we have to do is to link a versionless file
* to the existing highest versioned file. * to the existing highest versioned file.
*/ */
FindHighestVersion(VA.files, entry, max_no); FindHighestVersion(varray, entry, max_no);
ConcDirAndName(dir, entry->name, old_file); ConcDirAndName(dir, entry->name, old_file);
/* /*
* The versionless file should have the same case name as the old * The versionless file should have the same case name as the old
@@ -3234,15 +3251,15 @@ static int maintain_version(char *file, int forcep)
return (1); return (1);
} }
if (check_vless_link(vless, VA.files, old_file, &highest_p) == 0) return (0); if (check_vless_link(vless, varray, old_file, &highest_p) == 0) return (0);
if (*old_file == '\0') { if (*old_file == '\0') {
/* /*
* The versionless file is not linked to any file in VA.files. * The versionless file is not linked to any file in varray.
* Thus, we have to link the versionless file to the file which * Thus, we have to link the versionless file to the file which
* is versioned one higher than the existing highest version. * is versioned one higher than the existing highest version.
*/ */
FindHighestVersion(VA.files, entry, max_no); FindHighestVersion(varray, entry, max_no);
sprintf(ver, "%u", max_no + 1); sprintf(ver, "%u", max_no + 1);
/* /*
* The old file should have the same case name as the versionless * The old file should have the same case name as the versionless
@@ -3267,7 +3284,7 @@ static int maintain_version(char *file, int forcep)
return (1); return (1);
} else { } else {
/* /*
* Although the versionless file is linked to a file in VA.files, * Although the versionless file is linked to a file in varray,
* the file is not the highest versioned file. We have to unlink * the file is not the highest versioned file. We have to unlink
* the wrongly linked versionless file, and link the highest versioned * the wrongly linked versionless file, and link the highest versioned
* file to a versionless file. * file to a versionless file.
@@ -3277,7 +3294,7 @@ static int maintain_version(char *file, int forcep)
*Lisp_errno = errno; *Lisp_errno = errno;
return (0); return (0);
} }
FindHighestVersion(VA.files, entry, max_no); FindHighestVersion(varray, entry, max_no);
ConcDirAndName(dir, entry->name, old_file); ConcDirAndName(dir, entry->name, old_file);
/* /*
* The versionless file should have the same case name as the old * The versionless file should have the same case name as the old

View File

@@ -59,8 +59,8 @@ void make_dsp_instance(DspInterface dsp, char *lispbitmap, int width_hint, int h
} else if (VGA_p()) { } else if (VGA_p()) {
VGA_init(dsp, 0, 0, 0, depth_hint); VGA_init(dsp, 0, 0, 0, depth_hint);
} else { /* Can't set *ANY* video mode! */ } else { /* Can't set *ANY* video mode! */
(void)(void)fprintf(stderr, "No portable graphics mode supported by this host.\n"); (void)fprintf(stderr, "No portable graphics mode supported by this host.\n");
(void)(void)fprintf(stderr, "\n-Expected VESA or VGA.\n"); (void)fprintf(stderr, "\n-Expected VESA or VGA.\n");
exit(1); exit(1);
} }
break; break;
@@ -69,7 +69,7 @@ void make_dsp_instance(DspInterface dsp, char *lispbitmap, int width_hint, int h
#elif XWINDOW #elif XWINDOW
/* lispbitmap is 0 when we call X_init the first time. */ /* lispbitmap is 0 when we call X_init the first time. */
if (X_init(dsp, 0, LispDisplayRequestedWidth, LispDisplayRequestedHeight, depth_hint) == NULL) { if (X_init(dsp, 0, LispDisplayRequestedWidth, LispDisplayRequestedHeight, depth_hint) == NULL) {
(void)fprintf(stderr, "Can't open display."); fprintf(stderr, "Can't open display.");
exit(-1); exit(-1);
} }
#endif /* DOS | XWINDOW */ #endif /* DOS | XWINDOW */
@@ -87,7 +87,7 @@ void GenericReturnVoid(void *d) {(void)d; return; }
void GenericPanic(void *d) { void GenericPanic(void *d) {
(void)d; (void)d;
TPRINT(("Enter GenericPanic\n")); TPRINT(("Enter GenericPanic\n"));
(void)fprintf(stderr, "Panic! Call to uninitialized display slot!"); fprintf(stderr, "Panic! Call to uninitialized display slot!");
exit(0); exit(0);
} }

View File

@@ -45,7 +45,7 @@ LispPTR N_OP_findkey(LispPTR tos, int byte) {
#endif #endif
if (CURRENTFX->alink & 1) { /* slow case */ if (CURRENTFX->alink & 1) { /* slow case */
find_end = NativeAligned2FromStackOffset(CURRENTFX->blink - 4); find_end = (DLword *)NativeAligned2FromLAddr(STK_OFFSET | (CURRENTFX->blink - 4));
} else { /* Fast cae */ } else { /* Fast cae */
find_end = ((DLword *)CURRENTFX) - 2 - 4; find_end = ((DLword *)CURRENTFX) - 2 - 4;
} }

View File

@@ -15,7 +15,6 @@
#include "emlglob.h" #include "emlglob.h"
#include "fvardefs.h" // for N_OP_fvar_, N_OP_fvarn, N_OP_stkscan, nati... #include "fvardefs.h" // for N_OP_fvar_, N_OP_fvarn, N_OP_stkscan, nati...
#include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF #include "gcdata.h" // for GCLOOKUP, ADDREF, DELREF
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispmap.h" // for ATOMS_HI, STK_HI #include "lispmap.h" // for ATOMS_HI, STK_HI
#include "lspglob.h" // for Stackspace #include "lspglob.h" // for Stackspace
#include "lsptypes.h" // for DLword, LispPTR, GETBASEWORD, state, FRAME... #include "lsptypes.h" // for DLword, LispPTR, GETBASEWORD, state, FRAME...

View File

@@ -12,7 +12,6 @@
#include <stdio.h> // for printf #include <stdio.h> // for printf
#include "emlglob.h" #include "emlglob.h"
#include "gcdata.h" // for GCLOOKUPV #include "gcdata.h" // for GCLOOKUPV
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcdefs.h" // for OP_gcref #include "gcdefs.h" // for OP_gcref
#include "lspglob.h" #include "lspglob.h"
#include "lsptypes.h" // for state, ByteCode, PC, TopOfStack, Get_code_... #include "lsptypes.h" // for state, ByteCode, PC, TopOfStack, Get_code_...

View File

@@ -35,7 +35,6 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "gccodedefs.h" // for code_block_size, reclaimcodeblock #include "gccodedefs.h" // for code_block_size, reclaimcodeblock
#include "gcdata.h" // for REC_GCLOOKUP, DELREF, ADDREF #include "gcdata.h" // for REC_GCLOOKUP, DELREF, ADDREF
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lspglob.h" // for Deleted_Implicit_Hash_Slot_word, UFNTable #include "lspglob.h" // for Deleted_Implicit_Hash_Slot_word, UFNTable
#include "lsptypes.h" // for LispPTR, NIL, UFN, Get_code_BYTE, POINTERMASK #include "lsptypes.h" // for LispPTR, NIL, UFN, Get_code_BYTE, POINTERMASK
#include "stack.h" // for fnhead #include "stack.h" // for fnhead

View File

@@ -49,7 +49,6 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "gccodedefs.h" // for reclaimcodeblock #include "gccodedefs.h" // for reclaimcodeblock
#include "gcdata.h" // for DELREF, REC_GCLOOKUP #include "gcdata.h" // for DELREF, REC_GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcfinaldefs.h" // for arrayblockmerger, checkarrayblock, deleteblock #include "gcfinaldefs.h" // for arrayblockmerger, checkarrayblock, deleteblock
#include "lispemul.h" // for LispPTR, NIL, T, POINTERMASK, DLword, ATOM_T #include "lispemul.h" // for LispPTR, NIL, T, POINTERMASK, DLword, ATOM_T
#include "llstkdefs.h" // for decusecount68k #include "llstkdefs.h" // for decusecount68k
@@ -552,15 +551,15 @@ void printarrayblock(LispPTR base) {
printf(" Length: %d cells.\n\n", bbase->arlen); printf(" Length: %d cells.\n\n", bbase->arlen);
addr = ((LispPTR *)bbase) - 20; addr = ((LispPTR *)bbase) - 20;
for (; addr < (LispPTR *)bbase; addr++) printf("%16p %8x\n", (void *)addr, *addr); for (; addr < (LispPTR *)bbase; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf("%16p %8x <- array header\n", (void *)addr, *addr); printf("%p %8x <- array header\n", (void *)addr, *addr);
addr++; addr++;
for (; addr < (LispPTR *)bbase + 20; addr++) printf("%16p %8x\n", (void *)addr, *addr); for (; addr < (LispPTR *)bbase + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf(". . .\n"); printf(". . .\n");
addr = ((LispPTR *)btrailer) - 20; addr = ((LispPTR *)btrailer) - 20;
for (; addr < (LispPTR *)btrailer; addr++) printf("%16p %8x\n", (void *)addr, *addr); for (; addr < (LispPTR *)btrailer; addr++) printf("%p %8x\n", (void *)addr, *addr);
printf("%16p %8x <- array trailer\n", (void *)addr, *addr); printf("%p %8x <- array trailer\n", (void *)addr, *addr);
addr++; addr++;
for (; addr < (LispPTR *)btrailer + 20; addr++) printf("%16p %8x\n", (void *)addr, *addr); for (; addr < (LispPTR *)btrailer + 20; addr++) printf("%p %8x\n", (void *)addr, *addr);
} }

View File

@@ -253,7 +253,7 @@ void enter_big_reference_count(LispPTR ptr) {
/* */ /* */
/************************************************************************/ /************************************************************************/
void modify_big_reference_count(GCENTRY *entry, DLword casep, LispPTR ptr) { void modify_big_reference_count(LispPTR *entry, DLword casep, LispPTR ptr) {
struct gc_ovfl *oventry; struct gc_ovfl *oventry;
LispPTR tmp; LispPTR tmp;

View File

@@ -39,7 +39,6 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "emlglob.h" #include "emlglob.h"
#include "gcdata.h" // for GCENTRY, REC_GCLOOKUP, STKREF, hashentry #include "gcdata.h" // for GCENTRY, REC_GCLOOKUP, STKREF, hashentry
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcmain3defs.h" // for gcmapscan, gcmapunscan, gcscanstack #include "gcmain3defs.h" // for gcmapscan, gcmapunscan, gcscanstack
#include "gcrcelldefs.h" // for gcreccell #include "gcrcelldefs.h" // for gcreccell
#include "gcscandefs.h" // for gcscan1, gcscan2 #include "gcscandefs.h" // for gcscan1, gcscan2

View File

@@ -31,7 +31,6 @@
#include "arith.h" // for GetSmalldata #include "arith.h" // for GetSmalldata
#include "gcdata.h" // for htoverflow, REC_GCLOOKUP #include "gcdata.h" // for htoverflow, REC_GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcoflowdefs.h" // for gc_handleoverflow, gcmaptable #include "gcoflowdefs.h" // for gc_handleoverflow, gcmaptable
#include "gcrdefs.h" // for doreclaim #include "gcrdefs.h" // for doreclaim
#include "lispemul.h" // for NIL, DLword, LispPTR #include "lispemul.h" // for NIL, DLword, LispPTR

View File

@@ -71,7 +71,6 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "gccodedefs.h" // for reclaimcodeblock #include "gccodedefs.h" // for reclaimcodeblock
#include "gcdata.h" // for DELREF, REC_GCLOOKUPV, ADDREF, REC_GCLOOKUP #include "gcdata.h" // for DELREF, REC_GCLOOKUPV, ADDREF, REC_GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcfinaldefs.h" // for reclaimarrayblock, reclaimstackp, releasing... #include "gcfinaldefs.h" // for reclaimarrayblock, reclaimstackp, releasing...
#include "gcrcelldefs.h" // for freelistcell, gcreccell #include "gcrcelldefs.h" // for freelistcell, gcreccell
#include "lispemul.h" // for LispPTR, ConsCell, NIL, POINTERMASK, DLword #include "lispemul.h" // for LispPTR, ConsCell, NIL, POINTERMASK, DLword

View File

@@ -15,7 +15,6 @@
#include "dbprint.h" // for DEBUGGER #include "dbprint.h" // for DEBUGGER
#include "emlglob.h" #include "emlglob.h"
#include "gcdata.h" // for FRPLPTR #include "gcdata.h" // for FRPLPTR
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gvar2defs.h" // for N_OP_gvar_, N_OP_rplptr #include "gvar2defs.h" // for N_OP_gvar_, N_OP_rplptr
#include "lispemul.h" // for LispPTR, DLword, NEWATOM_VALUE_OFFSET, NEWAT... #include "lispemul.h" // for LispPTR, DLword, NEWATOM_VALUE_OFFSET, NEWAT...
#include "lspglob.h" // for AtomSpace #include "lspglob.h" // for AtomSpace

View File

@@ -26,7 +26,6 @@
#include <sys/time.h> #include <sys/time.h>
#include <sys/types.h> #include <sys/types.h>
#include <unistd.h> #include <unistd.h>
/* if using inet_ntop you must #include <arpa/inet.h> */
#endif /* DOS */ #endif /* DOS */
#if (defined(OS5) || defined(__CYGWIN__)) && !defined(O_ASYNC) #if (defined(OS5) || defined(__CYGWIN__)) && !defined(O_ASYNC)
@@ -94,8 +93,7 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
LispStringToCString(nameConn, namestring, 100); LispStringToCString(nameConn, namestring, 100);
host = gethostbyname(namestring); host = gethostbyname(namestring);
if (!host) return (NIL); if (!host) return (NIL);
res = ntohl(*(in_addr_t *)host->h_addr); N_ARITH_SWITCH(ntohl(*(long *)host->h_addr));
N_ARITH_SWITCH(res);
break; break;
case TCPservicelookup: case TCPservicelookup:
@@ -109,20 +107,14 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
addr_class = LispNumToCInt(nameConn); addr_class = LispNumToCInt(nameConn);
protocol = LispNumToCInt(proto); protocol = LispNumToCInt(proto);
result = socket(addr_class, protocol, 0); result = socket(addr_class, protocol, 0);
#ifndef MAIKO_OS_HAIKU
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);
#else
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#endif
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid()); fcntl(result, F_SETOWN, getpid());
#endif
return (GetSmallp(result)); return (GetSmallp(result));
case TCPconnect: /* args: hostname or (fixp)address, socket# */ case TCPconnect: /* args: hostname or (fixp)address, socket# */
memset(&farend, 0, sizeof farend); memset(&farend, 0, sizeof farend);
N_GETNUMBER(nameConn, res, string_host); N_GETNUMBER(nameConn, res, string_host);
farend.sin_addr.s_addr = htonl(res); farend.sin_addr.s_addr = htons(res);
goto host_ok; goto host_ok;
string_host: string_host:
LispStringToCString(nameConn, namestring, 100); LispStringToCString(nameConn, namestring, 100);
@@ -139,9 +131,7 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
return (NIL); return (NIL);
} }
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid()); fcntl(result, F_SETOWN, getpid());
#endif
return (GetSmallp(result)); return (GetSmallp(result));
@@ -207,20 +197,13 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
sigset_t signals; sigset_t signals;
sigemptyset(&signals); sigemptyset(&signals);
#ifndef MAIKO_OS_HAIKU
sigaddset(&signals, SIGIO); sigaddset(&signals, SIGIO);
#endif
sigprocmask(SIG_BLOCK, &signals, NULL); sigprocmask(SIG_BLOCK, &signals, NULL);
#ifndef MAIKO_OS_HAIKU
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);
#else fcntl(result, F_SETOWN, getpid());
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#endif
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid());
#endif
if (listen(result, 5) == -1) { if (listen(result, 5) == -1) {
perror("TCP Listen"); perror("TCP Listen");
close(result); close(result);
@@ -242,9 +225,8 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
return (NIL); return (NIL);
} }
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid()); fcntl(result, F_SETOWN, getpid());
#endif
return (GetSmallp(result)); return (GetSmallp(result));
case INETpeername: /* socket#, buffer for name string */ case INETpeername: /* socket#, buffer for name string */
@@ -277,14 +259,9 @@ LispPTR subr_TCP_ops(int op, LispPTR nameConn, LispPTR proto, LispPTR length, Li
close(result); close(result);
return (NIL); return (NIL);
} }
#ifndef MAIKO_OS_HAIKU
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK); fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_ASYNC | O_NONBLOCK);
#else
fcntl(result, F_SETFL, fcntl(result, F_GETFL, 0) | O_NONBLOCK);
#endif
#ifdef F_SETOWN
fcntl(result, F_SETOWN, getpid()); fcntl(result, F_SETOWN, getpid());
#endif
FD_SET(result, &LispIOFds); /* so we get interrupts */ FD_SET(result, &LispIOFds); /* so we get interrupts */
FD_SET(result, &LispReadFds); FD_SET(result, &LispReadFds);
DBPRINT(("LispIOFds = %p\n", (void *)&LispIOFds)); DBPRINT(("LispIOFds = %p\n", (void *)&LispIOFds));

View File

@@ -137,7 +137,7 @@ void clear_display(void) {
#else /* COLOR */ #else /* COLOR */
void clear_display(void) { void clear_display(void) {
DLword *word; short *word;
int w, h; int w, h;
if (MonoOrColor == MONO_SCREEN) { if (MonoOrColor == MONO_SCREEN) {
#ifndef DISPLAYBUFFER #ifndef DISPLAYBUFFER
@@ -150,7 +150,7 @@ void clear_display(void) {
0); 0);
#endif /* DISPLAYBUFFER */ #endif /* DISPLAYBUFFER */
} else { /* MonoOrColo is COLOR_SCREEN */ } else { /* MonoOrColo is COLOR_SCREEN */
word = ColorDisplayRegion68k; word = (short *)ColorDisplayRegion68k;
for (h = displayheight; (h--);) { for (h = displayheight; (h--);) {
for (w = DisplayRasterWidth * 8; (w--);) { *word++ = 0; } for (w = DisplayRasterWidth * 8; (w--);) { *word++ = 0; }
} /* end for(h) */ } /* end for(h) */

View File

@@ -34,7 +34,6 @@
#include "etherdefs.h" // for init_ifpage_ether #include "etherdefs.h" // for init_ifpage_ether
#include "gcarraydefs.h" // for get_package_atom #include "gcarraydefs.h" // for get_package_atom
#include "gcdata.h" // for ADDREF, GCLOOKUP #include "gcdata.h" // for ADDREF, GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO #include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO
#include "initsoutdefs.h" // for build_lisp_map, fixp_value, init_for_bitblt #include "initsoutdefs.h" // for build_lisp_map, fixp_value, init_for_bitblt
#include "iopage.h" // for IOPAGE #include "iopage.h" // for IOPAGE
@@ -125,7 +124,7 @@ void init_ifpage(unsigned sysout_size) {
new_lastvmem = (sysout_size * PAGES_IN_MBYTE) - 1; new_lastvmem = (sysout_size * PAGES_IN_MBYTE) - 1;
if ((!Storage_expanded) && (InterfacePage->dllastvmempage != new_lastvmem)) { if ((!Storage_expanded) && (InterfacePage->dllastvmempage != new_lastvmem)) {
(void)fprintf(stderr, "You can't expand VMEM\n"); fprintf(stderr, "You can't expand VMEM\n");
exit(-1); exit(-1);
} else { /* Set value which will be set to \\LASTVMEMFILEPAGE in LISP */ } else { /* Set value which will be set to \\LASTVMEMFILEPAGE in LISP */
InterfacePage->dllastvmempage = new_lastvmem; InterfacePage->dllastvmempage = new_lastvmem;
@@ -141,9 +140,9 @@ void init_ifpage(unsigned sysout_size) {
#endif /* BIGVM */ #endif /* BIGVM */
/* unfortunately, Lisp only looks at a 16 bit serial number */ /* unfortunately, Lisp only looks at a 16 bit serial number */
#if !defined(DOS) && !defined(MAIKO_OS_HAIKU) #ifndef DOS
InterfacePage->serialnumber = 0xffff & gethostid(); InterfacePage->serialnumber = 0xffff & gethostid();
#endif /* DOS MAIKO_OS_HAIKU */ #endif /* DOS */
/* get user name and stuff into vmem; this is the VMEM buffer; /* get user name and stuff into vmem; this is the VMEM buffer;
This is a BCPL string -- it starts with a length count. C strings This is a BCPL string -- it starts with a length count. C strings

View File

@@ -93,7 +93,7 @@ int main(int argc, char *argv[]) {
for (i = 1; i < argc; i++) { for (i = 1; i < argc; i++) {
if ((strcmp(argv[i], "-d") == 0) || (strcmp(argv[i], "-display") == 0)) { if ((strcmp(argv[i], "-d") == 0) || (strcmp(argv[i], "-display") == 0)) {
if (i == argc - 1) { if (i == argc - 1) {
(void)fprintf(stderr, "Missing argument to -display option.\n"); fprintf(stderr, "Missing argument to -display option.\n");
exit(1); exit(1);
} }
displayName = argv[++i]; displayName = argv[++i];
@@ -138,7 +138,7 @@ int main(int argc, char *argv[]) {
filetorun = LDEX; filetorun = LDEX;
goto run; goto run;
} else { } else {
(void)fprintf(stderr, "Unable to open X11 display %s\n", fprintf(stderr, "Unable to open X11 display %s\n",
displayName ? displayName : "from DISPLAY"); displayName ? displayName : "from DISPLAY");
exit(1); exit(1);
} }
@@ -147,7 +147,7 @@ int main(int argc, char *argv[]) {
#ifdef USESUNSCREEN #ifdef USESUNSCREEN
if ((FrameBufferFd = open("/dev/fb", O_RDWR)) < 0) { if ((FrameBufferFd = open("/dev/fb", O_RDWR)) < 0) {
(void)fprintf(stderr, "lde: can't open FrameBuffer\n"); fprintf(stderr, "lde: can't open FrameBuffer\n");
exit(1); exit(1);
} }
if (ioctl(FrameBufferFd, FBIOGTYPE, &my_screen) < 0) { if (ioctl(FrameBufferFd, FBIOGTYPE, &my_screen) < 0) {
@@ -187,7 +187,7 @@ int main(int argc, char *argv[]) {
run: run:
if (filetorun == NULL) { if (filetorun == NULL) {
(void)fprintf(stderr, "Unable to determine what display program to run.\n"); fprintf(stderr, "Unable to determine what display program to run.\n");
exit(1); exit(1);
} }
@@ -201,7 +201,6 @@ int main(int argc, char *argv[]) {
} else { } else {
/* copy up to and including the final "/" in the path */ /* copy up to and including the final "/" in the path */
dirsepp = stpncpy(filetorunpath, argv[0], dirsepp + 1 - argv[0]); dirsepp = stpncpy(filetorunpath, argv[0], dirsepp + 1 - argv[0]);
/* dirsepp now points to the trailing null in the copy */ /* dirsepp now points to the trailing null in the copy */
strncpy(dirsepp, filetorun, PATH_MAX - (dirsepp - filetorunpath)); strncpy(dirsepp, filetorun, PATH_MAX - (dirsepp - filetorunpath));
argv[0] = filetorunpath; argv[0] = filetorunpath;

View File

@@ -15,10 +15,7 @@
#include <stdio.h> // for perror, fprintf, printf, stderr, sprintf #include <stdio.h> // for perror, fprintf, printf, stderr, sprintf
#include <stdlib.h> // for exit, free, malloc #include <stdlib.h> // for exit, free, malloc
#include <string.h> // for memset #include <string.h> // for memset
#include <sys/mman.h> // for mmap, MAP_FAILED #include <sys/mman.h> // for mmap
#ifndef MAP_FAILED
#define MAP_FAILED ((void *)-1)
#endif
#include <sys/stat.h> // for stat, fstat #include <sys/stat.h> // for stat, fstat
#include <sys/types.h> // for off_t #include <sys/types.h> // for off_t
#include <unistd.h> // for lseek, read, close, getpagesize #include <unistd.h> // for lseek, read, close, getpagesize
@@ -124,14 +121,14 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
*/ */
#ifndef NOVERSION #ifndef NOVERSION
if (ifpage.lversion < LVERSION) { if (ifpage.lversion < LVERSION) {
(void)fprintf(stderr, "Lisp VM is too old for this emulator.\n"); fprintf(stderr, "Lisp VM is too old for this emulator.\n");
(void)fprintf(stderr, "(version is %d, must be at least %d.)\n", ifpage.lversion, LVERSION); fprintf(stderr, "(version is %d, must be at least %d.)\n", ifpage.lversion, LVERSION);
exit(-1); exit(-1);
} }
if (ifpage.minbversion > MINBVERSION) { if (ifpage.minbversion > MINBVERSION) {
(void)fprintf(stderr, "Emulator is too old for this Lisp VM.\n"); fprintf(stderr, "Emulator is too old for this Lisp VM.\n");
(void)fprintf(stderr, "(version is %d, must be at least %d.)\n", MINBVERSION, ifpage.minbversion); fprintf(stderr, "(version is %d, must be at least %d.)\n", MINBVERSION, ifpage.minbversion);
exit(-1); exit(-1);
} }
#endif /* NOVERSION */ #endif /* NOVERSION */
@@ -160,9 +157,9 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
/* Hence we have to observe the display protocol. */ /* Hence we have to observe the display protocol. */
VESA_errorexit(tmp); VESA_errorexit(tmp);
#else #else
(void)fprintf(stderr, "sysout_loader: You can't specify the process size.\n"); fprintf(stderr, "sysout_loader: You can't specify the process size.\n");
(void)fprintf(stderr, "Because, secondary space is already used.\n"); fprintf(stderr, "Because, secondary space is already used.\n");
(void)fprintf(stderr, "(size is %d, you specified %d.)\n", ifpage.process_size, sys_size); fprintf(stderr, "(size is %d, you specified %d.)\n", ifpage.process_size, sys_size);
exit(-1); exit(-1);
#endif /* DOS */ #endif /* DOS */
} }
@@ -179,7 +176,7 @@ unsigned sysout_loader(const char *sysout_file_name, unsigned sys_size) {
lispworld_scratch = mmap(0, sys_size * MBYTE, PROT_READ|PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); lispworld_scratch = mmap(0, sys_size * MBYTE, PROT_READ|PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
if (lispworld_scratch == MAP_FAILED) { if (lispworld_scratch == MAP_FAILED) {
(void)fprintf(stderr, "sysout_loader: can't allocate Lisp %dMBytes VM \n", sys_size); fprintf(stderr, "sysout_loader: can't allocate Lisp %dMBytes VM \n", sys_size);
exit(-1); exit(-1);
} }

View File

@@ -25,9 +25,8 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "gcarraydefs.h" // for get_package_atom #include "gcarraydefs.h" // for get_package_atom
#include "gcdata.h" // for FRPLPTR #include "gcdata.h" // for FRPLPTR
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for LispPTR, state, CurrentStackPTR, NIL_PTR, NIL #include "lispemul.h" // for LispPTR, state, CurrentStackPTR, NIL_PTR, NIL
#include "lispmap.h" // for S_POSITIVE #include "lispmap.h" // for S_POSITIVE, STK_OFFSET
#include "loopsopsdefs.h" // for lcfuncall, LCFetchMethod, LCFetchMethodOrHelp #include "loopsopsdefs.h" // for lcfuncall, LCFetchMethod, LCFetchMethodOrHelp
#include "lspglob.h" #include "lspglob.h"
#include "lsptypes.h" // for GetDTD, GetTypeNumber, dtd, Listp, GETWORD #include "lsptypes.h" // for GetDTD, GetTypeNumber, dtd, Listp, GETWORD
@@ -359,7 +358,7 @@ LispPTR lcfuncall(unsigned int atom_index, int argnum, int bytenum)
CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */; CURRENTFX->nextblock = (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (argnum << 1) + 4 /* +3 */;
/* Setup IVar */ /* Setup IVar */
IVar = NativeAligned2FromStackOffset(CURRENTFX->nextblock); IVar = NativeAligned2FromLAddr((((LispPTR)(CURRENTFX->nextblock)) | STK_OFFSET));
/* Set PC to the Next Instruction and save into FX */ /* Set PC to the Next Instruction and save into FX */
CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum; CURRENTFX->pc = ((UNSIGNED)PC - (UNSIGNED)FuncObj) + bytenum;

View File

@@ -229,11 +229,7 @@ int display_max = 65536 * 16 * 2;
/* diagnostic flag for sysout dumping */ /* diagnostic flag for sysout dumping */
extern unsigned maxpages; extern unsigned maxpages;
char sysout_name_cl[MAXPATHLEN] = "\0"; /* sysout name as per -sysout command line arg ; Set by read_Xoption, in the X version. */ char sysout_name[MAXPATHLEN]; /* Set by read_Xoption, in the X version. */
char sysout_name_xrm[MAXPATHLEN] = "\0"; /* sysout name as per X resource manager, if any */
char sysout_name_first_arg[MAXPATHLEN] = "\0"; /* sysout name as per 1st command line arg, if any */
char sysout_name[MAXPATHLEN] = "\0"; /* "final" sysout name chosen from above */
unsigned sysout_size = 0; /* ditto */ unsigned sysout_size = 0; /* ditto */
int flushing = FALSE; /* see dbprint.h if set, all debug/trace printing will call fflush(stdout) after each printf */ int flushing = FALSE; /* see dbprint.h if set, all debug/trace printing will call fflush(stdout) after each printf */
@@ -243,7 +239,7 @@ int flushing = FALSE; /* see dbprint.h if set, all debug/trace printing will cal
extern DspInterface currentdsp; extern DspInterface currentdsp;
#endif /* DOS || XWINDOW */ #endif /* DOS || XWINDOW */
#ifdef SDL #ifdef SDL
#include "sdldefs.h" /* for init_SDL */ extern int init_SDL(char*, int, int, int);
#endif #endif
extern const time_t MDate; extern const time_t MDate;
extern int nokbdflag; extern int nokbdflag;
@@ -288,8 +284,6 @@ const char *helpstring =
-info Print general info about the system\n\ -info Print general info about the system\n\
-help Print this message\n\ -help Print this message\n\
-pixelscale <n> The amount of pixels to show for one Medley screen pixel.\n\ -pixelscale <n> The amount of pixels to show for one Medley screen pixel.\n\
-fg/-foreground <color> Screen foreground color, default Black. X color name or #RRBBGG hex\n\
-bg/-background <color> Screen background color, default White. X color name or #RRBBGG hex\n\
-sc[reen] <w>x<h>] The Medley screen geometry\n\ -sc[reen] <w>x<h>] The Medley screen geometry\n\
-t <title> The window title\n\ -t <title> The window title\n\
-title <title> The window title\n"; -title <title> The window title\n";
@@ -318,21 +312,6 @@ const char *nethubHelpstring = "";
extern int insnsCountdownForTimerAsyncEmulation; extern int insnsCountdownForTimerAsyncEmulation;
#endif #endif
#if defined(XWINDOW) || defined(SDL)
char foregroundColorName[64] = {0};
extern char foregroundColorName[64];
char backgroundColorName[64] = {0};
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;
int pixelScale = 1;
extern int pixelScale;
/************************************************************************/ /************************************************************************/
/* */ /* */
/* M A I N E N T R Y P O I N T */ /* M A I N E N T R Y P O I N T */
@@ -347,6 +326,9 @@ int main(int argc, char *argv[])
extern int TIMER_INTERVAL; extern int TIMER_INTERVAL;
extern fd_set LispReadFds; extern fd_set LispReadFds;
long tmpint; long tmpint;
int width = 1024, height = 768;
int pixelscale = 1;
char *windowtitle = "Medley";
#ifdef MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE #ifdef MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE
if (dld_find_executable(argv[0]) == 0) { if (dld_find_executable(argv[0]) == 0) {
@@ -356,24 +338,6 @@ int main(int argc, char *argv[])
} }
#endif /* MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE */ #endif /* MAIKO_ENABLE_FOREIGN_FUNCTION_INTERFACE */
#ifdef PROFILE
moncontrol(0); /* initially stop sampling */
#endif /* PROFILE */
//
//
// Process Command Line Arguments
//
//
// First check if the first argument is a sysout name
// and save it away if it is in case the X windows
// arg processing changes argc/argv
if (argc > 1 && argv[1][0] != '-') {
strncpy(sysout_name_first_arg, argv[1], MAXPATHLEN);
}
#ifdef XWINDOW #ifdef XWINDOW
read_Xoption(&argc, argv); read_Xoption(&argc, argv);
#endif /* XWINDOW */ #endif /* XWINDOW */
@@ -381,6 +345,17 @@ int main(int argc, char *argv[])
save_argc = argc; save_argc = argc;
save_argv = argv; save_argv = argv;
#ifdef PROFILE
moncontrol(0); /* initially stop sampling */
#endif /* PROFILE */
/* Sysout is found as follows:
If the first argument doesn't begin with '-', assume it's the sysout
Look at the environment variable LDESRCESYSOUT if that fails
Look for ~/lisp.virtualmem if that fails
Barf and print the command line if tha fails
*/
i = 1; i = 1;
if (argv[i] && ((strcmp(argv[i], "-info") == 0) || (strcmp(argv[i], "-INFO") == 0))) { if (argv[i] && ((strcmp(argv[i], "-info") == 0) || (strcmp(argv[i], "-INFO") == 0))) {
@@ -389,38 +364,50 @@ int main(int argc, char *argv[])
} }
if (argv[i] && ((strcmp(argv[i], "-help") == 0) || (strcmp(argv[i], "-HELP") == 0))) { if (argv[i] && ((strcmp(argv[i], "-help") == 0) || (strcmp(argv[i], "-HELP") == 0))) {
(void)fprintf(stderr, "%s%s", helpstring, nethubHelpstring); fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
exit(0); exit(0);
} }
if (argc > 1 && argv[1][0] != '-') {
strncpy(sysout_name, argv[1], MAXPATHLEN);
i++;
} else if ((envname = getenv("LDESRCESYSOUT")) != NULL) {
strncpy(sysout_name, envname, MAXPATHLEN);
} else if ((envname = getenv("LDESOURCESYSOUT")) != NULL)
strncpy(sysout_name, envname, MAXPATHLEN);
else {
#ifdef DOS
strncpy(sysout_name, "lisp.vm", MAXPATHLEN);
#else
if ((envname = getenv("HOME")) != NULL) {
strncpy(sysout_name, envname, MAXPATHLEN);
strncat(sysout_name, "/lisp.virtualmem", MAXPATHLEN - 17);
}
#endif /* DOS */
}
if (access(sysout_name, R_OK)) {
perror("Couldn't find a sysout to run");
fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
exit(1);
}
/* OK, sysout name is now in sysout_name, and i is moved past a supplied name */
for (; i < argc; i += 1) { /* step by 1 in case of typo */ for (; i < argc; i += 1) { /* step by 1 in case of typo */
// NOTE: in the case of X Windows, some of the args being checked for in this loop
// have already been processed (and removed from argv) by the call to read_Xoption()
// above. (See readXoption() in xrdopt.c)
/* Check for -sysout arg */
if (!strcmp(argv[i], "-sysout")) {
if (argc > ++i) {
strncpy(sysout_name_cl, argv[i], MAXPATHLEN);
}
}
/* -t and -m are undocumented and somewhat dangerous... */ /* -t and -m are undocumented and somewhat dangerous... */
else if (!strcmp(argv[i], "-t")) { /**** timer interval ****/ if (!strcmp(argv[i], "-t")) { /**** timer interval ****/
if (argc > ++i) { if (argc > ++i) {
errno = 0; errno = 0;
tmpint = strtol(argv[i], (char **)NULL, 10); tmpint = strtol(argv[i], (char **)NULL, 10);
if (errno == 0 && tmpint > 0) { if (errno == 0 && tmpint > 0) {
TIMER_INTERVAL = tmpint; TIMER_INTERVAL = tmpint;
} else { } else {
(void)fprintf(stderr, "Bad value for -t (integer > 0)\n"); fprintf(stderr, "Bad value for -t (integer > 0)\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -t\n"); fprintf(stderr, "Missing argument after -t\n");
exit(1); exit(1);
} }
} }
@@ -432,11 +419,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) { if (errno == 0 && tmpint > 0) {
sysout_size = (unsigned)tmpint; sysout_size = (unsigned)tmpint;
} else { } else {
(void)fprintf(stderr, "Bad value for -m (integer > 0)\n"); fprintf(stderr, "Bad value for -m (integer > 0)\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -m\n"); fprintf(stderr, "Missing argument after -m\n");
exit(1); exit(1);
} }
} }
@@ -473,49 +460,36 @@ int main(int argc, char *argv[])
#ifdef SDL #ifdef SDL
else if ((strcmp(argv[i], "-sc") == 0) || (strcmp(argv[i], "-SC") == 0)) { else if ((strcmp(argv[i], "-sc") == 0) || (strcmp(argv[i], "-SC") == 0)) {
if (argc > ++i) { if (argc > ++i) {
int read = sscanf(argv[i], "%dx%d", &lispDisplayRequestedWidth, &lispDisplayRequestedHeight); int read = sscanf(argv[i], "%dx%d", &width, &height);
if(read != 2) { if(read != 2) {
(void)fprintf(stderr, "Could not parse -sc argument %s\n", argv[i]); fprintf(stderr, "Could not parse -sc argument %s\n", argv[i]);
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -sc\n"); fprintf(stderr, "Missing argument after -sc\n");
exit(1); exit(1);
} }
} else if ((strcmp(argv[i], "-pixelscale") == 0) || (strcmp(argv[i], "-PIXELSCALE") == 0)) { } else if ((strcmp(argv[i], "-pixelscale") == 0) || (strcmp(argv[i], "-PIXELSCALE") == 0)) {
if (argc > ++i) { if (argc > ++i) {
int read = sscanf(argv[i], "%d", &pixelScale); int read = sscanf(argv[i], "%d", &pixelscale);
if(read != 1) { if(read != 1) {
(void)fprintf(stderr, "Could not parse -pixelscale argument %s\n", argv[i]); fprintf(stderr, "Could not parse -pixelscale argument %s\n", argv[i]);
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -pixelscale\n"); fprintf(stderr, "Missing argument after -pixelscale\n");
exit(1); exit(1);
} }
} else if ((strcmp(argv[i], "-t") == 0) || (strcmp(argv[i], "-T") == 0) } else if ((strcmp(argv[i], "-t") == 0) || (strcmp(argv[i], "-T") == 0)
|| (strcmp(argv[i], "-title") == 0) || (strcmp(argv[i], "-TITLE") == 0)) { || (strcmp(argv[i], "-title") == 0) || (strcmp(argv[i], "-TITLE") == 0)) {
if (argc > ++i) { if (argc > ++i) {
strncpy(windowTitle, argv[i], sizeof(windowTitle) - 1); windowtitle = argv[i];
} else { } else {
(void)fprintf(stderr, "Missing argument after -title\n"); fprintf(stderr, "Missing argument after -title\n");
exit(1);
}
} else if (strcmp(argv[i], "-fg") == 0 || strcmp(argv[i], "-foreground") == 0) {
if (argc > ++i) {
strncpy(foregroundColorName, argv[i], sizeof(foregroundColorName) - 1);
} else {
(void)fprintf(stderr, "Missing argument after -fg/-foreground\n");
exit(1);
}
} else if (strcmp(argv[i], "-bg") == 0 || strcmp(argv[i], "-background") == 0) {
if (argc > ++i) {
strncpy(backgroundColorName, argv[i], sizeof(backgroundColorName) - 1);
} else {
(void)fprintf(stderr, "Missing argument after -bg/-background\n");
exit(1); exit(1);
} }
} }
#endif /* SDL */ #endif /* SDL */
/* Can only do this under SUNOs, for now */ /* Can only do this under SUNOs, for now */
else if (!strcmp(argv[i], "-E")) { /**** ethernet info ****/ else if (!strcmp(argv[i], "-E")) { /**** ethernet info ****/
@@ -537,7 +511,7 @@ int main(int argc, char *argv[])
ether_host[4] = b4; ether_host[4] = b4;
ether_host[5] = b5; ether_host[5] = b5;
} else { } else {
(void)fprintf(stderr, "Missing or bogus -E argument\n"); fprintf(stderr, "Missing or bogus -E argument\n");
ether_fd = -1; ether_fd = -1;
exit(1); exit(1);
} }
@@ -550,7 +524,7 @@ int main(int argc, char *argv[])
if (argc > ++i) { if (argc > ++i) {
setNethubHost(argv[i]); setNethubHost(argv[i]);
} else { } else {
(void)fprintf(stderr, "Missing argument after -nh-host\n"); fprintf(stderr, "Missing argument after -nh-host\n");
exit(1); exit(1);
} }
} }
@@ -561,11 +535,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) { if (errno == 0 && tmpint > 0) {
setNethubPort(tmpint); setNethubPort(tmpint);
} else { } else {
(void)fprintf(stderr, "Bad value for -nh-port\n"); fprintf(stderr, "Bad value for -nh-port\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -nh-port\n"); fprintf(stderr, "Missing argument after -nh-port\n");
exit(1); exit(1);
} }
} }
@@ -575,11 +549,11 @@ int main(int argc, char *argv[])
if (sscanf(argv[i], "%x-%x-%x-%x-%x-%x", &b0, &b1, &b2, &b3, &b4, &b5) == 6) { if (sscanf(argv[i], "%x-%x-%x-%x-%x-%x", &b0, &b1, &b2, &b3, &b4, &b5) == 6) {
setNethubMac(b0, b1, b2, b3, b4, b5); setNethubMac(b0, b1, b2, b3, b4, b5);
} else { } else {
(void)fprintf(stderr, "Invalid argument for -nh-mac\n"); fprintf(stderr, "Invalid argument for -nh-mac\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -nh-mac\n"); fprintf(stderr, "Missing argument after -nh-mac\n");
exit(1); exit(1);
} }
} }
@@ -590,11 +564,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint >= 0) { if (errno == 0 && tmpint >= 0) {
setNethubLogLevel(tmpint); setNethubLogLevel(tmpint);
} else { } else {
(void)fprintf(stderr, "Bad value for -nh-loglevel\n"); fprintf(stderr, "Bad value for -nh-loglevel\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -nh-loglevel\n"); fprintf(stderr, "Missing argument after -nh-loglevel\n");
exit(1); exit(1);
} }
} }
@@ -608,11 +582,11 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 1000) { if (errno == 0 && tmpint > 1000) {
insnsCountdownForTimerAsyncEmulation = tmpint; insnsCountdownForTimerAsyncEmulation = tmpint;
} else { } else {
(void)fprintf(stderr, "Bad value for -intr-emu-insns (integer > 1000)\n"); fprintf(stderr, "Bad value for -intr-emu-insns (integer > 1000)\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -intr-emu-insns\n"); fprintf(stderr, "Missing argument after -intr-emu-insns\n");
exit(1); exit(1);
} }
} }
@@ -626,65 +600,24 @@ int main(int argc, char *argv[])
if (errno == 0 && tmpint > 0) { if (errno == 0 && tmpint > 0) {
maxpages = (unsigned)tmpint; maxpages = (unsigned)tmpint;
} else { } else {
(void)fprintf(stderr, "Bad value for -xpages (integer > 0)\n"); fprintf(stderr, "Bad value for -xpages (integer > 0)\n");
exit(1); exit(1);
} }
} else { } else {
(void)fprintf(stderr, "Missing argument after -xpages\n"); fprintf(stderr, "Missing argument after -xpages\n");
exit(1); exit(1);
} }
} }
} }
//
// OK, now we can process the sysout_name
// Order of priority:
// 1. Value of -sysout command line arg
// 2. Value of the first command line arg
// 3. Value of LDESRCESYSOUT env variable
// 4. Value of LDESOURCESYSOUT env variable
// 5. Value as determined by X resource manager, if any
// 6. Value of $HOME/lisp.virtualmem (or lisp.vm for DOS)
//
if (sysout_name_cl[0] != '\0') { strncpy(sysout_name, sysout_name_cl, MAXPATHLEN); }
else if (sysout_name_first_arg[0] != '\0') { strncpy(sysout_name, sysout_name_first_arg, MAXPATHLEN); }
else if ((envname = getenv("LDESRCESYSOUT")) != NULL) { strncpy(sysout_name, envname, MAXPATHLEN); }
else if ((envname = getenv("LDESOURCESYSOUT")) != NULL) { strncpy(sysout_name, envname, MAXPATHLEN); }
else if (sysout_name_xrm[0] != '\0') { strncpy(sysout_name, sysout_name_xrm, MAXPATHLEN); }
else {
#ifdef DOS
strncpy(sysout_name, "lisp.vm", MAXPATHLEN);
#else
if ((envname = getenv("HOME")) != NULL) {
strncpy(sysout_name, envname, MAXPATHLEN);
strncat(sysout_name, "/lisp.virtualmem", MAXPATHLEN - 17);
}
#endif /* DOS */
}
if ((sysout_name[0] == '\0') || (access(sysout_name, R_OK))) {
perror("Couldn't find a sysout to run");
fprintf(stderr, "Looking for: %s\n", sysout_name);
(void)fprintf(stderr, "%s%s", helpstring, nethubHelpstring);
exit(1);
}
/* OK, sysout name is now in sysout_name */
//
//
// End of command line arg processing
//
//
/* Sanity checks. */ /* Sanity checks. */
#ifdef DOS #ifdef DOS
probemouse(); /* See if the mouse is connected. */ probemouse(); /* See if the mouse is connected. */
#else #else
if (getuid() != geteuid()) { if (getuid() != geteuid()) {
(void)fprintf(stderr, "Effective user is not real user. Resetting uid\n"); fprintf(stderr, "Effective user is not real user. Resetting uid\n");
if (setuid(getuid()) == -1) { if (setuid(getuid()) == -1) {
(void)fprintf(stderr, "Unable to reset user id to real user id\n"); fprintf(stderr, "Unable to reset user id to real user id\n");
exit(1); exit(1);
} }
} }
@@ -708,7 +641,7 @@ int main(int argc, char *argv[])
if (FindUnixPipes()) /* must call the routine to allocate storage, */ if (FindUnixPipes()) /* must call the routine to allocate storage, */
{ /* in case we're re-starting a savevm w/open ptys */ { /* in case we're re-starting a savevm w/open ptys */
if (please_fork) (void)fprintf(stderr, "Failed to find UNIXCOMM file handles; no processes\n"); if (please_fork) fprintf(stderr, "Failed to find UNIXCOMM file handles; no processes\n");
} }
#endif /* DOS */ #endif /* DOS */
@@ -716,12 +649,13 @@ int main(int argc, char *argv[])
make_dsp_instance(currentdsp, 0, 0, 0, 1); /* All defaults the first time */ make_dsp_instance(currentdsp, 0, 0, 0, 1); /* All defaults the first time */
#endif /* DOS || XWINDOW */ #endif /* DOS || XWINDOW */
#if defined(SDL) #if defined(SDL)
init_SDL(windowTitle, lispDisplayRequestedWidth, lispDisplayRequestedHeight, pixelScale); init_SDL(windowtitle, width, height, pixelscale);
#endif /* SDL */ #endif /* SDL */
/* Load sysout to VM space and returns real sysout_size(not 0) */ /* Load sysout to VM space and returns real sysout_size(not 0) */
sysout_size = sysout_loader(sysout_name, sysout_size); sysout_size = sysout_loader(sysout_name, sysout_size);
build_lisp_map(); /* build up map */ build_lisp_map(); /* built up map */
init_ifpage(sysout_size); /* init interface page */ init_ifpage(sysout_size); /* init interface page */
init_iopage(); init_iopage();
init_miscstats(); init_miscstats();
@@ -731,7 +665,7 @@ int main(int argc, char *argv[])
/* file system directory enumeration stuff */ /* file system directory enumeration stuff */
if (!init_finfo()) { if (!init_finfo()) {
(void)fprintf(stderr, "Cannot allocate internal data.\n"); fprintf(stderr, "Cannot allocate internal data.\n");
exit(1); exit(1);
} }
#ifdef RS232 #ifdef RS232
@@ -793,9 +727,9 @@ void start_lisp(void) {
TopOfStack = 0; TopOfStack = 0;
Error_Exit = 0; Error_Exit = 0;
PVar = NativeAligned2FromStackOffset(InterfacePage->currentfxp) + FRAMESIZE; PVar = (DLword *)NativeAligned2FromLAddr(STK_OFFSET | InterfacePage->currentfxp) + FRAMESIZE;
freeptr = next68k = NativeAligned2FromStackOffset(CURRENTFX->nextblock); freeptr = next68k = NativeAligned2FromLAddr(STK_OFFSET | CURRENTFX->nextblock);
if (GETWORD(next68k) != STK_FSB_WORD) error("Starting Lisp: Next stack block isn't free!"); if (GETWORD(next68k) != STK_FSB_WORD) error("Starting Lisp: Next stack block isn't free!");

View File

@@ -32,7 +32,6 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "emlglob.h" #include "emlglob.h"
#include "gcdata.h" // for DELREF, GCLOOKUP #include "gcdata.h" // for DELREF, GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "lispemul.h" // for LispPTR, DLword, NIL, POINTERMASK, state #include "lispemul.h" // for LispPTR, DLword, NIL, POINTERMASK, state
#include "lispmap.h" // for S_POSITIVE #include "lispmap.h" // for S_POSITIVE
#include "lspglob.h" #include "lspglob.h"

View File

@@ -35,7 +35,6 @@
#ifdef BIGVM #ifdef BIGVM
#define SWA_FNHEAD #define SWA_FNHEAD
#else #else
#include "byteswapdefs.h" // for swapx
#define SWA_FNHEAD swapx #define SWA_FNHEAD swapx
#endif /* BIGVM */ #endif /* BIGVM */

View File

@@ -25,8 +25,8 @@
/************************************************************************/ /************************************************************************/
void perrorn(char *s, int n) { void perrorn(char *s, int n) {
if (s != NULL && *s != '\0') { (void)fprintf(stderr, "%s: ", s); } if (s != NULL && *s != '\0') { fprintf(stderr, "%s: ", s); }
(void)fprintf(stderr, "%s\n", strerror(n)); fprintf(stderr, "%s\n", strerror(n));
} }
/************************************************************************/ /************************************************************************/
@@ -42,7 +42,7 @@ void err_mess(char *from, int no) {
int save_errno = errno; /* Save errno around OSMESSAGE_PRINT */ int save_errno = errno; /* Save errno around OSMESSAGE_PRINT */
OSMESSAGE_PRINT({ OSMESSAGE_PRINT({
(void)fprintf(stderr, "System call error: %s errno=%d ", from, no); fprintf(stderr, "System call error: %s errno=%d ", from, no);
perror(""); perror("");
}); });

View File

@@ -37,11 +37,9 @@
#include "gcarraydefs.h" #include "gcarraydefs.h"
#include "testtooldefs.h" #include "testtooldefs.h"
#include "lineblt8defs.h"
#include "lsthandldefs.h" #include "lsthandldefs.h"
#include "car-cdrdefs.h" #include "car-cdrdefs.h"
#include "keyeventdefs.h" #include "keyeventdefs.h"
#include "rawcolordefs.h"
#define IMIN(x, y) (((x) > (y)) ? (y) : (x)) #define IMIN(x, y) (((x) > (y)) ? (y) : (x))
#define IMAX(x, y) (((x) > (y)) ? (x) : (y)) #define IMAX(x, y) (((x) > (y)) ? (x) : (y))
@@ -74,15 +72,6 @@ LispPTR SLOWBLTCHAR_index;
return; \ return; \
} }
static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset,
BITMAP *dBM, DLword dXOffset, DLword dYOffset,
DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation);
static void ColorizeFont8_BIGBM(BITMAP *sBM, DLword sXOffset, DLword sYOffset,
BIGBM *dBM, DLword dXOffset, DLword dYOffset,
DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation);
/***********************************************************/ /***********************************************************/
/* /*
C_slowbltchar C_slowbltchar
@@ -313,7 +302,7 @@ void C_slowbltchar(LispPTR *args)
u_int ColorizedFont8CACHE[MAXFONTHEIGHT / BITSPERNIBBLE * MAXFONTWIDTH / BITSPERNIBBLE]; u_int ColorizedFont8CACHE[MAXFONTHEIGHT / BITSPERNIBBLE * MAXFONTWIDTH / BITSPERNIBBLE];
static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1, void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation) LispPTR sourcetype, LispPTR operation)
{ {
DLword *nbase; DLword *nbase;
@@ -323,10 +312,10 @@ static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP
sYOffset = sBM->bmheight - (sYOffset + height); sYOffset = sBM->bmheight - (sYOffset + height);
dYOffset = dBM->bmheight - (dYOffset + height); dYOffset = dBM->bmheight - (dYOffset + height);
nbase = NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset); nbase = (DLword *)NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset);
dbase = (u_char *)NativeAligned2FromLAddr(dBM->bmbase) + (dBM->bmrasterwidth * dYOffset); (DLword *)dbase = (DLword *)NativeAligned2FromLAddr(dBM->bmbase) + (dBM->bmrasterwidth * dYOffset);
for (i = 0, dbase += dXOffset; /* 8bpp */ for (i = 0, dbase += dXOffset; /* 8bpp */
i < height; i++, nbase += sBM->bmrasterwidth, dbase += dBM->bmrasterwidth * BYTESPER_DLWORD) { i < height; i++, nbase += sBM->bmrasterwidth, ((DLword *)dbase) += dBM->bmrasterwidth) {
lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation); lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation);
} /* for end */ } /* for end */
@@ -343,7 +332,7 @@ static void ColorizeFont8(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BITMAP
/* */ /* */
/************************************************************************/ /************************************************************************/
static void ColorizeFont8_BIGBM(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BIGBM *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1, void ColorizeFont8_BIGBM(BITMAP *sBM, DLword sXOffset, DLword sYOffset, BIGBM *dBM, DLword dXOffset, DLword dYOffset, DLword width, DLword height, u_char col0, u_char col1,
LispPTR sourcetype, LispPTR operation) LispPTR sourcetype, LispPTR operation)
{ {
DLword *nbase; DLword *nbase;
@@ -386,13 +375,14 @@ loop:
dest_h = dest_fragbottom - (dest_fragtop + dest_yoffset); dest_h = dest_fragbottom - (dest_fragtop + dest_yoffset);
} /* end if */ } /* end if */
dbase = (u_char *)NativeAligned2FromLAddr(dest_frag->bmbase) + (dest_frag->bmrasterwidth * dest_yoffset); dbase =
nbase = NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset); (DLword *)NativeAligned2FromLAddr(dest_frag->bmbase) + (dest_frag->bmrasterwidth * dest_yoffset);
nbase = (DLword *)NativeAligned2FromLAddr(sBM->bmbase) + (sBM->bmrasterwidth * sYOffset);
sYOffset += (DLword)dest_h; /* next src yoffset */ sYOffset += (DLword)dest_h; /* next src yoffset */
for (i = 0, dbase += dXOffset; i < dest_h; for (i = 0, dbase += dXOffset; i < dest_h;
i++, nbase += sBM->bmrasterwidth, dbase += dest_frag->bmrasterwidth * BYTESPER_DLWORD) { i++, nbase += sBM->bmrasterwidth, ((DLword *)dbase) += dest_frag->bmrasterwidth) {
lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation); lineBlt8(nbase, (int)sXOffset, dbase, (int)width, col0, col1, sourcetype, operation);
} }
@@ -419,14 +409,14 @@ loop:
/* */ /* */
/************************************************************************/ /************************************************************************/
static void newColorizeFont8(PILOTBBT *pbt, u_char backcolor, u_char forecolor, LispPTR srctype, LispPTR ope) void newColorizeFont8(PILOTBBT *pbt, u_char backcolor, u_char forecolor, LispPTR srctype, LispPTR ope)
{ {
DLword *nbase; DLword *nbase;
u_char *dbase; u_char *dbase;
int i; int i;
nbase = NativeAligned2FromLAddr((pbt->pbtsourcehi << 16) | (pbt->pbtsourcelo)); nbase = (DLword *)NativeAligned2FromLAddr((pbt->pbtsourcehi << 16) | (pbt->pbtsourcelo));
dbase = (u_char *)NativeAligned2FromLAddr((pbt->pbtdesthi << 16) | (pbt->pbtdestlo)); (DLword *)dbase = (DLword *)NativeAligned2FromLAddr((pbt->pbtdesthi << 16) | (pbt->pbtdestlo));
dbase += pbt->pbtdestbit; dbase += pbt->pbtdestbit;
for (i = 0; i < pbt->pbtheight; for (i = 0; i < pbt->pbtheight;
i++, nbase += pbt->pbtsourcebpl / 16, dbase += pbt->pbtdestbpl / 8) { i++, nbase += pbt->pbtsourcebpl / 16, dbase += pbt->pbtdestbpl / 8) {
@@ -504,7 +494,7 @@ void Uncolorize_Bitmap(LispPTR args[])
if ((x & 0xF) != 0) *(d_base++) = word; if ((x & 0xF) != 0) *(d_base++) = word;
if (y != (s_height - 1)) { s_base += s_rasterwidth * BYTESPER_DLWORD; } /* end if( y ) */ if (y != (s_height - 1)) { (DLword *)s_base += s_rasterwidth; } /* end if( y ) */
} /* end for( y ) */ } /* end for( y ) */
@@ -542,11 +532,11 @@ LispPTR Colorize_Bitmap(LispPTR args[])
s_base = (DLword *)NativeAligned2FromLAddr(s_bitmap->bmbase) + s_base = (DLword *)NativeAligned2FromLAddr(s_bitmap->bmbase) +
s_bitmap->bmrasterwidth * (s_bitmap->bmheight - (s_bottom + height)); s_bitmap->bmrasterwidth * (s_bitmap->bmheight - (s_bottom + height));
d_base = (u_char *)NativeAligned2FromLAddr(d_bitmap->bmbase) + (DLword *)d_base = (DLword *)NativeAligned2FromLAddr(d_bitmap->bmbase) +
d_bitmap->bmrasterwidth * (d_bitmap->bmheight - (d_bottom + height)); d_bitmap->bmrasterwidth * (d_bitmap->bmheight - (d_bottom + height));
for (i = 0, d_base += d_left; i < height; for (i = 0, d_base += d_left; i < height;
i++, s_base += s_bitmap->bmrasterwidth, d_base += d_bitmap->bmrasterwidth * BYTESPER_DLWORD) { i++, s_base += s_bitmap->bmrasterwidth, (DLword *)d_base += d_bitmap->bmrasterwidth) {
lineBlt8(s_base, s_left, d_base, width, (u_char)color0, (u_char)color1, INPUT_atom, lineBlt8(s_base, s_left, d_base, width, (u_char)color0, (u_char)color1, INPUT_atom,
REPLACE_atom); REPLACE_atom);

View File

@@ -129,7 +129,7 @@ void contextsw(DLword fxnum, DLword bytenum, DLword flags)
Midpunt(fxnum); /* exchanging FX */ Midpunt(fxnum); /* exchanging FX */
next68k = NativeAligned2FromStackOffset(CURRENTFX->nextblock); next68k = (DLword *)NativeAligned2FromLAddr(STK_OFFSET | CURRENTFX->nextblock);
if (GETWORD(next68k) != STK_FSB_WORD) error("contextsw(): MP9316"); if (GETWORD(next68k) != STK_FSB_WORD) error("contextsw(): MP9316");
freeptr = next68k; freeptr = next68k;

View File

@@ -29,11 +29,6 @@
#include "lspglob.h" #include "lspglob.h"
#include "lsptypes.h" // for Listp #include "lsptypes.h" // for Listp
#include "rplconsdefs.h" // for N_OP_rplcons #include "rplconsdefs.h" // for N_OP_rplcons
#ifndef NEWCDRCODING
#include "gcdata.h"
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "address.h"
#endif
/***************************************************/ /***************************************************/

949
src/sdl.c

File diff suppressed because it is too large Load Diff

View File

@@ -23,7 +23,6 @@
#include "commondefs.h" // for error #include "commondefs.h" // for error
#include "conspagedefs.h" // for cons #include "conspagedefs.h" // for cons
#include "gcdata.h" // for ADDREF, GCLOOKUP #include "gcdata.h" // for ADDREF, GCLOOKUP
#include "gchtfinddefs.h" // for htfind, rec_htfind
#include "gcfinaldefs.h" // for makefreearrayblock, mergebackward #include "gcfinaldefs.h" // for makefreearrayblock, mergebackward
#include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO #include "ifpage.h" // for IFPAGE, MACHINETYPE_MAIKO
#include "lispemul.h" // for LispPTR, NIL, GETFPTOVP, INTSTAT, ATOM_T #include "lispemul.h" // for LispPTR, NIL, GETFPTOVP, INTSTAT, ATOM_T

View File

@@ -64,11 +64,6 @@
#include "uutilsdefs.h" // for suspend_lisp, check_unix_password, unix_fu... #include "uutilsdefs.h" // for suspend_lisp, check_unix_password, unix_fu...
#include "vmemsavedefs.h" // for lisp_finish, vmem_save0 #include "vmemsavedefs.h" // for lisp_finish, vmem_save0
#ifdef COLOR
#include "rawcolordefs.h"
#include "llcolordefs.h"
#endif
extern LispPTR *PENDINGINTERRUPT68k; extern LispPTR *PENDINGINTERRUPT68k;
/***********************************************************/ /***********************************************************/

View File

@@ -57,7 +57,7 @@
#include "gcarraydefs.h" // for aref1 #include "gcarraydefs.h" // for aref1
#include "kprintdefs.h" // for print, prindatum #include "kprintdefs.h" // for print, prindatum
#include "lispemul.h" // for DLword, LispPTR, DLbyte, state, T, ConsCell #include "lispemul.h" // for DLword, LispPTR, DLbyte, state, T, ConsCell
#include "lispmap.h" // for ATOMS_HI #include "lispmap.h" // for STK_OFFSET, ATOMS_HI
#include "lspglob.h" // for Package_from_Index_word, Stackspace #include "lspglob.h" // for Package_from_Index_word, Stackspace
#include "lsptypes.h" // for GETWORD, dtd, GETBYTE, NEWSTRINGP, GetType... #include "lsptypes.h" // for GETWORD, dtd, GETBYTE, NEWSTRINGP, GetType...
#include "mkatomdefs.h" // for compare_chars, make_atom #include "mkatomdefs.h" // for compare_chars, make_atom
@@ -683,10 +683,9 @@ int print_opcode(int pc, DLbyte *addr, struct fnhead *fnobj) {
extern unsigned int oplength[256]; extern unsigned int oplength[256];
int len = oplength[op] + 1; int len = oplength[op] + 1;
printf(" 0%04o (0x%04x) ", pc, pc); printf(" 0%o (0x%x) ", pc, pc);
for (i = 0; i < len; i++) printf("%4o", 0xFF & GETBYTE(addr + i)); for (i = 0; i < len; i++) printf("%o ", 0xFF & GETBYTE(addr + i));
for (; i < 9; i++) printf(" "); printf(" %s", opcode_table[op]);
printf("%s", opcode_table[op]);
switch (op) { switch (op) {
case 0: case 0:
@@ -853,7 +852,7 @@ void dump_bf(Bframe *bf) {
if (BFRAMEPTR(bf)->residual) { goto printflags; } if (BFRAMEPTR(bf)->residual) { goto printflags; }
ptr = NativeAligned2FromStackOffset(bf->ivar); ptr = NativeAligned2FromLAddr(STK_OFFSET + bf->ivar);
if ((((DLword *)bf - ptr) > 512) || (((UNSIGNED)ptr & 1) != 0)) { if ((((DLword *)bf - ptr) > 512) || (((UNSIGNED)ptr & 1) != 0)) {
printf("\nInvalid basic frame"); printf("\nInvalid basic frame");
return; return;
@@ -911,7 +910,7 @@ void dump_fx(struct frameex1 *fx_addr68k) {
/* should pay attention to the name table like RAID does */ /* should pay attention to the name table like RAID does */
next68k = NativeAligned2FromStackOffset(fx_addr68k->nextblock); next68k = (DLword *)NativeAligned2FromLAddr((fx_addr68k->nextblock + STK_OFFSET));
if (fx_addr68k == CURRENTFX) { next68k = CurrentStackPTR + 2; } if (fx_addr68k == CURRENTFX) { next68k = CurrentStackPTR + 2; }
if ((next68k < ptr) || (((UNSIGNED)next68k & 1) != 0)) { if ((next68k < ptr) || (((UNSIGNED)next68k & 1) != 0)) {
@@ -938,7 +937,7 @@ void dump_stackframe(struct frameex1 *fx_addr68k) {
if ((fx_addr68k->alink & 1) == 0) { /* FAST */ if ((fx_addr68k->alink & 1) == 0) { /* FAST */
bf = (Bframe *)(((DLword *)fx_addr68k) - 2); bf = (Bframe *)(((DLword *)fx_addr68k) - 2);
} else { /* SLOW */ } else { /* SLOW */
bf = (Bframe *)NativeAligned4FromStackOffset(fx_addr68k->blink); bf = (Bframe *)NativeAligned4FromLAddr((fx_addr68k->blink + STK_OFFSET));
} }
dump_bf(bf); dump_bf(bf);
dump_fx((struct frameex1 *)fx_addr68k); dump_fx((struct frameex1 *)fx_addr68k);
@@ -1105,12 +1104,12 @@ void all_stack_dump(DLword start, DLword end, DLword silent)
if (start == 0) if (start == 0)
start68k = Stackspace + InterfacePage->stackbase; start68k = Stackspace + InterfacePage->stackbase;
else else
start68k = NativeAligned2FromStackOffset(start); start68k = NativeAligned2FromLAddr(STK_OFFSET | start);
if (end == 0) if (end == 0)
end68k = Stackspace + InterfacePage->endofstack; end68k = Stackspace + InterfacePage->endofstack;
else else
end68k = NativeAligned2FromStackOffset(end); end68k = NativeAligned2FromLAddr(STK_OFFSET | end);
stkptr = (STKH *)start68k; stkptr = (STKH *)start68k;
@@ -1157,7 +1156,7 @@ void all_stack_dump(DLword start, DLword end, DLword silent)
printf(" <-***current***"); printf(" <-***current***");
size = EndSTKP - (DLword *)stkptr; size = EndSTKP - (DLword *)stkptr;
} else { } else {
size = NativeAligned2FromStackOffset(((FX *)stkptr)->nextblock) - (DLword *)stkptr; size = NativeAligned2FromLAddr(STK_OFFSET | ((FX *)stkptr)->nextblock) - (DLword *)stkptr;
} }
goto checksize; goto checksize;
default: default:

View File

@@ -47,10 +47,6 @@ unsigned long tick_count = 0; /* approx 18 ticks per sec */
#include <sys/time.h> #include <sys/time.h>
#endif /* DOS */ #endif /* DOS */
#ifdef MAIKO_OS_HAIKU
#include <OS.h>
#endif
#if defined(USE_DLPI) #if defined(USE_DLPI)
#include <stropts.h> #include <stropts.h>
extern int ether_fd; extern int ether_fd;
@@ -305,8 +301,6 @@ void subr_settime(LispPTR args[])
dosday.year = uxtime.tm_year; dosday.year = uxtime.tm_year;
dosday.dayofweek = uxtime.tm_wday; dosday.dayofweek = uxtime.tm_wday;
_dos_setdate(&dosday); _dos_setdate(&dosday);
#elif defined(MAIKO_OS_HAIKU)
(void)args[0];
#elif defined(MAIKO_OS_EMSCRIPTEN) #elif defined(MAIKO_OS_EMSCRIPTEN)
(void)args[0]; (void)args[0];
#else #else
@@ -562,19 +556,17 @@ static void int_io_service(int sig)
/************************************************************************/ /************************************************************************/
static void int_io_init(void) { static void int_io_init(void) {
#if !defined(DOS) || !defined(MAIKO_OS_HAIKU) #ifndef DOS
struct sigaction io_action; struct sigaction io_action;
io_action.sa_handler = int_io_service; io_action.sa_handler = int_io_service;
sigemptyset(&io_action.sa_mask); sigemptyset(&io_action.sa_mask);
io_action.sa_flags = 0; io_action.sa_flags = 0;
#ifndef MAIKO_OS_HAIKU
if (sigaction(SIGIO, &io_action, NULL) == -1) { if (sigaction(SIGIO, &io_action, NULL) == -1) {
perror("sigaction: SIGIO"); perror("sigaction: SIGIO");
} else { } else {
DBPRINT(("I/O interrupts enabled\n")); DBPRINT(("I/O interrupts enabled\n"));
} }
#endif
#if defined(USE_DLPI) #if defined(USE_DLPI)
DBPRINT(("INIT ETHER: Doing I_SETSIG.\n")); DBPRINT(("INIT ETHER: Doing I_SETSIG.\n"));
@@ -586,7 +578,7 @@ static void int_io_init(void) {
return; return;
} }
#endif /* USE_DLPI */ #endif /* USE_DLPI */
#endif /* DOS MAIKO_OS_HAIKU */ #endif /* DOS */
} }
/************************************************************************/ /************************************************************************/
@@ -608,9 +600,7 @@ void int_block(void) {
sigset_t signals; sigset_t signals;
sigemptyset(&signals); sigemptyset(&signals);
sigaddset(&signals, SIGVTALRM); sigaddset(&signals, SIGVTALRM);
#ifndef MAIKO_OS_HAIKU
sigaddset(&signals, SIGIO); sigaddset(&signals, SIGIO);
#endif
sigaddset(&signals, SIGALRM); sigaddset(&signals, SIGALRM);
sigaddset(&signals, SIGXFSZ); sigaddset(&signals, SIGXFSZ);
#ifdef FLTINT #ifdef FLTINT
@@ -638,9 +628,7 @@ void int_unblock(void) {
sigset_t signals; sigset_t signals;
sigemptyset(&signals); sigemptyset(&signals);
sigaddset(&signals, SIGVTALRM); sigaddset(&signals, SIGVTALRM);
#ifndef MAIKO_OS_HAIKU
sigaddset(&signals, SIGIO); sigaddset(&signals, SIGIO);
#endif
sigaddset(&signals, SIGALRM); sigaddset(&signals, SIGALRM);
sigaddset(&signals, SIGXFSZ); sigaddset(&signals, SIGXFSZ);
#ifdef FLTINT #ifdef FLTINT

View File

@@ -73,7 +73,7 @@ void check_sysout(char *sysout_file_name, int verbose) {
} }
void usage(char *prog) { void usage(char *prog) {
(void)fprintf(stderr, "Usage: %s [-v] sysout-filename\n", prog); fprintf(stderr, "Usage: %s [-v] sysout-filename\n", prog);
exit(-1); exit(-1);
} }

View File

@@ -51,11 +51,7 @@ void tty_open(void)
if (TTY_Fd < 0) { if (TTY_Fd < 0) {
if ((TTY_Fd = open(TTY_Dev, O_RDWR)) >= 0) { if ((TTY_Fd = open(TTY_Dev, O_RDWR)) >= 0) {
tcgetattr(TTY_Fd, &options); tcgetattr(TTY_Fd, &options);
#ifndef MAIKO_OS_HAIKU
options.c_iflag &= ~(IMAXBEL|IXOFF|INPCK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IGNPAR); options.c_iflag &= ~(IMAXBEL|IXOFF|INPCK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IGNPAR);
#else
options.c_iflag &= ~(IXOFF|INPCK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IGNPAR);
#endif
options.c_iflag |= IGNBRK; options.c_iflag |= IGNBRK;
options.c_oflag &= ~OPOST; options.c_oflag &= ~OPOST;
options.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL|ICANON|ISIG|IEXTEN|NOFLSH|TOSTOP); options.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL|ICANON|ISIG|IEXTEN|NOFLSH|TOSTOP);

View File

@@ -107,7 +107,7 @@ void ufn(DLword bytecode)
(LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (entry68k->arg_num << 1) + 2 /** +1 **/; (LAddrFromNative(CurrentStackPTR) & 0x0ffff) - (entry68k->arg_num << 1) + 2 /** +1 **/;
/* Setup IVar */ /* Setup IVar */
IVar = NativeAligned2FromStackOffset(CURRENTFX->nextblock); IVar = NativeAligned2FromLAddr((((LispPTR)(CURRENTFX->nextblock)) | STK_OFFSET));
#ifdef LISPTRACE #ifdef LISPTRACE
print(entry68k->atom_name); print(entry68k->atom_name);

Some files were not shown because too many files have changed in this diff Show More