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

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Nan .
Hi GNU Make team:

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 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);
      |                    ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:62:28: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_pDirectoryName'
   62 |         pEndDirName = &pDir->dir_pDirectoryName[nBufferLen - 1];
      |                            ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:77:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_nNumFiles'
   77 |         pDir->dir_nNumFiles = 0;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:78:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
   78 |         pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:79:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
   79 |         pDir->dir_ulCookie = __DIRENT_COOKIE;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:79:30: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
   79 |         pDir->dir_ulCookie = __DIRENT_COOKIE;
      |                              ^~~~~~~~~~~~~~~
      |                              DLL_DIRECTORY_COOKIE
/home/build/src/make-4.3/src/w32/compat/dirent.c:79:30: note: each undeclared identifier is reported only once for each function it appears in
/home/build/src/make-4.3/src/w32/compat/dirent.c: At top level:
/home/build/src/make-4.3/src/w32/compat/dirent.c:85:1: error: conflicting types for 'closedir'
   85 | closedir(DIR *pDir)
      | ^~~~~~~~
In file included from /home/build/src/make-4.3/src/w32/include/dirent.h:22,
                 from /home/build/src/make-4.3/src/w32/compat/dirent.c:24:
/home/build/cross/mingw64/include/dirent.h:65:29: note: previous declaration of 'closedir' was here
   65 | int __cdecl __MINGW_NOTHROW closedir (DIR*);
      |                             ^~~~~~~~
/home/build/src/make-4.3/src/w32/compat/dirent.c: In function 'closedir':
/home/build/src/make-4.3/src/w32/compat/dirent.c:94:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
   94 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:94:35: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
   94 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                                   ^~~~~~~~~~~~~~~
      |                                   DLL_DIRECTORY_COOKIE
/home/build/src/make-4.3/src/w32/compat/dirent.c:100:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  100 |         if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE)
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:101:31: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  101 |                 FindClose(pDir->dir_hDirHandle);
      |                               ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c: In function 'readdir':
/home/build/src/make-4.3/src/w32/compat/dirent.c:119:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
  119 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:119:35: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
  119 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                                   ^~~~~~~~~~~~~~~
      |                                   DLL_DIRECTORY_COOKIE
/home/build/src/make-4.3/src/w32/compat/dirent.c:124:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_nNumFiles'
  124 |         if (pDir->dir_nNumFiles == 0) {
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:125:21: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  125 |                 pDir->dir_hDirHandle = FindFirstFile(pDir->dir_pDirectoryName, &wfdFindData);
      |                     ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:125:58: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_pDirectoryName'
  125 |                 pDir->dir_hDirHandle = FindFirstFile(pDir->dir_pDirectoryName, &wfdFindData);
      |                                                          ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:126:25: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  126 |                 if (pDir->dir_hDirHandle == INVALID_HANDLE_VALUE)
      |                         ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:128:38: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  128 |         } else if (!FindNextFile(pDir->dir_hDirHandle, &wfdFindData))
      |                                      ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:132:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_nNumFiles'
  132 |         pDir->dir_nNumFiles++;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:135:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  135 |         pDir->dir_sdReturn.d_ino = (ino_t)-1;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:136:20: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  136 |         strcpy(pDir->dir_sdReturn.d_name, wfdFindData.cFileName);
      |                    ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:139:15: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  139 |           pDir->dir_sdReturn.d_type = DT_CHR;
      |               ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:139:39: error: 'DT_CHR' undeclared (first use in this function)
  139 |           pDir->dir_sdReturn.d_type = DT_CHR;
      |                                       ^~~~~~
/home/build/src/make-4.3/src/w32/compat/dirent.c:141:15: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  141 |           pDir->dir_sdReturn.d_type = DT_DIR;
      |               ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:141:39: error: 'DT_DIR' undeclared (first use in this function); did you mean 'DATADIR'?
  141 |           pDir->dir_sdReturn.d_type = DT_DIR;
      |                                       ^~~~~~
      |                                       DATADIR
/home/build/src/make-4.3/src/w32/compat/dirent.c:143:15: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  143 |           pDir->dir_sdReturn.d_type = DT_REG;
      |               ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:143:39: error: 'DT_REG' undeclared (first use in this function)
  143 |           pDir->dir_sdReturn.d_type = DT_REG;
      |                                       ^~~~~~
/home/build/src/make-4.3/src/w32/compat/dirent.c:145:21: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  145 |         return &pDir->dir_sdReturn;
      |                     ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c: In function 'rewinddir':
/home/build/src/make-4.3/src/w32/compat/dirent.c:157:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
  157 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:157:35: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
  157 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                                   ^~~~~~~~~~~~~~~
      |                                   DLL_DIRECTORY_COOKIE
