-If you start a bash from the MSYS environment, please make sure that the
-Microsoft Development tools are in your PATH right after the MinGW
-tools. The LIB.EXE tool is the only one needed. You need this only if
-you want to build DLLs that work with native Windows programs. If you
-don't have any Microsoft Development tools on your machine, consider
-at least to get the free "Visual C++ 2010 Express Edition".
-It contains the LIB.EXE tool. You may also use this compiler to test
-writing native Windows programs using the ncurses DLLs without using
-MinGW then for writing apps.
-
-Please unset the TERM environment variable, so that the Console driver
-gets activated.
-
-Please also make sure that MSYS links to the correct directory containing
-your MinGW toolchain. For TDM this is usually C:\MinGW64. In your Windows
-CMD.EXE command shell go to the MSYS root directory (most probably
-C:\MSYS or C:\MSYS\1.0) and verify, that there is a junction point mingw
-that points to the MinGW toolchain directory. If not, delete the mingw
-directory and use the mklink command (or the linkd.exe utility on older
-Windows) to create the junction point.
-
-This code requires WindowsNT 5.1 or better, which means on the client
-Windows XP or better, on the server Windows Server 2003 or better.
-
-In order to build ncurses for the planned interop layer with .NET, we
-recommend to use these options with configure
-
- --disable-home-terminfo
- --enable-reentrant
- --enable-sp-funcs
- --enable-term-driver
- --enable-interop
- --with-pthread (if using TDM toolchain as recommended)
-
-This is the configuration commandline as I'm using it at the moment:
-
-./configure --prefix=/mingw --without-cxx-binding --without-ada --enable-warnings --enable-assertions --enable-reentrant --with-debug --with-normal --disable-home-terminfo --enable-sp-funcs --enable-term-driver --enable-interop --with-pthread
-
-If you are on a 64-Bit Windows system and want to build a 32-Bit version
-of ncurses, you may use this commandline for configuration (when using
-the TDM toolchain):
-
-CC="gcc -m32" LD="ld -m32" ./configure --prefix=/mingw --without-cxx-binding --without-ada --enable-warnings --enable-assertions --enable-reentrant --with-debug --with-normal --disable-home-terminfo --enable-sp-funcs --enable-term-driver --enable-interop --with-pthread
+The TERM environment variable must be set especially to activate the Windows
+console-driver. The driver checks if TERM is set to "#win32con" (explicit
+use) or if TERM is unset or empty (implicit).
+
+Beginning with build 17763 (Fall 2018 update), Windows 10 supports ANSI escape
+sequences (Virtual Terminal support). If ncurses detects this or a later
+Windows 10 version, the interpretation of the implicit TERM setting (which
+means: TERM is not set or empty) changes. In this case, TERM is to be assumed
+to be "ms-terminal" and ncurses acts using the regular terminfo based driver,
+thus acting like a regular Terminal we all know from UNIX like environments.
+
+This code requires WindowsNT 6.0 or better, which means on the client
+Windows Vista or better, on the server Windows Server 2008 or better.
+
+If running on Windows 10 Build 17763 or later is detected, any program
+spawning a subprocess running a ncurses program should use the new
+PseudoConsole support, which provides what we know as pty from the UNIX
+world also for Windows. Using the CreatePseudoConsole API
+(see https://docs.microsoft.com/en-us/windows/console/createpseudoconsole)
+in the calling process, it is guaranteed that the called ncurses program has
+a console that is required by its implementation, even if the calling program
+is NOT a console program, e.g., MSYS2's own mintty Terminal emulator.
+
+In the current MSYS2/minGW setup, building MinGW shared libraries with
+libtool for ncurses seems to be broken, so I recommend NOT to use libtool.
+
+To build a modern but still small footprint ncurses that provides
+hooks for interop, I recommend using these options:
+
+ --without-libtool
+ --disable-home-terminfo
+ --enable-database
+ --disable-termcap
+ --enable-sp-funcs
+ --enable-term-driver
+ --enable-interop
+
+This is the configuration command line which I am using at the moment
+(assuming environment variable MINGW_ROOT holds the root directory name of
+your MinGW build):
+
+./configure \
+ --prefix=/mingw64 \
+ --without-cxx \
+ --without-ada \
+ --enable-warnings \
+ --enable-assertions \
+ --enable-exp-win32 \
+ --enable-ext-funcs \
+ --disable-home-terminfo \
+ --disable-echo \
+ --disable-getcap \
+ --disable-hard-tabs \
+ --disable-leaks \
+ --disable-macros \
+ --disable-overwrite \
+ --enable-opaque-curses \
+ --enable-opaque-panel \
+ --enable-opaque-menu \
+ --enable-opaque-form \
+ --enable-database \
+ --enable-sp-funcs \
+ --enable-term-driver \
+ --enable-interop \
+ --disable-termcap \
+ --enable-database \
+ --with-progs \
+ --without-libtool \
+ --enable-pc-files \
+ --with-shared \
+ --with-normal \
+ --without-debug \
+ --with-fallbacks=ms-terminal \
+ --without-manpages
+
+Please note that it is also necessary to set this environment variable:
+
+export PATH_SEPARATOR=";"
+
+in order to parse the terminfo paths correctly. Terminfo paths should
+always be separated by a semicolon, even when running under MSYS2.