Remove support for the MinGW compiler packaged with Cygwin.
MinGW-w64 is still supported, as is the MinGW compiler distributed by mingw.org. Cygwin's MinGW toolchain uses the 4.0-1 mingw-runtime package by default, which appears to correspond to the "WSL-4" 4.x version of the MinGW project's mingwrt packages. (The version numbers in the /usr/i686-pc-mingw32/sys-root/mingw/include/_mingw.h file are also consistent with this theory.) The WSL-4 branch was repudiated by the MinGW project as a mistake [1]. The MinGW project claims no responsibility for Cygwin's MinGW packages [2]. There were several releases in short succession [3]: 4.0.3 2013-09-22 4.0.2 2013-09-15 4.0.1 2013-09-14 4.0.0 2013-08-23 There have been no 4.x releases since then, though there have been more 3.x releases (3.21 and 3.21.1). The FILE_FLAG_FIRST_PIPE_INSTANCE bug that this project has worked around was fixed in 4.0.3 [4], which was never propagated to the Cygwin package. The MinGW packages were apparently orphaned on 2014-09-18 [5] and are still orphaned [6]. The g++ compiler in this package is still 4.7.3 (released on 2013-04-11), which is almost three three years old. While writing the "GenRandom" module, I hit a bug where a non-static data member initializer of pointer-to-function-type segfaulted the compiler. (gcc seemed to have confused the field with a pure virtual method.) [1] http://sourceforge.net/p/mingw/bugs/1673/#5260/41ec [2] http://sourceforge.net/p/mingw/bugs/1673/#2556/35d4 [3] http://sourceforge.net/projects/mingw/files/MinGW/Base/mingwrt/ [4] http://sourceforge.net/p/mingw/bugs/2050/ [5] https://cygwin.com/ml/cygwin/2014-09/msg00289.html [6] https://cygwin.com/cygwin-pkg-maint
This commit is contained in:
parent
11b3bbf66e
commit
ec3eae8df5
29
README.rst
29
README.rst
@ -25,34 +25,35 @@ You need the following to build winpty:
|
||||
|
||||
* A Cygwin or MSYS installation
|
||||
* GNU make
|
||||
* A MinGW g++ toolchain, v4 or later, to build ``winpty.dll`` and
|
||||
``winpty-agent.exe``
|
||||
* A g++ toolchain targeting Cygwin or MSYS, v3 or later, to build
|
||||
``console.exe``
|
||||
* A MinGW g++ toolchain capable of compiling C++11 code to build ``winpty.dll``
|
||||
and ``winpty-agent.exe``
|
||||
* A g++ toolchain targeting Cygwin or MSYS to build ``console.exe``
|
||||
|
||||
Winpty requires two g++ toolchains as it is split into two parts. The
|
||||
binaries winpty.dll and winpty-agent.exe interface with the native Windows
|
||||
command prompt window so they are compiled with the native MinGW toolchain.
|
||||
The console.exe binary interfaces with the MSYS/Cygwin terminal so it is
|
||||
compiled with the MSYS/Cygwin toolchain.
|
||||
``winpty.dll`` and ``winpty-agent.exe`` binaries interface with the native
|
||||
Windows command prompt window so they are compiled with the native MinGW
|
||||
toolchain. The console.exe binary interfaces with the MSYS/Cygwin terminal so
|
||||
it is compiled with the MSYS/Cygwin toolchain.
|
||||
|
||||
MinGW appears to be split into two distributions -- MinGW (creates 32-bit
|
||||
binaries) and MinGW-w64 (creates both 32-bit and 64-bit binaries). Either
|
||||
one is acceptable, but the compiler must be v4 or later.
|
||||
one is generally acceptable.
|
||||
|
||||
Cygwin packages
|
||||
---------------
|
||||
|
||||
The default g++ compiler for Cygwin targets Cygwin itself, but Cygwin also
|
||||
packages MinGW compilers from both the MinGW and MinGW-w64 projects. As of
|
||||
this writing, the necessary packages are:
|
||||
packages MinGW-w64 compilers. As of this writing, the necessary packages are:
|
||||
|
||||
* Either ``mingw-gcc-g++``, ``mingw64-i686-gcc-g++`` or
|
||||
``mingw64-x86_64-gcc-g++``. Select the appropriate compiler for your
|
||||
CPU architecture.
|
||||
* Either ``mingw64-i686-gcc-g++`` or ``mingw64-x86_64-gcc-g++``. Select the
|
||||
appropriate compiler for your CPU architecture.
|
||||
* ``gcc-g++``
|
||||
* ``make``
|
||||
|
||||
As of this writing (2016-01-23), only the MinGW-w64 compiler is acceptable.
|
||||
The MinGW compiler (e.g. from the ``mingw-gcc-g++`` package) is no longer
|
||||
maintained and is too buggy.
|
||||
|
||||
MSYS packages
|
||||
-------------
|
||||
|
||||
|
2
configure
vendored
2
configure
vendored
@ -64,7 +64,7 @@ case $(uname -s) in
|
||||
i686)
|
||||
echo 'uname -m identifies an i686 environment.'
|
||||
UNIX_CXX=i686-pc-cygwin-g++
|
||||
MINGW_CXX="i686-w64-mingw32-g++ i686-pc-mingw32-g++"
|
||||
MINGW_CXX=i686-w64-mingw32-g++
|
||||
;;
|
||||
x86_64)
|
||||
echo 'uname -m identifies an x86_64 environment.'
|
||||
|
@ -33,12 +33,6 @@
|
||||
#include "../shared/AgentMsg.h"
|
||||
#include "../shared/Buffer.h"
|
||||
|
||||
// Work around a bug with mingw-gcc-g++. mingw-w64 is unaffected. See
|
||||
// GitHub issue 27.
|
||||
#ifndef FILE_FLAG_FIRST_PIPE_INSTANCE
|
||||
#define FILE_FLAG_FIRST_PIPE_INSTANCE 0x00080000
|
||||
#endif
|
||||
|
||||
// TODO: Error handling, handle out-of-memory.
|
||||
|
||||
#define AGENT_EXE L"winpty-agent.exe"
|
||||
|
Loading…
Reference in New Issue
Block a user