initial libnethack
This commit is contained in:
153
sys/lib/hints/wasm
Normal file
153
sys/lib/hints/wasm
Normal file
@@ -0,0 +1,153 @@
|
||||
|
||||
#-PRE xxxx
|
||||
# enscripten WebAssembly config
|
||||
|
||||
WANT_WASM=1
|
||||
WASM_DEBUG=1
|
||||
WASM_DATA_DIR=$(NHSROOT)/src/wasm-data/Users/ampower/nethackdir
|
||||
|
||||
# toolchain
|
||||
EMCC=emcc
|
||||
EMAR=emar rcu
|
||||
EMRANLIB=emranlib
|
||||
|
||||
# link flags
|
||||
EMCC_LFLAGS=-s SINGLE_FILE=1
|
||||
EMCC_LFLAGS=-s WASM=1
|
||||
EMCC_LFLAGS+=-s ALLOW_TABLE_GROWTH
|
||||
EMCC_LFLAGS+=-s ASYNCIFY -s ASYNCIFY_IMPORTS='["_nhmain"]' -O3
|
||||
EMCC_LFLAGS+=-s MODULARIZE
|
||||
EMCC_LFLAGS+=-s EXPORTED_FUNCTIONS='["_main"]'
|
||||
EMCC_LFLAGS+=-s EXPORTED_RUNTIME_METHODS='["cwrap", "ccall", "addFunction", "removeFunction", "UTF8ToString"]'
|
||||
EMCC_LFLAGS+=-s ERROR_ON_UNDEFINED_SYMBOLS=0
|
||||
EMCC_LFLAGS+=--embed-file wasm-data@/
|
||||
|
||||
# WASM C flags
|
||||
EMCC_CFLAGS=
|
||||
EMCC_CFLAGS+=-Wall -Werror
|
||||
EMCC_CFLAGS+=-DWASM
|
||||
EMCC_DEBUG_CFLAGS+=-s ASSERTIONS=1
|
||||
EMCC_DEBUG_CFLAGS+=-s STACK_OVERFLOW_CHECK=2
|
||||
EMCC_DEBUG_CFLAGS+=-s SAFE_HEAP=1
|
||||
EMCC_DEBUG_CFLAGS+=-s LLD_REPORT_UNDEFINED
|
||||
EMCC_PROD_CFLAGS+=-O3
|
||||
|
||||
# Nethack C flags
|
||||
CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
|
||||
CFLAGS+=-g -I../include -DNOTPARMDECL
|
||||
CFLAGS+=-Wall -Werror
|
||||
CFLAGS+=-DGCC_WARN
|
||||
|
||||
# NetHack sources control
|
||||
CFLAGS+=-DDLB
|
||||
CFLAGS+=-DHACKDIR=\"$(HACKDIR)\"
|
||||
CFLAGS+=-DDLB
|
||||
CFLAGS+=-DGREPPATH=\"/usr/bin/grep\"
|
||||
CFLAGS+=-DNOMAIL
|
||||
|
||||
ifdef WASM_DEBUG
|
||||
EMCC_CFLAGS+=$(EMCC_DEBUG_CFLAGS)
|
||||
else
|
||||
EMCC_CFLAGS+=$(EMCC_PROD_CFLAGS)
|
||||
endif
|
||||
|
||||
ifdef WANT_SHARE_INSTALL
|
||||
# if $GAMEUID is root, we install into roughly proper Mac locations, otherwise
|
||||
# we install into ~/nethackdir
|
||||
ifeq ($(GAMEUID),root)
|
||||
PREFIX:=/Library/NetHack
|
||||
SHELLDIR=/usr/local/bin
|
||||
HACKDIR=$(PREFIX)/nethackdir
|
||||
CHOWN=chown
|
||||
CHGRP=chgrp
|
||||
# We run sgid so the game has access to both HACKDIR and user preferences.
|
||||
GAMEPERM = 02755
|
||||
else # ! root
|
||||
PREFIX:=/Users/$(GAMEUID)
|
||||
SHELLDIR=$(PREFIX)/bin
|
||||
HACKDIR=$(PREFIX)/Library/NetHack/nethackdir
|
||||
CHOWN=/usr/bin/true
|
||||
CHGRP=/usr/bin/true
|
||||
GAMEPERM = 0500
|
||||
endif # ! root
|
||||
VARFILEPERM = 0664
|
||||
VARDIRPERM = 0775
|
||||
ROOTCHECK= [[ `id -u` == 0 ]] || ( echo "Must run install with sudo."; exit 1)
|
||||
# XXX it's nice we don't write over sysconf, but we've already erased it
|
||||
# make sure we have group GAMEUID and group GAMEGRP
|
||||
PREINSTALL= . sys/unix/hints/macosx.sh user2 $(GAMEUID); \
|
||||
. sys/unix/hints/macosx.sh group2 $(GAMEGRP); \
|
||||
mkdir $(SHELLDIR); chown $(GAMEUID) $(SHELLDIR)
|
||||
POSTINSTALL+= sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/sysconf; \
|
||||
$(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; \
|
||||
$(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; \
|
||||
chmod $(VARFILEPERM) $(HACKDIR)/sysconf;
|
||||
|
||||
else ifdef WANT_SOURCE_INSTALL
|
||||
|
||||
PREFIX=$(abspath $(NHSROOT))
|
||||
# suppress nethack.sh
|
||||
#SHELLDIR=
|
||||
HACKDIR=$(PREFIX)/playground
|
||||
CHOWN=/usr/bin/true
|
||||
CHGRP=/usr/bin/true
|
||||
GAMEPERM = 0700
|
||||
VARFILEPERM = 0600
|
||||
VARDIRPERM = 0700
|
||||
POSTINSTALL+= sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/sysconf;
|
||||
# We can use "make all" to build the whole thing - but it misses some things:
|
||||
MOREALL=$(MAKE) install
|
||||
CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
|
||||
|
||||
else # !WANT_SOURCE_INSTALL
|
||||
|
||||
PREFIX:=$(wildcard ~)
|
||||
SHELLDIR=$(PREFIX)/bin
|
||||
HACKDIR=$(PREFIX)/nethackdir
|
||||
CHOWN=/usr/bin/true
|
||||
CHGRP=/usr/bin/true
|
||||
GAMEPERM = 0700
|
||||
VARFILEPERM = 0600
|
||||
VARDIRPERM = 0700
|
||||
ifdef ($(WANT_DEFAULT),X11)
|
||||
# install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists
|
||||
PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc || true
|
||||
endif # WANT_DEFAULT X11
|
||||
|
||||
POSTINSTALL+= sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(HACKDIR)/sysconf; \
|
||||
$(CHOWN) $(GAMEUID) $(HACKDIR)/sysconf; \
|
||||
$(CHGRP) $(GAMEGRP) $(HACKDIR)/sysconf; \
|
||||
chmod $(VARFILEPERM) $(HACKDIR)/sysconf;
|
||||
ifdef WANT_BUNDLE
|
||||
#
|
||||
# Bundle
|
||||
#
|
||||
# $(HACKDIR)/$(GAME).app/
|
||||
# Contents/
|
||||
# Frameworks/
|
||||
# Info.plist
|
||||
# MacOS/
|
||||
# $(GAME)
|
||||
# PkgInfo/
|
||||
# PlugIns/
|
||||
# Resources/
|
||||
# SharedFrameWorks/
|
||||
#
|
||||
BUNDLE = mkdir -p $(HACKDIR)/nethack.app/Contents/MacOS; \
|
||||
sys/unix/hints/macosx.sh infoplist > $(HACKDIR)/nethack.app/Contents/Info.plist; \
|
||||
mv $(HACKDIR)/nethack $(HACKDIR)/nethack.app/Contents/MacOS/nethack;
|
||||
ifdef WANT_SHARE_INSTALL
|
||||
BUNDLE+= chmod $(GAMEPERM) $(HACKDIR)/nethack.app/Contents/MacOS/nethack;
|
||||
endif
|
||||
|
||||
POSTINSTALL+= $(BUNDLE)
|
||||
POSTINSTALL+= if test -f $(SHELLDIR)/$(GAME); then \
|
||||
sed -i '' 's;HACKDIR/$(GAME);HACKDIR/$(GAME).app/Contents/MacOS/$(GAME);' $(SHELLDIR)/$(GAME) ; fi;
|
||||
endif # WANT_BUNDLE
|
||||
endif # !WANT_SHARE_INSTALL
|
||||
|
||||
INSTDIR=$(HACKDIR)
|
||||
VARDIR=$(HACKDIR)
|
||||
|
||||
#-POST
|
||||
# no post
|
||||
Reference in New Issue
Block a user