X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/4fc35edd5fcdfe258c04cfed707753fdd8795a72..0e963201d03d9229bb8ac4323291d2b0119526ed:/src/Makefile.in diff --git a/src/Makefile.in b/src/Makefile.in index 2ac34f5c44..74c0e4eeda 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2015 Free Software +# Copyright (C) 1985, 1987-1988, 1993-1995, 1999-2016 Free Software # Foundation, Inc. # This file is part of GNU Emacs. @@ -128,8 +128,9 @@ LIB_PTHREAD=@LIB_PTHREAD@ LIBIMAGE=@LIBTIFF@ @LIBJPEG@ @LIBPNG@ @LIBGIF@ @LIBXPM@ +XCB_LIBS=@XCB_LIBS@ XFT_LIBS=@XFT_LIBS@ -LIBX_EXTRA=-lX11 $(XFT_LIBS) +LIBX_EXTRA=-lX11 $(XCB_LIBS) $(XFT_LIBS) FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@ FONTCONFIG_LIBS = @FONTCONFIG_LIBS@ @@ -218,6 +219,9 @@ CFLAGS_SOUND= @CFLAGS_SOUND@ RSVG_LIBS= @RSVG_LIBS@ RSVG_CFLAGS= @RSVG_CFLAGS@ +CAIRO_LIBS= @CAIRO_LIBS@ +CAIRO_CFLAGS= @CAIRO_CFLAGS@ + IMAGEMAGICK_LIBS= @IMAGEMAGICK_LIBS@ IMAGEMAGICK_CFLAGS= @IMAGEMAGICK_CFLAGS@ @@ -226,6 +230,11 @@ LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ LIBZ = @LIBZ@ +## system-specific libs for dynamic modules, else empty +LIBMODULES = @LIBMODULES@ +## dynlib.o emacs-module.o if modules enabled, else empty +MODULES_OBJ = @MODULES_OBJ@ + XRANDR_LIBS = @XRANDR_LIBS@ XRANDR_CFLAGS = @XRANDR_CFLAGS@ @@ -273,6 +282,7 @@ W32_RES_LINK=@W32_RES_LINK@ ## Empty if !HAVE_X_WINDOWS ## xfont.o ftfont.o xftfont.o ftxfont.o if HAVE_XFT ## xfont.o ftfont.o ftxfont.o if HAVE_FREETYPE +## ftfont.o ftcrfont.o if USE_CAIRO ## else xfont.o FONT_OBJ=@FONT_OBJ@ @@ -323,10 +333,15 @@ am__v_at_0 = @ am__v_at_1 = DEPDIR=deps -## -MMD -MF $(DEPDIR)/$*.d if AUTO_DEPEND; else empty. -DEPFLAGS=@DEPFLAGS@ -## ${MKDIR_P} ${DEPDIR} (if AUTO_DEPEND); else ':'. -MKDEPDIR=@MKDEPDIR@ +AUTO_DEPEND = @AUTO_DEPEND@ + +ifeq ($(AUTO_DEPEND),yes) +DEPFLAGS = -MMD -MF ${DEPDIR}/$*.d -MP +MKDEPDIR = ${MKDIR_P} ${DEPDIR} +else +DEPFLAGS = +MKDEPDIR = : +endif ## DO NOT use -R. There is a special hack described in lastfile.c ## which is used instead. Some initialized data areas are modified @@ -345,7 +360,7 @@ ALL_CFLAGS=-Demacs $(MYCPPFLAGS) -I. -I$(srcdir) \ $(XRANDR_CFLAGS) $(XINERAMA_CFLAGS) $(XFIXES_CFLAGS) \ $(SETTINGS_CFLAGS) $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS) \ $(LIBOTF_CFLAGS) $(M17N_FLT_CFLAGS) $(DEPFLAGS) \ - $(LIBGNUTLS_CFLAGS) $(GFILENOTIFY_CFLAGS) \ + $(LIBGNUTLS_CFLAGS) $(GFILENOTIFY_CFLAGS) $(CAIRO_CFLAGS) \ $(WARN_CFLAGS) $(WERROR_CFLAGS) $(CFLAGS) ALL_OBJC_CFLAGS=$(ALL_CFLAGS) $(GNU_OBJC_CFLAGS) @@ -367,7 +382,7 @@ base_obj = dispnew.o frame.o scroll.o xdisp.o menu.o $(XMENU_OBJ) window.o \ minibuf.o fileio.o dired.o \ cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o \ alloc.o data.o doc.o editfns.o callint.o \ - eval.o floatfns.o fns.o font.o print.o lread.o \ + eval.o floatfns.o fns.o font.o print.o lread.o $(MODULES_OBJ) \ syntax.o $(UNEXEC_OBJ) bytecode.o \ process.o gnutls.o callproc.o \ region-cache.o sound.o atimer.o \ @@ -413,9 +428,40 @@ otherobj= $(TERMCAP_OBJ) $(PRE_ALLOC_OBJ) $(GMALLOC_OBJ) $(RALLOC_OBJ) \ FIRSTFILE_OBJ=@FIRSTFILE_OBJ@ ALLOBJS = $(FIRSTFILE_OBJ) $(VMLIMIT_OBJ) $(obj) $(otherobj) -## Configure inserts the file lisp.mk at this point, defining $lisp. -@lisp_frag@ +all: emacs$(EXEEXT) $(OTHER_FILES) +.PHONY: all +## 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 + @rm -f $@ + ${AM_V_GEN}( printf 'shortlisp = \\\n'; \ + sed -n 's/^[ \t]*(load "\([^"]*\)".*/\1/p' $< | \ + sed -e 's/$$/.elc \\/' -e 's/\.el\.elc/.el/'; \ + echo "" ) > $@ + +-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}) +lisp = $(addprefix ${lispsource}/,${shortlisp}) ## Construct full set of libraries to be linked. LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(LIBX_BASE) $(LIBIMAGE) \ @@ -423,14 +469,11 @@ LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(LIBX_BASE) $(LIBIMAGE) \ $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_ACL) $(LIB_CLOCK_GETTIME) \ $(LIB_EACCESS) $(LIB_FDATASYNC) $(LIB_TIMER_TIME) $(DBUS_LIBS) \ $(LIB_EXECINFO) $(XRANDR_LIBS) $(XINERAMA_LIBS) $(XFIXES_LIBS) \ - $(LIBXML2_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) \ + $(LIBXML2_LIBS) $(LIBGPM) $(LIBRESOLV) $(LIBS_SYSTEM) $(CAIRO_LIBS) \ $(LIBS_TERMCAP) $(GETLOADAVG_LIBS) $(SETTINGS_LIBS) $(LIBSELINUX_LIBS) \ $(FREETYPE_LIBS) $(FONTCONFIG_LIBS) $(LIBOTF_LIBS) $(M17N_FLT_LIBS) \ $(LIBGNUTLS_LIBS) $(LIB_PTHREAD) \ - $(GFILENOTIFY_LIBS) $(LIB_MATH) $(LIBZ) - -all: emacs$(EXEEXT) $(OTHER_FILES) -.PHONY: all + $(GFILENOTIFY_LIBS) $(LIB_MATH) $(LIBZ) $(LIBMODULES) $(leimdir)/leim-list.el: bootstrap-emacs$(EXEEXT) $(MAKE) -C ../leim leim-list.el EMACS="$(bootstrap_exe)" @@ -443,14 +486,33 @@ $(srcdir)/macuvs.h $(lispsource)/international/charprop.el: \ bootstrap-emacs$(EXEEXT) FORCE $(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. +$(lispsource)/international/ucs-normalize.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 $@) + +${lispintdir}/characters.elc: ${charscript:.el=.elc} + ## 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) \ - $(etc)/DOC $(lisp) $(leimdir)/leim-list.el \ - $(lispsource)/international/charprop.el + lisp.mk $(etc)/DOC $(lisp) $(leimdir)/leim-list.el \ + $(lispsource)/international/charprop.el ${charsets} ifeq ($(CANNOT_DUMP),yes) ln -f temacs$(EXEEXT) $@ else @@ -460,12 +522,9 @@ else endif ## We run make-docfile twice because the command line may get too long -## on some systems. The sed command operating on lisp.mk also reduces -## the length of the command line. Unfortunately, no-one has any idea +## on some systems. Unfortunately, no-one has any idea ## exactly how long the maximum safe command line length is on all the -## various systems that Emacs supports. Obviously, the length depends -## on what your value of $srcdir is. If the length restriction goes -## away, lisp.mk can be merged back into this file. +## various systems that Emacs supports. ## ## $(SOME_MACHINE_OBJECTS) comes before $(obj) because some files may ## or may not be included in $(obj), but they are always included in @@ -473,16 +532,15 @@ endif ## for the first time, this prevents any variation between configurations ## in the contents of the DOC file. ## -$(etc)/DOC: $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp) +$(etc)/DOC: lisp.mk $(libsrc)/make-docfile$(EXEEXT) $(obj) $(lisp) $(AM_V_GEN)$(MKDIR_P) $(etc) -$(AM_V_at)rm -f $(etc)/DOC $(AM_V_at)$(libsrc)/make-docfile -d $(srcdir) \ $(SOME_MACHINE_OBJECTS) $(obj) > $(etc)/DOC $(AM_V_at)$(libsrc)/make-docfile -a $(etc)/DOC -d $(lispsource) \ - `sed -n -e 's| \\\\||' -e 's|^[ ]*$$(lispsource)/||p' \ - $(srcdir)/lisp.mk` + $(shortlisp) -$(libsrc)/make-docfile$(EXEEXT): +$(libsrc)/make-docfile$(EXEEXT): $(lib)/libgnu.a $(MAKE) -C $(libsrc) make-docfile$(EXEEXT) buildobj.h: Makefile @@ -494,23 +552,29 @@ buildobj.h: Makefile GLOBAL_SOURCES = $(base_obj:.o=.c) $(NS_OBJC_OBJ:.o=.m) +AM_V_GLOBALS = $(am__v_GLOBALS_@AM_V@) +am__v_GLOBALS_ = $(am__v_GLOBALS_@AM_DEFAULT_V@) +am__v_GLOBALS_0 = @echo " GEN " globals.h; +am__v_GLOBALS_1 = + gl-stamp: $(libsrc)/make-docfile$(EXEEXT) $(GLOBAL_SOURCES) - $(AM_V_GEN)$(libsrc)/make-docfile -d $(srcdir) -g $(obj) >$@ + $(AM_V_GLOBALS)$(libsrc)/make-docfile -d $(srcdir) -g $(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 - $(AM_V_GEN)cmp $< $@ >/dev/null || cp $< $@ +globals.h: gl-stamp; @true $(ALLOBJS): globals.h $(lib)/libgnu.a: $(config_h) - $(MAKE) -C $(lib) libgnu.a + $(MAKE) -C $(lib) all ## 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) \ - $(lib)/libgnu.a $(EMACSRES) + $(lib)/libgnu.a $(EMACSRES) ${charsets} ${charscript} $(AM_V_CCLD)$(CC) $(ALL_CFLAGS) $(TEMACS_LDFLAGS) $(LDFLAGS) \ -o temacs $(ALLOBJS) $(lib)/libgnu.a $(W32_RES_LINK) $(LIBES) $(MKDIR_P) $(etc) @@ -574,7 +638,7 @@ bootstrap-clean: clean fi distclean: bootstrap-clean - rm -f Makefile + rm -f Makefile lisp.mk maintainer-clean: distclean rm -f TAGS @@ -597,9 +661,11 @@ ctagsfiles3 = [a-zA-Z]*.m ## rather than the file contents. TAGS: $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) $(srcdir)/$(ctagsfiles3) "$(ETAGS)" --include=../lisp/TAGS --include=$(lwlibdir)/TAGS \ - --regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \ + --regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \ + --regex='{c}/[ ]*DEFVAR_[A-Z_ (]+"[^"]+",[ ]\([A-Za-z0-9_]+\)/\1/' \ $(srcdir)/$(ctagsfiles1) $(srcdir)/$(ctagsfiles2) \ - --regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/' \ + --regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"\([^"]+\)"/\1/' \ + --regex='{objc}/[ ]*DEFVAR_[A-Z_ (]+"[^"]+",[ ]\([A-Za-z0-9_]+\)/\1/' \ $(srcdir)/$(ctagsfiles3) ## Arrange to make tags tables for ../lisp and ../lwlib, @@ -659,8 +725,10 @@ endif @: Compile some files earlier to speed up further compilation. $(MAKE) -C ../lisp compile-first EMACS="$(bootstrap_exe)" -## Insert either autodeps.mk (if AUTO_DEPEND), else deps.mk. -@deps_frag@ - +ifeq ($(AUTO_DEPEND),yes) +-include $(ALLOBJS:%.o=${DEPDIR}/%.d) +else +include $(srcdir)/deps.mk +endif ### Makefile.in ends here