]> granicus.if.org Git - nethack/commitdiff
New hints file for Qt 5 on Mac OS X
authorRay Chason <ray.chason@protonmail.com>
Thu, 24 May 2018 03:02:06 +0000 (23:02 -0400)
committerPasi Kallinen <paxed@alt.org>
Mon, 10 Sep 2018 18:12:17 +0000 (21:12 +0300)
sys/unix/hints/macosx10.10-qt [new file with mode: 0644]

diff --git a/sys/unix/hints/macosx10.10-qt b/sys/unix/hints/macosx10.10-qt
new file mode 100644 (file)
index 0000000..ff98692
--- /dev/null
@@ -0,0 +1,343 @@
+#
+# NetHack 3.6  macosx10.11 $NHDT-Date: 1515549543 2018/01/10 01:59:03 $  $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.48 $
+# Copyright (c) Kenneth Lorber, Kensington, Maryland, 2015.
+# NetHack may be freely redistributed.  See license for details.
+#
+#-PRE
+# Mac OS X (Darwin) hints file
+# This is for Mac OS X 10.10 or later, and has been tested on 10.11
+# (El Capitan). If this doesn't work for some other
+# version of Mac OS X, make a new file for that OS, don't change this one.
+# And let us know about it.
+# Useful info: http://www.opensource.apple.com/darwinsource/index.html
+
+# You'll need to obtain and install XQuartz if you want X11 support.
+# (Attempting to run X11.app will describe where to get it.)
+
+# This hints file can build several different types of installations.
+# Edit the next section to match the type of build you need.
+
+# 1. Which window system(s) should be included in this binary?
+WANT_WIN_TTY=1
+#WANT_WIN_X11=1
+WANT_WIN_QT=1
+
+# 1a. What is the default window system?
+#WANT_DEFAULT=tty
+#WANT_DEFAULT=x11
+WANT_DEFAULT=Qt
+
+# 1b. If you set WANT_WIN_QT, you need to
+#  A) set QTDIR either here or in the environment to point to the Qt5
+#     library installation root.  (Qt2 or Qt3 will not work.)
+ifdef WANT_WIN_QT
+QTDIR=$(shell brew --prefix)/opt/qt
+endif  # WANT_WIN_QT
+
+# 2. Is this a build for a binary that will be shared among different users
+#    or will it be private to you?
+#    If it is shared:
+#      - it will be owned by the user and group listed
+#      - if the user does not exist, you MUST create it before installing
+#        NetHack
+#      - if the group does not exist, it will be created.
+#        NB: if the group already exists and is being used for something
+#         besides games, you probably want to specify a new group instead
+#        NB: the group will be created locally; if your computer is centrally
+#         administered this may not be what you (or your admin) want.
+#         Consider a non-shared install (WANT_SHARE_INSTALL=0) instead.
+#      - 'make install' must be run as "sudo make install"
+#WANT_SHARE_INSTALL=1
+GAMEUID  = $(USER)
+GAMEGRP  = games
+# build to run in the source tree - primarily for development.  Build with "make all"
+#WANT_SOURCE_INSTALL=1
+
+CC=clang
+CXX=clang++ -std=gnu++11
+
+# At the moment this is just for debugging, but in the future it could be
+# useful for other things.  Requires SYSCF and an ANSI compiler.
+#WANT_WIN_CHAIN=1
+
+#
+# You shouldn't need to change anything below here.
+#
+
+#CFLAGS+=-W -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -DGCC_WARN
+CFLAGS+=-Wall -Wextra -Wno-missing-field-initializers -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings -DGCC_WARN -ansi -pedantic
+# As of LLVM build 2336.1.00, this gives dozens of spurious messages, so
+# leave it out by default.
+#CFLAGS+=-Wunreachable-code
+
+# XXX -g vs -O should go here, -I../include goes in the makefile
+CFLAGS+=-g -I../include
+# older binaries use NOCLIPPING, but that disables SIGWINCH
+#CFLAGS+=-DNOCLIPPING
+CFLAGS+= -DNOMAIL -DNOTPARMDECL -DHACKDIR=\"$(HACKDIR)\"
+CFLAGS+= -DDEFAULT_WINDOW_SYS=\"$(WANT_DEFAULT)\" -DDLB
+
+CFLAGS+= -DGREPPATH=\"/usr/bin/grep\"
+
+ifdef WANT_WIN_CHAIN
+CFLAGS+= -DWINCHAIN
+HINTSRC=$(CHAINSRC)
+HINTOBJ=$(CHAINOBJ)
+endif
+
+WINSRC =
+WINOBJ0 =
+WINLIB =
+LINK = $(CC)
+VARDATND =
+
+ifdef WANT_WIN_TTY
+WINSRC += $(WINTTYSRC)
+WINOBJ0 += $(WINTTYOBJ)
+WINLIB += $(WINTTYLIB)
+WINTTYLIB=-lncurses
+else   # !WANT_WIN_TTY
+CFLAGS += -DNOTTYGRAPHICS
+endif  # !WANT_WIN_TTY
+
+ifdef WANT_WIN_X11
+WINSRC += $(WINX11SRC)
+WINOBJ0 += $(WINX11OBJ)
+WINLIB += $(WINX11LIB)
+LFLAGS += -L/opt/X11/lib
+VARDATND += x11tiles NetHack.ad pet_mark.xbm pilemark.xbm
+POSTINSTALL+= bdftopcf win/X11/nh10.bdf > $(HACKDIR)/nh10.pcf; (cd $(HACKDIR); mkfontdir);
+CFLAGS += -DX11_GRAPHICS -I/opt/X11/include
+# avoid repeated complaints about _X_NONNULL(args...) in <X11/Xfuncproto.h>
+CFLAGS += -Wno-variadic-macros
+endif  # WANT_WIN_X11
+
+ifdef WANT_WIN_QT
+CFLAGS += -DQT_GRAPHICS -DNOUSER_SOUNDS
+CFLAGS += $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --cflags)
+WINLIB += $(shell PKG_CONFIG_PATH=$(QTDIR)/lib/pkgconfig pkg-config Qt5Gui Qt5Widgets Qt5Multimedia --libs)
+LINK=$(CXX)
+WINSRC += $(WINQT4SRC)
+WINOBJ0 += $(WINQT4OBJ)
+VARDATND += rip.xpm
+MOC = moc
+
+# XXX if /Developer/qt exists and QTDIR not set, use that
+ifndef QTDIR
+$(error QTDIR not defined in the environment or Makefile)
+endif  # QTDIR
+# XXX make sure QTDIR points to something reasonable
+endif  # WANT_WIN_QT
+
+# prevent duplicate tile.o in WINOBJ
+WINOBJ = $(sort $(WINOBJ0))
+
+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;
+CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
+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_WIN_X11
+# install nethack.rc as ~/.nethackrc if no ~/.nethackrc exists
+PREINSTALL= cp -n win/X11/nethack.rc ~/.nethackrc
+endif  # WANT_WIN_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;
+CFLAGS+=-DSYSCF -DSYSCF_FILE=\"$(HACKDIR)/sysconf\" -DSECURE
+endif  # !WANT_SOURCE_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
+#
+# Install.Qt mentions a patch for macos - it's not there (it seems to be in the Qt binary
+# package under the docs directory).
+
+#-POST
+ifdef MAKEFILE_TOP
+###
+### Packaging
+###
+# Notes:
+# 1) The Apple developer utilities must be installed in the default location.
+# 2) Do a normal build before trying to package the game.
+# 3) This matches the 3.4.3 Term package, but there are some things that should
+#    be changed.
+
+ifdef WANT_WIN_TTY
+DEVUTIL=/Developer/Applications/Utilities
+SVS=$(shell $(NHSROOT)/util/makedefs --svs)
+SVSDOT=$(shell $(NHSROOT)/util/makedefs --svs .)
+
+PKGROOT_UG     = PKGROOT/$(PREFIX)
+PKGROOT_UGLN   = PKGROOT/$(HACKDIR)
+PKGROOT_BIN    = PKGROOT/$(SHELLDIR)
+build_tty_pkg:
+ifneq (,$(WANT_WIN_X11)$(WANT_WIN_QT))
+       -echo build_tty_pkg only works for a tty-only build
+       exit 1
+else
+       rm -rf NetHack-$(SVS)-mac-Term.pkg NetHack-$(SVS)-mac-Term.dmg
+       $(MAKE) build_package_root
+       rm -rf RESOURCES
+       mkdir RESOURCES
+       #enscript --language=rtf -o - < dat/license >RESOURCES/License.rtf
+       sys/unix/hints/macosx.sh descplist > RESOURCES/Description.plist
+       sys/unix/hints/macosx.sh infoplist > Info.plist
+
+       mkdir PKGROOT/Applications
+       #osacompile -o NetHackQt/NetHackQt.app/nethackdir/NetHackRecover.app \
+       #        win/macosx/NetHackRecover.applescript
+       #cp win/macosx/recover.pl NetHackQt/NetHackQt.app/nethackdir
+       osacompile -o PKGROOT/Applications/NetHackRecover.app \
+                win/macosx/NetHackRecover.applescript
+       cp win/macosx/recover.pl $(PKGROOT_UGLN)
+
+       osacompile -o PKGROOT/Applications/NetHackTerm.app \
+                win/macosx/NetHackTerm.applescript
+
+       # XXX integrate into Makefile.doc
+       (cd doc; cat Guidebook.mn | ../util/makedefs --grep --input - --output - \
+       | tbl tmac.n - | groff | pstopdf -i -o Guidebook.pdf)
+       cp doc/Guidebook.pdf $(PKGROOT_UG)/doc/NetHackGuidebook.pdf
+
+       osacompile -o PKGROOT/Applications/NetHackGuidebook.app \
+                win/macosx/NetHackGuidebook.applescript
+
+       mkdir -p PKG
+       pkgbuild --root PKGROOT --identifier org.nethack.term --scripts PKGSCRIPTS PKG/NH-Term.pkg
+       productbuild --synthesize --product Info.plist --package PKG/NH-Term.pkg Distribution.xml
+       productbuild --distribution Distribution.xml --resources RESOURCES --package-path PKG NetHack-$(SVS)-mac-Term.pkg
+       hdiutil create -verbose -srcfolder NetHack-$(SVS)-mac-Term.pkg NetHack-$(SVS)-mac-Term.dmg
+
+build_package_root:
+       cd src/..       # make sure we are at TOP
+       rm -rf PKGROOT
+       mkdir -p $(PKGROOT_UG)/lib $(PKGROOT_BIN) $(PKGROOT_UG)/man/man6 $(PKGROOT_UG)/doc $(PKGROOT_UGLN)
+       install -p src/nethack $(PKGROOT_BIN)
+       # XXX should this be called nethackrecover?
+       install -p util/recover $(PKGROOT_BIN)
+       install -p doc/nethack.6 $(PKGROOT_UG)/man/man6
+       install -p doc/recover.6 $(PKGROOT_UG)/man/man6
+       install -p doc/Guidebook $(PKGROOT_UG)/doc
+       install -p dat/nhdat $(PKGROOT_UGLN)
+       sys/unix/hints/macosx.sh editsysconf sys/unix/sysconf $(PKGROOT_UGLN)/sysconf
+       cd dat; install -p $(DATNODLB) ../$(PKGROOT_UGLN)
+# XXX these files should be somewhere else for good Mac form
+       touch $(PKGROOT_UGLN)/perm $(PKGROOT_UGLN)/record $(PKGROOT_UGLN)/logfile $(PKGROOT_UGLN)/xlogfile
+       mkdir $(PKGROOT_UGLN)/save
+# XXX what about a news file?
+
+       mkdir -p PKGSCRIPTS
+       echo '#!/bin/sh'                              >  PKGSCRIPTS/postinstall
+       echo dseditgroup -o create -r '"Games Group"' -s 3600 $(GAMEGRP) >> PKGSCRIPTS/postinstall
+       echo $(CHOWN) -R $(GAMEUID) $(HACKDIR)        >> PKGSCRIPTS/postinstall
+       echo $(CHGRP) -R $(GAMEGRP) $(HACKDIR)        >> PKGSCRIPTS/postinstall
+       echo $(CHOWN) $(GAMEUID) $(SHELLDIR)/nethack  >> PKGSCRIPTS/postinstall
+       echo $(CHGRP) $(GAMEGRP) $(SHELLDIR)/nethack  >> PKGSCRIPTS/postinstall
+       echo $(CHOWN) $(GAMEUID) $(SHELLDIR)/recover  >> PKGSCRIPTS/postinstall
+       echo $(CHGRP) $(GAMEGRP) $(SHELLDIR)/recover  >> PKGSCRIPTS/postinstall
+       echo chmod $(VARDIRPERM)  $(HACKDIR)          >> PKGSCRIPTS/postinstall
+       echo chmod $(VARDIRPERM)  $(HACKDIR)/save     >> PKGSCRIPTS/postinstall
+       echo chmod $(FILEPERM)    $(HACKDIR)/license  >> PKGSCRIPTS/postinstall
+       echo chmod $(FILEPERM)    $(HACKDIR)/nhdat    >> PKGSCRIPTS/postinstall
+       echo chmod $(FILEPERM)    $(HACKDIR)/symbols  >> PKGSCRIPTS/postinstall
+       echo chmod $(VARFILEPERM) $(HACKDIR)/perm     >> PKGSCRIPTS/postinstall
+       echo chmod $(VARFILEPERM) $(HACKDIR)/record   >> PKGSCRIPTS/postinstall
+       echo chmod $(VARFILEPERM) $(HACKDIR)/logfile  >> PKGSCRIPTS/postinstall
+       echo chmod $(VARFILEPERM) $(HACKDIR)/xlogfile >> PKGSCRIPTS/postinstall
+       echo chmod $(VARFILEPERM) $(HACKDIR)/sysconf  >> PKGSCRIPTS/postinstall
+       echo chmod $(GAMEPERM)   $(SHELLDIR)/nethack  >> PKGSCRIPTS/postinstall
+       echo chmod $(EXEPERM)    $(SHELLDIR)/recover  >> PKGSCRIPTS/postinstall
+       chmod 0775 PKGSCRIPTS/postinstall
+
+endif  # end of build_tty_pkg
+endif  # WANT_WIN_TTY for packaging
+
+ifdef WANT_WIN_QT
+# XXX untested and incomplete (see below)
+build_qt_pkg:
+ifneq (,$(WANT_WIN_X11)$(WANT_WIN_TTY))
+       -echo build_qt_pkg only works for a qt-only build
+       exit 1
+else
+       $(MAKE) build_package_root
+       rm -rf NetHackQt
+       mkdir -p NetHackQt/NetHackQt.app/nethackdir/save
+       mkdir NetHackQt/Documentation
+       cp doc/Guidebook.txt doc/nethack.txt doc/recover.txt NetHackQt/Documentation
+
+       osacompile -o NetHackQt/NetHackQt.app/nethackdir/NetHackRecover.app \
+                win/macosx/NetHackRecover.applescript
+       cp win/macosx/recover.pl NetHackQt/NetHackQt.app/nethackdir
+
+       mkdir -p NetHackQt/NetHackQt.app/Contents/Frameworks
+       cp $(QTDIR)/libqt-mt.3.dylib NetHackQt/NetHackQt.app/Contents/Frameworks
+
+       mkdir NetHackQt/NetHackQt.app/Contents/MacOS
+       mv PKGROOT/nethack NetHackQt/NetHackQt.app/Contents/MacOS
+
+       mv PKGROOT/lib/nethackdir NetHackQt/NetHackQt.app/nethackdir
+
+# XXX still missing:
+#NetHackQt/NetHackQt.app
+# /Contents
+#      Info.plist
+#      Resources/nethack.icns
+#NetHackQt/Documentation
+#NetHackQtRecover.txt
+#NetHack Defaults.txt
+#changes.patch XXX is this still needed?  why isn't it part of the tree?
+#  doesn't go here
+       hdiutil create -verbose -srcfolder NetHackQt NetHack-$(SVS)-macosx-qt.dmg
+endif  # end of build_qt_pkg
+endif  # WANT_WIN_QT for packaging
+endif  # MAKEFILE_TOP