Michael G Schwern <[EMAIL PROTECTED]> 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

Reply via email to