This is the mail archive of the
mailing list for the Cygwin project.
How does make determine which shells to invoke when executing external commands?
- From: Hua Ai <tommy dot ai at gmail dot com>
- To: cygwin at cygwin dot com
- Date: Wed, 5 Jun 2013 09:32:54 -0600
- Subject: How does make determine which shells to invoke when executing external commands?
I have gone through FAQ and mailing lists but couldn't find an answer
to this. I would appreciate it if someone could shed some lights on
Basically I have a makefile that works in some computers but not
others. Through troubleshooting I think I have located the problem to
the lines below:
@mkdir -p $(dir $@)
@cp $< $@
@chmod u+w $@
Especially, this line:
@mkdir -p $(dir $@)
It seems that, for the computers where it didn't work, the makefile
always invokes the mkdir from windows (Windows 7 64bit). I know this
because I replaced the line above with "@mkdir aboslute_path" in the
make file, and find that it works if the absolute_path uses \ instead
of /. If I leave -p in there, it would create a directory named "-p".
If I type in "mkdir -p aboslute_path" in cygwin bash shell instead of
running it from the makefile, it would support -p switch and forward
slash / in the path.
So it sounds like when make executes mkdir from a makefile, it invokes
windows command shell(?) to run mkdir. But if I add "which mkdir" in
the makefile, it returns "/usr/bin/mkdir", which is the same as if I
types "which mkdir" in the bash shell.
My questions are:
1. From what I described, do you think the make program invoked
windows command shell to execute mkdir? How to confirm that (or is it
2. How can I make sure the make program consistently invokes bash
shell for executing mkdir from the makefile? (some computer
environment does this already, and others doesn't)
Thanks in advance!
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple