1
0
mirror of https://git.savannah.gnu.org/git/gperf.git synced 2025-12-02 21:19:24 +00:00

Update installation instructions for Windows.

This commit is contained in:
Bruno Haible
2016-11-23 19:58:38 +01:00
parent e480384a73
commit d041a56f54
2 changed files with 223 additions and 47 deletions

View File

@@ -1,3 +1,10 @@
2016-11-23 Bruno Haible <bruno@clisp.org>
Update installation instructions for Windows.
* README.windows: Assume a 64-bit Windows. Explain both 32-bit and
64-bit builds. Revamp instructions for the MS Visual C/C++ tool chain
and for Cygwin.
2016-11-23 Bruno Haible <bruno@clisp.org> 2016-11-23 Bruno Haible <bruno@clisp.org>
Drop the nickname "woe32". Drop the nickname "woe32".

View File

@@ -1,28 +1,55 @@
Installation on Woe32 (Microsoft Windows): Installation on Microsoft Windows:
There are three ways to create binaries of this package for Woe32: There are three ways to create binaries of this package for Microsoft Windows:
1) Native binaries, built using the mingw tool chain. 1) Native binaries, built using the mingw tool chain.
2) Native binaries, built using the MS Visual C/C++ tool chain. 2) Native binaries, built using the MS Visual C/C++ tool chain.
3) Binaries for the Cygwin environment. For these, please see the normal 3) Binaries for the Cygwin environment.
INSTALL file.
=============================================================================== ===============================================================================
1) Native binaries, built using the mingw tool chain. 1) Native binaries, built using the mingw tool chain.
I recommend to use the cygwin environment as the development environment I recommend to use the Cygwin environment as the development environment
and mingw only as the target (runtime, deployment) environment. and mingw only as the target (runtime, deployment) environment.
For this, you need to install For this, you need to install
- cygwin, * Cygwin (from https://cygwin.com/),
- the mingw runtime package, also from the cygwin site. * some packages available from the Cygwin package installer:
make
* the mingw cross-compilation tools and runtime package, available from
the Cygwin package installer (setup-x86_64.exe):
- for creating 32-bit binaries: packages
mingw64-i686-gcc-core,
mingw64-i686-gcc-g++,
mingw64-i686-headers,
mingw64-i686-runtime
- for creating 64-bit binaries: packages
mingw64-x86_64-gcc-core,
mingw64-x86_64-gcc-g++,
mingw64-x86_64-headers,
mingw64-x86_64-runtime
Building for mingw is achieved through the following preparation, Building 32-bit binaries for mingw is achieved through the following
configure, and build commands: preparation, configure, and build commands:
PATH=/usr/local/mingw/bin:$PATH PATH=/usr/local/mingw32/bin:$PATH
export PATH export PATH
./configure --host=i586-pc-mingw32 --prefix=/usr/local/mingw \ ./configure --host=i686-w64-mingw32 --prefix=/usr/local/mingw32 \
CC="gcc-3 -mno-cygwin" \ CC=i686-w64-mingw32-gcc \
CXX="g++-3 -mno-cygwin" CXX=i686-w64-mingw32-g++ \
CPPFLAGS="-I/usr/local/mingw32/include -Wall" \
LDFLAGS="-L/usr/local/mingw32/lib"
make
make check
Building 64-bit binaries for mingw is achieved through the following
preparation, configure, and build commands:
PATH=/usr/local/mingw64/bin:$PATH
export PATH
./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/mingw64 \
CC=x86_64-w64-mingw32-gcc \
CXX=x86_64-w64-mingw32-g++ \
CPPFLAGS="-I/usr/local/mingw64/include -Wall" \
LDFLAGS="-L/usr/local/mingw64/lib"
make make
make check make check
@@ -34,54 +61,146 @@ There are three ways to create binaries of this package for Woe32:
2) Native binaries, built using the MS Visual C/C++ tool chain. 2) Native binaries, built using the MS Visual C/C++ tool chain.
Note that binaries created with MSVC have a distribution constraint: They Note that binaries created with MSVC have a distribution constraint: They
depend on a closed-source library ('msvcr70.dll' for MSVC 7.0, 'msvcr90.dll' depend on a closed-source library ('msvcr90.dll' for MSVC 9.0,
for MSVC 9.0, and so on) which is not normally part of a Windows 'vcruntime140.dll' for MSVC 14.0, and so on) which is not normally part of
installation. a Windows installation.
You cannot distribute 'msvcr*.dll' with the binaries - this would be a You cannot distribute 'vcruntime*.dll' with the binaries - this would be a
violation of the GPL and of the Microsoft EULA. violation of the GPL and of the Microsoft EULA.
You can distribute the binaries without including 'msvcr*.dll', but this You can distribute the binaries without including 'vcruntime*.dll'. Users
will cause problems for users that don't have this library on their system. who don't have this library on their system will require to pull some files
Therefore it is not recommended; the mingw tool chain is preferred for (api-ms-win*.dll) through the Windows Update mechanism, see
this reason. https://support.microsoft.com/en-us/kb/2999226 .
Requires MS Visual C/C++ 4.0 or newer. The "Express" edition which This recipe requires MS Visual C/C++ 9.0 or newer.
contains just the tools and not the IDE is sufficient. You don't need the Visual Studio IDE, just the C/C++ tool chain.
As of 2016, you can install the MS Visual C/C++ 14.0 tool chain from
http://landinghub.visualstudio.com/visual-cpp-build-tools (it's the file
visualcppbuildtools_full.exe).
Requires also a cygwin or mingw environment (with 'bash', the common POSIX This recipe requires also a Cygwin environment (with 'bash', the common POSIX
commands, and 'make' ) as a build environment. Building with "nmake" is no commands, and 'make') as a build environment. Building with 'nmake' is not
longer supported. supported.
For this, you need to install
* Cygwin (from https://cygwin.com/),
* some packages available from the Cygwin package installer:
make
Make sure that the MSVC tools ("cl" etc.) are found in PATH. You also need the scripts 'ar-lib' and 'compile' from
In a typical MSVC 6.0 installation, this can be achieved by running http://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/ar-lib;hb=HEAD
C:\Program Files\Microsoft Visual Studio\VC98\bin\vcvars32.bat http://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/compile;hb=HEAD
In a typical MSVC 7.0 installation, it can be achieved by running respectively.
C:\Program Files\Microsoft Visual Studio .NET\Common7\Tools\vsvars32.bat They may also be included in this package, in directory 'build-aux/'.
Save them; the instructions below assume that you stored them in $HOME/msvc/.
Make them executable:
chmod a+x ar-lib compile
Start a bash (from Cygwin).
Make sure that the MSVC tools ("cl" etc.) are found in PATH and the
environment variables INCLUDE and LIB are set appropriately.
In a typical MSVC 9.0 installation, it can be achieved by running In a typical MSVC 9.0 installation, it can be achieved by running
C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
In a typical MSVC 14.0 installation on Windows 10, it can be achieved
- for creating 32-bit binaries: through the following bash commands:
Then start a bash (from cygwin or mingw). # Set environment variables for using MSVC 14,
# for creating native 32-bit Windows executables.
Building for mingw is achieved through the following preparation, # Windows C library headers and libraries.
configure, and build commands: WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
LIB="${WindowsCrtLibDir}x86;$LIB"
PATH=/usr/local/msvc/bin:$PATH # Windows API headers and libraries.
WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
LIB="${WindowsSdkLibDir}x86;$LIB"
# Visual C++ tools, headers and libraries.
VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
PATH=`cygpath -u "${VCINSTALLDIR}"`/bin:"$PATH"
INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
LIB="${VCINSTALLDIR}"'\lib;'"${LIB}"
export INCLUDE LIB
- for creating 64-bit binaries: through the following bash commands:
# Set environment variables for using MSVC 14,
# for creating native 64-bit Windows executables.
# Windows C library headers and libraries.
WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
LIB="${WindowsCrtLibDir}x64;$LIB"
# Windows API headers and libraries.
WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
LIB="${WindowsSdkLibDir}x64;$LIB"
# Visual C++ tools, headers and libraries.
VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
PATH=`cygpath -u "${VCINSTALLDIR}"`/bin/amd64:"$PATH"
INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
LIB="${VCINSTALLDIR}"'\lib\amd64;'"${LIB}"
export INCLUDE LIB
Building 32-bit binaries with MSVC is achieved through the following
preparation, configure, and build commands:
PATH=/usr/local/msvc32/bin:$PATH
export PATH export PATH
win32_target=_WIN32_WINNT_WINXP # for MSVC 9.0 win32_target=_WIN32_WINNT_WINXP # for MSVC 9.0
win32_target=_WIN32_WINNT_VISTA # possibly for MSVC >= 10.0 win32_target=_WIN32_WINNT_VISTA # possibly for MSVC >= 10.0
win32_target=_WIN32_WINNT_WIN7 # possibly for MSVC >= 10.0 win32_target=_WIN32_WINNT_WIN7 # possibly for MSVC >= 10.0
win32_target=_WIN32_WINNT_WIN8 # possibly for MSVC >= 10.0
./configure --host=i586-pc-mingw32 --prefix=/usr/local/msvc \ ./configure --host=i686-w64-mingw32 --prefix=/usr/local/msvc32 \
CC="`pwd`/build-aux/compile cl -nologo" \ CC="$HOME/msvc/compile cl -nologo" \
CFLAGS="-MD" \ CFLAGS="-MD" \
CXX="`pwd`/build-aux/compile cl -nologo" \ CXX="$HOME/msvc/compile cl -nologo" \
CXXFLAGS="-MD" \ CXXFLAGS="-MD" \
CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc/include" \ CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc32/include" \
LDFLAGS="-L/usr/local/msvc/lib" \ LDFLAGS="-L/usr/local/msvc32/lib" \
LD="link" \ LD="link" \
NM="dumpbin -symbols" \ NM="dumpbin -symbols" \
STRIP=":" \ STRIP=":" \
AR="`pwd`/build-aux/ar-lib lib" \ AR="$HOME/msvc/ar-lib lib" \
RANLIB=":"
make
make check
Building 64-bit binaries with MSVC is achieved through the following
preparation, configure, and build commands:
PATH=/usr/local/msvc64/bin:$PATH
export PATH
win32_target=_WIN32_WINNT_WINXP # for MSVC 9.0
win32_target=_WIN32_WINNT_VISTA # possibly for MSVC >= 10.0
win32_target=_WIN32_WINNT_WIN7 # possibly for MSVC >= 10.0
win32_target=_WIN32_WINNT_WIN8 # possibly for MSVC >= 10.0
./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/msvc64 \
CC="$HOME/msvc/compile cl -nologo" \
CFLAGS="-MD" \
CXX="$HOME/msvc/compile cl -nologo" \
CXXFLAGS="-MD" \
CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc64/include" \
LDFLAGS="-L/usr/local/msvc64/lib" \
LD="link" \
NM="dumpbin -symbols" \
STRIP=":" \
AR="$HOME/msvc/ar-lib lib" \
RANLIB=":" RANLIB=":"
make make
make check make check
@@ -91,3 +210,53 @@ There are three ways to create binaries of this package for Woe32:
make install make install
=============================================================================== ===============================================================================
3) Binaries for the Cygwin environment.
The generic instructions in the INSTALL file apply. But here are more
specific ones.
You need to install
* Cygwin (from https://cygwin.com/),
* some packages available from the Cygwin package installer:
make
* the Cygwin [cross-]compilation tools package, available from
the Cygwin package installer (setup-x86_64.exe):
- for creating 32-bit binaries: packages
cygwin32-gcc-core,
cygwin32-gcc-g++,
cygwin32
- for creating 64-bit binaries: packages
gcc-core,
gcc-g++
Building 32-bit binaries for Cygwin is achieved through the following
preparation, configure, and build commands:
PATH=/usr/local/cygwin32/bin:/usr/i686-pc-cygwin/sys-root/usr/bin:$PATH
export PATH
./configure --host=i686-pc-cygwin --prefix=/usr/local/cygwin32 \
CC=i686-pc-cygwin-gcc \
CXX=i686-pc-cygwin-g++ \
CPPFLAGS="-I/usr/local/cygwin32/include -Wall" \
LDFLAGS="-L/usr/local/cygwin32/lib"
make
make check
Building 64-bit binaries for Cygwin is achieved through the following
preparation, configure, and build commands:
PATH=/usr/local/cygwin64/bin:$PATH
export PATH
./configure --host=x86_64-pc-cygwin --prefix=/usr/local/cygwin64 \
CC=x86_64-pc-cygwin-gcc \
CXX=x86_64-pc-cygwin-g++ \
CPPFLAGS="-I/usr/local/cygwin64/include -Wall" \
LDFLAGS="-L/usr/local/cygwin64/lib"
make
make check
Installation:
make install
===============================================================================