bug-make
[Top][All Lists]
Advanced

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

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


From: Liviu Ionescu
Subject: REGRESSION: cross compile 4.3 fail on mingw-w64 7.0/GCC 9.3
Date: Mon, 28 Dec 2020 11:30:22 +0200

I'm facing the same bug as reported in

- https://lists.gnu.org/archive/html/bug-make/2020-01/msg00060.html


Mingw 7 comes with its own definitions of fcntl() which conflict with those in 
the windows related files in make.

x86_64-w64-mingw32-gcc -DHAVE_CONFIG_H   -Isrc 
-I/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src
 -Ilib 
-I/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/lib
 
-DLIBDIR=\"/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/install/make-4.3/lib\"
 
-DINCLUDEDIR=\"/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/install/make-4.3/include\"
 
-DLOCALEDIR=\"/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/install/make-4.3/share/locale\"
 -I 
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/w32/include
   -ffunction-sections -fdata-sections -pipe -m64 -O2 -MT src/arscan.o -MD -MP 
-MF $depbase.Tpo -c -o src/arscan.o 
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/arscan.c
 &&\
mv -f $depbase.Tpo $depbase.Po
In file included from 
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/arscan.c:379:
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/output.h:70:
 warning: "F_GETFD" redefined
   70 | #  define F_GETFD 1
      | 
In file included from 
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/makeint.h:359,
                 from 
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/arscan.c:17:
lib/fcntl.h:684: note: this is the location of the previous definition
  684 | # define F_GETFD 2
      | 
In file included from 
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/arscan.c:379:
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/output.h:92:5:
 error: conflicting types for ‘fcntl’
   92 | int fcntl (intptr_t fd, int cmd, ...);
      |     ^~~~~
In file included from /opt/xbb/usr/x86_64-w64-mingw32/include/io.h:10,
                 from /opt/xbb/usr/x86_64-w64-mingw32/include/sys/stat.h:14,
                 from 
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/makeint.h:72,
                 from 
/Host/Users/ilg/Work/windows-build-tools-4.3.0-1/win32-x64/sources/make-4.3/src/arscan.c:17:
lib/fcntl.h:595:1: note: previous declaration of ‘fcntl’ was here
  595 | _GL_FUNCDECL_SYS (fcntl, int, (int fd, int action, ...));
      | ^~~~~~~~~~~~~~~~
make[1]: *** [Makefile:1356: src/arscan.o] Error 1
make[1]: Leaving directory '/tmp/win32-x64/build/make-4.3'
make: *** [Makefile:1442: all-recursive] Error 1

Removing the conflicting defines in output.h would be easy, but switching to 
the mingw implementation is not that easy, since in POSIX the definition uses 
an int for the file descriptor: 

int
fcntl(int fildes, int cmd, ...);


while make uses an intptr_t:

int fcntl (intptr_t fd, int cmd, ...);



If, for any reasons, make needs it with intptr_t, I think it should not use the 
standard fcntl() name, but a specific one (like x_fcntl()), and when building 
on mingw to keep the current implementation, since the mingw one does not 
provide support for F_SETLKW.


Please let me know if there was any progress on this issue, and perhaps if 
using mingw 8 improved things.


Regards,

Liviu











reply via email to

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