From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.bugs Subject: bug#60061: 30.0.50; Build fails in separate directory for ../configure --without-all --with-mailutils Date: Wed, 21 Dec 2022 12:42:05 +0300 Message-ID: References: <86cz8mbf98.fsf@protected.rcdrun.com> <835yeenoqn.fsf@gnu.org> <83mt7iasqj.fsf@gnu.org> <83len1c41o.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=_stw1.rcdrun.com-27836-1671615774-0001-2" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5496"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.2.9+54 (af2080d) (2022-11-21) Cc: 60061@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Dec 21 10:43:54 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p7vdh-0001EL-MP for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 21 Dec 2022 10:43:53 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p7vcu-000631-Dl; Wed, 21 Dec 2022 04:43:04 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p7vcs-00062X-T7 for bug-gnu-emacs@gnu.org; Wed, 21 Dec 2022 04:43:02 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1p7vcs-0000Nu-JM for bug-gnu-emacs@gnu.org; Wed, 21 Dec 2022 04:43:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1p7vcs-0004dy-Es for bug-gnu-emacs@gnu.org; Wed, 21 Dec 2022 04:43:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Jean Louis Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 21 Dec 2022 09:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 60061 X-GNU-PR-Package: emacs Original-Received: via spool by 60061-submit@debbugs.gnu.org id=B60061.167161577617836 (code B ref 60061); Wed, 21 Dec 2022 09:43:02 +0000 Original-Received: (at 60061) by debbugs.gnu.org; 21 Dec 2022 09:42:56 +0000 Original-Received: from localhost ([127.0.0.1]:50768 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p7vck-0004dc-JW for submit@debbugs.gnu.org; Wed, 21 Dec 2022 04:42:56 -0500 Original-Received: from stw1.rcdrun.com ([217.170.207.13]:39793) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1p7vch-0004dH-Da for 60061@debbugs.gnu.org; Wed, 21 Dec 2022 04:42:53 -0500 Original-Received: from localhost ([::ffff:197.239.15.84]) (AUTH: PLAIN admin, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 00000000000562AD.0000000063A2D51C.00006CBC; Wed, 21 Dec 2022 02:42:51 -0700 Content-Disposition: inline In-Reply-To: <83len1c41o.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:251582 Archived-At: This is a MIME-formatted message. If you see this text it means that your E-mail software does not support MIME-formatted messages. --=_stw1.rcdrun.com-27836-1671615774-0001-2 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline Find attached without-all/src/Makefile --=_stw1.rcdrun.com-27836-1671615774-0001-2 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=Makefile ### src/Makefile. Generated from Makefile.in by configure. # Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2022 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 . # Note that this file is edited by msdos/sed1v2.inp for MSDOS. That # script may need modifying in sync with changes made here. Try to # avoid shell-ism because the DOS build has to use the DOS shell. SHELL = /bin/sh # Here are the things that we expect ../configure to edit. # We use $(srcdir) explicitly in dependencies so as not to depend on VPATH. srcdir = ../../src top_srcdir = ../.. top_builddir = .. # MinGW CPPFLAGS may use this. abs_top_srcdir=/home/data1/protected/Programming/Software/emacs/without-all/.. VPATH = $(srcdir) CC = gcc CXX = CFLAGS = -g3 -O2 CPPFLAGS = LDFLAGS = EXEEXT = version = 30.0.50 MKDIR_P = /usr/bin/mkdir -p # Don't use LIBS. configure puts stuff in it that either shouldn't be # linked with Emacs or is duplicated by the other stuff below. # LIBS = LIBOBJS = lispsource = $(top_srcdir)/lisp lib = ../lib libsrc = ../lib-src etc = ../etc oldXMenudir = ../oldXMenu lwlibdir = ../lwlib # Configuration files for .o files to depend on. config_h = config.h $(srcdir)/conf_post.h HAVE_NATIVE_COMP = no ## ns-app if NS self contained app, else empty. OTHER_FILES = ## Flags to pass for profiling builds PROFILING_CFLAGS = ## Flags to pass to the compiler to enable build warnings WARN_CFLAGS = -fno-common -Wall -Warith-conversion -Wdate-time -Wdisabled-optimization -Wdouble-promotion -Wduplicated-cond -Wextra -Wformat-signedness -Winit-self -Winvalid-pch -Wlogical-op -Wmissing-declarations -Wmissing-include-dirs -Wmissing-prototypes -Wnested-externs -Wnull-dereference -Wold-style-definition -Wopenmp-simd -Wpacked -Wpointer-arith -Wstrict-prototypes -Wsuggest-attribute=format -Wsuggest-attribute=noreturn -Wsuggest-final-methods -Wsuggest-final-types -Wtrampolines -Wuninitialized -Wunknown-pragmas -Wunused-macros -Wvariadic-macros -Wvector-operation-performance -Wwrite-strings -Warray-bounds=2 -Wattribute-alias=2 -Wformat=2 -Wformat-truncation=2 -Wimplicit-fallthrough=5 -Wshift-overflow=2 -Wuse-after-free=3 -Wvla-larger-than=4031 -Wredundant-decls -Wno-missing-field -initializers -Wno-override-init -Wno-sign-compare -Wno-type-limits -Wno-unused-parameter -Wno-format-nonliteral -Wno-bidi-chars WERROR_CFLAGS = ## Machine-specific CFLAGS. C_SWITCH_MACHINE= ## System-specific CFLAGS. C_SWITCH_SYSTEM= GNUSTEP_CFLAGS= PNG_CFLAGS= ## Define C_SWITCH_X_SITE to contain any special flags your compiler ## may need to deal with X Windows. For instance, if you've defined ## HAVE_X_WINDOWS and your X include files aren't in a place that your ## compiler can find on its own, you might want to add "-I/..." or ## something similar. This is normally set by configure. C_SWITCH_X_SITE= ## Define LD_SWITCH_X_SITE to contain any special flags your loader ## may need to deal with X Windows. For instance, if your X libraries ## aren't in a place that your loader can find on its own, you might ## want to add "-L/..." or something similar. Only used if ## HAVE_X_WINDOWS. ## FIXME? configure sets a value for this, but it has never been ## substituted in this or any other Makefile. Cf C_SWITCH_X_SITE. LD_SWITCH_X_SITE= ## This must come before LD_SWITCH_SYSTEM. ## If needed, a -rpath option that says where to find X windows at run time. LD_SWITCH_X_SITE_RPATH= ## System-specific LDFLAGS. LD_SWITCH_SYSTEM= ## This holds any special options for linking temacs only (i.e., not ## used by configure). LD_SWITCH_SYSTEM_TEMACS= $(LD_SWITCH_X_SITE_RPATH) ## Flags to pass to ld only for temacs. TEMACS_LDFLAGS = $(LD_SWITCH_SYSTEM) $(LD_SWITCH_SYSTEM_TEMACS) ## If needed, the names of the paxctl and setfattr programs. ## On grsecurity/PaX systems, unexec will fail due to a gap between ## the bss section and the heap. Older versions need paxctl to work ## around this, newer ones setfattr. See Bug#11398 and Bug#16343. PAXCTL = SETFATTR = ## Commands to set PaX flags on dumped and not-dumped instances of Emacs. PAXCTL_dumped = PAXCTL_notdumped = ## Some systems define this to request special libraries. LIBS_SYSTEM= ## -lm, or empty. LIB_MATH=-lm ## -lpthread, or empty. LIB_PTHREAD= LIBIMAGE= XCB_LIBS= XFT_LIBS= XRENDER_LIBS= LIBX_EXTRA=-lX11 $(XCB_LIBS) $(XFT_LIBS) $(XRENDER_LIBS) FONTCONFIG_CFLAGS = FONTCONFIG_LIBS = FREETYPE_CFLAGS = FREETYPE_LIBS = HARFBUZZ_CFLAGS = HARFBUZZ_LIBS = LIBOTF_CFLAGS = LIBOTF_LIBS = M17N_FLT_CFLAGS = M17N_FLT_LIBS = LIB_ACL= LIB_CLOCK_GETTIME= LIB_EACCESS= LIB_NANOSLEEP= LIB_TIMER_TIME= DBUS_CFLAGS = DBUS_LIBS = ## dbusbind.o if HAVE_DBUS, else empty. DBUS_OBJ = ## xwidgets.o if HAVE_XWIDGETS, else empty. XWIDGETS_OBJ = LIB_EXECINFO= SETTINGS_CFLAGS = SETTINGS_LIBS = ## gtkutil.o if USE_GTK, else empty. GTK_OBJ= ## inotify.o if HAVE_INOTIFY. ## kqueue.o if HAVE_KQUEUE. ## gfilenotify.o if HAVE_GFILENOTIFY. ## w32notify.o if HAVE_W32NOTIFY. NOTIFY_OBJ = NOTIFY_CFLAGS = NOTIFY_LIBS = ## -ltermcap, or -lncurses, or -lcurses, or "". LIBS_TERMCAP=-ltinfo ## terminfo.o if TERMINFO, else (on MS-DOS only: termcap.o +) tparam.o. TERMCAP_OBJ=terminfo.o LIBXMU= LIBXSM= LIBXTR6= ## $(LIBXMU) -lXt $(LIBXTR6) -lXext if USE_X_TOOLKIT, else $(LIBXSM). ## Only used if HAVE_X_WINDOWS. LIBXT_OTHER=$(LIBXSM) ## If !HAVE_X11 || USE_GTK, empty. ## Else if USE_X_TOOLKIT, $(lwlibdir)/liblw.a. ## Else $(oldXMenudir)/libXMenu11.a. LIBXMENU= ## xmenu.o if HAVE_X_WINDOWS, else empty. XMENU_OBJ= ## xterm.o xfns.o xselect.o xrdb.o xsmfns.o xsettings.o if ## HAVE_X_WINDOWS, else empty. XOBJ= # xgselect.o if linking with GLib, else empty XGSELOBJ= TOOLKIT_LIBW= ## Only used if HAVE_X11, in LIBX_OTHER. LIBXT=$(TOOLKIT_LIBW) $(LIBXT_OTHER) ## If HAVE_X11, $(LIBXT) $(LIBX_EXTRA), else empty. LIBX_OTHER= ## LIBXMENU is empty if !HAVE_X_WINDOWS. ## LD_SWITCH_X_SITE should not be used if not using X, but nothing ## sets it at present, and if something ever does, it should be ## configure, which should set it to nil in non-X builds. LIBX_BASE=$(LIBXMENU) $(LD_SWITCH_X_SITE) ## Used only for GNUstep. LIBS_GNUSTEP=$(patsubst -specs=%-hardened-ld,,) LIBSOUND= CFLAGS_SOUND= RSVG_LIBS= RSVG_CFLAGS= WEBP_CFLAGS= WEBKIT_LIBS= WEBKIT_CFLAGS= CAIRO_LIBS= CAIRO_CFLAGS= IMAGEMAGICK_LIBS= IMAGEMAGICK_CFLAGS= LIBXML2_LIBS = LIBXML2_CFLAGS = SQLITE3_LIBS = GETADDRINFO_A_LIBS = -lanl LCMS2_LIBS = LCMS2_CFLAGS = LIBZ = ## system-specific libs for dynamic modules, else empty LIBMODULES = ## emacs-module.o if modules enabled, else empty MODULES_OBJ = XRANDR_LIBS = XRANDR_CFLAGS = XINERAMA_LIBS = XINERAMA_CFLAGS = XFIXES_LIBS = XFIXES_CFLAGS = XINPUT_LIBS = XINPUT_CFLAGS = XSYNC_LIBS = XSYNC_CFLAGS = XDBE_LIBS = XDBE_CFLAGS = XCOMPOSITE_LIBS = XCOMPOSITE_CFLAGS = XSHAPE_LIBS = XSHAPE_CFLAGS = ## widget.o if USE_X_TOOLKIT, otherwise empty. WIDGET_OBJ= HYBRID_MALLOC = ## cygw32.o if CYGWIN, otherwise empty. CYGWIN_OBJ= ## fontset.o fringe.o image.o if we have any window system WINDOW_SYSTEM_OBJ= ## dosfns.o msdos.o w16select.o if MSDOS. MSDOS_OBJ = ## w16select.o termcap.o if MSDOS && HAVE_X_WINDOWS. MSDOS_X_OBJ = NS_OBJ= ## nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o ns_fontfile if HAVE_NS. NS_OBJC_OBJ= ## Used only for GNUstep. GNU_OBJC_CFLAGS=$(patsubst -specs=%-hardened-cc1,,) ## w32fns.o w32menu.c w32reg.o fringe.o fontset.o w32font.o w32term.o ## w32xfns.o w32select.o image.o w32uniscribe.o w32cygwinx.o if HAVE_W32, ## w32cygwinx.o if CYGWIN but not HAVE_W32, else empty. W32_OBJ= ## -lkernel32 -luser32 -lusp10 -lgdi32 -lole32 -lcomdlg32 -lcomctl32 ## -lwinspool if HAVE_W32, ## -lkernel32 if CYGWIN but not HAVE_W32, else empty. W32_LIBS= PGTK_OBJ= PGTK_LIBS= ## emacs.res if HAVE_W32 EMACSRES = ## If HAVE_W32, compiler arguments for including ## the resource file in the binary. ## Cygwin: -Wl,emacs.res ## MinGW: emacs.res W32_RES_LINK= ## Empty if !HAVE_X_WINDOWS ## xfont.o ftfont.o xftfont.o if HAVE_XFT ## xfont.o ftfont.o if HAVE_FREETYPE ## xfont.o ftfont.o ftcrfont.o if USE_CAIRO ## else xfont.o ## if HAVE_HARFBUZZ, hbfont.o is added regardless of the rest FONT_OBJ= ## Empty for MinGW, cm.o for the rest. CM_OBJ=cm.o LIBGPM = LIBSELINUX_LIBS = LIBGNUTLS_LIBS = LIBGNUTLS_CFLAGS = LIBSYSTEMD_LIBS = LIBSYSTEMD_CFLAGS = JSON_LIBS = -ljansson JSON_CFLAGS = JSON_OBJ = json.o TREE_SITTER_LIBS = -ltree-sitter TREE_SITTER_CFLAGS = INTERVALS_H = dispextern.h intervals.h composite.h GETLOADAVG_LIBS = LIBGMP = -lgmp LIBGCCJIT_LIBS = LIBGCCJIT_CFLAGS = ## dynlib.o if necessary, else empty DYNLIB_OBJ = RUN_TEMACS = ./temacs # Whether builds should contain details. '--no-build-details' or empty. BUILD_DETAILS = UNEXEC_OBJ = HAIKU_OBJ = HAIKU_CXX_OBJ = HAIKU_LIBS = HAIKU_CFLAGS = DUMPING=pdumper CHECK_STRUCTS = false HAVE_PDUMPER = yes HAVE_BE_APP = no ## ARM Macs require that all code have a valid signature. Since pdump ## invalidates the signature, we must re-sign to fix it. DO_CODESIGN=$(patsubst aarch64-apple-darwin%,yes,x86_64-pc-linux-gnu) -include ${top_builddir}/src/verbose.mk bootstrap_exe = ../src/bootstrap-emacs$(EXEEXT) ifeq ($(DUMPING),pdumper) bootstrap_pdmp := bootstrap-emacs.pdmp # Keep in sync with loadup.el pdmp := emacs.pdmp else bootstrap_pdmp := pdmp := endif # Flags that might be in WARN_CFLAGS but are not valid for Objective C. NON_OBJC_CFLAGS = -Wignored-attributes -Wignored-qualifiers -Wopenmp-simd -Wnested-externs # Ditto, but for C++. NON_CXX_CFLAGS = -Wmissing-prototypes -Wnested-externs -Wold-style-definition \ -Wstrict-prototypes -Wno-override-init # -Demacs makes some files produce the correct version for use in Emacs. # MYCPPFLAGS is for by-hand Emacs-specific overrides, e.g., # "make MYCPPFLAGS='-DDBUS_DEBUG'". EMACS_CFLAGS=-Demacs $(MYCPPFLAGS) -I. -I$(srcdir) \ -I$(lib) -I$(top_srcdir)/lib \ $(C_SWITCH_MACHINE) $(C_SWITCH_SYSTEM) $(C_SWITCH_X_SITE) \ $(GNUSTEP_CFLAGS) $(CFLAGS_SOUND) $(RSVG_CFLAGS) $(IMAGEMAGICK_CFLAGS) \ $(PNG_CFLAGS) $(LIBXML2_CFLAGS) $(LIBGCCJIT_CFLAGS) $(DBUS_CFLAGS) \ $(XRANDR_CFLAGS) $(XINERAMA_CFLAGS) $(XFIXES_CFLAGS) $(XDBE_CFLAGS) \ $(XINPUT_CFLAGS) $(WEBP_CFLAGS) $(WEBKIT_CFLAGS) $(LCMS2_CFLAGS) \ $(SETTINGS_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \ $(HARFBUZZ_CFLAGS) $(LIBOTF_CFLAGS) $(M17N_FLT_CFLAGS) $(DEPFLAGS) \ $(LIBSYSTEMD_CFLAGS) $(JSON_CFLAGS) $(XSYNC_CFLAGS) $(TREE_SITTER_CFLAGS) \ $(LIBGNUTLS_CFLAGS) $(NOTIFY_CFLAGS) $(CAIRO_CFLAGS) \ $(WERROR_CFLAGS) $(HAIKU_CFLAGS) $(XCOMPOSITE_CFLAGS) $(XSHAPE_CFLAGS) ALL_CFLAGS = $(EMACS_CFLAGS) $(WARN_CFLAGS) $(CFLAGS) ALL_OBJC_CFLAGS = $(EMACS_CFLAGS) \ $(filter-out $(NON_OBJC_CFLAGS),$(WARN_CFLAGS)) $(CFLAGS) \ $(GNU_OBJC_CFLAGS) ALL_CXX_CFLAGS = $(EMACS_CFLAGS) \ $(filter-out $(NON_CXX_CFLAGS),$(WARN_CFLAGS)) $(CXXFLAGS) .SUFFIXES: .m .cc .c.o: $(AM_V_CC)$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $(PROFILING_CFLAGS) $< .m.o: $(AM_V_CC)$(CC) -c $(CPPFLAGS) $(ALL_OBJC_CFLAGS) $(PROFILING_CFLAGS) $< .cc.o: $(AM_V_CXX)$(CXX) -c $(CPPFLAGS) $(ALL_CXX_CFLAGS) $(PROFILING_CFLAGS) $< ## lastfile must follow all files whose initialized data areas should ## be dumped as pure by dump-emacs. base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \ charset.o coding.o category.o ccl.o character.o chartab.o bidi.o \ $(CM_OBJ) term.o terminal.o xfaces.o $(XOBJ) $(GTK_OBJ) $(DBUS_OBJ) \ emacs.o keyboard.o macros.o keymap.o sysdep.o \ bignum.o buffer.o filelock.o insdel.o marker.o \ minibuf.o fileio.o dired.o \ cmds.o casetab.o casefiddle.o indent.o search.o regex-emacs.o undo.o \ alloc.o pdumper.o data.o doc.o editfns.o callint.o \ eval.o floatfns.o fns.o sort.o font.o print.o lread.o $(MODULES_OBJ) \ syntax.o $(UNEXEC_OBJ) bytecode.o comp.o $(DYNLIB_OBJ) \ process.o gnutls.o callproc.o \ region-cache.o sound.o timefns.o atimer.o \ doprnt.o intervals.o textprop.o composite.o xml.o lcms.o $(NOTIFY_OBJ) \ $(XWIDGETS_OBJ) \ profiler.o decompress.o \ thread.o systhread.o sqlite.o treesit.o \ itree.o \ $(if $(HYBRID_MALLOC),sheap.o) \ $(MSDOS_OBJ) $(MSDOS_X_OBJ) $(NS_OBJ) $(CYGWIN_OBJ) $(FONT_OBJ) \ $(W32_OBJ) $(WINDOW_SYSTEM_OBJ) $(XGSELOBJ) $(JSON_OBJ) \ $(HAIKU_OBJ) $(PGTK_OBJ) doc_obj = $(base_obj) $(NS_OBJC_OBJ) obj = $(doc_obj) $(HAIKU_CXX_OBJ) ## Object files used on some machine or other. ## These go in the DOC file on all machines in case they are needed. ## Some of them have no DOC entries, but it does no harm to have them ## in the list, in case they ever add any such entries. SOME_MACHINE_OBJECTS = dosfns.o msdos.o \ xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \ fontset.o dbusbind.o cygw32.o \ nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macfont.o \ nsxwidget.o \ w32.o w32console.o w32cygwinx.o w32fns.o w32heap.o w32inevt.o w32notify.o \ w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o \ w16select.o widget.o xfont.o ftfont.o xftfont.o gtkutil.o \ xsettings.o xgselect.o termcap.o hbfont.o \ haikuterm.o haikufns.o haikumenu.o haikufont.o ## gmalloc.o if !SYSTEM_MALLOC && !DOUG_LEA_MALLOC, else empty. GMALLOC_OBJ= ## vm-limit.o if !SYSTEM_MALLOC, else empty. VMLIMIT_OBJ= ## ralloc.o if !SYSTEM_MALLOC && REL_ALLOC, else empty. RALLOC_OBJ= ## Empty on Cygwin and MinGW, lastfile.o elsewhere. PRE_ALLOC_OBJ=lastfile.o ## lastfile.o on Cygwin and MinGW, empty elsewhere. POST_ALLOC_OBJ= ## List of object files that make-docfile should not be told about. otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \ $(POST_ALLOC_OBJ) $(WIDGET_OBJ) $(LIBOBJS) ## All object files linked into temacs. $(VMLIMIT_OBJ) should be first. ## (On MinGW, firstfile.o should be before vm-limit.o.) FIRSTFILE_OBJ= ALLOBJS = $(FIRSTFILE_OBJ) $(VMLIMIT_OBJ) $(obj) $(otherobj) # Must be first, before dep inclusion! ifneq ($(HAVE_BE_APP),yes) all: emacs$(EXEEXT) $(pdmp) $(OTHER_FILES) else all: Emacs Emacs.pdmp $(OTHER_FILES) endif ifeq ($(HAVE_NATIVE_COMP):$(NATIVE_DISABLED),yes:) all: ../native-lisp endif .PHONY: all dmpstruct_headers=$(srcdir)/lisp.h $(srcdir)/buffer.h $(srcdir)/itree.h \ $(srcdir)/intervals.h $(srcdir)/charset.h $(srcdir)/bignum.h ifeq ($(CHECK_STRUCTS),true) pdumper.o: dmpstruct.h endif dmpstruct.h: $(srcdir)/dmpstruct.awk dmpstruct.h: $(libsrc)/make-fingerprint$(EXEEXT) $(dmpstruct_headers) $(AM_V_GEN)POSIXLY_CORRECT=1 awk -f $(srcdir)/dmpstruct.awk \ $(dmpstruct_headers) > $@ AUTO_DEPEND = yes DEPDIR = deps ifeq ($(AUTO_DEPEND),yes) DEPFLAGS = -MMD -MF $(DEPDIR)/$*.d -MP -include $(ALLOBJS:%.o=$(DEPDIR)/%.d) else DEPFLAGS = include $(srcdir)/deps.mk endif ## This is the list of all Lisp files that might be loaded into the ## dumped Emacs. Some of them are not loaded on all platforms, but ## the DOC file on every platform uses them (because the DOC file is ## supposed to be platform-independent). ## Note that this list should not include lisp files which might not ## be present, like site-load.el and site-init.el; this makefile ## expects them all to be either present or buildable. ## ## To generate this list from loadup.el, we can either: ## 1) Extract everything matching (load "..."), in which case ## we need to add charprop.el by hand; or ## 2) Extract everything matching (load "...", in which case ## we need to remove leim-list, site-init, and site-load by hand. ## There's not much to choose between these two approaches, ## but the second one seems like it could be more future-proof. shortlisp = lisp.mk: $(lispsource)/loadup.el ${AM_V_GEN}( printf 'shortlisp = \\\n'; \ sed -n 's/^[ \t]*(load "\([^"]*\)".*/\1/p' $< | \ sed -e 's/$$/.elc \\/' -e 's/\.el\.elc/.el/'; \ echo "" ) > $@.tmp $(AM_V_at)mv -f $@.tmp $@ -include lisp.mk shortlisp_filter = leim/leim-list.el site-load.elc site-init.elc shortlisp := $(filter-out ${shortlisp_filter},${shortlisp}) ## Place loaddefs.el first, so it gets generated first, since it is on ## the critical path (relevant in parallel compilations). ## We don't really need to sort, but may as well use it to remove duplicates. shortlisp := loaddefs.el loadup.el $(sort ${shortlisp}) export LISP_PRELOADED = ${shortlisp} lisp = $(addprefix ${lispsource}/,${shortlisp}) ## Construct full set of libraries to be linked. LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(PGTK_LIBS) $(LIBX_BASE) $(LIBIMAGE) \ $(LIBX_OTHER) $(LIBSOUND) \ $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_ACL) $(LIB_CLOCK_GETTIME) \ $(LIB_NANOSLEEP) $(WEBKIT_LIBS) \ $(LIB_EACCESS) $(LIB_TIMER_TIME) $(DBUS_LIBS) \ $(LIB_EXECINFO) $(XRANDR_LIBS) $(XINERAMA_LIBS) $(XFIXES_LIBS) \ $(XDBE_LIBS) $(XSYNC_LIBS) \ $(LIBXML2_LIBS) $(LIBGPM) $(LIBS_SYSTEM) $(CAIRO_LIBS) \ $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) $(SETTINGS_LIBS) $(LIBSELINUX_LIBS) \ $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(HARFBUZZ_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \ $(LIBGNUTLS_LIBS) $(LIB_PTHREAD) $(GETADDRINFO_A_LIBS) $(LCMS2_LIBS) \ $(NOTIFY_LIBS) $(LIB_MATH) $(LIBZ) $(LIBMODULES) $(LIBSYSTEMD_LIBS) \ $(JSON_LIBS) $(LIBGMP) $(LIBGCCJIT_LIBS) $(XINPUT_LIBS) $(HAIKU_LIBS) \ $(TREE_SITTER_LIBS) $(SQLITE3_LIBS) $(XCOMPOSITE_LIBS) $(XSHAPE_LIBS) ## FORCE it so that admin/unidata can decide whether this file is ## up-to-date. Although since charprop depends on bootstrap-emacs, ## and emacs depends on charprop, in practice this rule was always run ## anyway. $(lispsource)/international/charprop.el: \ FORCE | bootstrap-emacs$(EXEEXT) $(bootstrap_pdmp) $(MAKE) -C ../admin/unidata all EMACS="../$(bootstrap_exe)" ## We require charprop.el to exist before ucs-normalize.el is ## byte-compiled, because ucs-normalize.el needs to load 2 uni-*.el files. ## And ns-win requires ucs-normalize. $(lispsource)/international/ucs-normalize.elc $(lispsource)/term/ns-win.elc: | \ $(lispsource)/international/charprop.el lispintdir = ${lispsource}/international ${lispintdir}/cp51932.el ${lispintdir}/eucjp-ms.el: FORCE ${MAKE} -C ../admin/charsets $(notdir $@) charsets = ${top_srcdir}/admin/charsets/charsets.stamp ${charsets}: FORCE $(MAKE) -C ../admin/charsets all charscript = ${lispintdir}/charscript.el ${charscript}: FORCE $(MAKE) -C ../admin/unidata $(notdir $@) emoji-zwj = ${lispintdir}/emoji-zwj.el ${emoji-zwj}: FORCE $(MAKE) -C ../admin/unidata $(notdir $@) ${lispintdir}/characters.elc: ${charscript:.el=.elc} ${emoji-zwj:.el=.elc} SYSTEM_TYPE = gnu/linux ## The dumped Emacs is as functional and more efficient than ## bootstrap-emacs, so we replace the latter with the former. ## Strictly speaking, emacs does not depend directly on all of $lisp, ## since not all pieces are used on all platforms. But DOC depends ## on all of $lisp, and emacs depends on DOC, so it is ok to use $lisp here. emacs$(EXEEXT): temacs$(EXEEXT) \ lisp.mk $(etc)/DOC $(lisp) \ $(lispsource)/international/charprop.el ${charsets} ifeq ($(SYSTEM_TYPE),cygwin) find ${top_builddir} -name '*.eln' | rebase -v -O -T - endif ifeq ($(DUMPING),unexec) LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup --temacs=dump ifneq ($(PAXCTL_dumped),) $(PAXCTL_dumped) emacs$(EXEEXT) endif cp -f $@ bootstrap-emacs$(EXEEXT) else rm -f $@ && cp -f temacs$(EXEEXT) $@ endif ## On Haiku, also produce a binary named Emacs with the appropriate ## icon set. ifeq ($(HAVE_BE_APP),yes) Emacs: emacs$(EXEEXT) $(libsrc)/be-resources $(AM_V_GEN) cp -f emacs$(EXEEXT) $@ $(AM_V_at) $(libsrc)/be-resources \ $(etc)/images/icons/hicolor/32x32/apps/emacs.png $@ Emacs.pdmp: $(pdmp) $(AM_V_GEN) cp -f $(pdmp) $@ endif ifeq ($(DUMPING),pdumper) $(pdmp): emacs$(EXEEXT) $(lispsource)/loaddefs.el $(lispsource)/loaddefs.elc LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup --temacs=pdump \ --bin-dest $(BIN_DESTDIR) --eln-dest $(ELN_DESTDIR) cp -f $@ $(bootstrap_pdmp) endif ## $(SOME_MACHINE_OBJECTS) comes before $(obj) because some files may ## or may not be included in $(obj), but they are always included in ## $(SOME_MACHINE_OBJECTS). Since a file is processed when it is mentioned ## for the first time, this prevents any variation between configurations ## in the contents of the DOC file. ## $(etc)/DOC: $(libsrc)/make-docfile$(EXEEXT) $(doc_obj) $(AM_V_GEN)$(MKDIR_P) $(etc) $(AM_V_at)rm -f $(etc)/DOC $(AM_V_at)$(libsrc)/make-docfile -d $(srcdir) \ $(SOME_MACHINE_OBJECTS) $(doc_obj) > $(etc)/DOC $(libsrc)/make-docfile$(EXEEXT) $(libsrc)/make-fingerprint$(EXEEXT): \ $(lib)/libgnu.a $(MAKE) -C $(dir $@) $(notdir $@) buildobj.h: Makefile $(AM_V_GEN)for i in $(ALLOBJS); do \ echo "$$i" | sed 's,.*/,,; s/\.obj$$/\.o/; s/^/"/; s/$$/",/' \ || exit; \ done >$@.tmp $(AM_V_at)mv $@.tmp $@ GLOBAL_SOURCES = $(base_obj:.o=.c) $(NS_OBJC_OBJ:.o=.m) gl-stamp: $(libsrc)/make-docfile$(EXEEXT) $(GLOBAL_SOURCES) $(AM_V_GLOBALS)$(libsrc)/make-docfile -d $(srcdir) -g $(doc_obj) > globals.tmp $(AM_V_at)$(top_srcdir)/build-aux/move-if-change globals.tmp globals.h $(AM_V_at)echo timestamp > $@ globals.h: gl-stamp; @true $(ALLOBJS): globals.h LIBEGNU_ARCHIVE = $(lib)/lib$(if $(HYBRID_MALLOC),e)gnu.a $(LIBEGNU_ARCHIVE): $(config_h) $(MAKE) -C $(dir $@) all ifeq ($(HAVE_PDUMPER),yes) MAKE_PDUMPER_FINGERPRINT = $(libsrc)/make-fingerprint$(EXEEXT) else MAKE_PDUMPER_FINGERPRINT = endif ## We have to create $(etc) here because init_cmdargs tests its ## existence when setting Vinstallation_directory (FIXME?). ## This goes on to affect various things, and the emacs binary fails ## to start if Vinstallation_directory has the wrong value. temacs$(EXEEXT): $(LIBXMENU) $(ALLOBJS) $(LIBEGNU_ARCHIVE) $(EMACSRES) \ $(charsets) $(charscript) ${emoji-zwj} $(MAKE_PDUMPER_FINGERPRINT) ifeq ($(HAVE_BE_APP),yes) $(AM_V_CXXLD)$(CXX) -o $@.tmp \ $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(LDFLAGS) \ $(ALLOBJS) $(LIBEGNU_ARCHIVE) $(W32_RES_LINK) $(LIBES) -lstdc++ else $(AM_V_CCLD)$(CC) -o $@.tmp \ $(ALL_CFLAGS) $(CXXFLAGS) $(TEMACS_LDFLAGS) $(LDFLAGS) \ $(ALLOBJS) $(LIBEGNU_ARCHIVE) $(W32_RES_LINK) $(LIBES) endif ifeq ($(HAVE_PDUMPER),yes) $(AM_V_at)$(MAKE_PDUMPER_FINGERPRINT) $@.tmp ifeq ($(DO_CODESIGN),yes) codesign -s - -f $@.tmp endif endif $(AM_V_at)mv $@.tmp $@ $(MKDIR_P) $(etc) ifeq ($(DUMPING),unexec) ifneq ($(PAXCTL_notdumped),) $(PAXCTL_notdumped) $@ endif endif ## The following oldxmenu-related rules are only (possibly) used if ## HAVE_X11 && !USE_GTK, but there is no harm in always defining them. $(lwlibdir)/liblw.a: $(config_h) globals.h lisp.h FORCE $(MAKE) -C $(dir $@) $(notdir $@) $(oldXMenudir)/libXMenu11.a: FORCE $(MAKE) -C $(dir $@) $(notdir $@) FORCE: .PHONY: FORCE .PRECIOUS: ../config.status Makefile ../config.status: $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4 $(MAKE) -C $(dir $@) $(notdir $@) Makefile: ../config.status $(srcdir)/Makefile.in $(MAKE) -C .. src/$@ doc.o: buildobj.h emacs.res: FORCE $(MAKE) -C ../nt ../src/emacs.res .PHONY: ns-app ns-app: emacs$(EXEEXT) $(pdmp) $(MAKE) -C ../nextstep all .PHONY: mostlyclean clean bootstrap-clean distclean maintainer-clean .PHONY: versionclean mostlyclean: rm -f temacs$(EXEEXT) core ./*.core \#* ./*.o rm -f dmpstruct.h rm -f emacs.pdmp rm -f ../etc/DOC rm -f bootstrap-emacs$(EXEEXT) $(bootstrap_pdmp) rm -f emacs-$(version)$(EXEEXT) rm -f buildobj.h rm -f globals.h gl-stamp rm -f ./*.res ./*.tmp versionclean: rm -f emacs$(EXEEXT) emacs-*.*.*[0-9]$(EXEEXT) emacs-*.*.*[0-9].pdmp rm -f ../etc/DOC* clean: mostlyclean versionclean rm -f $(DEPDIR)/* ## bootstrap-clean is used to clean up just before a bootstrap. ## It should remove all files generated during a compilation/bootstrap, ## but not things like config.status or TAGS. bootstrap-clean: clean rm -f emacs-module.h epaths.h config.h config.stamp if test -f ./.gdbinit; then \ mv ./.gdbinit ./.gdbinit.save; \ if test -f "$(srcdir)/.gdbinit"; then rm -f ./.gdbinit.save; \ else mv ./.gdbinit.save ./.gdbinit; fi; \ fi distclean: bootstrap-clean rm -f Makefile lisp.mk verbose.mk rm -fr $(DEPDIR) maintainer-clean: distclean rm -f TAGS ETAGS = ../lib-src/etags${EXEEXT} ${ETAGS}: FORCE $(MAKE) -C $(dir $@) $(notdir $@) # Remove macuvs.h since it'd cause `src/emacs` # to be built before we can get TAGS. ctagsfiles1 = $(filter-out ${srcdir}/macuvs.h, $(wildcard ${srcdir}/*.[hc])) ctagsfiles2 = $(wildcard ${srcdir}/*.m) ctagsfiles3 = $(wildcard ${srcdir}/*.cc) ## In out-of-tree builds, TAGS are generated in the build dir, like ## other non-bootstrap build products (see Bug#31744). ## This does not need to depend on ../lisp, ../lwlib and ../lib TAGS files, ## because etags "--include" only includes a pointer to the file, ## rather than the file contents. TAGS: ${ETAGS} $(ctagsfiles1) $(ctagsfiles2) $(AM_V_GEN)${ETAGS} --include=../lisp/TAGS --include=$(lwlibdir)/TAGS \ --include=$(lib)/TAGS \ --regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \ --regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"[^"]+",[ ]\([A-Za-z0-9_]+\)/\1/' \ $(ctagsfiles1) \ --regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \ --regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"[^"]+",[ ]\([A-Za-z0-9_]+\)/\1/' \ $(ctagsfiles2) \ $(ctagsfiles3) ## Arrange to make tags tables for ../lisp, ../lwlib and ../lib, ## which the above TAGS file for the C files includes by reference. ../lisp/TAGS $(lwlibdir)/TAGS $(lib)/TAGS: FORCE $(MAKE) -C $(dir $@) $(notdir $@) ETAGS="$(ETAGS)" tags: TAGS ../lisp/TAGS $(lwlibdir)/TAGS $(lib)/TAGS .PHONY: tags ### Bootstrapping. ## Bootstrapping right is difficult because of the circular dependencies. ## Furthermore, we have to deal with the fact that many compilation targets ## such as loaddefs.el or *.elc can typically be produced by any old ## Emacs executable, so we would like to avoid rebuilding them whenever ## we build a new Emacs executable. ## ## (In other words, changing a single file src/foo.c would force ## dumping a new bootstrap-emacs, then re-byte-compiling all preloaded ## elisp files, and only then dump the actual src/emacs, which is not ## wrong, but is overkill in 99.99% of the cases.) ## ## To solve the circularity, we use 2 different Emacs executables, ## "emacs" is the main target and "bootstrap-emacs" is the one used ## to build the *.elc and loaddefs.el files. ## To solve the freshness issue, in the past we tried various clever tricks, ## but now that we require GNU make, we can simply specify ## bootstrap-emacs$(EXEEXT) as an order-only prerequisite. %.elc: %.el | bootstrap-emacs$(EXEEXT) $(bootstrap_pdmp) @$(MAKE) $(AM_V_NO_PD) -C ../lisp EMACS="$(bootstrap_exe)"\ THEFILE=$< $