diff --git a/sys/unix/Makefile.src b/sys/unix/Makefile.src index 74d3307f6..10e833f61 100644 --- a/sys/unix/Makefile.src +++ b/sys/unix/Makefile.src @@ -673,8 +673,8 @@ Sysatt: $(HOSTOBJ) $(HOBJ) $(TARGET_HACKLIB) $(GENTILEOFILE) \ $(DATE_O) $(BUILDMORE) Makefile @echo "Loading $(GAME)." $(AT)$(LD) $(TARGET_LFLAGS) /lib/crt0s.o /lib/shlib.ifile \ - -o $(GAMEBIN) $(HOSTOBJ) $(HOBJ) $(DATE_O) $(TARGET_HACKLIB) \ - $(LUALIBS) + -o $(GAMEBIN) $(HOSTOBJ) $(HOBJ) $(DATE_O) \ + $(TARGET_HACKLIB) $(LUALIBS) @touch Sysatt Systos: $(HOSTOBJ) $(HOBJ) $(TARGET_HACKLIB) $(GENTILEOFILE) \ diff --git a/sys/unix/Makefile.top b/sys/unix/Makefile.top index 5ecca3232..6641bc116 100644 --- a/sys/unix/Makefile.top +++ b/sys/unix/Makefile.top @@ -121,13 +121,14 @@ DAT = $(DATNODLB) $(DATDLB) RECOVERBIN = recover # Lua -LUAHEADERS = lib/lua-$(LUA_VERSION)/src -LUATESTTARGET = $(LUAHEADERS)/lua.h -LUATOP = $(LUAHEADERS) -LUAMAKEFLAGS = CC='$(CC)' SYSCFLAGS='$(SYSCFLAGS)' -LUA2NHTOP = ../../.. -LUABASELIB = liblua-$(LUA_VERSION).a -TOPLUALIB = lib/lua/$(LUABASELIB) +LUAHEADERS ?= lib/lua-$(LUA_VERSION)/src +LUATESTTARGET ?= $(LUAHEADERS)/lua.h +LUATOP ?= $(LUAHEADERS) +LUAMAKEFLAGS ?= CC='$(CC)' SYSCFLAGS='$(SYSCFLAGS)' +LUA2NHTOP ?= ../../.. +LUABASELIB ?= liblua-$(LUA_VERSION).a +TOPLUALIB ?= lib/lua/$(LUABASELIB) +LUAHPREFIX ?= ../ ALLDEP = $(PRECHECK) $(GAME) recover Guidebook $(VARDAT) spec_levs check-dlb @@ -149,12 +150,12 @@ $(TOPLUALIB): $(LUATOP)/liblua.a include/nhlua.h: $(TOPLUALIB) echo '/* nhlua.h - generated by top Makefile */' > $@ - @echo '#include "../$(LUAHEADERS)/lua.h"' >> $@ + @echo '#include "$(LUAHPREFIX)$(LUAHEADERS)/lua.h"' >> $@ @sed -e '/(lua_error)/!d' \ -e '/(lua_error)/s/LUA_API/ATTRNORETURN LUA_API/1' \ -e '/(lua_error)/s/;/ NORETURN;/1' < $(LUAHEADERS)/lua.h >> $@ - @echo '#include "../$(LUAHEADERS)/lualib.h"' >> $@ - @echo '#include "../$(LUAHEADERS)/lauxlib.h"' >> $@ + @echo '#include "$(LUAHPREFIX)$(LUAHEADERS)/lualib.h"' >> $@ + @echo '#include "$(LUAHPREFIX)$(LUAHEADERS)/lauxlib.h"' >> $@ @echo '/*nhlua.h*/' >> $@ # LUATESTTARGET is this by default lib/lua-$(LUA_VERSION)/src/lua.h: diff --git a/sys/unix/README-hints b/sys/unix/README-hints index 283d1cf29..196f32734 100644 --- a/sys/unix/README-hints +++ b/sys/unix/README-hints @@ -49,6 +49,8 @@ make musl=1 Build with settings appropriate for linking with musl libc, instead of glibc. This causes NOCRASHREPORT to be defined, and avoids the use of 'col' during the build. +make WANT_SYSTEM_LUA=1 Attempt to use an existing Lua package already + on the system (initially for Alpine Linux). make resp=1 Place the majority of the compiler switches into a response file to de-clutter the build compiler command lines and eliminate some of the diff --git a/sys/unix/hints/linux.500 b/sys/unix/hints/linux.500 index 8a309bfe3..d8aebe39e 100755 --- a/sys/unix/hints/linux.500 +++ b/sys/unix/hints/linux.500 @@ -23,6 +23,7 @@ HINTSVERSION := 500 ifdef MAKEFILE_TOP +LUA_VERSION=5.4.8 ifeq ($(MAKELEVEL),0) PRECHECK+=checkmakefiles # all files included from this hints file get listed @@ -67,6 +68,35 @@ 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)) +LUAHEADERS := /usr/include/lua$(LUASHVER) +LUATESTTARGET := $(LUAHEADERS)/lua.h +LUAHPREFIX := +LUAFLAGS := $(shell pkg-config --cflags lua-$(LUASHVER)) +LUALIBS := $(shell pkg-config --libs lua-$(LUASHVER)) +CFLAGS += $(LUAFLAGS) +LUATOP= +LUAMAKEFLAGS= +LUA2NHTOP= +LUABASELIB= +TOPLUALIB= +LUALIB= +endif # USE_SYSTEM_LUA +endif # WANT_SYSTEM_LUA + ifdef WANT_WIN_QT ifdef WANT_WIN_QT5 QTDIR=/usr @@ -96,6 +126,7 @@ LFLAGS+=-fsanitize=undefined endif ifeq "$(USE_CURSESLIB)" "1" +CURSPKG ?= ncursesw # default CURSESLIB = -lncurses -ltinfo # If CURSES_UNICODE is defined, we need ncursesw. @@ -103,8 +134,8 @@ CURSESLIB = -lncurses -ltinfo # CURSESLIB = -lncurses -ltinfo ifdef MAKEFILE_SRC comma:=, -NCURSES_LFLAGS = $(shell pkg-config ncursesw --libs) -NCURSES_CFLAGS = $(shell pkg-config ncursesw --cflags) +NCURSES_LFLAGS = $(shell pkg-config $(CURSPKG) --libs) +NCURSES_CFLAGS = $(shell pkg-config $(CURSPKG) --cflags) ifeq (,$(findstring ncursesw, $(NCURSES_LFLAGS))) ifeq (,$(findstring ncurses, $(NCURSES_LFLAGS))) #this indicates that pkg-config itself was unavailable