ncurses 6.1 - patch 20180825
[ncurses.git] / README.MinGW
index 6c0b9d620dfc6f9ba07db13d6f2cb831ede915f4..f7d789777a1d5156d79363b94b094f1aa48b81c0 100644 (file)
@@ -1,5 +1,5 @@
 -------------------------------------------------------------------------------
--- Copyright (c) 2008           Free Software Foundation, Inc.               --
+-- Copyright (c) 2008-2011,2012 Free Software Foundation, Inc.               --
 --                                                                           --
 -- Permission is hereby granted, free of charge, to any person obtaining a   --
 -- copy of this software and associated documentation files (the             --
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: README.MinGW,v 1.1 2008/12/14 19:22:16 juergen Exp $
+-- $Id: README.MinGW,v 1.9 2012/09/22 17:46:04 tom Exp $
 -- Author: Juergen Pfeifer
 -------------------------------------------------------------------------------
 
 This is work in progress, but it's in an state where one can see it
 works at least on the Windows Console.
 
-To build ncurses for native Windows, you need the MinGW toolchain from
-http://www.mingw.org
+You should install the MSYS package, so that you've a shell environment that
+allows you to run the scripts, especially configure etc.  You can get that
+from http://www.mingw.org
 
-You should install also the MSYS package, so that you've a shell environment
-that allows you to run the scripts, especially configure etc.
+To build ncurses for native Windows, you need the MinGW toolchain.  The
+original MinGW toolchain from the above site is only for 32-Bit Windows.  As
+Windows Server - and also regular workstations - are moving to 64-Bit, it
+seems to be reasonable to have a toolchain that supports both architectures.
+I recommend to use the TDM gcc toolchain which you can find at
+http://tdm-gcc.tdragon.net/download.  Go to the download section and select
+the bundle installer for tdm64 (MinGW-w64).  This installs a multilib version
+of the gcc toolchain that can compile for native 32- and 64-Bit Windows
+versions.  It also comes with a working pthread implementation.
+
+The latest config and build scripts we use for MinGW have only been tested
+for the gcc-4.6.1 compiler toolchain (or better).
 
 Using MinGW is a pragmatic decision, it's the easiest way to port this
 heavily UNIX based sourcebase to native Windows. The goal is of course
@@ -44,36 +55,84 @@ to provide the includes, libraries and DLLs to be used with the more
 common traditional development environments on Windows, mainly with
 Microsoft Visual Studio.
 
-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++ 2008 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.
+The TERM environment variable must be set specially to active the Windows
+console-driver.  The driver checks if TERM is set to "#win32con" (explicit
+use) or if TERM is unset or empty (implicit).
 
-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 the DLLs, you must call
+I recommend using libtool to build ncurses on MinGW, because libtool
+knows exactly how to build dll's on Windows for use with MinGW.
+
+To build a modern but still small footprint ncurses that provides
+hooks for interop, I recommend using these options:
+
+         --with-libtool
+         --disable-home-terminfo
+         --enable-database
+         --disable-termcap
+         --enable-sp-funcs
+         --enable-term-driver
+         --enable-interop
+
+This is the configuration commandline as I'm using it at the moment (assuming
+environment variable MINGW_ROOT to hold the root directory name of your MinGW
+build):
+
+./configure \
+       --prefix=$MINGW_ROOT \
+       --with-cxx \
+       --without-ada \
+       --enable-warnings \
+       --enable-assertions \
+       --disable-home-terminfo \
+       --enable-database \
+       --enable-sp-funcs \
+       --enable-term-driver \
+       --enable-interop \
+       --disable-termcap \
+       --with-progs \
+       --with-libtool \
+       --enable-pc-files \
+       --mandir=$MINGW_ROOT/share/man
+
+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 seeeemicolon,even when running under MSYS.
+
+To support regular expressions properly, ncurses under MinGW should be
+linked against the gnurx regex library, which must be built separately
+under MinGW.  See
+
+    ftp.gnome.org/pub/GNOME/binaries/win32/dependencies/libgnurx-src-2.5.zip
 
-   make dlls
+All the options above are - like the whole Windows support -
+experimental.
 
 A lot is still TODO, e.g.:
 
-  - Mouse support for the Console
-  - Wide Character support
+  - Wide Character support (display is workable, but input untested)
     The Win32Con driver should actually only use Unicode in the
     future.
-  - Thread support (locking)
+  - Thread support (locking). If using TDM toolchain this is done by
+    configuring pthreads.
   - A GUI console driver
   - Support for Terminals attached via a serial port (via terminfo)
   - Support for networked Terminal connections (via terminfo)
+  - Workarounds for MinGW's filesystem access are necessary to make infocmp
+    work (though tic works).
 
-To support terminfo, we need to have an ioctl() simulation for the
-serial and networked Terminals.
+To support terminfo, we would need to have an ioctl() simulation for the
+serial and networked terminals.