#-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