From 41cad3e499084306a65a54935704a4ac3c15bb4f Mon Sep 17 00:00:00 2001 From: Frank Halasz Date: Mon, 9 Mar 2026 18:11:23 -0700 Subject: [PATCH] Update all makefiles for linux to use (by include) a common base makefile as well as common makefiles for X and sdl. These included makefiles have the name linux-*.mk. Updated all linux makefiles to use the libbsd-overlay package, using pkg-config to set the appropriate flags. Updated CMakelists to also use the libbsd-overlay package via pkgconfig for Linux only. Finally added install targets to the CMakelists file so that cmake --install . will place the lde binaries into the appropriate directory in maiko as the makefiles currently do. --- CMakeLists.txt | 25 ++++++++++++++-- bin/linux-common.mk | 15 ++++++++++ ...ux-check-prerequisites => linux-libbsd.mk} | 4 +++ bin/linux-sdl.mk | 14 +++++++++ bin/linux-x.mk | 17 +++++++++++ bin/makefile-init-linux.aarch64 | 29 +++--------------- bin/makefile-init-linux.x86_64 | 29 +++--------------- bin/makefile-linux.386-sdl | 27 +++-------------- bin/makefile-linux.386-x | 29 +++--------------- bin/makefile-linux.aarch64-sdl | 26 ++-------------- bin/makefile-linux.aarch64-x | 28 ++--------------- bin/makefile-linux.armv7l-sdl | 26 ++-------------- bin/makefile-linux.armv7l-x | 28 ++--------------- bin/makefile-linux.x86_64-sdl | 27 +++-------------- bin/makefile-linux.x86_64-x | 30 +++---------------- 15 files changed, 104 insertions(+), 250 deletions(-) create mode 100644 bin/linux-common.mk rename bin/{makefile-linux-check-prerequisites => linux-libbsd.mk} (85%) create mode 100644 bin/linux-sdl.mk create mode 100644 bin/linux-x.mk diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c747c3..a1842d8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,9 +36,10 @@ IF(NEED_LIB_M) SET(MAIKO_LIBRARIES m) ENDIF() -CHECK_LIBRARY_EXISTS(bsd strlcat "" NEED_LIB_BSD) -IF(NEED_LIB_BSD) - SET(MAIKO_LIBRARIES ${MAIKO_LIBRARIES} bsd) +IF (CMAKE_SYSTEM_NAME STREQUAL "Linux") + find_package(PkgConfig REQUIRED) + pkg_check_modules(LIBBSD-OVERLAY REQUIRED IMPORTED_TARGET "libbsd-overlay") + SET(MAIKO_LIBRARIES ${MAIKO_LIBRARIES} PkgConfig::LIBBSD-OVERLAY) ENDIF() SET (MAIKO_RELEASE 351 CACHE STRING "Release version to build. Release: 115, 200, 201, 210, 300, 350, 351") @@ -533,3 +534,21 @@ 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 -c "echo $(../bin/osversion).$(../bin/machinetype)" + OUTPUT_VARIABLE release_dir + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + OUTPUT_STRIP_TRAILING_WHITESPACE +) +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..c39251e --- /dev/null +++ b/bin/linux-common.mk @@ -0,0 +1,15 @@ +# Common Options for All Linuxes + +CC = gcc $(GCC_CFLAGS) +# CC = clang $(CLANG_CFLAGS) + +include linux-libbsd.mk + +# OPTFLAGS is normally -O2. +OPTFLAGS = -O2 -g3 +DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) $(ADDITIONAL_DFLAGS) + +LDFLAGS = $(XLDFLAGS) -lc -lm $(BSD_LDFLAGS) +LDELDFLAGS = $(XLDFLAGS) -lc -lm $(BSD_LDFLAGS) + +OBJECTDIR = ../$(RELEASENAME)/ diff --git a/bin/makefile-linux-check-prerequisites b/bin/linux-libbsd.mk similarity index 85% rename from bin/makefile-linux-check-prerequisites rename to bin/linux-libbsd.mk index 352fc55..733a9f4 100644 --- a/bin/makefile-linux-check-prerequisites +++ b/bin/linux-libbsd.mk @@ -17,4 +17,8 @@ ifneq ($(MAKECMDGOALS),clean) endif endif +BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) + +BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) + diff --git a/bin/linux-sdl.mk b/bin/linux-sdl.mk new file mode 100644 index 0000000..764d2fa --- /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-init-linux.aarch64 b/bin/makefile-init-linux.aarch64 index 5ba7fd2..3920d46 100644 --- a/bin/makefile-init-linux.aarch64 +++ b/bin/makefile-init-linux.aarch64 @@ -1,33 +1,12 @@ # Options for Linux, aarch64 processor, X windows, for INIT processing -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +include linux-x.mk -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 - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# 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 $(BSD_CFLAGS) +ADDITIONAL_DFLAGS = $(DEBUGFLAGS) -DNOVERSION -DINIT -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) +include linux-common.mk -OBJECTDIR = ../$(RELEASENAME)/ +OPTFLAGS = -O0 -g default : ../$(OSARCHNAME)/ldeinit diff --git a/bin/makefile-init-linux.x86_64 b/bin/makefile-init-linux.x86_64 index 14f142e..eb33754 100644 --- a/bin/makefile-init-linux.x86_64 +++ b/bin/makefile-init-linux.x86_64 @@ -1,33 +1,12 @@ # Options for Linux, x86 processor, X windows, for INIT processing -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +include linux-x.mk -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 - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# 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 $(BSD_CFLAGS) +ADDITIONAL_DFLAGS = $(DEBUGFLAGS) -DNOVERSION -DINIT -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) +include linux-common.mk -OBJECTDIR = ../$(RELEASENAME)/ +OPTFLAGS = -O0 -g default : ../$(OSARCHNAME)/ldeinit diff --git a/bin/makefile-linux.386-sdl b/bin/makefile-linux.386-sdl index f47ea44..28b61fe 100644 --- a/bin/makefile-linux.386-sdl +++ b/bin/makefile-linux.386-sdl @@ -1,29 +1,10 @@ # Options for Linux, Intel 386/486 and SDL -CC = gcc -m32 $(GCC_CFLAGS) -# CC = clang $(CLANG_CFLAGS) +GCC_CFLAGS := -m64 $(GCC_CFLAGS) +CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) -XFILES = $(OBJECTDIR)sdl.o +include linux-sdl.mk -# -# 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 - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) - -LDFLAGS = -lm -lSDL2 $(BSD_LDFLAGS) -LDELDFLAGS = $(BSD_LDFLAGS) - -OBJECTDIR = ../$(RELEASENAME)/ +include linux-common.mk default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl diff --git a/bin/makefile-linux.386-x b/bin/makefile-linux.386-x index 8c97572..3ce00c4 100644 --- a/bin/makefile-linux.386-x +++ b/bin/makefile-linux.386-x @@ -1,31 +1,10 @@ # 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) -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-x.mk -XFLAGS = -DXWINDOW - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) - -OBJECTDIR = ../$(RELEASENAME)/ +include linux-common.mk default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex diff --git a/bin/makefile-linux.aarch64-sdl b/bin/makefile-linux.aarch64-sdl index 2559f21..dcf5c1d 100644 --- a/bin/makefile-linux.aarch64-sdl +++ b/bin/makefile-linux.aarch64-sdl @@ -1,29 +1,7 @@ # Options for Linux, ARM64 and SDL -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +include linux-sdl.mk -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 - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(SDLFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) - -LDFLAGS = -lSDL2 -lm $(BSD_LDFLAGS) -LDELDFLAGS = $(BSD_LDFLAGS) - -OBJECTDIR = ../$(RELEASENAME)/ +include linux-common.mk default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl diff --git a/bin/makefile-linux.aarch64-x b/bin/makefile-linux.aarch64-x index 99a58ca..90ecd86 100644 --- a/bin/makefile-linux.aarch64-x +++ b/bin/makefile-linux.aarch64-x @@ -1,31 +1,7 @@ # Options for Linux, aarch64 and X-Window -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +include linux-x.mk -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 - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) - -OBJECTDIR = ../$(RELEASENAME)/ +include linux-common.mk default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex diff --git a/bin/makefile-linux.armv7l-sdl b/bin/makefile-linux.armv7l-sdl index 47a87a6..5d5f53a 100644 --- a/bin/makefile-linux.armv7l-sdl +++ b/bin/makefile-linux.armv7l-sdl @@ -1,29 +1,7 @@ # Options for Linux, ARMv7 and SDL -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +include linux-sdl.mk -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 - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) - -LDFLAGS = -lm -lSDL2 $(BSD_LDFLAGS) -LDELDFLAGS = $(BSD_LDFLAGS) - -OBJECTDIR = ../$(RELEASENAME)/ +include linux-common.mk default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl diff --git a/bin/makefile-linux.armv7l-x b/bin/makefile-linux.armv7l-x index fa787fb..b113143 100644 --- a/bin/makefile-linux.armv7l-x +++ b/bin/makefile-linux.armv7l-x @@ -1,31 +1,7 @@ # Options for Linux, ARMv7 and X-Window -CC = gcc $(GCC_CFLAGS) -#CC = clang $(CLANG_CFLAGS) +include linux-x.mk -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 - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) - -OBJECTDIR = ../$(RELEASENAME)/ +include linux-common.mk default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex diff --git a/bin/makefile-linux.x86_64-sdl b/bin/makefile-linux.x86_64-sdl index 640a59c..47698cb 100644 --- a/bin/makefile-linux.x86_64-sdl +++ b/bin/makefile-linux.x86_64-sdl @@ -1,29 +1,10 @@ # 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) -XFILES = $(OBJECTDIR)sdl.o +include linux-sdl.mk -# -# 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 - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) - -LDFLAGS = -lm -lSDL2 $(BSD_LDFLAGS) -LDELDFLAGS = $(BSD_LDFLAGS) - -OBJECTDIR = ../$(RELEASENAME)/ +include linux-common.mk default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl diff --git a/bin/makefile-linux.x86_64-x b/bin/makefile-linux.x86_64-x index 87016b4..6c9f398 100644 --- a/bin/makefile-linux.x86_64-x +++ b/bin/makefile-linux.x86_64-x @@ -1,32 +1,10 @@ # 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) -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-x.mk - -XFLAGS = -DXWINDOW - -include makefile-linux-check-prerequisites -BSD_CFLAGS = $(shell pkg-config --cflags libbsd-overlay) -BSD_LDFLAGS = $(shell pkg-config --libs libbsd-overlay) - -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 -DFLAGS = $(XFLAGS) -DRELEASE=$(RELEASE) $(BSD_CFLAGS) - -LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm $(BSD_LDFLAGS) - -OBJECTDIR = ../$(RELEASENAME)/ +include linux-common.mk default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex