bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: REGRESSION: cross compile 4.3 fail on mingw-w64 7.0/GCC 9.2


From: Nan .
Subject: Re: REGRESSION: cross compile 4.3 fail on mingw-w64 7.0/GCC 9.2
Date: Mon, 20 Jan 2020 21:37:23 +0000

Hi Paul,

Thanks for you reply

the actual command line is

make[1]: Entering directory '/home/build/obj/n-make'
depbase=`echo src/arscan.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`;\
mingw64-gcc -DHAVE_CONFIG_H   -Isrc -I/home/build/src/make-4.3/src -Ilib -I/home/build/src/make-4.3/lib -DLIBDIR=\"/home/build/native/lib\" -DINCLUDEDIR=\"/home/build/native/include\" -DLOCALEDIR=\"/home/build/native/share/locale\" -I /home/build/src/make-4.3/src/w32/include -Os  -Os -MT src/arscan.o -MD -MP -MF $depbase.Tpo -c -o src/arscan.o /home/build/src/make-4.3/src/arscan.c &&\
mv -f $depbase.Tpo $depbase.Po
make[1]: Leaving directory '/home/build/obj/n-make'



and I checked my mingw64 7.0 and GCC 9.2 does have dirent.h in include folder, but it compiles make 4.2.1 without any issue.

Best!

Nan


From: Paul Smith <address@hidden>
Sent: Monday, January 20, 2020 12:41 PM
To: Nan . <address@hidden>; address@hidden <address@hidden>
Subject: Re: REGRESSION: cross compile 4.3 fail on mingw-w64 7.0/GCC 9.2
 
On Mon, 2020-01-20 at 18:03 +0000, Nan . wrote:
> I built latest GNU Make 4.3 and it failed. I use same way/compiler to
> build 4.2.1, it works. I think this might be regression issue.
>
> my configure is
> /home/build/src/make-4.3/configure --prefix=/home/build/native --with-
> sysroot=/home/build/native --build=x86_64-pc-linux-gnu --host=x86_64-w64-
> mingw32 --target=x86_64-w64-mingw32 --disable-nls

The build works properly on native Windows with MSVC and mingw so it must
be a problem specific to this cross-compilation environment.

> the error output is
>
> /home/build/src/make-4.3/src/w32/compat/dirent.c: In function 'opendir':
> /home/build/src/make-4.3/src/w32/compat/dirent.c:59:20: error: 'DIR' {aka
> 'struct <anonymous>'} has no member named 'dir_pDirectoryName'
>    59 |         strcpy(pDir->dir_pDirectoryName, pDirName);
>       |                    ^~

Please always show the actual compile line that make invoked when reporting
compilation errors.

It looks like the wrong version of dirent.h is being included.  Make comes
with its own implementation that is used on Windows, since Windows doesn't
include one, and that includes both w32/compat/dirent.c AND
w32/include/dirent.h.

It looks like this compilation is using the compat dirent.c but compiling
it against some other dirent.h (maybe one that comes with mingw).


reply via email to

[Prev in Thread] Current Thread [Next in Thread]