### @configure_input@ # Copyright (C) 1985, 1987-1988, 1993-1994, 2001-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 . SHELL = @SHELL@ # Prevent any settings in the user environment causing problems. unexport EMACSDATA EMACSDOC EMACSLOADPATH EMACSPATH # Following ../lisp/Makefile.in. EMACS = ../src/emacs${EXEEXT} EMACSOPT = -batch --no-site-file --no-site-lisp # ==================== Things 'configure' will edit ==================== CC=@CC@ CXX=@CXX@ CFLAGS=@CFLAGS@ CXXFLAGS=@CXXFLAGS@ CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ version=@version@ ## Used in $archlibdir. configuration=@configuration@ EXEEXT=@EXEEXT@ C_SWITCH_SYSTEM=@C_SWITCH_SYSTEM@ C_SWITCH_MACHINE=@C_SWITCH_MACHINE@ PROFILING_CFLAGS = @PROFILING_CFLAGS@ WARN_CFLAGS = @WARN_CFLAGS@ WERROR_CFLAGS = @WERROR_CFLAGS@ # Program name transformation. TRANSFORM = @program_transform_name@ top_builddir = @top_builddir@ -include ${top_builddir}/src/verbose.mk # ==================== Where To Install Things ==================== # Location to install Emacs.app under GNUstep / macOS. # Later values may use this. ns_appbindir=@ns_appbindir@ ns_applibexecdir=@ns_applibexecdir@ # The default location for installation. Everything is placed in # subdirectories of this directory. The default values for many of # the variables below are expressed in terms of this one, so you may # not need to change them. This is set with the --prefix option to # '../configure'. prefix=@prefix@ # Like 'prefix', but used for architecture-specific files. This is # set with the --exec-prefix option to '../configure'. exec_prefix=@exec_prefix@ # Where to install Emacs and other binaries that people will want to # run directly (like etags). This is set with the --bindir option # to '../configure'. bindir=@bindir@ # Where to install and expect executable files to be run by Emacs # rather than directly by users, and other architecture-dependent # data. ${archlibdir} is usually below this. This is set with the # --libexecdir option to '../configure'. libexecdir=@libexecdir@ # Nonempty if Emacs can assume Mailutils is installed. with_mailutils=@with_mailutils@ # Directory for local state files for all programs. localstatedir=@localstatedir@ # Where to find the source code. This is set by the configure # script's '--srcdir' option. However, the value of ${srcdir} in # this makefile is not identical to what was specified with --srcdir, # since the variable here has '/lib-src' added at the end. # We use $(srcdir) explicitly in dependencies so as not to depend on VPATH. srcdir=@srcdir@ VPATH=@srcdir@ # Cross-compilation setup XCONFIGURE=@XCONFIGURE@ ifneq ($(XCONFIGURE),) vpath $(srcdir) endif # The top-level source directory, also set by configure. top_srcdir=@top_srcdir@ # MinGW CPPFLAGS may use this. abs_top_srcdir=@abs_top_srcdir@ # ==================== Emacs-specific directories ==================== # These variables hold the values Emacs will actually use. They are # based on the values of the standard Make variables above. # Where to put executables to be run by Emacs rather than the user. # This path usually includes the Emacs version and configuration name, # so that multiple configurations for multiple versions of Emacs may # be installed at once. This can be set with the --archlibdir option # to '../configure'. archlibdir=@archlibdir@ # User or group of the auxiliary program update-game-score, which is # installed on platforms with a game directory shared by multiple users. # On other platforms Emacs can update the score files itself. gameuser=@gameuser@ gamegroup=@gamegroup@ # Where to install game score files, if gameuser or gamegroup is nonempty. gamedir=@gamedir@ # Nonempty if and only if a shared gamedir is used. use_gamedir=$(gameuser)$(gamegroup) # ==================== Utility Programs for the Build ================= # ../configure figures out the correct values for these. INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ # By default, we uphold the dignity of our programs. INSTALL_STRIP = MKDIR_P = @MKDIR_P@ # ========================== Lists of Files =========================== ## Haiku build-time support HAVE_BE_APP=@HAVE_BE_APP@ HAIKU_LIBS=@HAIKU_LIBS@ HAIKU_CFLAGS=@HAIKU_CFLAGS@ ## Android build-time support ANDROID=@ANDROID@ # emacsclientw.exe for MinGW, empty otherwise CLIENTW = @CLIENTW@ # Things that a user might actually run, which should be installed in bindir. INSTALLABLES = etags${EXEEXT} ctags${EXEEXT} emacsclient${EXEEXT} $(CLIENTW) \ ebrowse${EXEEXT} # Things that Emacs runs internally, or during the build process, # which should not be installed in bindir. UTILITIES = hexl${EXEEXT} \ $(if $(with_mailutils), , movemail${EXEEXT}) \ $(and $(use_gamedir), update-game-score${EXEEXT}) ifeq ($(HAVE_BE_APP),yes) DONT_INSTALL= make-docfile${EXEEXT} make-fingerprint${EXEEXT} be-resources else ifeq ($(XCONFIGURE)$(HAVE_ANDROID),yes) DONT_INSTALL = make-docfile${EXEEXT} make-fingerprint${EXEEXT} \ asset-directory-tool${EXEEXT} else DONT_INSTALL= make-docfile${EXEEXT} make-fingerprint${EXEEXT} endif endif # Like UTILITIES, but they're not system-dependent, and should not be # deleted by the distclean target. SCRIPTS= rcs2log # All files that are created by the linker, i.e., whose names end in ${EXEEXT}. EXE_FILES = ${INSTALLABLES} ${UTILITIES} ${DONT_INSTALL} # Specify additional -D flags for movemail. Options: # -DMAIL_USE_FLOCK or -DMAIL_USE_LOCKF (use flock or lockf for file locking). # See the comments about locking in movemail.c. Normally the values # set by configure should be correct and you should not need to do anything. # If neither flag is set, you need to use blessmail. MOVE_FLAGS= ## Empty if either MAIL_USE_FLOCK or MAIL_USE_LOCKF, else need-blessmail. BLESSMAIL_TARGET=@BLESSMAIL_TARGET@ ## -lkrb or -lkrb4 if needed KRB4LIB=@KRB4LIB@ ## -ldes or -ldes425 if needed DESLIB=@DESLIB@ ## -lkrb5 if needed KRB5LIB=@KRB5LIB@ ## -lk5crypto or -lcrypto if needed CRYPTOLIB=@CRYPTOLIB@ ## -lcom_err if needed COM_ERRLIB=@COM_ERRLIB@ ## -lhesiod if needed LIBHESIOD=@LIBHESIOD@ ## -lresolv if HAVE_LIBRESOLV LIBRESOLV=@LIBRESOLV@ ## -llockfile if HAVE_LIBLOCKFILE or -lmail if HAVE_LIBMAIL LIBS_MAIL=@LIBS_MAIL@ ## empty or -lrt or -lposix4 if HAVE_CLOCK_GETTIME CLOCK_TIME_LIB = @CLOCK_TIME_LIB@ ## empty or -lbcrypt or -ladvapi32 GETRANDOM_LIB = @GETRANDOM_LIB@ ## Whatever libraries are needed for euidaccess EUIDACCESS_LIBGEN=@EUIDACCESS_LIBGEN@ ## Libraries needed for file_has_acl FILE_HAS_ACL_LIB=@FILE_HAS_ACL_LIB@ ## empty or -lwsock2 for MinGW LIB_WSOCK32=@LIB_WSOCK32@ ## Extra libraries for etags LIBS_ETAGS = $(CLOCK_TIME_LIB) $(GETRANDOM_LIB) HAVE_SECCOMP=@HAVE_SECCOMP@ HAVE_LIBSECCOMP=@HAVE_LIBSECCOMP@ LIBSECCOMP_LIBS=@LIBSECCOMP_LIBS@ LIBSECCOMP_CFLAGS=@LIBSECCOMP_CFLAGS@ SIZEOF_LONG=@SIZEOF_LONG@ # Currently, we can only generate seccomp filter files for x86-64. ifeq ($(HAVE_SECCOMP),yes) ifeq ($(HAVE_LIBSECCOMP),yes) ifeq ($(shell uname -m),x86_64) ifeq ($(SIZEOF_LONG),8) # We require SECCOMP_RET_KILL_PROCESS, which is only available in # Linux 4.14 and later. ifeq ($(shell { echo 4.14; uname -r | cut -d . -f 1-2; } | \ sort -C -t . -n -k 1,1 -k 2,2 && \ echo 1),1) SECCOMP_FILTER=1 endif endif endif endif endif ifeq ($(SECCOMP_FILTER),1) DONT_INSTALL += seccomp-filter$(EXEEXT) endif ## Extra libraries to use when linking movemail. LIBS_MOVE = $(LIBS_MAIL) $(KRB4LIB) $(DESLIB) $(KRB5LIB) $(CRYPTOLIB) \ $(COM_ERRLIB) $(LIBHESIOD) $(LIBRESOLV) $(LIB_WSOCK32) $(LIBS_ETAGS) ## Extra libraries when linking emacsclient ## (empty or -lcomctl32 for MinGW) LIBS_ECLIENT = @LIBS_ECLIENT@ ## Extra object files for linking for MinGW NTLIB = @NTLIB@ CLIENTRES = @CLIENTRES@ WINDRES = @WINDRES@ ## Some systems define this to request special libraries. LIBS_SYSTEM = @LIBS_SYSTEM@ # Flags that could be in WARN_CFLAGS, but are invalid for C++. NON_CXX_CFLAGS = -Wmissing-prototypes -Wnested-externs -Wold-style-definition \ -Wstrict-prototypes -Wno-override-init BASE_CFLAGS = $(C_SWITCH_SYSTEM) $(C_SWITCH_MACHINE) \ $(WARN_CFLAGS) $(WERROR_CFLAGS) \ -I. -I../src -I../lib \ -I${srcdir} -I${srcdir}/../src -I${srcdir}/../lib ALL_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS} CPP_CFLAGS = ${BASE_CFLAGS} ${PROFILING_CFLAGS} ${CPPFLAGS} ${CFLAGS} ALL_CXXFLAGS = $(filter-out ${NON_CXX_CFLAGS},${BASE_CFLAGS}) \ ${PROFILING_CFLAGS} ${LDFLAGS} ${CPPFLAGS} ${CFLAGS} ${CXXFLAGS} ${HAIKU_CFLAGS} # Configuration files for .o files to depend on. config_h = ../src/config.h $(srcdir)/../src/conf_post.h all: ${EXE_FILES} ${SCRIPTS} ifeq ($(SECCOMP_FILTER),1) all: seccomp-filter.bpf seccomp-filter-exec.bpf endif .PHONY: all need-blessmail maybe-blessmail LOADLIBES = ../lib/libgnu.a $(LIBS_SYSTEM) $(EXE_FILES): ../lib/libgnu.a ## Only used if we need blessmail, but no harm in always defining. ## This makes the actual blessmail executable. blessmail: $(srcdir)/../lisp/mail/blessmail.el $(AM_V_GEN)$(EMACS) $(EMACSOPT) -l $< $(AM_V_at)chmod +x $@ ## This checks if we need to run blessmail. ## Do not charge ahead and do it! Let the installer decide. need-blessmail: blessmail @if [ `wc -l