1Installation on Microsoft Windows:
2
3There are three ways to create binaries of this package for Microsoft Windows:
41) Native binaries, built using the mingw tool chain.
52) Native binaries, built using the MS Visual C/C++ tool chain.
63) Binaries for the Cygwin environment.
7
8===============================================================================
91) Native binaries, built using the mingw tool chain.
10
11   I recommend to use the Cygwin environment as the development environment
12   and mingw only as the target (runtime, deployment) environment.
13   For this, you need to install
14     * Cygwin (from https://cygwin.com/),
15     * some packages available from the Cygwin package installer:
16         make
17     * the mingw cross-compilation tools and runtime package, available from
18       the Cygwin package installer (setup-x86_64.exe):
19       - for creating 32-bit binaries: packages
20           mingw64-i686-gcc-core,
21           mingw64-i686-gcc-g++,
22           mingw64-i686-headers,
23           mingw64-i686-runtime
24       - for creating 64-bit binaries: packages
25           mingw64-x86_64-gcc-core,
26           mingw64-x86_64-gcc-g++,
27           mingw64-x86_64-headers,
28           mingw64-x86_64-runtime
29
30   Building 32-bit binaries for mingw is achieved through the following
31   preparation, configure, and build commands:
32
33      PATH=/usr/local/mingw32/bin:/usr/i686-w64-mingw32/sys-root/mingw/bin:$PATH
34      export PATH
35      ./configure --host=i686-w64-mingw32 --prefix=/usr/local/mingw32 \
36            CC=i686-w64-mingw32-gcc \
37            CXX=i686-w64-mingw32-g++ \
38            CPPFLAGS="-I/usr/local/mingw32/include -Wall" \
39            LDFLAGS="-L/usr/local/mingw32/lib"
40      make
41      make check
42
43   Building 64-bit binaries for mingw is achieved through the following
44   preparation, configure, and build commands:
45
46      PATH=/usr/local/mingw64/bin:/usr/x86_64-w64-mingw32/sys-root/mingw/bin:$PATH
47      export PATH
48      ./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/mingw64 \
49            CC=x86_64-w64-mingw32-gcc \
50            CXX=x86_64-w64-mingw32-g++ \
51            CPPFLAGS="-I/usr/local/mingw64/include -Wall" \
52            LDFLAGS="-L/usr/local/mingw64/lib"
53      make
54      make check
55
56   Installation:
57
58      make install
59
60===============================================================================
612) Native binaries, built using the MS Visual C/C++ tool chain.
62
63   Note that binaries created with MSVC have a distribution constraint: They
64   depend on a closed-source library ('msvcr90.dll' for MSVC 9.0,
65   'vcruntime140.dll' for MSVC 14.0, and so on) which is not normally part of
66   a Windows installation.
67   You cannot distribute 'vcruntime*.dll' with the binaries - this would be a
68   violation of the GPL and of the Microsoft EULA.
69   You can distribute the binaries without including 'vcruntime*.dll'. Users
70   who don't have this library on their system will require to pull some files
71   (api-ms-win*.dll) through the Windows Update mechanism, see
72   https://support.microsoft.com/en-us/kb/2999226 .
73
74   This recipe requires MS Visual C/C++ 9.0 or newer.
75   You don't need the Visual Studio IDE, just the C/C++ tool chain.
76   As of 2016, you can install the MS Visual C/C++ 14.0 tool chain from
77   https://landinghub.visualstudio.com/visual-cpp-build-tools (it's the file
78   visualcppbuildtools_full.exe).
79
80   This recipe requires also a Cygwin environment (with 'bash', the common POSIX
81   commands, and 'make') as a build environment. Building with 'nmake' is not
82   supported.
83   For this, you need to install
84     * Cygwin (from https://cygwin.com/),
85     * some packages available from the Cygwin package installer:
86         make
87
88   You also need the scripts 'ar-lib' and 'compile' from
89     https://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/ar-lib;hb=HEAD
90     https://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/compile;hb=HEAD
91   respectively.
92   They may also be included in this package, in directory 'build-aux/'.
93   Save them; the instructions below assume that you stored them in $HOME/msvc/.
94   Make them executable:
95      chmod a+x ar-lib compile
96
97   Start a bash (from Cygwin).
98
99   Make sure that the MSVC tools ("cl" etc.) are found in PATH and the
100   environment variables INCLUDE and LIB are set appropriately.
101   In a typical MSVC 9.0 installation, it can be achieved by running
102     C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat
103   In a typical MSVC 14.0 installation on Windows 10, it can be achieved
104   - for creating 32-bit binaries: through the following bash commands:
105
106      # Set environment variables for using MSVC 14,
107      # for creating native 32-bit Windows executables.
108
109      # Windows C library headers and libraries.
110      WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
111      WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
112      INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
113      LIB="${WindowsCrtLibDir}x86;$LIB"
114
115      # Windows API headers and libraries.
116      WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
117      WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
118      INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
119      LIB="${WindowsSdkLibDir}x86;$LIB"
120
121      # Visual C++ tools, headers and libraries.
122      VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
123      VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
124      PATH=`cygpath -u "${VCINSTALLDIR}"`/bin:"$PATH"
125      INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
126      LIB="${VCINSTALLDIR}"'\lib;'"${LIB}"
127
128      export INCLUDE LIB
129
130   - for creating 64-bit binaries: through the following bash commands:
131
132     # Set environment variables for using MSVC 14,
133     # for creating native 64-bit Windows executables.
134
135     # Windows C library headers and libraries.
136     WindowsCrtIncludeDir='C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt'
137     WindowsCrtLibDir='C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\ucrt\'
138     INCLUDE="${WindowsCrtIncludeDir};$INCLUDE"
139     LIB="${WindowsCrtLibDir}x64;$LIB"
140
141     # Windows API headers and libraries.
142     WindowsSdkIncludeDir='C:\Program Files (x86)\Windows Kits\8.1\Include\'
143     WindowsSdkLibDir='C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\'
144     INCLUDE="${WindowsSdkIncludeDir}um;${WindowsSdkIncludeDir}shared;$INCLUDE"
145     LIB="${WindowsSdkLibDir}x64;$LIB"
146
147     # Visual C++ tools, headers and libraries.
148     VSINSTALLDIR='C:\Program Files (x86)\Microsoft Visual Studio 14.0'
149     VCINSTALLDIR="${VSINSTALLDIR}"'\VC'
150     PATH=`cygpath -u "${VCINSTALLDIR}"`/bin/amd64:"$PATH"
151     INCLUDE="${VCINSTALLDIR}"'\include;'"${INCLUDE}"
152     LIB="${VCINSTALLDIR}"'\lib\amd64;'"${LIB}"
153
154     export INCLUDE LIB
155
156   Building 32-bit binaries with MSVC is achieved through the following
157   preparation, configure, and build commands:
158
159      PATH=/usr/local/msvc32/bin:$PATH
160      export PATH
161
162      win32_target=_WIN32_WINNT_WINXP   # for MSVC 9.0
163      win32_target=_WIN32_WINNT_VISTA   # possibly for MSVC >= 10.0
164      win32_target=_WIN32_WINNT_WIN7    # possibly for MSVC >= 10.0
165      win32_target=_WIN32_WINNT_WIN8    # possibly for MSVC >= 10.0
166
167      ./configure --host=i686-w64-mingw32 --prefix=/usr/local/msvc32 \
168            CC="$HOME/msvc/compile cl -nologo" \
169            CFLAGS="-MD" \
170            CXX="$HOME/msvc/compile cl -nologo" \
171            CXXFLAGS="-MD" \
172            CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc32/include" \
173            LDFLAGS="-L/usr/local/msvc32/lib" \
174            LD="link" \
175            NM="dumpbin -symbols" \
176            STRIP=":" \
177            AR="$HOME/msvc/ar-lib lib" \
178            RANLIB=":"
179      make
180      make check
181
182   Building 64-bit binaries with MSVC is achieved through the following
183   preparation, configure, and build commands:
184
185      PATH=/usr/local/msvc64/bin:$PATH
186      export PATH
187
188      win32_target=_WIN32_WINNT_WINXP   # for MSVC 9.0
189      win32_target=_WIN32_WINNT_VISTA   # possibly for MSVC >= 10.0
190      win32_target=_WIN32_WINNT_WIN7    # possibly for MSVC >= 10.0
191      win32_target=_WIN32_WINNT_WIN8    # possibly for MSVC >= 10.0
192
193      ./configure --host=x86_64-w64-mingw32 --prefix=/usr/local/msvc64 \
194            CC="$HOME/msvc/compile cl -nologo" \
195            CFLAGS="-MD" \
196            CXX="$HOME/msvc/compile cl -nologo" \
197            CXXFLAGS="-MD" \
198            CPPFLAGS="-D_WIN32_WINNT=$win32_target -I/usr/local/msvc64/include" \
199            LDFLAGS="-L/usr/local/msvc64/lib" \
200            LD="link" \
201            NM="dumpbin -symbols" \
202            STRIP=":" \
203            AR="$HOME/msvc/ar-lib lib" \
204            RANLIB=":"
205      make
206      make check
207
208   Installation:
209
210      make install
211
212===============================================================================
2133) Binaries for the Cygwin environment.
214
215   The generic instructions in the INSTALL file apply. But here are more
216   specific ones.
217
218   You need to install
219     * Cygwin (from https://cygwin.com/),
220     * some packages available from the Cygwin package installer:
221         make
222     * the Cygwin [cross-]compilation tools package, available from
223       the Cygwin package installer (setup-x86_64.exe):
224       - for creating 32-bit binaries: packages
225           cygwin32-gcc-core,
226           cygwin32-gcc-g++,
227           cygwin32
228       - for creating 64-bit binaries: packages
229           gcc-core,
230           gcc-g++
231
232   Building 32-bit binaries for Cygwin must be done in a directory *outside*
233   the Cygwin /home and /usr hierarchies. It is achieved through the following
234   preparation, configure, and build commands:
235
236      PATH=/usr/local/cygwin32/bin:/usr/i686-pc-cygwin/sys-root/usr/bin:$PATH
237      export PATH
238      ./configure --host=i686-pc-cygwin --prefix=/usr/local/cygwin32 \
239            CC=i686-pc-cygwin-gcc \
240            CXX=i686-pc-cygwin-g++ \
241            CPPFLAGS="-I/usr/local/cygwin32/include -Wall" \
242            LDFLAGS="-L/usr/local/cygwin32/lib"
243      make
244      make check
245
246   Building 64-bit binaries for Cygwin is achieved through the following
247   preparation, configure, and build commands:
248
249      PATH=/usr/local/cygwin64/bin:$PATH
250      export PATH
251      ./configure --host=x86_64-pc-cygwin --prefix=/usr/local/cygwin64 \
252            CC=x86_64-pc-cygwin-gcc \
253            CXX=x86_64-pc-cygwin-g++ \
254            CPPFLAGS="-I/usr/local/cygwin64/include -Wall" \
255            LDFLAGS="-L/usr/local/cygwin64/lib"
256      make
257      make check
258
259   Installation:
260
261      make install
262
263===============================================================================
264Dependencies:
265
266This package depends on GNU libiconv. (See the file DEPENDENCIES.) Before
267building this package, you need to build GNU libiconv, in the same development
268environment, with the same configure options, and install it ("make install").
269===============================================================================
270