|
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). |
[Prev in Thread] | Current Thread | [Next in Thread] |