/home/build/src/make-4.3/src/w32/compat/dirent.c:163:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  163 |         if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE)
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:164:36: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  164 |                 if (!FindClose(pDir->dir_hDirHandle))
      |                                    ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:168:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  168 |         pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:169:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_nNumFiles'
  169 |         pDir->dir_nNumFiles = 0;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c: In function 'seekdir':
/home/build/src/make-4.3/src/w32/compat/dirent.c:181:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
  181 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE)
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:181:35: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
  181 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE)
      |                                   ^~~~~~~~~~~~~~~
      |                                   DLL_DIRECTORY_COOKIE
make[1]: *** [Makefile:1356: src/w32/compat/dirent.o] Error 1
make: *** [Makefile:1442: all-recursive] Error 1

Reply | Threaded
Open this post in threaded view
|

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

Paul Smith-20
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 | Threaded
Open this post in threaded view
|

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

Nan .
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 <[hidden email]>
Sent: Monday, January 20, 2020 12:41 PM
To: Nan . <[hidden email]>; [hidden email] <[hidden email]>
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 | Threaded
Open this post in threaded view
|

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

Paul Smith-20
On Mon, 2020-01-20 at 21:37 +0000, Nan . wrote:

> 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'

Unfortunately that's the command line to compile src/arscan.c.

We need to see the compiler command line for the source file that was
failing, which is src/w32/compat/dirent.c.

Assuming that the dirent.c compile line also shows
/home/build/src/make-4.3/src/w32/include as an include directory, then I'm
not sure what the problem is.

Perhaps you can investigate by running the compile line from your shell
prompt and replacing the "-c -o src/w32/compat/dirent.o" options with
"-E -o dirent.i" options to see what the preprocessor says, and which
dirent.h is being included.


Reply | Threaded
Open this post in threaded view
|

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

Nan .
Yes, you are correct. the first fail of 4.3 build is duplicated declaration of function fcntl
the fix is easy: just comment $/src/output.h LINE 92 (maybe not good fix, but it works on MinGW 7.0 GCC 9.2 on Windows).

after this fix, the second fail is what we were talking to

the GCC compile command line is :

