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