diff --git a/.github/workflows/Dockerfile_builder b/.github/workflows/Dockerfile_builder index 5988ce1..8a9fc07 100755 --- a/.github/workflows/Dockerfile_builder +++ b/.github/workflows/Dockerfile_builder @@ -12,7 +12,9 @@ FROM ubuntu:22.04 SHELL ["/bin/bash", "-c"] USER root:root # Install build tools -RUN apt-get update && apt-get install -y make clang libx11-dev gcc +RUN apt-get update \ + && apt-get install -y build-essential gcc pkgconf make clang cmake \ + && apt-get install -y libx11-dev libbsd-dev libpcap-dev USER root WORKDIR /root ENTRYPOINT /bin/bash diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5c24d78..33d17f8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,7 +13,7 @@ jobs: matrix: os: [macos-11, macos-12, ubuntu-22.04, ubuntu-20.04] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: Install X11 dependencies on MacOS if: ${{ runner.os == 'macOS'}} run: brew install --cask xquartz @@ -28,7 +28,7 @@ jobs: # runs-on: [self-hosted, linux, ARM] # if: ${{ github.repository == 'Interlisp/maiko' }} # steps: -# - uses: actions/checkout@v3 +# - uses: actions/checkout@v6 # - name: Build # working-directory: bin # run: ./makeright x @@ -41,7 +41,7 @@ jobs: env: BUILD_TYPE: Release steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v6 - name: Show CMake version run: cmake --version - name: Install X11 dependencies on MacOS diff --git a/.github/workflows/buildBuilderImage.yml b/.github/workflows/buildBuilderImage.yml index 369bf1f..9cc16a8 100644 --- a/.github/workflows/buildBuilderImage.yml +++ b/.github/workflows/buildBuilderImage.yml @@ -34,7 +34,7 @@ jobs: steps: # Checkout maiko - name: Checkout maiko - uses: actions/checkout@v3 + uses: actions/checkout@v6 # Setup docker environment variables - name: Setup Docker Environment Variables @@ -49,18 +49,18 @@ jobs: # Setup the Docker Machine Emulation environment. - name: Set up QEMU - uses: docker/setup-qemu-action@master + uses: docker/setup-qemu-action@v4 with: platforms: linux/amd64,linux/arm64,linux/arm/v7 # Setup the Docker Buildx funtion - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@master + uses: docker/setup-buildx-action@v4 # Login to ghcr.io - name: Login to GitHub Container Registry - uses: docker/login-action@v2 + uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.repository_owner }} @@ -71,7 +71,7 @@ jobs: # - name: Build Docker Images for Push to GHCR if: ${{ true }} - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v7 with: builder: ${{ steps.buildx.outputs.name }} build-args: | diff --git a/.github/workflows/buildRelease.yml b/.github/workflows/buildRelease.yml index ce99828..ca9985f 100644 --- a/.github/workflows/buildRelease.yml +++ b/.github/workflows/buildRelease.yml @@ -123,7 +123,7 @@ jobs: steps: # Checkout the actions for this repo owner - name: Checkout Actions - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: ${{ github.repository_owner }}/.github path: ./Actions_${{ github.sha }} @@ -157,7 +157,7 @@ jobs: steps: # Checkout the actions for this repo owner - name: Checkout Actions - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: ${{ github.repository_owner }}/.github path: ./Actions_${{ github.sha }} @@ -165,7 +165,7 @@ jobs: # Checkout the branch - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 # Setup release tag - name: Setup Release Tag @@ -185,14 +185,14 @@ jobs: # Setup the Docker Machine Emulation environment. - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v4 with: platforms: linux/amd64,linux/arm64,linux/arm/v7 # Setup the Docker Buildx funtion - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v4 # Do the Docker Build using the Dockerfile in the repository we # checked out. Save the results in a directory under /tmp to be used @@ -204,7 +204,7 @@ jobs: # Dockerfile, NOT HERE IN THE WORKFLOW. # - name: Build Docker Image and Save It Locally - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v7 with: builder: ${{ steps.buildx.outputs.name }} build-args: | @@ -246,7 +246,7 @@ jobs: # Push Release to github - name: Push the release - uses: ncipollo/release-action@v1 + uses: ncipollo/release-action@v1.21.0 with: allowUpdates: true artifacts: @@ -280,11 +280,11 @@ jobs: # Checkout the branch - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 # Checkout the actions for this repo owner - name: Checkout Actions - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: ${{ github.repository_owner }}/.github path: ./Actions_${{ github.sha }} @@ -376,7 +376,7 @@ jobs: # Push Release - name: Push the release - uses: ncipollo/release-action@v1 + uses: ncipollo/release-action@v1.21.0 with: allowUpdates: true artifacts: @@ -434,13 +434,13 @@ jobs: # Checkout the branch - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: path: cygwin\maiko # Checkout the actions for this repo owner - name: Checkout Actions - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: ${{ github.repository_owner }}/.github path: ./Actions_${{ github.sha }} @@ -470,7 +470,7 @@ jobs: # Push Release to github - name: Push the release - uses: ncipollo/release-action@v1 + uses: ncipollo/release-action@v1.21.0 with: allowUpdates: true artifacts: @@ -501,7 +501,7 @@ jobs: # Checkout the actions for this repo owner - name: Checkout Actions - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: ${{ github.repository_owner }}/.github path: ./Actions_${{ github.sha }} @@ -530,7 +530,7 @@ jobs: # Checkout the maiko branch - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 # Setup release tag - name: Setup Release Tag @@ -547,7 +547,7 @@ jobs: # Push Release to github - name: Push the release - uses: ncipollo/release-action@v1 + uses: ncipollo/release-action@v1.21.0 with: allowUpdates: true artifacts: ${{ steps.tag.outputs.release_tag }}-emscripten.tgz @@ -573,7 +573,7 @@ jobs: steps: # Checkout the actions for this repo owner - name: Checkout Actions - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: ${{ github.repository_owner }}/.github path: ./Actions_${{ github.sha }} diff --git a/CMakeLists.txt b/CMakeLists.txt index eb1f811..0f01aa1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,5 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.15) PROJECT(maiko C) - SET(CMAKE_EXPORT_COMPILE_COMMANDS ON) SET(CMAKE_C_STANDARD 99) @@ -37,6 +36,15 @@ IF(NEED_LIB_M) SET(MAIKO_LIBRARIES m) ENDIF() +IF (CMAKE_SYSTEM_NAME STREQUAL "Linux") + CHECK_LIBRARY_EXISTS(c strlcat "" NO_NEED_FOR_LIBBSD) + IF(NOT NO_NEED_FOR_LIBBSD) + find_package(PkgConfig REQUIRED) + pkg_check_modules(LIBBSD-OVERLAY REQUIRED IMPORTED_TARGET "libbsd-overlay") + SET(MAIKO_LIBRARIES ${MAIKO_LIBRARIES} PkgConfig::LIBBSD-OVERLAY) + 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) @@ -448,6 +456,7 @@ ADD_CUSTOM_COMMAND(OUTPUT vdate.c ADD_EXECUTABLE(lde src/ldeboot.c src/unixfork.c) TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DEFINITIONS}) TARGET_INCLUDE_DIRECTORIES(lde PRIVATE inc) +TARGET_LINK_LIBRARIES(lde ${MAIKO_LIBRARIES}) IF(MAIKO_DISPLAY_X11) # Tell it that the X11 launcher is available. TARGET_COMPILE_DEFINITIONS(lde PRIVATE ${MAIKO_DISPLAY_X11_DEFINITIONS}) @@ -528,3 +537,38 @@ TARGET_INCLUDE_DIRECTORIES(setsout PRIVATE inc) ADD_EXECUTABLE(tstsout src/tstsout.c src/byteswap.c) TARGET_COMPILE_DEFINITIONS(tstsout PRIVATE ${MAIKO_DEFINITIONS}) TARGET_INCLUDE_DIRECTORIES(tstsout PRIVATE inc) + +# Installation Targets +IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/../" CACHE PATH "Installation prefix" FORCE) +ENDIF() +execute_process( + COMMAND sh "${CMAKE_SOURCE_DIR}/bin/osversion" + OUTPUT_VARIABLE os_ver + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE res +) +if(NOT res EQUAL 0) + message(FATAL_ERROR "osversion script failed") +endif() + +execute_process( + COMMAND sh "${CMAKE_SOURCE_DIR}/bin/machinetype" + OUTPUT_VARIABLE machine_type + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE res +) +if(NOT res EQUAL 0) + message(FATAL_ERROR "machinetype script failed") +endif() + +set(release_dir "${os_ver}.${machine_type}") + +INSTALL(TARGETS lde DESTINATION ${release_dir}) + +IF(MAIKO_DISPLAY_X11) + INSTALL(TARGETS ldex ldeinit DESTINATION ${release_dir}) +ENDIF() +IF(MAIKO_DISPLAY_SDL) + INSTALL(TARGETS ldesdl DESTINATION ${release_dir}) +ENDIF() diff --git a/bin/linux-common.mk b/bin/linux-common.mk new file mode 100644 index 0000000..3d56a0d --- /dev/null +++ b/bin/linux-common.mk @@ -0,0 +1,47 @@ +# Common Options for All Linuxes + +include linux-compiler.mk + +BSD_CFLAGS := +BSD_LDFLAGS := +ifeq ($(USE_LIBBSD),T) + # Use LIBBSD - but only if glibc < 2.38 + # Because we only need strlcat, strlcpy and friends from libbsd + # and they are included in glibc from 2.38 on. + GLIBC_VERSION := $(shell getconf GNU_LIBC_VERSION | sed 's/glibc //') + GLIBC_CHECK := 0 + ifneq ($(GLIBC_VERSION),) + GLIBC_CHECK := $(shell echo "$(GLIBC_VERSION) >= 2.38" | bc) + endif + ifneq ($(GLIBC_CHECK),1) + include linux-libbsd.mk + endif +endif + +ifeq ($(USE_DISPLAY),x) + include linux-x.mk + DEFAULT_TARGET := ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex +endif +ifeq ($(USE_DISPLAY),sdl) + include linux-sdl.mk + DEFAULT_TARGET := ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl +endif +ifeq ($(USE_DISPLAY),init) + include linux-x.mk + DEFAULT_TARGET := ../$(OSARCHNAME)/ldeinit +endif + +OPTFLAGS ?= -O2 -g3 +DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) $(ADDITIONAL_DFLAGS) + +LDFLAGS = $(XLDFLAGS) -lc -lm $(BSD_LDFLAGS) + +ifeq ($(USE_DISPLAY),x) + LDELDFLAGS = $(XLDFLAGS) -lc -lm $(BSD_LDFLAGS) +else + LDELDFLAGS = -lc -lm $(BSD_LDFLAGS) +endif + +OBJECTDIR = ../$(RELEASENAME)/ + +default: $(DEFAULT_TARGET) diff --git a/bin/linux-compiler.mk b/bin/linux-compiler.mk new file mode 100644 index 0000000..7a181f5 --- /dev/null +++ b/bin/linux-compiler.mk @@ -0,0 +1,37 @@ +# Select whether to use clang or gcc +# Priority +# 1. If USE_COMPILER=gcc or USE_COMPILER=clang on make command line use the requested compiler. +# 2. If clang is installed use it. +# 3. Use gcc + +EXISTS_GCC := $(shell /bin/sh -c "command -v gcc") +EXISTS_CLANG := $(shell /bin/sh -c "command -v clang") +ifeq ($(or $(EXISTS_GCC),$(EXISTS_CLANG)),) + $(error "Cannot find compiler: neither gcc nor clang. Exiting.") +endif +COMPILER := +ifeq ($(USE_COMPILER),clang) + ifeq ($(EXISTS_CLANG),) + $(error "USE_COMPILER=clang, but cannot find the clang compiler. Exiting") + endif + COMPILER := clang +else ifeq ($(USE_COMPILER),gcc) + ifeq ($(EXISTS_GCC),) + $(error "USE_COMPILER=gcc given, but cannot find the gcc compiler. Exiting") + endif + COMPILER := gcc +else ifneq ($(EXISTS_CLANG),) + COMPILER := clang +else + COMPILER := gcc +endif + +ifeq ($(COMPILER),) + $(error "Oops. Trying to select gcc or clang but should never get here") +endif + +ifeq ($(COMPILER),gcc) + CC := gcc $(GCC_CFLAGS) +else + CC := clang $(CLANG_CFLAGS) +endif diff --git a/bin/linux-libbsd.mk b/bin/linux-libbsd.mk new file mode 100644 index 0000000..dde1ef9 --- /dev/null +++ b/bin/linux-libbsd.mk @@ -0,0 +1,26 @@ +# Check that pkg-config is available and that the libbsd-dev package is installed +# If one of these is missing, error out +# FGH 2026-03-08 +ifneq ($(MAKECMDGOALS),clean) + ifneq ($(MAKECMDGOALS),cleanup) + + CHK_PKG_CONFIG := $(shell /bin/sh -c "command -v pkg-config") + ifeq ($(CHK_PKG_CONFIG),) + # pkg-config not found, print an error + $(error "pkg-config not found. Please install it to build this project.") + endif + + CHK_LIBBSD_DEV := $(shell pkg-config --exists libbsd-overlay && echo true) + ifneq ($(CHK_LIBBSD_DEV),true) + $(error "libbsd-dev (or libbsd-devel) package not found. Please install it to build this project.") + endif + + BSD_CFLAGS := $(shell pkg-config --cflags libbsd-overlay) + + BSD_LDFLAGS := $(shell pkg-config --libs libbsd-overlay) + + endif # clean +endif # cleanup + + + diff --git a/bin/linux-sdl.mk b/bin/linux-sdl.mk new file mode 100644 index 0000000..f24b3a9 --- /dev/null +++ b/bin/linux-sdl.mk @@ -0,0 +1,14 @@ +# Common Options for Linux using SDL instead of X Windows + +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 + +XLDFLAGS ?= -lSDL2 + diff --git a/bin/linux-x.mk b/bin/linux-x.mk new file mode 100644 index 0000000..730eea1 --- /dev/null +++ b/bin/linux-x.mk @@ -0,0 +1,17 @@ +# Common Options for Linux with X Windows + +XFILES = $(OBJECTDIR)xmkicon.o \ + $(OBJECTDIR)xbbt.o \ + $(OBJECTDIR)dspif.o \ + $(OBJECTDIR)xinit.o \ + $(OBJECTDIR)xscroll.o \ + $(OBJECTDIR)xcursor.o \ + $(OBJECTDIR)xlspwin.o \ + $(OBJECTDIR)xrdopt.o \ + $(OBJECTDIR)xwinman.o + + +XFLAGS = -DXWINDOW + +XLDFLAGS = -L/usr/X11/lib -lX11 + diff --git a/bin/makefile-cygwin.x86_64-sdl b/bin/makefile-cygwin.x86_64-sdl index 28531eb..2de38d5 100644 --- a/bin/makefile-cygwin.x86_64-sdl +++ b/bin/makefile-cygwin.x86_64-sdl @@ -1,26 +1,9 @@ # Options for Linux, Intel x86_64 and X-Window -CC = gcc -m64 $(GCC_CFLAGS) -I/usr/local/include -#CC = clang -m64 $(CLANG_CFLAGS) +GCC_CFLAGS := -m64 $(GCC_CFLAGS) -I/usr/local/include +CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) -I/usr/local/include +USE_DISPLAY=sdl +USE_LIBBSD=F +XLDFLAGS := -L/usr/local/lib -lSDL2 -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 = -lm -L/usr/local/lib -lSDL2 -# -LDELDFLAGS = - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl +include linux-common.mk diff --git a/bin/makefile-cygwin.x86_64-x b/bin/makefile-cygwin.x86_64-x index 499d5d1..8747f35 100644 --- a/bin/makefile-cygwin.x86_64-x +++ b/bin/makefile-cygwin.x86_64-x @@ -1,28 +1,9 @@ -# Options for Linux, Intel x86_64 and X-Window +# Options for Cygwin, Intel x86_64 and X-Window -#CC = gcc -m64 $(GCC_CFLAGS) -CC = clang -m64 $(CLANG_CFLAGS) +GCC_CFLAGS := -m64 $(GCC_CFLAGS) +CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) +USE_DISPLAY=x +USE_LIBBSD=F -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o +include linux-common.mk - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex diff --git a/bin/makefile-init-linux.aarch64 b/bin/makefile-init-linux.aarch64 index 52ab52b..1e4502a 100644 --- a/bin/makefile-init-linux.aarch64 +++ b/bin/makefile-init-linux.aarch64 @@ -1,29 +1,9 @@ # Options for Linux, aarch64 processor, X windows, for INIT processing -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) - -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o - - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it OPTFLAGS = -O0 -g DEBUGFLAGS = -DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT +ADDITIONAL_DFLAGS = $(DEBUGFLAGS) -DNOVERSION -DINIT +USE_LIBBSD=T +USE_DISPLAY=init -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/ldeinit +include linux-common.mk diff --git a/bin/makefile-init-linux.x86_64 b/bin/makefile-init-linux.x86_64 index 8eeb208..bd2074a 100644 --- a/bin/makefile-init-linux.x86_64 +++ b/bin/makefile-init-linux.x86_64 @@ -1,29 +1,9 @@ # Options for Linux, x86 processor, X windows, for INIT processing -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) - -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o - - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it OPTFLAGS = -O0 -g DEBUGFLAGS = -DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT +ADDITIONAL_DFLAGS = $(DEBUGFLAGS) -DNOVERSION -DINIT +USE_LIBBSD=T +USE_DISPLAY=init -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/ldeinit +include linux-common.mk diff --git a/bin/makefile-init-wsl1.aarch64 b/bin/makefile-init-wsl1.aarch64 index 5362d82..d8e7051 100644 --- a/bin/makefile-init-wsl1.aarch64 +++ b/bin/makefile-init-wsl1.aarch64 @@ -1,29 +1,9 @@ # Options for Windows System for Linux v1, aarch64 processor, X windows, for INIT processing -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) - -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o - - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it OPTFLAGS = -O0 -g DEBUGFLAGS = -DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT -D__wsl1__ +ADDITIONAL_DFLAGS = $(DEBUGFLAGS) -DNOVERSION -DINIT -D__wsl1__ +USE_LIBBSD=T +USE_DISPLAY=init -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/ldeinit +include linux-common.mk diff --git a/bin/makefile-init-wsl1.x86_64 b/bin/makefile-init-wsl1.x86_64 index 182631f..5f7a542 100644 --- a/bin/makefile-init-wsl1.x86_64 +++ b/bin/makefile-init-wsl1.x86_64 @@ -1,29 +1,9 @@ # Options for Windows System for Linux v1, Intel x86_64 processor, X windows, for INIT processing -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) - -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o - - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it OPTFLAGS = -O0 -g DEBUGFLAGS = -DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=$(RELEASE) -DNOVERSION -DINIT -D__wsl1__ +ADDITIONAL_DFLAGS = $(DEBUGFLAGS) -DNOVERSION -DINIT -D__wsl1__ +USE_LIBBSD=T +USE_DISPLAY=init -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/ldeinit +include linux-common.mk diff --git a/bin/makefile-linux.386-sdl b/bin/makefile-linux.386-sdl index 733f3c7..f3f6365 100644 --- a/bin/makefile-linux.386-sdl +++ b/bin/makefile-linux.386-sdl @@ -1,25 +1,8 @@ # Options for Linux, Intel 386/486 and SDL -CC = gcc -m32 $(GCC_CFLAGS) -# CC = clang $(CLANG_CFLAGS) +GCC_CFLAGS := -m32 $(GCC_CFLAGS) +CLANG_CFLAGS := -m32 $(CLANG_CFLAGS) +USE_DISPLAY=sdl +USE_LIBBSD=T -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 = -lm -lSDL2 -LDELDFLAGS = - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl +include linux-common.mk diff --git a/bin/makefile-linux.386-x b/bin/makefile-linux.386-x index e733b9a..0abcc25 100644 --- a/bin/makefile-linux.386-x +++ b/bin/makefile-linux.386-x @@ -1,27 +1,8 @@ # Options for Linux, Intel 386/486 and X-Window -CC = gcc -m32 $(GCC_CFLAGS) -# CC = clang -m32 $(CLANG_CFLAGS) +GCC_CFLAGS := -m32 $(GCC_CFLAGS) +CLANG_CFLAGS := -m32 $(CLANG_CFLAGS) +USE_DISPLAY=x +USE_LIBBSD=T -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex +include linux-common.mk diff --git a/bin/makefile-linux.aarch64-sdl b/bin/makefile-linux.aarch64-sdl index 94b719c..4241218 100644 --- a/bin/makefile-linux.aarch64-sdl +++ b/bin/makefile-linux.aarch64-sdl @@ -1,25 +1,6 @@ # Options for Linux, ARM64 and SDL -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +USE_DISPLAY=sdl +USE_LIBBSD=T -XFILES = $(OBJECTDIR)sdl.o - -# -# For SDL version 2 -# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS -# For SDL version 3 -# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS -# -SDLFLAGS = -DSDL=2 - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) - -LDFLAGS = -lSDL2 -lm -LDELDFLAGS = - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl +include linux-common.mk diff --git a/bin/makefile-linux.aarch64-x b/bin/makefile-linux.aarch64-x index ff0b349..48bfc97 100644 --- a/bin/makefile-linux.aarch64-x +++ b/bin/makefile-linux.aarch64-x @@ -1,27 +1,6 @@ # Options for Linux, aarch64 and X-Window -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +USE_DISPLAY=x +USE_LIBBSD=T -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex +include linux-common.mk diff --git a/bin/makefile-linux.armv7l-sdl b/bin/makefile-linux.armv7l-sdl index da9c4cc..2a31fca 100644 --- a/bin/makefile-linux.armv7l-sdl +++ b/bin/makefile-linux.armv7l-sdl @@ -1,25 +1,6 @@ # Options for Linux, ARMv7 and SDL -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +USE_DISPLAY=sdl +USE_LIBBSD=T -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 = -lm -lSDL2 -LDELDFLAGS = - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl +include linux-common.mk diff --git a/bin/makefile-linux.armv7l-x b/bin/makefile-linux.armv7l-x index ee283b4..c69d063 100644 --- a/bin/makefile-linux.armv7l-x +++ b/bin/makefile-linux.armv7l-x @@ -1,27 +1,6 @@ # Options for Linux, ARMv7 and X-Window -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +USE_DISPLAY=x +USE_LIBBSD=T -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex +include linux-common.mk diff --git a/bin/makefile-linux.x86_64-sdl b/bin/makefile-linux.x86_64-sdl index ccf98c3..396e303 100644 --- a/bin/makefile-linux.x86_64-sdl +++ b/bin/makefile-linux.x86_64-sdl @@ -1,25 +1,8 @@ # Options for Linux, Intel x86_64 and SDL -CC = gcc -m64 $(GCC_CFLAGS) -# CC = clang -m64 $(CLANG_CFLAGS) +GCC_CFLAGS := -m64 $(GCC_CFLAGS) +CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) +USE_DISPLAY=sdl +USE_LIBBSD=T -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 = -lm -lSDL2 -LDELDFLAGS = - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl +include linux-common.mk diff --git a/bin/makefile-linux.x86_64-x b/bin/makefile-linux.x86_64-x index e9225aa..7ffbb6b 100644 --- a/bin/makefile-linux.x86_64-x +++ b/bin/makefile-linux.x86_64-x @@ -1,28 +1,9 @@ # Options for Linux, Intel x86_64 and X-Window -CC = gcc -m64 $(GCC_CFLAGS) -# CC = clang -m64 $(CLANG_CFLAGS) +GCC_CFLAGS := -m64 $(GCC_CFLAGS) +CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) +USE_DISPLAY=x +USE_LIBBSD=T -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o +include linux-common.mk - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex diff --git a/bin/makefile-wsl1.aarch64-sdl b/bin/makefile-wsl1.aarch64-sdl index f3ce3ca..c7ce045 100644 --- a/bin/makefile-wsl1.aarch64-sdl +++ b/bin/makefile-wsl1.aarch64-sdl @@ -1,25 +1,7 @@ # Options for Windows System for Linux v1, ARM64 and SDL -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +USE_DISPLAY=sdl +USE_LIBBSD=T +ADDITIONAL_DFLAGS := -D__wsl1__ -XFILES = $(OBJECTDIR)sdl.o - -# -# For SDL version 2 -# -DSDL=2 in SDLFLAGS and -lSDL2 in LDFLAGS -# For SDL version 3 -# -DSDL=3 in SDLFLAGS and -lSDL3 in LDFLAGS -# -SDLFLAGS = -DSDL=2 - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__ - -LDFLAGS = -lSDL2 -lm -LDELDFLAGS = - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl +include linux-common.mk diff --git a/bin/makefile-wsl1.aarch64-x b/bin/makefile-wsl1.aarch64-x index 15964b5..b742b42 100644 --- a/bin/makefile-wsl1.aarch64-x +++ b/bin/makefile-wsl1.aarch64-x @@ -1,27 +1,7 @@ # Options for Windows System for Linux v1, aarch64 and X-Window -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +USE_DISPLAY=x +USE_LIBBSD=T +ADDITIONAL_DFLAGS := -D__wsl1__ -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__ - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex +include linux-common.mk diff --git a/bin/makefile-wsl1.x86_64-sdl b/bin/makefile-wsl1.x86_64-sdl index ec16b95..6c6e045 100644 --- a/bin/makefile-wsl1.x86_64-sdl +++ b/bin/makefile-wsl1.x86_64-sdl @@ -1,25 +1,9 @@ # Options for Windows System for Linux v1, Intel x86_64 and SDL -CC = gcc -m64 $(GCC_CFLAGS) -# CC = clang -m64 $(CLANG_CFLAGS) +GCC_CFLAGS := -m64 $(GCC_CFLAGS) +CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) +USE_DISPLAY=sdl +USE_LIBBSD=T +ADDITIONAL_DFLAGS := -D__wsl1__ -XFILES = $(OBJECTDIR)sdl.o - -# -# For SDL version 2 -# -DSDL=2 in XFLAGS and -lSDL2 in LDFLAGS -# For SDL version 3 -# -DSDL=3 in XFLAGS and -lSDL3 in LDFLAGS -# -XFLAGS = -DSDL=2 - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__ - -LDFLAGS = -lm -lSDL2 -LDELDFLAGS = - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl +include linux-common.mk diff --git a/bin/makefile-wsl1.x86_64-x b/bin/makefile-wsl1.x86_64-x index fe1b6c0..c1f5f3d 100644 --- a/bin/makefile-wsl1.x86_64-x +++ b/bin/makefile-wsl1.x86_64-x @@ -1,28 +1,9 @@ # Options for Windows System for Linux v1, Intel x86_64 and X-Window -CC = gcc -m64 $(GCC_CFLAGS) -# CC = clang -m64 $(CLANG_CFLAGS) +GCC_CFLAGS := -m64 $(GCC_CFLAGS) +CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) +USE_DISPLAY=x +USE_LIBBSD=T +ADDITIONAL_DFLAGS := -D__wsl1__ -XFILES = $(OBJECTDIR)xmkicon.o \ - $(OBJECTDIR)xbbt.o \ - $(OBJECTDIR)dspif.o \ - $(OBJECTDIR)xinit.o \ - $(OBJECTDIR)xscroll.o \ - $(OBJECTDIR)xcursor.o \ - $(OBJECTDIR)xlspwin.o \ - $(OBJECTDIR)xrdopt.o \ - $(OBJECTDIR)xwinman.o - - -XFLAGS = -DXWINDOW - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) -D__wsl1__ - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex +include linux-common.mk