### @configure_input@ ## Copyright (C) 2012-2023 Free Software Foundation, Inc. ## This file is part of GNU Emacs. ## GNU Emacs is free software: you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## ## GNU Emacs is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with GNU Emacs. If not, see . ### Commentary: ### Code: SHELL = @SHELL@ srcdir = @srcdir@ abs_builddir = @abs_builddir@ abs_top_builddir = @abs_top_builddir@ EXEEXT = @EXEEXT@ DUMPING = @DUMPING@ # abs_top_srcdir may contain ".." top_srcdir_abs = $(shell cd @top_srcdir@; pwd -P) MKDIR_P = @MKDIR_P@ ## Emacs.app. ns_appdir = @ns_appdir@ ## GNUstep: ns_appdir; macOS: ns_appdir/Contents/MacOS ns_appbindir = @ns_appbindir@ ns_applibexecdir = @ns_applibexecdir@ ## GNUstep/Emacs.base or Cocoa/Emacs.base. ns_appsrc = @ns_appsrc@ ## GNUstep: GNUstep/Emacs.base/Resources/Info-gnustep.plist ## macOS: Cocoa/Emacs.base/Contents/Info.plist ns_check_file = @ns_appdir@/@ns_check_file@ .PHONY: all ifeq ($(DUMPING),pdumper) ns_pdmp_target = ${ns_applibexecdir}/Emacs.pdmp endif all: ${ns_appdir} ${ns_appbindir}/Emacs ${ns_pdmp_target} ${ns_check_file}: ${ns_appdir} ${ns_appdir}: ${srcdir}/${ns_appsrc} ${ns_appsrc} rm -rf ${ns_appdir} ${MKDIR_P} ${ns_appdir} ( cd ${srcdir}/${ns_appsrc} ; tar cfh - . ) | \ ( cd ${ns_appdir} ; umask 022; tar xf - ) [ "`cd ${srcdir} && pwd -P`" = "`pwd -P`" ] || \ ( cd ${ns_appsrc} ; tar cfh - . ) | \ ( cd ${ns_appdir} ; umask 022; tar xf - ) touch ${ns_appdir} ## Don't create ns_appbindir via an order-only prerequisite, because ## on GNUstep ns_appbindir and ns_bindir are the same, so ## the rule for ns_appbindir would conflict with that for ns_appdir. ${ns_appbindir}/Emacs: ${ns_appdir} ${ns_check_file} ../src/emacs${EXEEXT} ${MKDIR_P} ${ns_appbindir} cp -f ../src/emacs${EXEEXT} $@ # FIXME: Don't install the dump file into the app bundle when # self-contained install is disabled. ${ns_applibexecdir}/Emacs.pdmp: ${ns_appdir} ${ns_check_file} ../src/emacs${EXEEXT}.pdmp ${MKDIR_P} ${ns_applibexecdir} cp -f ../src/emacs${EXEEXT}.pdmp $@ .PHONY: FORCE ../src/emacs${EXEEXT}: FORCE ${MAKE} -C ../src $(notdir $@) # create a fake installation pointing back to the source tree # to run GUI Emacs in-place .PHONY: links links: ../src/emacs${EXEEXT} for d in $(shell cd ${srcdir}/${ns_appsrc}; find . -type d); do ${MKDIR_P} ${ns_appdir}/$$d; done for f in $(shell cd ${srcdir}/${ns_appsrc}; find . -type f); do ln -s $(shell cd ${srcdir}; pwd -P)/${ns_appsrc}/$$f ${ns_appdir}/$$f; done for d in $(shell cd ${ns_appsrc}; find . -type d); do ${MKDIR_P} ${ns_appdir}/$$d; done for f in $(shell cd ${ns_appsrc}; find . -type f); do rm -f ${ns_appdir}/$$f; ln -s $(shell cd ${ns_appsrc}; pwd -P)/$$f ${ns_appdir}/$$f; done ln -s $(top_srcdir_abs)/lisp ${ns_appdir}/Contents/Resources ln -s $(top_srcdir_abs)/info ${ns_appdir}/Contents/Resources ${MKDIR_P} ${ns_appbindir} ln -s $(abs_top_builddir)/src/emacs${EXEEXT} ${ns_appbindir}/Emacs ln -s $(abs_top_builddir)/lib-src ${ns_appbindir}/bin ln -s $(abs_top_builddir)/lib-src ${ns_applibexecdir} ${MKDIR_P} ${ns_appdir}/Contents/Resources/etc for f in $(shell cd $(top_srcdir_abs)/etc; ls); do ln -s $(top_srcdir_abs)/etc/$$f ${ns_appdir}/Contents/Resources/etc; done ln -s $(abs_top_builddir)/etc/DOC ${ns_appdir}/Contents/Resources/etc @echo if the next find prints something, the installation failed find ${ns_appdir} -exec test \! -e {} \; -ls .PHONY: clean distclean bootstrap-clean maintainer-clean clean: rm -rf ${ns_appdir} distclean: clean rm -f Makefile rm -f GNUstep/Emacs.base/Resources/Info-gnustep.plist \ GNUstep/Emacs.base/Resources/Emacs.desktop \ Cocoa/Emacs.base/Contents/Info.plist \ Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings bootstrap-clean maintainer-clean: distclean ### Makefile.in ends here