emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CHECK_STRUCTS/dmpstruct.h mechanism is broken.


From: Andy Moreton
Subject: Re: CHECK_STRUCTS/dmpstruct.h mechanism is broken.
Date: Wed, 10 Apr 2019 15:59:36 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (windows-nt)

On Wed 10 Apr 2019, Andy Moreton wrote:

> On Tue 09 Apr 2019, Paul Eggert wrote:
>
>> On 3/4/19 6:17 PM, Paul Eggert wrote:
>>> On 2/28/19 12:59 PM, Alan Mackenzie wrote:
>>>> is all this really needed?  Is pdumper.c really that fragile,
>>>> that it can't cope with changes in certain structs?
>>> No, it's not needed, and in my experience the mechanism's costs far
>>> exceed any benefit.
>>
>> No further comment and the mechanism just bit me again, so I installed
>> the attached patch to disable it. We can reenable it later if needed
>> (which I hope won't happen....).
>
> This patch seems to be ok, but your following patch in commit d826037475
> ("Remove the need for temacs.in") breaks out of tree builds.
>
> It seems to me that the patch contains a mixture of changes to remove
> temacs.in support, and a number of unrelated changes to Makefile.in
> files which break the build.
>
> For example, this breaks out-of-tree builds, as make tries to use
> /path/to/emacs/admin/charsets/Makefile rather than the correct path
> <builddir>/admin/charsets/Makefile:
>
>     diff --git a/src/Makefile.in b/src/Makefile.in
>     index 0613a0dbed..f8a2ffadc2 100644
>     --- a/src/Makefile.in
>     +++ b/src/Makefile.in
>     @@ -533,7 +533,7 @@ ${lispintdir}/cp51932.el ${lispintdir}/eucjp-ms.el:
>
>      charsets = ${top_srcdir}/admin/charsets/charsets.stamp
>      ${charsets}: FORCE
>     - ${MAKE} -C ../admin/charsets all
>     + $(MAKE) -C $(dir $@) all
>
>      charscript = ${lispintdir}/charscript.el
>      ${charscript}: FORCE
>
> The unrelated changes should have been committed in a separate patch
> for easier bisection: a patch should contain a single logical change.
>
> Please revert all of the unrelated makefile path handling changes so
> master is buildable (the example above is one of many breakages).

The following changes (a partial revert of commit d826037475) make it
possible to build emacs out of tree on Windows (msys2 mingw64):


diff --git a/src/Makefile.in b/src/Makefile.in
index f8a2ffadc2..6816b8bf8d 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -533,7 +533,7 @@ ${lispintdir}/cp51932.el ${lispintdir}/eucjp-ms.el:
 
 charsets = ${top_srcdir}/admin/charsets/charsets.stamp
 ${charsets}: FORCE
-       $(MAKE) -C $(dir $@) all
+       $(MAKE) -C ../admin/charsets all
 
 charscript = ${lispintdir}/charscript.el
 ${charscript}: FORCE
@@ -586,7 +586,7 @@ $(etc)/DOC:
 
 $(libsrc)/make-docfile$(EXEEXT) $(libsrc)/make-fingerprint$(EXEEXT): \
   $(lib)/libgnu.a
-       $(MAKE) -C $(dir $@) $(notdir $@)
+       $(MAKE) -C $(libsrc) make-docfile$(EXEEXT)
 
 buildobj.h: Makefile
        $(AM_V_GEN)for i in $(ALLOBJS); do \
@@ -614,7 +614,7 @@ $(ALLOBJS):
 LIBEGNU_ARCHIVE = $(lib)/lib$(if $(HYBRID_MALLOC),e)gnu.a
 
 $(LIBEGNU_ARCHIVE): $(config_h)
-       $(MAKE) -C $(dir $@) all
+       $(MAKE) -C $(lib) all
 
 FINGERPRINTED = $(LIBXMENU) $(ALLOBJS) $(LIBEGNU_ARCHIVE) $(EMACSRES)
 fingerprint.c: $(FINGERPRINTED) $(libsrc)/make-fingerprint$(EXEEXT)
@@ -639,15 +639,15 @@ temacs$(EXEEXT):
 ## 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 $@)
+       $(MAKE) -C $(lwlibdir) liblw.a
 $(oldXMenudir)/libXMenu11.a: FORCE
-       $(MAKE) -C $(dir $@) $(notdir $@)
+       $(MAKE) -C -C $(oldXMenudir) libXMenu11.a
 FORCE:
 .PHONY: FORCE
 
 .PRECIOUS: ../config.status Makefile
 ../config.status: $(top_srcdir)/configure.ac $(top_srcdir)/m4/*.m4
-       $(MAKE) -C $(dir $@) $(notdir $@)
+       $(MAKE) -C .. $(notdir $@)
 Makefile: ../config.status $(srcdir)/Makefile.in
        $(MAKE) -C .. src/$@
 
@@ -703,7 +703,7 @@ extraclean:
 ETAGS = ../lib-src/etags${EXEEXT}
 
 ${ETAGS}: FORCE
-       $(MAKE) -C $(dir $@) $(notdir $@)
+       $(MAKE) -C ../lib-src $(notdir $@)
 
 # Remove macuvs.h and fingerprint.c since they'd cause `src/emacs`
 # to be built before we can get TAGS.
@@ -728,8 +728,11 @@ TAGS:
 
 ## Arrange to make tags tables for ../lisp and ../lwlib,
 ## which the above TAGS file for the C files includes by reference.
-../lisp/TAGS $(lwlibdir)/TAGS: FORCE
-       $(MAKE) -C $(dir $@) $(notdir $@) ETAGS="$(ETAGS)"
+../lisp/TAGS: FORCE
+       $(MAKE) -C ../lisp TAGS ETAGS="$(ETAGS)"
+
+$(lwlibdir)/TAGS: FORCE
+       $(MAKE) -C $(lwlibdir) TAGS ETAGS="$(ETAGS)"
 
 tags: TAGS ../lisp/TAGS $(lwlibdir)/TAGS
 .PHONY: tags
@@ -765,7 +768,7 @@ VCSWITNESS =
 
 $(lispsource)/loaddefs.el: $(VCSWITNESS) | \
                bootstrap-emacs$(EXEEXT) $(bootstrap_pdmp)
-       $(MAKE) -C $(dir $@) autoloads EMACS="$(bootstrap_exe)"
+       $(MAKE) -C ../lisp autoloads EMACS="$(bootstrap_exe)"
 
 ## Dump an Emacs executable named bootstrap-emacs containing the
 ## files from loadup.el in source form.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]