From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 32670 invoked by alias); 5 Jun 2013 15:32:56 -0000 Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner@cygwin.com Mail-Followup-To: cygwin@cygwin.com Received: (qmail 32659 invoked by uid 89); 5 Jun 2013 15:32:56 -0000 X-Spam-SWARE-Status: No, score=-0.1 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,SPF_PASS autolearn=ham version=3.3.1 Received: from mail-pb0-f44.google.com (HELO mail-pb0-f44.google.com) (209.85.160.44) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Wed, 05 Jun 2013 15:32:55 +0000 Received: by mail-pb0-f44.google.com with SMTP id wz12so1953252pbc.31 for ; Wed, 05 Jun 2013 08:32:54 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.66.255.99 with SMTP id ap3mr35090851pad.102.1370446374206; Wed, 05 Jun 2013 08:32:54 -0700 (PDT) Received: by 10.66.164.106 with HTTP; Wed, 5 Jun 2013 08:32:54 -0700 (PDT) Date: Wed, 05 Jun 2013 15:32:00 -0000 Message-ID: Subject: How does make determine which shells to invoke when executing external commands? From: Hua Ai To: cygwin@cygwin.com Content-Type: text/plain; charset=ISO-8859-1 X-SW-Source: 2013-06/txt/msg00067.txt.bz2 Hi all, 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 this: 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: $(PREFIX)/include/cyg/hal/basetype.h: $(REPOSITORY)/$(PACKAGE)/include/basetype.h @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 apparent already)? 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! Regards, Hua -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple