bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 3.81 and windows paths


From: Jon Grant
Subject: Re: 3.81 and windows paths
Date: Thu, 27 Jul 2006 21:21:06 +0100
User-agent: Mozilla/5.0 (X11; U; GNU/Linux i686; en; rv:1.7.12) Gecko/20051013 Debian/1.7.12-1ubuntu1

Hi!

On 27/07/06 20:50, Bob Rossi wrote:
Hi,

Is it true that 3.81 does not work with windows paths?
If so, what is the solution now? I need to use the unix path interally to make, and use the windows path only when compiling
with cl?

Could you be a little more specific with what you mean by "windows paths"? Spaces are often an issue with MS-Windows filenames, is that what you mean?

README.W32 contains info about the Win32 port. Here is the section on pathnames etc:

========
Pathnames and white space:

        Unlike Unix, Windows 95/NT systems encourage pathnames which
        contain white space (e.g. C:\Program Files\). These sorts of
        pathnames are legal under Unix too, but are never encouraged.
        There is at least one place in make (VPATH/vpath handling) where
        paths containing white space will simply not work. There may be
        others too. I chose to not try and port make in such a way so
        that these sorts of paths could be handled. I offer these
        suggestions as workarounds:

                1. Use 8.3 notation. i.e. "x:/long~1/", which is actually
                   "x:\longpathtest".  Type "dir /x" to view these filenames
                   within the cmd.exe shell.
                2. Rename the directory so it does not contain white space.

        If you are unhappy with this choice, this is free software
        and you are free to take a crack at making this work. The code
        in w32/pathstuff.c and vpath.c would be the places to start.

Pathnames and Case insensitivity:

        Unlike Unix, Windows 95/NT systems are case insensitive but case
        preserving.  For example if you tell the file system to create a
        file named "Target", it will preserve the case.  Subsequent access to
        the file with other case permutations will succeed (i.e. opening a
        file named "target" or "TARGET" will open the file "Target").

        By default, GNU make retains its case sensitivity when comparing
        target names and existing files or directories.  It can be
        configured, however, into a case preserving and case insensitive
        mode by adding a define for HAVE_CASE_INSENSITIVE_FS to
        config.h.W32.

        For example, the following makefile will create a file named
        Target in the directory subdir which will subsequently be used
        to satisfy the dependency of SUBDIR/DepTarget on SubDir/TARGET.
        Without HAVE_CASE_INSENSITIVE_FS configured, the dependency link
        will not be made:

        subdir/Target:
                touch $@

        SUBDIR/DepTarget: SubDir/TARGET
                cp $^ $@

        Reliance on this behavior also eliminates the ability of GNU make
        to use case in comparison of matching rules.  For example, it is
        not possible to set up a C++ rule using %.C that is different
        than a C rule using %.c.  GNU make will consider these to be the
        same rule and will issue a warning.

SAMBA/NTFS/VFAT:

        I have not had any success building the debug version of this
        package using SAMBA as my file server. The reason seems to be
        related to the way VC++ 4.0 changes the case name of the pdb
        filename it is passed on the command line. It seems to change
        the name always to to lower case. I contend that the VC++
        compiler should not change the casename of files that are passed
        as arguments on the command line. I don't think this was a
        problem in MSVC 2.x, but I know it is a problem in MSVC 4.x.

        The package builds fine on VFAT and NTFS filesystems.

        Most all of the development I have done to date has been using
        NTFS and long file names. I have not done any considerable work
        under VFAT. VFAT users may wish to be aware that this port of
        make does respect case sensitivity.

FAT:

        Version 3.76 added support for FAT filesystems. Make works
        around some difficulties with stat'ing of files and caching of
        filenames and directories internally.
===============

--
WWW: http://jguk.org/
IM: address@hidden
ICQ: 11122941




reply via email to

[Prev in Thread] Current Thread [Next in Thread]