| From 7e80d6b834cd792dbbd7a99fbff98e46cdd5789f Mon Sep 17 00:00:00 2001 |
| From: "H. Peter Anvin" <hpa@zytor.com> |
| Date: Tue, 17 Jan 2023 13:05:55 -0800 |
| Subject: [PATCH] Make: handle warning files while building in a directory |
| |
| The dependency on the warning files breaks when we are building in a |
| directory *and* the files already exist from being shipped with the |
| distribution tarballs. The make VPATH simply isn't sophisticated |
| enough to deal with it, so let the C compiler handle it by #including |
| the generated file from a dummy C file. |
| |
| Reported-by: Rudi Heitbaum <rudi@heitbaum.com> |
| Signed-off-by: H. Peter Anvin <hpa@zytor.com> |
| --- |
| Makefile.in | 38 ++++++++++++++++++++------------------ |
| Mkfiles/msvc.mak | 14 +++++++------- |
| Mkfiles/openwcom.mak | 14 +++++++------- |
| doc/Makefile.in | 2 +- |
| 6 files changed, 37 insertions(+), 34 deletions(-) |
| |
| diff --git a/Makefile.in b/Makefile.in |
| index 148fcb50..95268fd2 100644 |
| --- a/Makefile.in |
| +++ b/Makefile.in |
| @@ -37,8 +37,10 @@ AR = @AR@ |
| RANLIB = @RANLIB@ |
| STRIP = @STRIP@ |
| |
| +tools = $(top_srcdir)/tools |
| + |
| PERL = perl |
| -PERLFLAGS = -I$(srcdir)/perllib -I$(srcdir) |
| +PERLFLAGS = -I$(top_srcdir)/perllib -I$(srcdir) |
| RUNPERL = $(PERL) $(PERLFLAGS) |
| |
| PYTHON3 = python3 |
| @@ -65,8 +67,8 @@ LN_S = @LN_S@ |
| FIND = find |
| |
| # Binary suffixes |
| -O = @OBJEXT@ |
| -X = @EXEEXT@ |
| +O = @OBJEXT@ |
| +X = @EXEEXT@ |
| A = @LIBEXT@ |
| |
| # Debug stuff |
| @@ -194,14 +196,14 @@ PERLREQ = config/unconfig.h \ |
| x86/iflag.c x86/iflaggen.h \ |
| macros/macros.c \ |
| asm/pptok.ph asm/directbl.c asm/directiv.h \ |
| - asm/warnings.c include/warnings.h doc/warnings.src \ |
| + $(WARNFILES) \ |
| misc/nasmtok.el \ |
| version.h version.mac version.mak nsis/version.nsh |
| |
| INSDEP = x86/insns.dat x86/insns.pl x86/insns-iflags.ph x86/iflags.ph |
| |
| config/unconfig.h: config/config.h.in |
| - $(RUNPERL) $(srcdir)/tools/unconfig.pl \ |
| + $(RUNPERL) $(tools)/unconfig.pl \ |
| '$(srcdir)' config/config.h.in config/unconfig.h |
| |
| x86/iflag.c: $(INSDEP) |
| @@ -273,7 +275,7 @@ x86/regs.h: x86/regs.dat x86/regs.pl |
| # reasonable, but doesn't update the time stamp if the files aren't |
| # changed, to avoid rebuilding everything every time. Track the actual |
| # dependency by the empty file asm/warnings.time. |
| -WARNFILES = asm/warnings.c include/warnings.h doc/warnings.src |
| +WARNFILES = asm/warnings_c.h include/warnings.h doc/warnings.src |
| |
| warnings: |
| $(RM_F) $(WARNFILES) $(WARNFILES:=.time) |
| @@ -283,11 +285,11 @@ asm/warnings.time: $(ALLOBJ_NW:.$(O)=.c) |
| : > asm/warnings.time |
| $(MAKE) $(WARNFILES:=.time) |
| |
| -asm/warnings.c.time: asm/warnings.pl asm/warnings.time |
| - $(RUNPERL) $(srcdir)/asm/warnings.pl c asm/warnings.c $(srcdir) |
| - : > asm/warnings.c.time |
| +asm/warnings_c.h.time: asm/warnings.pl asm/warnings.time |
| + $(RUNPERL) $(srcdir)/asm/warnings.pl c asm/warnings_c.h $(srcdir) |
| + : > asm/warnings_c.h.time |
| |
| -asm/warnings.c: asm/warnings.c.time |
| +asm/warnings_c.h: asm/warnings_c.h.time |
| @: Side effect |
| |
| include/warnings.h.time: asm/warnings.pl asm/warnings.time |
| @@ -506,8 +508,8 @@ EXTERNAL_DEPENDENCIES = 1 |
| # the dependency information will remain external, so it doesn't |
| # pollute the git logs. |
| # |
| -Makefile.dep: $(PERLREQ) tools/mkdep.pl config.status |
| - $(RUNPERL) tools/mkdep.pl -M Makefile.in -- $(DEPDIRS) |
| +Makefile.dep: $(PERLREQ) $(tools)/mkdep.pl config.status |
| + $(RUNPERL) $(tools)/mkdep.pl -M Makefile.in -- $(DEPDIRS) |
| |
| dep: Makefile.dep |
| |
| @@ -517,9 +519,9 @@ dep: Makefile.dep |
| # be invoked manually or via "make dist". It should be run before |
| # creating release archives. |
| # |
| -alldeps: $(PERLREQ) tools/syncfiles.pl tools/mkdep.pl |
| - $(RUNPERL) tools/syncfiles.pl Makefile.in Mkfiles/*.mak |
| - $(RUNPERL) tools/mkdep.pl -i -M Makefile.in Mkfiles/*.mak -- \ |
| +alldeps: $(PERLREQ) $(tools)/syncfiles.pl $(tools)/mkdep.pl |
| + $(RUNPERL) $(tools)/syncfiles.pl Makefile.in Mkfiles/*.mak |
| + $(RUNPERL) $(tools)/mkdep.pl -i -M Makefile.in Mkfiles/*.mak -- \ |
| $(DEPDIRS) |
| $(RM_F) *.dep |
| if [ -f config.status ]; then \ |
| @@ -528,9 +530,9 @@ alldeps: $(PERLREQ) tools/syncfiles.pl tools/mkdep.pl |
| |
| # Strip internal dependency information from all Makefiles; this makes |
| # the output good for git checkin |
| -cleandeps: $(PERLREQ) tools/syncfiles.pl tools/mkdep.pl |
| - $(RUNPERL) tools/syncfiles.pl Makefile.in Mkfiles/*.mak |
| - $(RUNPERL) tools/mkdep.pl -e -M Makefile.in Mkfiles/*.mak -- \ |
| +cleandeps: $(PERLREQ) $(tools)/syncfiles.pl $(tools)/mkdep.pl |
| + $(RUNPERL) $(tools)/syncfiles.pl Makefile.in Mkfiles/*.mak |
| + $(RUNPERL) $(tools)/mkdep.pl -e -M Makefile.in Mkfiles/*.mak -- \ |
| $(DEPDIRS) |
| $(RM_F) *.dep |
| if [ -f config.status ]; then \ |
| diff --git a/Mkfiles/msvc.mak b/Mkfiles/msvc.mak |
| index cf71fffc..da71c5c6 100644 |
| --- a/Mkfiles/msvc.mak |
| +++ b/Mkfiles/msvc.mak |
| @@ -153,14 +153,14 @@ PERLREQ = config\unconfig.h \ |
| x86\iflag.c x86\iflaggen.h \ |
| macros\macros.c \ |
| asm\pptok.ph asm\directbl.c asm\directiv.h \ |
| - asm\warnings.c include\warnings.h doc\warnings.src \ |
| + $(WARNFILES) \ |
| misc\nasmtok.el \ |
| version.h version.mac version.mak nsis\version.nsh |
| |
| INSDEP = x86\insns.dat x86\insns.pl x86\insns-iflags.ph x86\iflags.ph |
| |
| config\unconfig.h: config\config.h.in |
| - $(RUNPERL) $(srcdir)\tools\unconfig.pl \ |
| + $(RUNPERL) $(tools)\unconfig.pl \ |
| '$(srcdir)' config\config.h.in config\unconfig.h |
| |
| x86\iflag.c: $(INSDEP) |
| @@ -232,7 +232,7 @@ x86\regs.h: x86\regs.dat x86\regs.pl |
| # reasonable, but doesn't update the time stamp if the files aren't |
| # changed, to avoid rebuilding everything every time. Track the actual |
| # dependency by the empty file asm\warnings.time. |
| -WARNFILES = asm\warnings.c include\warnings.h doc\warnings.src |
| +WARNFILES = asm\warnings_c.h include\warnings.h doc\warnings.src |
| |
| warnings: |
| $(RM_F) $(WARNFILES) $(WARNFILES:=.time) |
| @@ -242,11 +242,11 @@ asm\warnings.time: $(ALLOBJ_NW:.$(O)=.c) |
| : > asm\warnings.time |
| $(MAKE) $(WARNFILES:=.time) |
| |
| -asm\warnings.c.time: asm\warnings.pl asm\warnings.time |
| - $(RUNPERL) $(srcdir)\asm\warnings.pl c asm\warnings.c $(srcdir) |
| - : > asm\warnings.c.time |
| +asm\warnings_c.h.time: asm\warnings.pl asm\warnings.time |
| + $(RUNPERL) $(srcdir)\asm\warnings.pl c asm\warnings_c.h $(srcdir) |
| + : > asm\warnings_c.h.time |
| |
| -asm\warnings.c: asm\warnings.c.time |
| +asm\warnings_c.h: asm\warnings_c.h.time |
| @: Side effect |
| |
| include\warnings.h.time: asm\warnings.pl asm\warnings.time |
| diff --git a/Mkfiles/openwcom.mak b/Mkfiles/openwcom.mak |
| index 5394d85d..605f9afe 100644 |
| --- a/Mkfiles/openwcom.mak |
| +++ b/Mkfiles/openwcom.mak |
| @@ -166,14 +166,14 @@ PERLREQ = config\unconfig.h & |
| x86\iflag.c x86\iflaggen.h & |
| macros\macros.c & |
| asm\pptok.ph asm\directbl.c asm\directiv.h & |
| - asm\warnings.c include\warnings.h doc\warnings.src & |
| + $(WARNFILES) & |
| misc\nasmtok.el & |
| version.h version.mac version.mak nsis\version.nsh |
| |
| INSDEP = x86\insns.dat x86\insns.pl x86\insns-iflags.ph x86\iflags.ph |
| |
| config\unconfig.h: config\config.h.in |
| - $(RUNPERL) $(srcdir)\tools\unconfig.pl & |
| + $(RUNPERL) $(tools)\unconfig.pl & |
| '$(srcdir)' config\config.h.in config\unconfig.h |
| |
| x86\iflag.c: $(INSDEP) |
| @@ -245,7 +245,7 @@ x86\regs.h: x86\regs.dat x86\regs.pl |
| # reasonable, but doesn't update the time stamp if the files aren't |
| # changed, to avoid rebuilding everything every time. Track the actual |
| # dependency by the empty file asm\warnings.time. |
| -WARNFILES = asm\warnings.c include\warnings.h doc\warnings.src |
| +WARNFILES = asm\warnings_c.h include\warnings.h doc\warnings.src |
| |
| warnings: |
| $(RM_F) $(WARNFILES) $(WARNFILES:=.time) |
| @@ -255,11 +255,11 @@ asm\warnings.time: $(ALLOBJ_NW:.$(O)=.c) |
| : > asm\warnings.time |
| $(MAKE) $(WARNFILES:=.time) |
| |
| -asm\warnings.c.time: asm\warnings.pl asm\warnings.time |
| - $(RUNPERL) $(srcdir)\asm\warnings.pl c asm\warnings.c $(srcdir) |
| - : > asm\warnings.c.time |
| +asm\warnings_c.h.time: asm\warnings.pl asm\warnings.time |
| + $(RUNPERL) $(srcdir)\asm\warnings.pl c asm\warnings_c.h $(srcdir) |
| + : > asm\warnings_c.h.time |
| |
| -asm\warnings.c: asm\warnings.c.time |
| +asm\warnings_c.h: asm\warnings_c.h.time |
| @: Side effect |
| |
| include\warnings.h.time: asm\warnings.pl asm\warnings.time |
| diff --git a/doc/Makefile.in b/doc/Makefile.in |
| index e92437a0..1c8393c5 100644 |
| --- a/doc/Makefile.in |
| +++ b/doc/Makefile.in |
| @@ -20,7 +20,7 @@ INSTALL = @INSTALL@ |
| INSTALL_PROGRAM = @INSTALL_PROGRAM@ |
| INSTALL_DATA = @INSTALL_DATA@ |
| |
| -PERL = perl -I$(srcdir) |
| +PERL = perl -I$(top_srcdir)/perllib -I$(srcdir) |
| |
| PDFOPT = @PDFOPT@ |
| |