make: .exe handling breaks kernel cross-compile
Yaakov (Cygwin/X)
yselkowitz@users.sourceforge.net
Sun Jun 10 20:57:00 GMT 2012
On 2012-06-10 13:29, Christopher Faylor wrote:
> On Sun, Jun 10, 2012 at 01:06:18PM -0500, Yaakov (Cygwin/X) wrote:
>> I can confirm that this previously reported bug in make .exe handling
>> still affects the cross-compile of the Linux kernel:
>>
>> http://cygwin.com/ml/cygwin/2009-11/msg00935.html
>
> Without diving into the depths of the linux makefiles, this doesn't seem
> like a bug. gcc creates .exe files. The makefile isn't expecting to
> create one and, so, gets confused. Makefiles which expect .exe
> extensions usually use the EXEEXT variable for just this purpose.
> Linux's makefile doesn't do that for probably obvious reasons.
While our make won't connect a dep on "foo" to a foo.exe rule (which can
occur in automake-generated Makefiles with custom rules), it does see
foo.exe fulfilling a dep on "foo" if it is already present:
$ cat Makefile
all: bar
bar: foo
touch bar.exe
clean:
rm -f bar.exe foo.exe
$ touch foo.exe
$ make
touch bar.exe
$ make clean
rm -f bar.exe foo.exe
The problem here is the kernel uses VPATH -- scripts/pnmtologo(.exe) is
not relative to drivers/video/logo, but rather to $(O) -- and somehow
with VPATH the .exe magic doesn't happen:
$ cat Makefile
VPATH = $(PWD)/build
all: bar
bar: foo
touch bar.exe
$ mkdir -p build
$ touch build/foo.exe
$ make
make: *** No rule to make target `foo', needed by `bar'. Stop.
So foo.exe fulfills foo, but not with VPATH. Isn't that a bug?
Yaakov
--
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
More information about the Cygwin
mailing list