endif
ifdef GIT_BRANCH
GITBRANCH = -DNETHACK_GIT_BRANCH=\"$(GIT_BRANCH)\"
-endif
+endif
ifdef WANT_LIBNH
CFLAGS += -DSHIM_GRAPHICS -DNOTTYGRAPHICS -DNOSHELL -DLIBNH
override LUAMAKEFLAGS=$(LUAFLAGS)
endif # GITSUBMODULES
-WANT_BUNDLE=1
ifdef WANT_SHARE_INSTALL
+
+#ifdef MAKEFILE_SRC
+#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARE_INSTALL = $(WANT_SHARE_INSTALL))
+#endif
# if $GAMEUID is root, we install into roughly proper Mac locations, otherwise
# we install into ~/nethackdir
ifeq ($(GAMEUID),root)
else ifdef WANT_SOURCE_INSTALL
+#ifdef MAKEFILE_SRC
+#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARE_INSTALL = $(WANT_SHARE_INSTALL))
+#endif
PREFIX=$(abspath $(NHSROOT))
# suppress nethack.sh
#SHELLDIR=
else # !WANT_SOURCE_INSTALL
+#ifdef MAKEFILE_SRC
+#$(info WANT_SOURCE_INSTALL = $(WANT_SOURCE_INSTALL), WANT_SHARE_INSTALL = $(WANT_SHARE_INSTALL))
+#endif
PREFIX:=$(wildcard ~)
SHELLDIR=$(PREFIX)/bin
HACKDIR=$(PREFIX)/nethackdir
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
+PREINSTALL+= cp -n win/X11/nethack.rc ~/.nethackrc || true;
endif # WANT_DEFAULT X11
+PREINSTALL+= mkdir $(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;
-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)
+
# ~/Library/Preferences/NetHack Defaults
# OPTIONS=name:player,number_pad,menustyle:partial,!time,showexp
# OPTIONS=hilite_pet,toptenwin,msghistory:200,windowtype:Qt
#-INCLUDE multisnd2-pre.370
#
+ifndef MAKEFILE_UTL
+.PHONY: bundle
+endif
+ifdef MAKEFILE_SRC
+.PHONY: updatescript
+abspath := $(abspath $(lastword $(MAKEFILE_LIST)))
+ABSBUNDLEPATH := $(dir $(abspath))
+#$(info ABSBUNDLEPATH=$(ABSBUNDLEPATH)bundle)
+endif # MAKEFILE_SRC
+
+ifdef MAKEFILE_SRC
+ifdef WANT_BUNDLE
+#
+# bundle
+#
+# $(HACKDIR)/$(GAME).app/
+# Contents/
+# Frameworks/
+# Info.plist
+# MacOS/
+# $(GAME)
+# PkgInfo/
+# PlugIns/
+# Resources/
+# SharedFrameWorks/
+#
+BUNDLE_TOP = bundle/$(GAME).app
+BUNDLE_CONTENTSDIR = $(BUNDLE_TOP)/Contents
+BUNDLE_FRAMEWORKSDIR = $(BUNDLE_CONTENTSDIR)/Frameworks
+BUNDLE_MACOSDIR = $(BUNDLE_CONTENTSDIR)/MacOS
+BUNDLE_PKGINFODIR = $(BUNDLE_CONTENTSDIR)/PkgInfo
+BUNDLE_PLUGINSDIR = $(BUNDLE_CONTENTSDIR)/PlugIns
+BUNDLE_RESOURCESDIR = $(BUNDLE_CONTENTSDIR)/Resources
+BUNDLE_SHAREDFRAMEWORKSDIR = $(BUNDLE_CONTENTSDIR)/SharedFrameworks
+BUNDLE_INFOPLIST = $(BUNDLE_CONTENTSDIR)/Info.plist
+BUNDLE_GAME = $(BUNDLE_MACOSDIR)/$(GAME)
+BUNDLE = bundle
+ifdef NEEDS_WAV
+BUNDLEWAVS = $(addprefix $(BUNDLE_RESOURCESDIR)/, $(addsuffix .wav, $(SNDWAVS)))
+BUNDLE_WAV = bundlewav
+endif
+BUNDLELIST = $(BUNDLE_TOP) $(BUNDLE_CONTENTSDIR) $(BUNDLE_FRAMEWORKSDIR) \
+ $(BUNDLE_MACOSDIR) $(BUNDLE_PKGINFODIR) $(BUNDLE_PLUGINSDIR) \
+ $(BUNDLE_RESOURCESDIR) $(BUNDLE_SHAREDFRMEWORKSDIR) \
+ $(BUNDLE_INFOPLIST) $(BUNDLE_GAME) $(BUNDLE_WAV)
+endif # WANT_BUNDLE
+#
+# We include the bundle outside of a WANT_BUNDLE block because
+# it is unlikely that anyone will use 'make WANT_BUNDLE=1 clean'
+#
+CLEANMORE += rm -rf bundle ;
+endif # MAKEFILE_SRC
+
+#
#-POST
#
$(CC) $(CFLAGS) -c -o$@ $<
endif # WANT_LIBNH
+# -- bundle ---
+#
+ifdef MAKEFILE_TOP
+bundle: update
+ ( cd src ; $(MAKE) WANT_BUNDLE=1 bundle )
+
+endif # MAKEFILE_TOP
+ifdef WANT_BUNDLE
+ifdef MAKEFILE_SRC
+
+bundle: $(BUNDLELIST) $(BUNDLE_GAME) $(BUNDLE_WAV) updatescript
+ @echo $(GAME) bundle : $(ABSBUNDLEPATH)$(BUNDLE_TOP)
+ @echo $(GAME) game : $(ABSBUNDLEPATH)$(BUNDLE_GAME)
+
+$(BUNDLE_RESOURCESDIR)/%.wav: ../sound/wav/%.wav | $(BUNDLE_RESOURCESDIR)
+ cp $< $@
+
+bundlewav: $(BUNDLEWAVS)
+
+$(BUNDLE_TOP):
+ mkdir -p $@
+
+$(BUNDLE_CONTENTSDIR): $(BUNDLE_TOP)
+ mkdir -p $@
+
+$(BUNDLE_FRAMEWORKSDIR): $(BUNDLE_CONTENTSDIR)
+ mkdir -p $@
+
+$(BUNDLE_MACOSDIR): $(BUNDLE_CONTENTSDIR)
+ mkdir -p $@
+
+$(BUNDLE_PKGINFODIR): $(BUNDLE_CONTENTSDIR)
+ mkdir -p $@
+
+$(BUNDLE_PLUGINSDIR): $(BUNDLE_CONTENTSDIR)
+ mkdir -p $@
+
+$(BUNDLE_RESOURCESDIR): $(BUNDLE_CONTENTSDIR)
+ mkdir -p $@
+
+$(BUNDLE_SHAREDFRAMEWORKSDIR): $(BUNDLE_CONTENTSDIR)
+ mkdir -p $@
+
+$(BUNDLE_GAME): $(BUNDLE_MACOSDIR) $(GAMEBIN)
+ cp $(GAMEBIN) $@
+#ifdef WANT_SHARE_INSTALL
+# chmod $(GAMEPERM) $@
+#endif
+
+$(BUNDLE_INFOPLIST): ../sys/unix/hints/macosx.sh
+ ( cd .. && sys/unix/hints/macosx.sh infoplist >src/$@ && cd src)
+
+updatescript:
+ifneq "$(SHELLDIR)" ""
+ if test -f $(SHELLDIR)/$(GAME); then \
+ cp $(SHELLDIR)/$(GAME) $(GAME).tmp; \
+ sed -i '' 's;\$$HACKDIR/$(GAME);$(ABSBUNDLEPATH)$(BUNDLE_GAME);' $(SHELLDIR)/$(GAME) ; \
+ diff -u $(GAME).tmp $(SHELLDIR)/$(GAME) | grep "="; \
+ rm -f $(GAME).tmp; \
+ fi;
+endif
+endif # MAKEFILE_SRC
+endif # WANT_BUNDLE
+
+#
+# --- end of bundle ---
+#
#
#-INCLUDE cross-post.370
#