On 8/7/2018 11:46 AM, Ken Takata wrote:
Hi,

2018/8/8 Wed 0:39:08 UTC+9 Bram Moolenaar wrote:
Ken Takata wrote:

2018/8/7 Tue 10:48:19 UTC+9 Michael Soyka wrote:
On 8/6/2018 8:45 PM, Ken Takata wrote:
[...]
It appears src/Make_cyg_ming.mak also does this:

        ifneq (sh.exe, $(SHELL))
        DEL = rm
        MKDIR = mkdir -p
        DIRSLASH = /
        else
        DEL = del
        MKDIR = mkdir
        DIRSLASH = \\
        endif

And src/GvimExt/Make_ming.mak

        ifneq (sh.exe, $(SHELL))
        DEL = rm
        else
        DEL = del
        endif

Is this really wrong?
No. This is really confusing, but this is correct.
If someone specifies SHELL=sh.exe on the make command line then it is not correct.


If the makefile is executed by the "mingw32-make" command from cmd.exe,
$SHELL is set to "sh.exe" (without any path). In this case, unix-like commands
might not work and dos-style path is needed.
I run mingw32-make from a command window and, as I've stated, the value
of SHELL includes a path specification.
Ah, running from cmd.exe or bash was not the cause of the difference.
The difference is caused by the $PATH.

If sh.exe is found in the $PATH, $SHELL is set to the full path of the sh.exe.
If it isn't found, $SHELL is set to "sh.exe" without the path specification.

So the conclusion is still not changed. The makefiles are correct. If $SHELL
is exactly same as "sh.exe", unix-like commands are not available and paths
must be dos-style, otherwise unix-like commands and unix-style paths can be
used.
Since this is confusing, it would be good to add an explanation.  How
about this:

        # About the "sh.exe" condition, as explained by Ken Takata:
Well, my name is not important here. ;-)
So we have someone to blame^Wask when it turns out wrong :-).

I didn't know how to detect if unix-like commands can be used from a
makefile before seeing these makefiles.


        #
        # If the makefile is executed and sh.exe is not found in $PATH, then 
$SHELL is
Isn't it better to mention the "mingw32-make" command?


        # set to "sh.exe" (without any path). In this case, unix-like commands 
might
        # not work and a dos-style path is needed.
        #
        # If the makefile is executed and sh.exe IS found in $PATH, then $SHELL 
is set
This is the same.


        # with the actual path of sh.exe (e.g.  "C:/msys64/usr/bin/sh.exe").  
In this
        # case, unix-like commands can be used.
        #
        # If it is executed by the "make" command from cmd.exe, $SHELL is set to
        # "/bin/sh". If the "make" command is in the $PATH, other unix-like 
commands
        # might also work.
        #
        # If it is executed by the "make" command from a unix-like shell,
        # $SHELL is set with the unix-style path (e.g. "/bin/bash").
        # In this case, unix-like commands can be used.
        #
        ifneq (sh.exe, $(SHELL))
Do you mean like this:

        # About the "sh.exe" condition, as explained by Ken Takata:
        #
        # If the makefile is executed with mingw32-make and sh.exe is not found 
in
        # $PATH, then $SHELL is set to "sh.exe" (without any path). In this 
case,
        # unix-like commands might not work and a dos-style path is needed.
        #
        # If the makefile is executed with mingw32-make and sh.exe IS found in 
$PATH,
        # then $SHELL is set with the actual path of sh.exe (e.g.
        # "C:/msys64/usr/bin/sh.exe").  In this case, unix-like commands can be 
used.
        #
        # If it is executed by the "make" command from cmd.exe, $SHELL is set to
        # "/bin/sh". If the "make" command is in the $PATH, other unix-like 
commands
        # might also work.
        #
        # If it is executed by the "make" command from a unix-like shell,
        # $SHELL is set with the unix-style path (e.g. "/bin/bash").
        # In this case, unix-like commands can be used.
Yeah, it's okay.

Regards,
Ken Takata

I don't see the need for this.  If the purpose of the if-tests is to determine which shell is being used, what's wrong with using the notdir function to remove any path information that might be there, yielding either "sh.exe" or "cmd.exe" in the conditional?  Doing this would appear to make the above list of special cases irrelevant, unnecessary and reduce confusion.

From my perspective, the makefiles should not care how SHELL was set, only which shell it is.

I must be missing something but I don't know what.

-mike


--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- You received this message because you are subscribed to the Google Groups "vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui