On Wed, Oct 29, 2008 at 07:24:50PM -0700, Philip Guenther wrote:
> On Wed, Oct 29, 2008 at 2:12 PM, Sam Ravnborg <[EMAIL PROTECTED]> wrote:
> > On Sun, Oct 26, 2008 at 07:12:53PM -0400, Paul Smith wrote:
> ...
> >> Makefile:442: *** mixed implicit and normal rules. Stop.
> >>
> >> config %config: scripts_basic outputmakefile FORCE
> >> $(Q)mkdir -p include/linux include/config
> >> $(Q)$(MAKE) $(build)=scripts/kconfig $@
> >
> > Here I try to catch the following:
> >
> > make config
> > make menuconfig
> > make xconfig
> > make foobarconfig
> >
> > I must admit I cannot see the problem with mixing implicit and normal
> > rules in the above. But I gues this is my simple use of it.
>
> I see at least two ways in which it's confusing:
> 1) what prerequisites does "foo" have with this rule:
> foo %.c: %.c.real
> @: cp $< $@
>
> 2) rules with multiple pattern targets have special meaning to make:
> Pattern rules may have more than one target. Unlike normal rules,
> this does not act as many different rules with the same prerequisites
> and commands. If a pattern rule has multiple targets, `make' knows
> that
> the rule's commands are responsible for making all of the targets.
> <...>
> I.e., this rule:
> %.a %.b:
> ${commands}
> says that building "bar.a" will also build "bar.b", and
> building "quux.a" will also build "quux.b". With this rule:
> foo %.a %.b:
> ${commands}
> should make assume that building "bar.a" will also build "bar.b"
> *and* "foo"?
> How about this rule:
> foo blip %.a %.b:
> ${commands}
> Will building "bar.a" also build "bar.b", "foo", and "blip"?
> How about this one:
> foo blip %.a:
> ${commands}
> ...whoops...
Thanks for the detailed explanation. I see how it is confusing in
the cases you list. I was initally wondering because the specific
usage in the kernel is simpler.
>
>
> > Do you have any god suggestion how to rewrite this?
[suggestions snipped]
Thanks. I will most likely do something along the lines of the last
suggestion.
Sam
_______________________________________________
Bug-make mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-make