[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
- REGRESSION: cross compile 4.3 fail on mingw-w64 7.0/GCC 9.3,
Liviu Ionescu <=