X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=README.MinGW;h=f7d789777a1d5156d79363b94b094f1aa48b81c0;hp=6c0b9d620dfc6f9ba07db13d6f2cb831ede915f4;hb=1b540608eae9a714c0c4195310f25c1a1897ae89;hpb=da1f84b7eb32f17e91f6de242132ab3b2d462148 diff --git a/README.MinGW b/README.MinGW index 6c0b9d62..f7d78977 100644 --- a/README.MinGW +++ b/README.MinGW @@ -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 -- @@ -25,18 +25,29 @@ -- 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.