diff --git a/bin/linux-common.mk b/bin/linux-common.mk index c39251e..7129f74 100644 --- a/bin/linux-common.mk +++ b/bin/linux-common.mk @@ -1,15 +1,33 @@ # Common Options for All Linuxes -CC = gcc $(GCC_CFLAGS) -# CC = clang $(CLANG_CFLAGS) +include linux-compiler.mk -include linux-libbsd.mk +ifeq ($(USE_LIBBSD),T) + include linux-libbsd.mk +else + BSD_CFLAGS := + BSD_LDFLAGS := +endif -# OPTFLAGS is normally -O2. -OPTFLAGS = -O2 -g3 +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) LDELDFLAGS = $(XLDFLAGS) -lc -lm $(BSD_LDFLAGS) OBJECTDIR = ../$(RELEASENAME)/ + +default: $(DEFAULT_TARGET) diff --git a/bin/linux-compiler.mk b/bin/linux-compiler.mk new file mode 100644 index 0000000..e147e8a --- /dev/null +++ b/bin/linux-compiler.mk @@ -0,0 +1,40 @@ +# Select whether to use clang or gcc +# Priority +# 1. If -DUSE_GCC or -DUSE_CLANG on command line (but not both) use the requested compiler. +# 2. If one compiler is installed but not the other, use the installed compiler. +# 3. Use clang + +EXISTS_GCC := $(shell command -v gcc) +EXISTS_CLANG := $(shell command -v clang) +ifeq ($(or $(EXISTS_GCC),$(EXISTS_CLANG)),) + $(error "Cannot find compiler: neither gcc nor clang. Exiting.") +endif +ifneq ($(and $(USE_CLANG),$(USE_GCC)),) + $(error "Cannot use both USE_CLANG=T and USE_GCC=T. Exiting.") +endif +COMPILER := +ifdef USE_CLANG + ifeq ($(EXISTS_CLANG),) + $(error "USE_CLANG=T given, but cannot find the clang compiler. Exiting") + endif + COMPILER := clang +endif +ifdef USE_GCC + ifeq ($(EXISTS_GCC),) + $(error "USE_GCC=T given, but cannot find the gcc compiler. Exiting") + endif + COMPILER := gcc +endif +ifeq ($(COMPILER),) + ifneq ($(EXISTS_CLANG),) + COMPILER := clang + else + COMPILER := gcc + endif +endif + +ifeq ($(COMPILER),gcc) + CC := gcc $(GCC_CFLAGS) +else + CC := clang $(CLANG_CFLAGS) +endif diff --git a/bin/linux-sdl.mk b/bin/linux-sdl.mk index 764d2fa..f24b3a9 100644 --- a/bin/linux-sdl.mk +++ b/bin/linux-sdl.mk @@ -10,5 +10,5 @@ XFILES = $(OBJECTDIR)sdl.o # XFLAGS = -DSDL=2 -XLDFLAGS = -lSDL2 +XLDFLAGS ?= -lSDL2 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 3920d46..1e4502a 100644 --- a/bin/makefile-init-linux.aarch64 +++ b/bin/makefile-init-linux.aarch64 @@ -1,12 +1,9 @@ # Options for Linux, aarch64 processor, X windows, for INIT processing -include linux-x.mk - +OPTFLAGS = -O0 -g DEBUGFLAGS = ADDITIONAL_DFLAGS = $(DEBUGFLAGS) -DNOVERSION -DINIT +USE_LIBBSD=T +USE_DISPLAY=init include linux-common.mk - -OPTFLAGS = -O0 -g - -default : ../$(OSARCHNAME)/ldeinit diff --git a/bin/makefile-init-linux.x86_64 b/bin/makefile-init-linux.x86_64 index eb33754..bd2074a 100644 --- a/bin/makefile-init-linux.x86_64 +++ b/bin/makefile-init-linux.x86_64 @@ -1,12 +1,9 @@ # Options for Linux, x86 processor, X windows, for INIT processing -include linux-x.mk - +OPTFLAGS = -O0 -g DEBUGFLAGS = ADDITIONAL_DFLAGS = $(DEBUGFLAGS) -DNOVERSION -DINIT +USE_LIBBSD=T +USE_DISPLAY=init include linux-common.mk - -OPTFLAGS = -O0 -g - -default : ../$(OSARCHNAME)/ldeinit diff --git a/bin/makefile-init-wsl1.aarch64 b/bin/makefile-init-wsl1.aarch64 index 7fb5fce..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 -lbsd -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lbsd - -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 a35a195..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 -lbsd -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lbsd - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/ldeinit +include linux-common.mk diff --git a/bin/makefile-linux.386-sdl b/bin/makefile-linux.386-sdl index 28b61fe..18c26fb 100644 --- a/bin/makefile-linux.386-sdl +++ b/bin/makefile-linux.386-sdl @@ -2,9 +2,7 @@ GCC_CFLAGS := -m64 $(GCC_CFLAGS) CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) - -include linux-sdl.mk +USE_DISPLAY=sdl +USE_LIBBSD=T include linux-common.mk - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl diff --git a/bin/makefile-linux.386-x b/bin/makefile-linux.386-x index 3ce00c4..0abcc25 100644 --- a/bin/makefile-linux.386-x +++ b/bin/makefile-linux.386-x @@ -2,9 +2,7 @@ GCC_CFLAGS := -m32 $(GCC_CFLAGS) CLANG_CFLAGS := -m32 $(CLANG_CFLAGS) - -include linux-x.mk +USE_DISPLAY=x +USE_LIBBSD=T include linux-common.mk - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex diff --git a/bin/makefile-linux.aarch64-sdl b/bin/makefile-linux.aarch64-sdl index dcf5c1d..4241218 100644 --- a/bin/makefile-linux.aarch64-sdl +++ b/bin/makefile-linux.aarch64-sdl @@ -1,7 +1,6 @@ # Options for Linux, ARM64 and SDL -include linux-sdl.mk +USE_DISPLAY=sdl +USE_LIBBSD=T include linux-common.mk - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl diff --git a/bin/makefile-linux.aarch64-x b/bin/makefile-linux.aarch64-x index 90ecd86..48bfc97 100644 --- a/bin/makefile-linux.aarch64-x +++ b/bin/makefile-linux.aarch64-x @@ -1,7 +1,6 @@ # Options for Linux, aarch64 and X-Window -include linux-x.mk +USE_DISPLAY=x +USE_LIBBSD=T include linux-common.mk - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex diff --git a/bin/makefile-linux.armv7l-sdl b/bin/makefile-linux.armv7l-sdl index 5d5f53a..2a31fca 100644 --- a/bin/makefile-linux.armv7l-sdl +++ b/bin/makefile-linux.armv7l-sdl @@ -1,7 +1,6 @@ # Options for Linux, ARMv7 and SDL -include linux-sdl.mk +USE_DISPLAY=sdl +USE_LIBBSD=T include linux-common.mk - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl diff --git a/bin/makefile-linux.armv7l-x b/bin/makefile-linux.armv7l-x index b113143..c69d063 100644 --- a/bin/makefile-linux.armv7l-x +++ b/bin/makefile-linux.armv7l-x @@ -1,7 +1,6 @@ # Options for Linux, ARMv7 and X-Window -include linux-x.mk +USE_DISPLAY=x +USE_LIBBSD=T 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 47698cb..396e303 100644 --- a/bin/makefile-linux.x86_64-sdl +++ b/bin/makefile-linux.x86_64-sdl @@ -2,9 +2,7 @@ GCC_CFLAGS := -m64 $(GCC_CFLAGS) CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) - -include linux-sdl.mk +USE_DISPLAY=sdl +USE_LIBBSD=T 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 6c9f398..7ffbb6b 100644 --- a/bin/makefile-linux.x86_64-x +++ b/bin/makefile-linux.x86_64-x @@ -2,9 +2,8 @@ GCC_CFLAGS := -m64 $(GCC_CFLAGS) CLANG_CFLAGS := -m64 $(CLANG_CFLAGS) - -include linux-x.mk +USE_DISPLAY=x +USE_LIBBSD=T include linux-common.mk -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex diff --git a/bin/makefile-wsl1.aarch64-sdl b/bin/makefile-wsl1.aarch64-sdl index 7e756e9..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 -lbsd -LDELDFLAGS = -lbsd - -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 fb57847..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 -lbsd -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lbsd - -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 5bad16a..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 -lbsd -LDELDFLAGS = -lbsd - -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 6c12433..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 -lbsd -LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm -lbsd - -OBJECTDIR = ../$(RELEASENAME)/ - -default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex +include linux-common.mk