extend WANT_SYSTEM_LUA=1 to other distros

Only tested on Ubuntu at this point.

feedback on other distros is welcome
This commit is contained in:
nhmall
2026-05-19 11:38:05 -04:00
parent 5333747f02
commit 46735de8a6
5 changed files with 126 additions and 21 deletions
+2 -2
View File
@@ -582,8 +582,8 @@ HSOURCES ?= $(HACKINCL) dgn_file.h
FIRSTOBJ ?= monst.o objects.o
HOSTOBJ ?= $(FIRSTOBJ) alloc.o drawing.o
$(info WINOBJ=$(WINOBJ))
$(info GENTILEOFILE=$(GENTILEOFILE))
#$(info WINOBJ=$(WINOBJ))
#$(info GENTILEOFILE=$(GENTILEOFILE))
#
# $(TARGETPFX)date.o is not included in this list
+4 -3
View File
@@ -127,8 +127,9 @@ LUATOP ?= $(LUAHEADERS)
LUAMAKEFLAGS ?= CC='$(CC)' SYSCFLAGS='$(SYSCFLAGS)'
LUA2NHTOP ?= ../../..
LUABASELIB ?= liblua-$(LUA_VERSION).a
TOPLUALIB ?= lib/lua/$(LUABASELIB)
LUATOPLIB ?= lib/lua/$(LUABASELIB)
LUAHPREFIX ?= ../
LUALIBBUILT ?= $(LUATOP)/liblua.a
ALLDEP = $(PRECHECK) $(GAME) recover Guidebook $(VARDAT) spec_levs check-dlb
@@ -144,11 +145,11 @@ lua_support: include/nhlua.h
@true
$(LUATOP)/liblua.a: $(LUAHEADERS)/lua.h
( cd $(LUATOP) && make $(LUAMAKEFLAGS) a )
$(TOPLUALIB): $(LUATOP)/liblua.a
lib/lua/$(LUABASELIB): $(LUALIBBUILT)
@( if test -d lib/lua ; then true ; else mkdir -p lib/lua ; fi )
cp $(LUATOP)/liblua.a $@
include/nhlua.h: $(TOPLUALIB)
include/nhlua.h: $(LUATOPLIB)
echo '/* nhlua.h - generated by top Makefile */' > $@
@echo '#include "$(LUAHPREFIX)$(LUAHEADERS)/lua.h"' >> $@
@sed -e '/(lua_error)/!d' \
+4 -4
View File
@@ -230,7 +230,7 @@ override SYSOBJ= $(TARGETPFX)pcmain.o $(TARGETPFX)msdos.o \
override WINLIB=
override LUALIB=
override LUALIBS=
override TOPLUALIB=
override LUATOPLIB=
override WINX11OBJ=
override GAMEBIN = $(TARGETPFX)nethack.exe
override RECOVERBIN = $(TARGETPFX)recover.exe
@@ -367,7 +367,7 @@ override SYSOBJ= $(TARGETPFX)libnhmain.o \
$(TARGETPFX)winshim.o
override WINLIB = emranlib
override LUALIB=
override TOPLUALIB=
override LUATOPLIB=
override REGEXOBJ = $(TARGETPFX)posixregex.o
override WINOBJ=
override UUIDOBJ=
@@ -450,7 +450,7 @@ override SYSOBJ = $(TARGETPFX)ioctl.o $(TARGETPFX)unixmain.o $(TARGETPFX)unixtty
override WINLIB = $(NCURSESLIB)
override LUALIB=
override LUALIBS=
override TOPLUALIB=
override LUATOPLIB=
override GAMEBIN=$(MIPS_TARGET)
override RECOVERBIN = $(TARGETPFX)recover
override PACKAGE = mipspkg
@@ -543,7 +543,7 @@ override SYSOBJ = $(TARGETPFX)amidos.o \
override WINLIB=
override LUALIB=
override LUALIBS=
override TOPLUALIB=
override LUATOPLIB=
override DLLIB=
override WINOBJ=
override GAMEBIN = $(TARGETPFX)nethack
+25
View File
@@ -0,0 +1,25 @@
# ----- linuxdistro.500 --------
LINUX_DISTRO=
OS_ID := $(shell grep -E '^ID=' /etc/os-release 2>/dev/null | cut -d= -f2)
#$(info OS_ID=$(OS_ID))
ifeq ($(OS_ID),alpine)
LINUX_DISTRO=alpine
USE_SYSTEM_LUA=1
CURSPKG = ncurses
endif
ifeq ($(OS_ID),debian)
LINUX_DISTRO=debian
USE_SYSTEM_LUA=1
endif
ifeq ($(OS_ID),ubuntu)
LINUX_DISTRO=ubuntu
USE_SYSTEM_LUA=1
endif
ifeq ($(OS_ID),fedora)
LINUX_DISTRO=fedora
USE_SYSTEM_LUA=1
endif
#$(info LINUX_DIST=$(LINUX_DISTRO))
# ----- end of linuxdistro.500 --------
+91 -12
View File
@@ -36,6 +36,9 @@ HINTSINCLFILES := $(addsuffix .$(HINTSVERSION), $(HINTSINCLNAMES))
endif
endif
#-INCLUDE linuxdistro.500
ifndef LIBXPM
LIBXPM= -L/opt/X11/lib -lXpm
endif
@@ -69,31 +72,107 @@ USE_NOSTATICFN = 1
#-INCLUDE compiler.500
ifdef WANT_SYSTEM_LUA
OS_ID := $(shell grep -E '^ID=' /etc/os-release 2>/dev/null | cut -d= -f2)
ifeq ($(OS_ID),alpine)
USE_SYSTEM_LUA=1
CURSPKG = ncurses
endif # Alpine Linux
ifeq "$(USE_SYSTEM_LUA)" "1"
#5.4.8
ifndef LUA_VERSION
LUA_VERSION := 5.4.8
endif
LUASUBDELIM := $(subst ., ,$(LUA_VERSION))
LUASHVER := $(word 1, $(LUASUBDELIM)).$(word 2, $(LUASUBDELIM))
ifeq ($(LINUX_DISTRO),alpine)
# prereq: doas apk add lua5.4-dev
# doas apk add linux-headers
# doas apk add musl-dev
USE_SYSTEM_LUA=1
SHELLPKG :=pkg-config
LUAPKGNAME = lua-$(LUASHVER)
CURSPKG = ncurses
#
else ifeq ($(LINUX_DISTRO),debian)
# prereq: sudo apt install lua5.4 liblua5.4-dev
USE_SYSTEM_LUA=1
SHELLPKG :=pkg-config
LUAPKGNAME = lua-$(LUASHVER)
#
else ifeq ($(LINUX_DISTRO),ubuntu)
# prereq: sudo apt install lua5.4 liblua5.4-dev
USE_SYSTEM_LUA=1
SHELLPKG :=dpkg
LUAPKGNAME = lua$(LUASHVER)
#
else ifeq ($(LINUX_DISTRO),fedora)
# prereq: sudo dnf install lua lua-devel
USE_SYSTEM_LUA=1
SHELLPKG :=rpm
LUAPKGNAME = lua-devel
#
else
USE_SYSTEM_LUA=0
SHELLPKG :=
endif # LINUX_DISTRO
ifeq ($(USE_SYSTEM_LUA),1)
ifneq "$(SHELLPKG)" ""
#
# Two requirements must now pass:
# 1. We need to be able to check if Lua package
# is installed. We do that here.
# 2. The lua.h header file needs to be present
# where expected. We set LUATESTTARGET here,
# but the check is done later on in the top
# Makefile.
#
# Try to confirm package presence
ifeq ($(SHELLPKG),pkg-config)
PKG_EXISTS := $(shell pkg-config --exists $(LUAPKGNAME) \
&& echo yes || echo no)
#
else ifeq ($(SHELLPKG),dpkg)
PKG_EXISTS := $(shell dpkg -s $(LUAPKGNAME) > /dev/null 2>&1 \
&& echo yes || echo no)
#
else ifeq ($(SHELLPKG),rpm)
PKG_EXISTS := $(shell rpm -q $(LUAPKGNAME) > /dev/null 2>&1 \
&& echo yes || echo no)
#
else
$(info Section for DEFAULT)
PKG_EXISTS=no
$(info Existance of package $(LUAPKGNAME) could not be verified)
endif
ifeq ($(PKG_EXISTS),yes)
$(info Existance of package $(LUAPKGNAME) verified)
#
ifeq ($(LINUX_DISTRO),fedora)
LUACFLAGS := $(shell pkg-config --cflags lua-$(LUASHVER))
LUALIBS := $(shell pkg-config --libs lua-$(LUASHVER))
LUAHEADERS := /usr/include/lua$(LUASHVER)
LUATESTTARGET := $(LUAHEADERS)/lua.h
LUAHPREFIX :=
LUAFLAGS := $(shell pkg-config --cflags lua-$(LUASHVER))
#
else ifeq ($(LINUX_DISTRO),ubuntu)
LUACFLAGS := -I/usr/include/lua$(LUASHVER)
LUALIBS := -llua$(LUASHVER) -lm -ldl
LUAHEADERS := /usr/include/lua$(LUASHVER)
LUATESTTARGET := $(LUAHEADERS)/lua.h
#
else ifeq ($(SHELLPKG),pkg-config)
LUACFLAGS := $(shell pkg-config --cflags lua-$(LUASHVER))
LUALIBS := $(shell pkg-config --libs lua-$(LUASHVER))
CFLAGS += $(LUAFLAGS)
LUAHEADERS := /usr/include/lua$(LUASHVER)
LUATESTTARGET := $(LUAHEADERS)/lua.h
endif
#
LUAHPREFIX=
LUATOP=
LUAMAKEFLAGS=
LUA2NHTOP=
LUABASELIB=
TOPLUALIB=
LUATOPLIB=
LUALIBBUILT=
LUALIB=
CFLAGS += $(LUACFLAGS)
endif # PKG_EXISTS?
endif # SHELLPKG has a value
endif # USE_SYSTEM_LUA
endif # WANT_SYSTEM_LUA