Hello, On Sat, 05 Dec 2009 09:01:52 +0100, Garrett Cooper <[email protected]> wrote:
> On Fri, Dec 4, 2009 at 4:03 PM, Jiří Paleček <[email protected]> wrote: >> On Fri, 04 Dec 2009 20:13:11 +0100, Mike Frysinger <[email protected]> >> wrote: >> >>> On Friday 04 December 2009 12:04:06 Jiri Palecek wrote: >>>> -.PHONY: $(RECURSIVE_TARGETS) $(addprefix trunk-,$(RECURSIVE_TARGETS)) >>>> +.PHONY: $(RECURSIVE_TARGETS) $(addprefix trunk-,$(RECURSIVE_TARGETS)) >>>> $(foreach tgt,$(RECURSIVE_TARGETS),$(addprefix >>>> trunk-subdir-$(tgt)--,$(SUBDIRS))) >>> >>> these foreach look like an overly complicated form of $(patsubst): >>> $(patsubst %,moo_%,$(DIRS)) >> >> It may look like it, but they aren't. What you've written is a simple >> addprefix, while the foreach does some for of cartesian product >> ($(TARGETS)x$(DIRS)). > > 1. I checked in the fixes for the autotools targets after verifying > them (thank you btw!). > 2. Inline mkdirs are bad, because mkdir's can fail or cause failures > over NFS due to excessive I/O, which is why I quickly removed the test > -d || mkdir -p logic in the 2nd major draft of the makefile > infrastructure. OK. > 3. Although your idea for fixing the lack of recursive make'ing is > good, what about this instead? > > # > # A canned set of operations for leaf makes. This creates a series of > targets, like: > # > # $(subdir)-all $(subdir)-clean $(subdir)-install: > # > # 1 - Recursive targets to act upon. > # 2 - the subdirectory to do the leaf_make on. > # > define generate_dir_dep > ifndef __$(1)_dir_dep__ > __$(1)_dir_dep__ = 1 > $(1): > mkdir -p "$$@" > endif > endif > > define leaf_make > $$(foreach recursive_target,$(1),$$(addprefix > $(2)-$$(recursive_target))): $(1)-%: $(2) > $(MAKE) -C $* -f ""$(abs_srcdir)/$$*/Makefile" $$(patsubst > $(1)-%,%,$$@) > endef > $(foreach subdir $(SUBDIRS),$(eval $(call generate_dir_dep,$(subdir)))) > $(foreach subdir,$(SUBDIRS),$(eval $(call leaf_make > $(RECURSIVE_TARGETS),$(subdir)) > > Ultimately I suppose, it's another means to a similar end. It's just a > bit more discrete as to what's going on in the operation... if this is > a good idea, I'll modify functions.mk to match this. $(abspath) // > $(realpath) junk is already a PITA, so it might be a good idea just to > remove it in favor of keeping things as-is. Well, I can't say I got used to your generated rules and double dollars (you've got $* instead of $$* in the above IMHO). But if you deem it better, fine by me. Regards Jiri Palecek ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
