From: Mike Frysinger <vapier@gentoo.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 20/21] Adjust dependency rules to permit per-file flags
Date: Sun, 9 Oct 2011 22:50:02 -0400 [thread overview]
Message-ID: <201110092250.06932.vapier@gentoo.org> (raw)
In-Reply-To: <CAPnjgZ276_HsqJEtR7WUN5ZRmsbUGtb4_wERDe9DKfASSG=XUA@mail.gmail.com>
On Monday 03 October 2011 21:10:17 Simon Glass wrote:
> Hi,
>
> On Mon, Sep 26, 2011 at 5:10 PM, Simon Glass <sjg@chromium.org> wrote:
> > The dependency rules are currently done in a shell 'for' loop. This does
> > not permit Makefile variables to adjust preprocessor flags as is done
> > with normal compile flags, using the CFLAGS_path/file.o syntax.
> >
> > This change moves the dependency generation into the Makefile itself, and
> > permits a CPPFLAGS_path/file.o to adjust preprocessor flags on a file or
> > directory basis.
> >
> > The CPPFLAGS_... variable is also folded into CFLAGS during the build.
> >
> > Signed-off-by: Simon Glass <sjg@chromium.org>
> > ---
> > Changes in v3:
> > - Change U-Boot's dependency generation to permit per-file flags
> >
> > .gitignore | 2 +-
> > config.mk | 7 +++++++
> > rules.mk | 23 ++++++++++++-----------
> > 3 files changed, 20 insertions(+), 12 deletions(-)
> >
> > diff --git a/.gitignore b/.gitignore
> > index dbf545f..7ba0dd9 100644
> > --- a/.gitignore
> > +++ b/.gitignore
> > @@ -39,7 +39,7 @@
> > # Generated files
> > #
> >
> > -*.depend
> > +*.depend*
> > /LOG
> > /errlog
> > /reloc_off
> > diff --git a/config.mk b/config.mk
> > index e2b440d..3fa9eef 100644
> > --- a/config.mk
> > +++ b/config.mk
> > @@ -277,6 +277,13 @@ export CONFIG_SYS_TEXT_BASE PLATFORM_CPPFLAGS
> > PLATFORM_RELFLAGS CPPFLAGS CFLAGS BCURDIR = $(subst
> > $(SRCTREE)/,,$(CURDIR:$(obj)%=%))
> > ALL_AFLAGS = $(AFLAGS) $(AFLAGS_$(BCURDIR)/$(@F)) $(AFLAGS_$(BCURDIR))
> > ALL_CFLAGS = $(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR))
> > +EXTRA_CPPFLAGS = $(CPPFLAGS_$(BCURDIR)/$(@F)) $(CPPFLAGS_$(BCURDIR))
> > +ALL_CFLAGS += $(EXTRA_CPPFLAGS)
> > +
> > +# The _DEP version uses the $< file target (for dependency generation)
> > +# See rules.mk
> > +EXTRA_CPPFLAGS_DEP = $(CPPFLAGS_$(BCURDIR)/$(addsuffix .o,$(basename
> > $<))) \ + $(CPPFLAGS_$(BCURDIR))
> > $(obj)%.s: %.S
> > $(CPP) $(ALL_AFLAGS) -o $@ $<
> > $(obj)%.o: %.S
> > diff --git a/rules.mk b/rules.mk
> > index d79fcd3..56b9044 100644
> > --- a/rules.mk
> > +++ b/rules.mk
> > @@ -25,17 +25,18 @@
> >
> > _depend: $(obj).depend
> >
> > -$(obj).depend: $(src)Makefile $(TOPDIR)/config.mk $(SRCS) $(HOSTSRCS)
> > - @rm -f $@
> > - @touch $@
> > - @for f in $(SRCS); do \
> > - g=`basename $$f | sed -e
> > 's/\(.*\)\.[[:alnum:]_]/\1.o/'`; \ - $(CC) -M
> > $(CPPFLAGS) -MQ $(obj)$$g $$f >> $@ ; \ - done
> > - @for f in $(HOSTSRCS); do \
> > - g=`basename $$f | sed -e
> > 's/\(.*\)\.[[:alnum:]_]/\1.o/'`; \ - $(HOSTCC) -M
> > $(HOSTCPPFLAGS) -MQ $(obj)$$g $$f >> $@ ; \ - done
> > +DEPS := $(basename $(patsubst %,$(obj).depend.%,$(SRCS)))
> > +
> > +$(obj).depend: $(src)Makefile $(TOPDIR)/config.mk $(DEPS) $(HOSTSRCS)
> > + cat /dev/null $(DEPS) >$@
> > + @for f in $(HOSTSRCS); do \
> > + g=`basename $$f | sed -e 's/\(.*\)\.[[:alnum:]_]/\1.o/'`;
> > \ + $(HOSTCC) -M $(HOSTCPPFLAGS) -MQ $(obj)$$g $$f >> $@ ;
> > \ + done
> > +
> > +$(obj).depend.%: %.c
> > + $(CC) -M $(CPPFLAGS) $(EXTRA_CPPFLAGS_DEP) \
> > + -MQ $(addsuffix .o,$(basename $<)) $< >$@
> >
> > $(HOSTOBJS): $(obj)%.o: %.c
> > $(HOSTCC) $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F))
> > $(HOSTCFLAGS_$(BCURDIR)) -o $@ $< -c --
> > 1.7.3.1
>
> Sadly this doesn't work for two reasons:
>
> 1. It ignores .S files (which is easy to fix)
>
> 2. It doesn't like paths like ../common/fred.c. I can fix that with a
> patsubst I suspect.
>
> Does anyone have better ideas on how to deal with this?
what if we move away from a single .depend file ? most every project i see out
there utilizes one .depend file per source.
-mike
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
Url : http://lists.denx.de/pipermail/u-boot/attachments/20111009/a6000dca/attachment.pgp
next prev parent reply other threads:[~2011-10-10 2:50 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-27 0:10 [U-Boot] [PATCH v3 0/21] New 'sandbox' test architecture for U-Boot Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 01/21] sandbox: Add architecture header files Simon Glass
2011-10-03 5:56 ` Mike Frysinger
2011-10-04 0:10 ` Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 02/21] Fix use of int as pointer in image.c Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 03/21] sandbox: Add architecture image support Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 04/21] sandbox: Add compiler defines to support a 64-bit x86_64 platform Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 05/21] sandbox: Add cpu files Simon Glass
2011-10-03 6:10 ` Mike Frysinger
2011-10-03 19:25 ` Mike Frysinger
2011-09-27 0:10 ` [U-Boot] [PATCH v3 06/21] sandbox: Add architecture lib files Simon Glass
2011-10-03 6:15 ` Mike Frysinger
2011-10-04 0:02 ` Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 07/21] sandbox: Add sandbox board Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 08/21] sandbox: Add board info for architecture Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 09/21] sandbox: Add bootm support Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 10/21] sandbox: Disable built-in malloc Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 11/21] sandbox: Disable standalone/API support Simon Glass
2011-10-03 19:37 ` Mike Frysinger
2011-10-04 0:13 ` Simon Glass
2011-10-04 0:40 ` Mike Frysinger
2011-10-04 0:54 ` Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 12/21] sandbox: Force command sections to be 4-byte aligned Simon Glass
2011-10-03 19:34 ` Mike Frysinger
2011-10-04 0:05 ` Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 13/21] sandbox: Add OS dependent layer Simon Glass
2011-10-03 19:27 ` Mike Frysinger
2011-10-03 23:44 ` Simon Glass
2011-10-03 23:49 ` Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 14/21] sandbox: Add board_init() Simon Glass
2011-10-03 19:33 ` Mike Frysinger
2011-10-04 0:17 ` Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 15/21] sandbox: Add main program Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 16/21] sandbox: Add serial uart Simon Glass
2011-10-03 19:42 ` Mike Frysinger
2011-10-04 0:21 ` Simon Glass
2011-10-04 1:10 ` Mike Frysinger
2011-09-27 0:10 ` [U-Boot] [PATCH v3 17/21] sandbox: Add basic config file Simon Glass
2011-10-03 19:42 ` Mike Frysinger
2011-10-04 0:23 ` Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 18/21] Remove unused variable warnings in cmd_mem, cmd_nvedit Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 19/21] Use uintptr_t for 32/64-bit compatibility Simon Glass
2011-10-03 18:57 ` Mike Frysinger
2011-10-04 5:24 ` Simon Glass
2011-10-10 2:54 ` Mike Frysinger
2011-10-10 3:49 ` Simon Glass
2011-10-11 2:46 ` Aaron Williams
2011-10-11 4:52 ` Mike Frysinger
2011-10-11 5:41 ` Aaron Williams
2011-10-14 4:18 ` Mike Frysinger
2011-09-27 0:10 ` [U-Boot] [PATCH v3 20/21] Adjust dependency rules to permit per-file flags Simon Glass
2011-10-04 1:10 ` Simon Glass
2011-10-10 2:50 ` Mike Frysinger [this message]
2011-10-10 3:45 ` Simon Glass
2011-09-27 0:10 ` [U-Boot] [PATCH v3 21/21] sandbox: Makefile changes to build sandbox architecture Simon Glass
2011-10-03 19:31 ` Mike Frysinger
2011-10-04 0:51 ` Simon Glass
2011-10-04 1:05 ` Mike Frysinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201110092250.06932.vapier@gentoo.org \
--to=vapier@gentoo.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.