Re: Make v3.79, for Windows32

2000-06-15 Thread Andre Srinivasan


On Thu, 15 Jun 2000, Andre Srinivasan wrote:

   o Quoted expressions in shell commands don't seem to translate
 across platforms.  In the SunOS5.6 and Cygwin versions of
 make 3.78.1, I could use the following:
 
   subdirs: $(DIRS)
   if [ "x$(DIRS)" != x ]; then \
   for dir in $(DIRS); do \
   (cd $$dir  $(MAKE)); \
   done; \
   fi
 
 When I switched to 3.79 (built for W32), I had to change the
 double quotes to single quotes to avoid a shell error.

EZ Are you sure this is Make issue, not a shell issue?  In other
EZ words, are you sure Make invokes Bash in this case?  If it invokes
EZ the Windows shell, then I can understand why you are having
EZ problems with quotes.

I just checked that indeed bash is being invoked:

$ cat Makefile

all:
echo $$SHELL

$ make
echo $SHELL
d:/cygnus/cygwin-b20/usr/local/bin/sh.exe
$




-andre.





Re: Make v3.79, for Windows32

2000-06-15 Thread Eli Zaretskii

 From: "Andre Srinivasan" [EMAIL PROTECTED]
 Date: Thu, 15 Jun 2000 10:05:18 -0700 (GMT-8:00)

 I just checked that indeed bash is being invoked:
 
   $ cat Makefile
 
   all:
   echo $$SHELL
 
   $ make
   echo $SHELL
   d:/cygnus/cygwin-b20/usr/local/bin/sh.exe
   $

It would be more convincing to have a proof that Bash is called to run
the command where the problem happens.  Perhaps the quote style
changes Make's decision about this.

If Bash is indeed called, I'd guess this is some bug between Make and
Bash.




Re: Make v3.79, for Windows32

2000-06-15 Thread Andre Srinivasan

...
EZ It would be more convincing to have a proof that Bash is called to
EZ run the command where the problem happens.  Perhaps the quote
EZ style changes Make's decision about this.

EZ If Bash is indeed called, I'd guess this is some bug between Make
EZ and Bash.

I'm not sure how to prove that bash is being called if indeed Make is
choosing based on quote style.  This is the rule that fails for me.


-andre.


 DIRS = foo bar

 all:
 if [ "x$(DIRS)" != x ]; then \
 targets="$(MAKECMDGOALS)"; \
 if [ "x$$targets" = x ]; then \
 targets=all; \
 fi; \
 for target in $$targets; do \
 for dir in $(DIRS) NoSuchFile; do \
   if [ $$dir != NoSuchFile ]; then \
 if [ x$(subdirTrace) != x ]; then \
 echo; echo Make $$target $$dir; echo; \
 fi; \
 (cd $$dir  $(MAKE) $$target); \
   fi; \
 done; \
 done; \
   fi