[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
.ONESEHLL not working as expected in 3.82
From: |
Anjum Naseer |
Subject: |
.ONESEHLL not working as expected in 3.82 |
Date: |
Mon, 30 Aug 2010 17:09:51 +0100 |
Hi,
I have built the 3.82 version of GNU Make using the Microsoft Visual C++
compiler and it seems to work fine.
However, I cannot get it to work correctly with the .ONESHELL option.
I created a dummy makefile (dummy.mak) with this content:
vvvvvvvvvvvvvvvvvvvvvvvvvvvv
.ONESHELL:
.PHONY: dummy
dummy:
set xyz=abc
@echo xyz=%xyz%
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
If I invoke this with "make -d -r -f dummy.mak" I get:
Vvvvvvvvvvvvvvvvvvvvvvvvvvvv
GNU Make 3.82
Built for Windows32
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
<http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Reading makefiles...
Reading makefile `dummy.mak'...
Updating makefiles....
Considering target file `dummy.mak'.
Looking for an implicit rule for `dummy.mak'.
No implicit rule found for `dummy.mak'.
Finished prerequisites of target file `dummy.mak'.
No need to remake target `dummy.mak'.
Updating goal targets....
Considering target file `dummy'.
File `dummy' does not exist.
Finished prerequisites of target file `dummy'.
Must remake target `dummy'.
Invoking recipe from dummy.mak:6 to update target `dummy'.
Creating temporary batch file
C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat
Batch file contents:
@echo off
set xyz=abc
set xyz=abc
CreateProcess(C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat,C:\
Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat,...)
Putting child 0094AFB8 (dummy) PID 9620224 on the chain.
Live child 0094AFB8 (dummy) PID 9620224
Main thread handle = 00000054
Reaping winning child 0094AFB8 PID 9620224
Cleaning up temp batch file
C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat
Creating temporary batch file
C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat
Batch file contents:
@echo off
echo xyz=%xyz%
CreateProcess(C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat,C:\
Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat,...)
Live child 0094AFB8 (dummy) PID 9620224
xyz=
Reaping winning child 0094AFB8 PID 9620224
Cleaning up temp batch file
C:\Users\ADB14~1.NAS\AppData\Local\Temp\make5868-1.bat
Removing child 0094AFB8 PID 9620224 from chain.
Successfully remade target file `dummy'.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
As you can see from the debug trace above, it looks like it is still
loading a separate SHELL for each line of the recipe. Have I
misunderstood the .ONESHELL feature or is this a bug?
Thanks,
Anjum.
PS: I am running this on a 64bit Windows 7 HP Z800 workstation.
- .ONESEHLL not working as expected in 3.82,
Anjum Naseer <=