Michael G Schwern <schwern@xxxxxxxxx> writes:
>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?
The problem with directories as targets is they timestamps change
too often.
e.g.
make adds Foo.pm to Libdir
So Libdir timestamp changes.
>
>
>[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
|