make[1]: Entering directory '/home/build/obj/n-make'
depbase=`echo src/w32/compat/dirent.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/w32/compat/dirent.o -MD -MP -MF $depbase.Tpo -c -o src/w32/compat/dirent.o /home/build/src/make-4.3/src/w32/compat/dirent.c &&\
mv -f $depbase.Tpo $depbase.Po
make[1]: Leaving directory '/home/build/obj/n-make'

and 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);
      |                    ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:62:28: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_pDirectoryName'
   62 |         pEndDirName = &pDir->dir_pDirectoryName[nBufferLen - 1];
      |                            ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:77:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_nNumFiles'
   77 |         pDir->dir_nNumFiles = 0;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:78:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
   78 |         pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:79:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
   79 |         pDir->dir_ulCookie = __DIRENT_COOKIE;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:79:30: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
   79 |         pDir->dir_ulCookie = __DIRENT_COOKIE;
      |                              ^~~~~~~~~~~~~~~
      |                              DLL_DIRECTORY_COOKIE
/home/build/src/make-4.3/src/w32/compat/dirent.c:79:30: note: each undeclared identifier is reported only once for each function it appears in
/home/build/src/make-4.3/src/w32/compat/dirent.c: At top level:
/home/build/src/make-4.3/src/w32/compat/dirent.c:85:1: error: conflicting types for 'closedir'
   85 | closedir(DIR *pDir)
      | ^~~~~~~~
In file included from /home/build/src/make-4.3/src/w32/include/dirent.h:22,
                 from /home/build/src/make-4.3/src/w32/compat/dirent.c:24:
/home/build/cross/mingw64/include/dirent.h:65:29: note: previous declaration of 'closedir' was here
   65 | int __cdecl __MINGW_NOTHROW closedir (DIR*);
      |                             ^~~~~~~~
/home/build/src/make-4.3/src/w32/compat/dirent.c: In function 'closedir':
/home/build/src/make-4.3/src/w32/compat/dirent.c:94:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
   94 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:94:35: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
   94 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                                   ^~~~~~~~~~~~~~~
      |                                   DLL_DIRECTORY_COOKIE
/home/build/src/make-4.3/src/w32/compat/dirent.c:100:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  100 |         if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE)
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:101:31: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  101 |                 FindClose(pDir->dir_hDirHandle);
      |                               ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c: In function 'readdir':
/home/build/src/make-4.3/src/w32/compat/dirent.c:119:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
  119 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:119:35: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
  119 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                                   ^~~~~~~~~~~~~~~
      |                                   DLL_DIRECTORY_COOKIE
/home/build/src/make-4.3/src/w32/compat/dirent.c:124:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_nNumFiles'
  124 |         if (pDir->dir_nNumFiles == 0) {
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:125:21: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  125 |                 pDir->dir_hDirHandle = FindFirstFile(pDir->dir_pDirectoryName, &wfdFindData);
      |                     ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:125:58: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_pDirectoryName'
  125 |                 pDir->dir_hDirHandle = FindFirstFile(pDir->dir_pDirectoryName, &wfdFindData);
      |                                                          ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:126:25: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  126 |                 if (pDir->dir_hDirHandle == INVALID_HANDLE_VALUE)
      |                         ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:128:38: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  128 |         } else if (!FindNextFile(pDir->dir_hDirHandle, &wfdFindData))
      |                                      ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:132:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_nNumFiles'
  132 |         pDir->dir_nNumFiles++;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:135:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  135 |         pDir->dir_sdReturn.d_ino = (ino_t)-1;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:136:20: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  136 |         strcpy(pDir->dir_sdReturn.d_name, wfdFindData.cFileName);
      |                    ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:139:15: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  139 |           pDir->dir_sdReturn.d_type = DT_CHR;
      |               ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:139:39: error: 'DT_CHR' undeclared (first use in this function)
  139 |           pDir->dir_sdReturn.d_type = DT_CHR;
      |                                       ^~~~~~
/home/build/src/make-4.3/src/w32/compat/dirent.c:141:15: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  141 |           pDir->dir_sdReturn.d_type = DT_DIR;
      |               ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:141:39: error: 'DT_DIR' undeclared (first use in this function); did you mean 'DATADIR'?
  141 |           pDir->dir_sdReturn.d_type = DT_DIR;
      |                                       ^~~~~~
      |                                       DATADIR
/home/build/src/make-4.3/src/w32/compat/dirent.c:143:15: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  143 |           pDir->dir_sdReturn.d_type = DT_REG;
      |               ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:143:39: error: 'DT_REG' undeclared (first use in this function)
  143 |           pDir->dir_sdReturn.d_type = DT_REG;
      |                                       ^~~~~~
/home/build/src/make-4.3/src/w32/compat/dirent.c:145:21: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_sdReturn'
  145 |         return &pDir->dir_sdReturn;
      |                     ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c: In function 'rewinddir':
/home/build/src/make-4.3/src/w32/compat/dirent.c:157:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
  157 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:157:35: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
  157 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE) {
      |                                   ^~~~~~~~~~~~~~~
      |                                   DLL_DIRECTORY_COOKIE
/home/build/src/make-4.3/src/w32/compat/dirent.c:163:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  163 |         if (pDir->dir_hDirHandle != INVALID_HANDLE_VALUE)
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:164:36: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  164 |                 if (!FindClose(pDir->dir_hDirHandle))
      |                                    ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:168:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_hDirHandle'
  168 |         pDir->dir_hDirHandle = INVALID_HANDLE_VALUE;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:169:13: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_nNumFiles'
  169 |         pDir->dir_nNumFiles = 0;
      |             ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c: In function 'seekdir':
/home/build/src/make-4.3/src/w32/compat/dirent.c:181:17: error: 'DIR' {aka 'struct <anonymous>'} has no member named 'dir_ulCookie'
  181 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE)
      |                 ^~
/home/build/src/make-4.3/src/w32/compat/dirent.c:181:35: error: '__DIRENT_COOKIE' undeclared (first use in this function); did you mean 'DLL_DIRECTORY_COOKIE'?
  181 |         if (pDir->dir_ulCookie != __DIRENT_COOKIE)
      |                                   ^~~~~~~~~~~~~~~
      |                                   DLL_DIRECTORY_COOKIE
make[1]: *** [Makefile:1356: src/w32/compat/dirent.o] Error 1
make: *** [Makefile:1442: all-recursive] Error 1

hope this time is helpful, please let me know if you need additional information
thank you for your working on this.

Nan.

From: Paul Smith <[hidden email]>
Sent: Monday, January 20, 2020 4:10 PM
To: Nan . <[hidden email]>; [hidden email] <[hidden email]>
Subject: Re: REGRESSION: cross compile 4.3 fail on mingw-w64 7.0/GCC 9.2
 
On Mon, 2020-01-20 at 21:37 +0000, Nan . wrote:
> 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'

Unfortunately that's the command line to compile src/arscan.c.

We need to see the compiler command line for the source file that was
failing, which is src/w32/compat/dirent.c.

Assuming that the dirent.c compile line also shows
/home/build/src/make-4.3/src/w32/include as an include directory, then I'm
not sure what the problem is.

Perhaps you can investigate by running the compile line from your shell
prompt and replacing the "-c -o src/w32/compat/dirent.o" options with
"-E -o dirent.i" options to see what the preprocessor says, and which
dirent.h is being included.