In part one I layed out the current state of things and what's broken. In part two here I'll lay out the new design in the hopes it gets vetted for sanity.
Now, the obvious solution would be "just make the directories targets". INST_LIB = blib/lib INST_LIBDIR = $(INST_LIB)/Some $(INST_LIBDIR) : $(MKDIR) $@ Simple, right? Right, except this is cross-platform make. Nothing is simple. GNU make and nmake can handle this, and I hope that means the rest can, (please confirm) but I've confirmed VMS' MMS/K cannot. Well sort of. MMS cannot handle a directory as a target, but it handles files just fine. VMS happens to have an odd quirk where each directory is a file. [.path.to.a.dir] is really [.path.to.a]dir.dir. [1] So one could say... INST_LIBDIR = [.blib.lib.Some] INST_LIBDIR_DIR = [.blib.lib]Some.dir $(INST_LIBDIR) : $(INST_LIBDIR_DIR) $(NOOP) $(INST_LIBDIR_DIR) $(MKDIR) $@ $(INST_LIBDIR) is still useful in the Makefile like always (ie. "$(INST_LIBDIR)file" which is like "$(INST_LIBDIR)/file" on Unix) and $(INST_LIBDIR_DIR) can be used to ensure the directory is created. I think this will work out. The previously deprecated dir_target() method can be reinstated to generate these targets. So. Thoughts? [1] For those who don't know, VMS file paths basically work like this. Unix Windows VMS /usr/local/bin/perl \usr\local\bin\perl [usr.local.bin]perl ./dir/dir/dir dir\dir\dir [.dir.dir.dir] ./dir/dir/file .\dir\dir\file [.dir.dir]file ../dir/dir/file ..\dir\dir\file [-dir.dir]file ../../dir/dir/file ..\..\dir\dir\file [--dir.dir]file N/A C:\dir\dir\file C:[dir.dir]file -- Michael G Schwern [EMAIL PROTECTED] http://www.pobox.com/~schwern/ What about MY need to be generalized and easily dismissed? http://www.goats.com/archive/000221.html