%% Regarding more matching power than "%" for pattern rules; you wrote:

  rjd> $(TOBJS): %.o : <need something here>
  rjd>  $(ISIP_CPLUS_COMPILER) $(I_FLAGS) $(CPLUS_FLAGS) $(C_FLAGS) -o $*.o `echo $* | 
$(MTEMPLATE_PARSER) source_name` -DISIP_TEMPLATE_TARGET="`echo $* | 
$(MTEMPLATE_PARSER) template_args`"

  rjd> I'd like for the dependency to be the individual source file. I've
  rjd> tried these two variations:

  rjd> $(TOBJS): %.o : `echo % | $(MTEMPLATE_PARSER) source_name`

This won't work; GNU make doesn't grok ``.  That's a shell feature, not
a make feature.

  rjd> and

  rjd> $(TOBJS): %.o : $(shell echo % | $(MTEMPLATE_PARSER) source_name)

This won't work, because the shell function is expanded when the
makefile is invoked, but at that time the "%" pattern isn't expanded,
it's just the literal character "%", so that's what's being passed to
the shell.

  rjd> So is there any way to get a shell command executed on the dependency
  rjd> list? Or to do a more powerful search than a single "%" character that
  rjd> must be exactly the same in two files with no other variations?

Not really.  Make doesn't currently allow for any very convenient method
of dynamically constructing rules in complex ways like this.

The easiest way to do what you want is to take advantage of make's
auto-re-exec feature to construct a makefile segment dynamically.

That is, define this:

  $(TOBJS):
        $(ISIP_CPLUS_COMPILER) ...

  include tobjs_rules.mk

  tobjs_rules.mk: Makefile
        rm -f $@
        for f in $(TOBJS:.o=); do \
          echo "$$f.o: `echo $$f | $(MTEMPLATE_PARSER) source_name` >> $@; \
        done

Hopefully you get the idea; if not let me know.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <[EMAIL PROTECTED]>          Find some GNU make tips at:
 http://www.gnu.org                      http://www.paulandlesley.org/gmake/
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist

_______________________________________________
Help-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/help-make

Reply via email to