blob: 73d13dc90c9fcd1f92b8b2fbb6a7892ea8954068 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001INSTALLpc.txt - Installation of Vim on PC
2
3This file contains instructions for compiling Vim. If you already have an
4executable version of Vim, you don't need this.
5
Bram Moolenaar18cfa942017-10-08 17:58:44 +02006You can find the lastest here: https://github.com/vim/vim-win32-installer
7This page also has links to install support for interfaces such as Perl,
8Python, Lua, etc.
Bram Moolenaar071d4272004-06-13 20:20:40 +00009
10The file "feature.h" can be edited to match your preferences. You can skip
11this, then you will get the default behavior as is documented, which should
12be fine for most people.
13
Bram Moolenaar02cfac82016-04-21 14:34:58 +020014This document assumes that you are building Vim for Win32 or later (Windows
15XP/2003/Vista/7/8/10). There are also instructions for pre-XP systems, but
16they might no longer work.
Bram Moolenaar362e1a32006-03-06 23:29:24 +000017
Bram Moolenaar18cfa942017-10-08 17:58:44 +020018The recommended way is to build a 32 bit Vim, also on 64 bit systems. You can
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +010019build a 64 bit Vim if you like, the executable will be bigger and Vim won't be
Bram Moolenaar18cfa942017-10-08 17:58:44 +020020any faster, but you can edit files larger than 2 Gbyte.
21
Bram Moolenaar071d4272004-06-13 20:20:40 +000022
23Contents:
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000241. Microsoft Visual C++
Bram Moolenaar304925e2018-06-30 16:27:02 +0200252. Using MSYS2 with MinGW
263. Using MinGW
274. Cygwin
285. Borland
296. Cross compiling for Win32 from a Linux machine
307. Building with Python support
318. Building with Python3 support
329. Building with Racket or MzScheme support
3310. Building with Lua support
3411. Building with Perl support
3512. Building with Ruby support
3613. Building with Tcl support
3714. Building with Terminal support
3815. Building with DirectX (DirectWrite) support
3916. Windows 3.1
4017. MS-DOS
Bram Moolenaar362e1a32006-03-06 23:29:24 +000041
Bram Moolenaar304925e2018-06-30 16:27:02 +02004218. Installing after building from sources
Bram Moolenaar734d9982011-07-15 13:52:04 +020043
44
Bram Moolenaar18cfa942017-10-08 17:58:44 +020045The currently recommended way (that means it has been verified to work) is
46using the "Visual Studio Community 2015" installation. This includes the SDK
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +010047needed to target Windows XP. But not older Windows versions (95, 98), see
Bram Moolenaar18cfa942017-10-08 17:58:44 +020048|msvc-2008-express| below for that
Bram Moolenaar071d4272004-06-13 20:20:40 +000049
50
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000511. Microsoft Visual C++
52=======================
53
Bram Moolenaar73f44392017-10-07 18:38:43 +020054We do not provide download links, since Microsoft keeps changing them. You
Bram Moolenaar18cfa942017-10-08 17:58:44 +020055can search for "Visual Studio Community 2015", for example. You will need to
Bram Moolenaar73f44392017-10-07 18:38:43 +020056create a Microsoft account (it's free).
57
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +010058When installing "Visual Studio Community 2015 with Update 3" make sure to
59select "custom" and check "Windows XP Support for C++" and all checkboxes
60under "Universal Windows App Development Tools"
61
Bram Moolenaar73f44392017-10-07 18:38:43 +020062
Bram Moolenaar362e1a32006-03-06 23:29:24 +000063Visual Studio
64-------------
65
Bram Moolenaar30a89472016-01-10 14:35:58 +010066Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, VS 2005, VS 2008,
67VS2010, VS2012, VS2013 and VS2015) is straightforward. (These instructions
68should also work for VS 4 and VS 5.)
Bram Moolenaar362e1a32006-03-06 23:29:24 +000069
Bram Moolenaar73f44392017-10-07 18:38:43 +020070Using VS C++ 2008 Express is recommended if you need the binary to run on
71Windows 95 or 97, see |msvc-2008-express| below.
Bram Moolenaar97cc2382012-10-03 21:46:54 +020072
Bram Moolenaar362e1a32006-03-06 23:29:24 +000073To build Vim from the command line with MSVC, use Make_mvc.mak.
74Visual Studio installed a batch file called vcvars32.bat, which you must
75run to set up paths for nmake and MSVC.
76
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000077nmake -f Make_mvc.mak console Win32 SDK or Microsoft Visual C++
78nmake -f Make_mvc.mak GUI=yes GUI Microsoft Visual C++
79nmake -f Make_mvc.mak OLE=yes OLE Microsoft Visual C++
Bram Moolenaar362e1a32006-03-06 23:29:24 +000080nmake -f Make_mvc.mak PERL=C:\Perl PYTHON=C:\Python etc.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000081 Perl, Python, etc.
Bram Moolenaar362e1a32006-03-06 23:29:24 +000082
83Make_mvc.mak allows a Vim to be built with various different features and
84debug support. Debugging with MS Devstudio is provided by Make_dvc.mak.
85For a description of the use of Make_dvc.mak, look in Make_mvc.mak.
86
87For compiling Gvim with IME support on far-east Windows, add IME=yes
88to the parameters you pass to Make_mvc.mak.
89
90To build Vim from within the Visual Studio IDE, open the Make_ivc.mak project.
91(Note: Make_ivc.mak is not as rich as Make_mvc.mak, which allows for
92far more configuration.) Make_ivc.mak can also be built with nmake.
93
94nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim"
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000095 GUI Microsoft Visual C++ 4.x or later
Bram Moolenaar362e1a32006-03-06 23:29:24 +000096nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim OLE"
Bram Moolenaarc9b4b052006-04-30 18:54:39 +000097 OLE Microsoft Visual C++ 4.x or later
Bram Moolenaar362e1a32006-03-06 23:29:24 +000098
99See the specific files for comments and options.
100
101These files have been supplied by George V. Reilly, Ben Singer, Ken Scott and
102Ron Aaron; they have been tested.
103
104
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200105Visual C++ 2008 Express Edition *msvc-2008-express*
106-------------------------------
107
108Visual C++ 2008 Express Edition can be downloaded for free from:
109 http://www.microsoft.com/express/downloads/
110This includes the IDE and the debugger.
111
112To set the environment execute the msvc2008.bat script. You can then build
113Vim with Make_mvc.mak.
114
115For building 64 bit binaries you also need to install the SDK:
116"Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1"
117You don't need the examples and documentation.
118
119If you get an error that Win32.mak can't be found, you have to set the
120variable SDK_INCLUDE_DIR. For example, on Windows 10, installation of MSVC
121puts include files in the following directory:
122 set SDK_INCLUDE_DIR=C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
123
124
125Visual C++ 2010 Express Edition *msvc-2010-express*
126-------------------------------
127
128Visual C++ 2010 Express Edition can be downloaded for free from:
129 http://www.microsoft.com/express/vc/Default.aspx
130This includes the IDE and the debugger.
131
132To set the environment execute the msvc2010.bat script. You can then build
133Vim with Make_mvc.mak.
134
135
Bram Moolenaar73f44392017-10-07 18:38:43 +0200136Targeting Windows XP with MSVC 2012 and later *new-msvc-windows-xp*
137---------------------------------------------
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200138
139Beginning with Visual C++ 2012, Microsoft changed the behavior of LINK.EXE
140so that it targets Windows 6.0 (Vista) by default. In order to override
141this, the target Windows version number needs to be passed to LINK like
142follows:
143 LINK ... /subsystem:console,5.01
144
145Make_mvc.mak now supports a macro SUBSYSTEM_VER to pass the Windows version.
Bram Moolenaar73f44392017-10-07 18:38:43 +0200146Use lines like follows to target Windows XP x86 (assuming using Visual C++
1472012 under 64-bit Windows):
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200148 set WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200149 set INCLUDE=%WinSdk71%\Include;%INCLUDE%
150 set LIB=%WinSdk71%\Lib;%LIB%
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200151 set CL=/D_USING_V110_SDK71_
152 nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.01
153
Bram Moolenaar73f44392017-10-07 18:38:43 +0200154To target Windows XP x64 instead of x86, you need to change the settings of
155LIB and SUBSYSTEM_VER:
156 ...
157 set LIB=%WinSdk71%\Lib\x64;%LIB%
158 ...
159 nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.02
160
161If you use Visual C++ 2015 (either Express or Community Edition), executing
162msvc2015.bat will set them automatically. For x86 builds run this without
163options:
164 msvc2015
165For x64 builds run this with the "x86_amd64" option:
166 msvc2015 x86_amd64
167
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200168The following Visual C++ team blog can serve as a reference page:
169 http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx
170
171
172OLDER VERSIONS
173
174The minimal supported version is Windows XP. Building with older compilers
175might still work, but these instructions might be outdated.
176
177If you need the executable to run on Windows 98 or ME, use the 2003 one
178|msvc-2003-toolkit|.
179
Bram Moolenaarc236c162008-07-13 17:41:49 +0000180Visual C++ Toolkit 2003 *msvc-2003-toolkit*
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000181-----------------------
182
Bram Moolenaarc236c162008-07-13 17:41:49 +0000183You could download the Microsoft Visual C++ Toolkit 2003 from
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000184 http://msdn.microsoft.com/visualc/vctoolkit2003/
Bram Moolenaarc236c162008-07-13 17:41:49 +0000185Unfortunately this URL is no longer valid. Inofficial downloads appear to be
186available from links mentioned on these pages (use at your own risk):
187 http://www.filewatcher.com/m/VCToolkitSetup.exe.32952488.0.0.html
188 http://feargame.net/wiki/index.php?title=Building_Source_with_the_VC2003_Toolkit
189
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000190This contains the command-line tools (compiler, linker, CRT headers,
191and libraries) for Visual Studio .NET 2003, but not the Visual Studio IDE.
192To compile and debug Vim with the VC2003 Toolkit, you will also need
193|ms-platform-sdk|, |dotnet-1.1-redist|, |dotnet-1.1-sdk|,
194and |windbg-download|.
195
Bram Moolenaar0fde2902008-03-16 13:54:13 +0000196It's easier to download Visual C++ 2008 Express Edition, |msvc-2008-express|,
197which is freely available in perpetuity.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000198
199The free Code::Blocks IDE works with the VC2003 Toolkit, as described at
200 http://wiki.codeblocks.org/index.php?title=Integrating_Microsoft_Visual_Toolkit_2003_with_Code::Blocks_IDE
201(This site also takes you through configuring a number of other
202free C compilers for Win32.)
203
204To compile Vim using the VC2003 Toolkit and Make_mvc.mak, you must first
205execute the following commands in a cmd.exe window (the msvcsetup.bat batch
206file can be used):
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000207
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000208 set PATH=%SystemRoot%\Microsoft.NET\Framework\v1.1.4322;%PATH%
209 call "%VCToolkitInstallDir%vcvars32.bat"
210 set MSVCVer=7.1
211 call "%ProgramFiles%\Microsoft Platform SDK\SetEnv.Cmd"
212 set LIB=%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\lib;%LIB%
213
214Now you can build Vim with Make_mvc.mak.
215
216
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000217Getting the Windows Platform SDK *ms-platform-sdk*
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000218
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200219You will also need a copy of the Windows Platform SDK. Specifically, you need
220the Windows Core SDK subset of the Platform SDK, which contains the Windows
221headers and libraries. You need to search for it, Microsoft keeps changing
222the URL.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000223
224
225Getting the .NET Framework 1.1 Runtime *dotnet-1.1-redist*
226
227You need the .NET Framework 1.1 Redistributable Package from
228 http://www.microsoft.com/downloads/details.aspx?familyid=262d25e3-f589-4842-8157-034d1e7cf3a3
229or from Windows Update:
230 http://windowsupdate.microsoft.com/
231This is needed to install |dotnet-1.1-sdk|. It also contains cvtres.exe,
232which is needed to link Vim.
233
234
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000235Getting the .NET Framework 1.1 SDK *dotnet-1.1-sdk*
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000236
237You need the .NET Framework 1.1 SDK from
238 http://www.microsoft.com/downloads/details.aspx?familyid=9b3a2ca6-3647-4070-9f41-a333c6b9181d
239This contains some additional libraries needed to compile Vim,
240such as msvcrt.lib. You must install |dotnet-1.1-redist| before
241installing the .NET 1.1 SDK.
242
243
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000244Getting the WinDbg debugger *windbg-download*
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000245
246The Debugging Tools for Windows can be downloaded from
247 http://www.microsoft.com/whdc/devtools/debugging/default.mspx
248This includes the WinDbg debugger, which you will want if you ever need
249to debug Vim itself. An earlier version of the Debugging Tools
250is also available through the Platform SDK, |ms-platform-sdk|.
251
252
Bram Moolenaar98385dc2008-06-20 14:52:32 +0000253Visual C++ 2005 Express Edition *msvc-2005-express*
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000254-------------------------------
255
Bram Moolenaarfc1421e2006-04-20 22:17:20 +0000256Visual C++ 2005 Express Edition can be downloaded for free from:
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000257 http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
258This includes the IDE and the debugger. You will also need
259|ms-platform-sdk|. You can build Vim with Make_mvc.mak.
260
261Instructions for integrating the Platform SDK into VC Express:
262 http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx
263
264
Bram Moolenaar304925e2018-06-30 16:27:02 +02002652. MSYS2 with MinGW
266===================
Bram Moolenaarce2f2e02014-08-22 18:12:57 +0200267
Bram Moolenaar304925e2018-06-30 16:27:02 +02002682.1. Setup the basic msys2 environment
269
270Go to the official page of MSYS2: https://www.msys2.org
271Download an installer:
272
273* msys2-x86_64-YYYYMMDD.exe for 64-bit Windows
274 (Even if you want to build 32-bit Vim)
275* msys2-i686-YYYYMMDD.exe for 32-bit Windows
276
277Execute the installer and follow the instructions to update basic packages.
278At the end keep the checkbox checked to run msys2 now. If needed, you can
279open the window from the start menu, MSYS2 64 bit / MSYS2 MSYS
280
281Execute:
282 $ pacman -Syu
283
284And restart MSYS2 window (select "MSYS2 MSYS" icon from the Start Menu).
285Then execute:
286 $ pacman -Su
287
288If pacman complains that `catgets` and `libcatgets` conflict with another
289package, select `y` to remove them.
290
291
2922.2. Install additional packages for building Vim
293
294The following package groups are required for building Vim:
295
296* base-devel
297* mingw-w64-i686-toolchain (for building 32-bit Vim)
298* mingw-w64-x86_64-toolchain (for building 64-bit Vim)
299
300Use the following command to install them:
301
302 $ pacman -S base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
303
304Or you can use the `pacboy` command to avoid long package names:
305
306 $ pacboy -S base-devel: toolchain:m
307
308(See `pacboy help` for the help.)
309
310
3112.3. Keep the build environment up-to-date
312
313After you have installed the build environment, you may want to keep it
314up-to-date (E.g. always use the latest GCC).
315In that case, you just need to execute the command:
316 $ pacman -Syu
317
318
319# Build Vim
320
321Select one of the following icon from the Start Menu:
322
323* MSYS2 MinGW 32-bit (To build 32-bit versions of Vim)
324* MSYS2 MinGW 64-bit (To build 64-bit versions of Vim)
325
326Go to the source directory of Vim, then execute the make command. E.g.:
327
328 make -f Make_ming.mak
329 make -f Make_ming.mak GUI=no
330 make -f Make_ming.mak GUI=no DEBUG=yes
331
332NOTE: you can't execute the vim.exe in the MSYS console, open a normal Windows
333console for that. You need to set $PATH to be able to build there, e.g.:
334
335 set PATH=c:\msys64\mingw32\bin;c:\msys64\usr\bin;%PATH%
336
337This command is in msys32.bat. Or or the 64 bit compiler use msys64.bat:
338
339 set PATH=c:\msys64\mingw64\bin;c:\msys64\usr\bin;%PATH%
340
341If you have msys64 in another location you will need to adjust the paths for
342that.
343
344
3453. MinGW
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000346========
347
348(written by Ron Aaron: <ronaharon@yahoo.com>)
349
350This is about how to produce a Win32 binary of gvim with MinGW.
351
352First, you need to get the 'mingw32' compiler, which is free for the download
353at:
354
355 http://www.mingw.org/
356
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100357or you can use 'MinGW-w64' compiler.
358
359 http://mingw-w64.sourceforge.net/
360
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100361Or a compiler provided on msys2:
362
363 https://msys2.github.io/
364
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000365Once you have downloaded the compiler binaries, unpack them on your hard disk
366somewhere, and put them on your PATH. If you are on Win95/98 you can edit
367your AUTOEXEC.BAT file with a line like:
368
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100369 set PATH=C:\MinGW\bin;%PATH%
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000370
371or on NT/2000/XP, go to the Control Panel, (Performance and Maintenance),
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100372System, Advanced, and edit the environment from there. If you use msys2
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100373compilers, set your installed paths (normally one of the following):
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100374
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100375 C:\msys32\mingw32\bin (32-bit msys2, targeting 32-bit builds)
376 C:\msys64\mingw32\bin (64-bit msys2, targeting 32-bit builds)
377 C:\msys64\mingw64\bin (64-bit msys2, targeting 64-bit builds)
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000378
379Test if gcc is on your path. From a CMD (or COMMAND on '95/98) window:
380
381 C:\> gcc --version
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100382 gcc (GCC) 4.8.1
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000383
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100384 C:\> mingw32-make --version
385 GNU Make 3.82.90 (...etc...)
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000386
387Now you are ready to rock 'n' roll. Unpack the vim sources (look on
388www.vim.org for exactly which version of the vim files you need).
389
390Change directory to 'vim\src':
391
392 C:\> cd vim\src
393 C:\VIM\SRC>
394
395and you type:
396
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100397 mingw32-make -f Make_ming.mak gvim.exe
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000398
399After churning for a while, you will end up with 'gvim.exe' in the 'vim\src'
400directory.
401
402You should not need to do *any* editing of any files to get vim compiled this
403way. If, for some reason, you want the console-mode-only version of vim (this
Bram Moolenaar5e3dae82010-03-02 16:19:40 +0100404is NOT recommended on Win32, especially on '95/'98!!!), you can use:
Bram Moolenaard8e21d32010-01-06 21:16:31 +0100405
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100406 mingw32-make -f Make_ming.mak GUI=no vim.exe
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000407
408If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
409(also free!) and compress the file (typical compression is 50%). UPX can be
410found at
411 http://www.upx.org/
412
Bram Moolenaar91856272012-02-29 16:56:39 +0100413As of 2011, UPX still does not support compressing 64-bit EXE's; if you have
414built a 64-bit vim then an alternative to UPX is 'MPRESS'. MPRESS can be found
415at:
416 http://www.matcode.com/mpress.htm
417
418
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000419ADDITION: NLS support with MinGW
420
421(by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>)
422
423If you want National Language Support, read the file src/po/README_mingw.txt.
424You need to uncomment lines in Make_ming.mak to have NLS defined.
425
426
Bram Moolenaar304925e2018-06-30 16:27:02 +02004274. Cygwin
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000428=========
429
430Use Make_cyg.mak with Cygwin's GCC. See
431 http://users.skynet.be/antoine.mechelynck/vim/compile.htm
432
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100433With Cygnus gcc you should use the Unix Makefile instead (you need to get the
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000434Unix archive then). Then you get a Cygwin application (feels like Vim is
Bram Moolenaar48f80c22010-02-24 15:08:27 +0100435running on Unix), while with Make_cyg.mak you get a Windows application (like
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000436with the other makefiles).
437
438
Bram Moolenaar304925e2018-06-30 16:27:02 +02004395. Borland
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000440===========
441
442Use Make_bc5.mak with Borland C++ 5.x. See
443 http://users.skynet.be/antoine.mechelynck/vim/compile.htm
444
445
Bram Moolenaar304925e2018-06-30 16:27:02 +02004466. Cross compiling for Win32 from a Linux machine
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000447=================================================
448
449[Update of 1) needs to be verified]
450
451If you like, you can compile the 'mingw' Win32 version from the comfort of
452your Linux (or other unix) box. To do this, you need to follow a few steps:
453 1) Install the mingw32 cross-compiler. See
Bram Moolenaard8e21d32010-01-06 21:16:31 +0100454 http://www.mingw.org/wiki/LinuxCrossMinGW
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000455 http://www.libsdl.org/extras/win32/cross/README.txt
Bram Moolenaara7241f52008-06-24 20:39:31 +0000456 2) Get and unpack both the Unix sources and the extra archive
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100457 3) in 'Make_cyg_ming.mak', set 'CROSS' to 'yes' instead of 'no'.
458 Make further changes to 'Make_cyg_ming.mak' and 'Make_ming.mak' as you
459 wish. If your cross-compiler prefix differs from the predefined value,
Bram Moolenaard8e21d32010-01-06 21:16:31 +0100460 set 'CROSS_COMPILE' corresponding.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000461 4) make -f Make_ming.mak gvim.exe
462
463Now you have created the Windows binary from your Linux box! Have fun...
464
465
Bram Moolenaar304925e2018-06-30 16:27:02 +02004667. Building with Python support
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000467===============================
468
Bram Moolenaar97cc2382012-10-03 21:46:54 +0200469For building with MSVC 2008 the "Windows Installer" from www.python.org
470works fine.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000471
Bram Moolenaar30a89472016-01-10 14:35:58 +0100472When building, you need to set the following variables at least:
473
474 PYTHON: Where Python is installed. E.g. C:\Python27
475 DYNAMIC_PYTHON: Whether dynamic linking is used. Usually, set to yes.
476 PYTHON_VER: Python version. E.g. 27 for Python 2.7.X.
477
478E.g. When using MSVC (as one line):
479
480 nmake -f Make_mvc.mak
481 PYTHON=C:\Python27 DYNAMIC_PYTHON=yes PYTHON_VER=27
482
Bram Moolenaar97cc2382012-10-03 21:46:54 +0200483(rest written by Ron Aaron: <ronaharon@yahoo.com>)
484
485Building with the mingw32 compiler, and the ActiveState ActivePython:
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000486 http://www.ActiveState.com/Products/ActivePython/
487
488After installing the ActivePython, you will have to create a 'mingw32'
489'libpython20.a' to link with:
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100490 cd $PYTHON/libs
491 pexports python20.dll > python20.def
492 dlltool -d python20.def -l libpython20.a
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000493
494Once that is done, edit the 'Make_ming.mak' so the PYTHON variable points to
495the root of the Python installation (C:\Python20, for example). If you are
496cross-compiling on Linux with the mingw32 setup, you need to also convert all
497the 'Include' files to *unix* line-endings. This bash command will do it
498easily:
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100499 for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000500
501Now just do:
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100502 make -f Make_ming.mak gvim.exe
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000503
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100504And if you use msys2 to build python support (as one line):
505
506 mingw32-make -f Make_ming.mak PYTHON=c:/msys64/mingw64
507 PYTHON_HOME=c:/msys64/mingw64
508 PYTHONINC=-Ic:/msys64/mingw64/include/python2.7
509 DYNAMIC_PYTHON=yes
510 PYTHON_VER=27
511 DYNAMIC_PYTHON_DLL=libpython2.7.dll
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100512 STATIC_STDCPLUS=yes
513
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100514(This is for 64-bit builds. For 32-bit builds, replace mingw64 with mingw32.)
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100515You will end up with a Python-enabled, Win32 version. Enjoy!
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000516
517
Bram Moolenaar304925e2018-06-30 16:27:02 +02005188. Building with Python3 support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100519================================
520
521For building with MSVC 2008 the "Windows Installer" from www.python.org
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100522works fine. Python 3.6 is recommended.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100523
524When building, you need to set the following variables at least:
525
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100526 PYTHON3: Where Python3 is installed. E.g. C:\Python36
Bram Moolenaar30a89472016-01-10 14:35:58 +0100527 DYNAMIC_PYTHON3: Whether dynamic linking is used. Usually, set to yes.
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100528 PYTHON3_VER: Python3 version. E.g. 36 for Python 3.6.X.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100529
530E.g. When using MSVC (as one line):
531
532 nmake -f Make_mvc.mak
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100533 PYTHON3=C:\Python36 DYNAMIC_PYTHON3=yes PYTHON3_VER=36
534
535
536When using msys2 and link with Python3 bundled with msys2 (as one line):
537
538 mingw32-make -f Make_ming.mak PYTHON3=c:/msys64/mingw64
539 PYTHON3_HOME=c:/msys64/mingw64
540 PYTHON3INC=-Ic:/msys64/mingw64/include/python3.6m
541 DYNAMIC_PYTHON3=yes
542 PYTHON3_VER=36
543 DYNAMIC_PYTHON3_DLL=libpython3.6m.dll
544 STATIC_STDCPLUS=yes
545
546(This is for 64-bit builds. For 32-bit builds, replace mingw64 with mingw32.)
Bram Moolenaar30a89472016-01-10 14:35:58 +0100547
548
Bram Moolenaar304925e2018-06-30 16:27:02 +02005499. Building with Racket or MzScheme support
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100550========================================
551
Bram Moolenaar18cfa942017-10-08 17:58:44 +02005521) Building with Racket support (newest)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100553
554MzScheme and PLT Scheme names have been rebranded as Racket. Vim with Racket
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200555support can be built with either MSVC or MinGW (or Cygwin).
556Get it from https://download.racket-lang.org/
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100557
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200558Copy lib/libracket{version}.dll to your Windows system directory. The system
559directory depends on your Windows bitness and Vim bitness:
560 32-bit Vim on 32-bit Windows: C:\Windows\System32
561 32-bit Vim on 64-bit Windows: C:\Windows\SysWOW64
562 64-bit Vim on 64-bit Windows: C:\Windows\System32
563
564For building you need to set the following variables:
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100565
566 MZSCHEME: Where Racket is installed.
567 E.g. C:\Program Files (x86)\Racket
568 DYNAMIC_MZSCHEME: Whether dynamic linking is used. Usually, set to yes.
Bram Moolenaarf55e4c82017-08-01 20:44:53 +0200569 MZSCHEME_VER: Racket DLL version which is used for the file name.
Bram Moolenaar73f44392017-10-07 18:38:43 +0200570 See below for a list of MZSCHEME_VER.
Bram Moolenaarf55e4c82017-08-01 20:44:53 +0200571 The DLL can be found under the lib directory. E.g.
572 C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100573 MZSCHEME_COLLECTS: (Optional) Path of the collects directory used at
574 runtime. Default: $(MZSCHEME)\collects
575 User can override this with the PLTCOLLECTS environment
576 variable.
577
Bram Moolenaar73f44392017-10-07 18:38:43 +0200578List of MZSCHEME_VER (incomplete):
579
580 Racket ver. | MZSCHEME_VER
581 ==========================
582 6.3 | 3m_9z0ds0
583 6.6 | 3m_a0solc
584 6.8 | 3m_a1zjsw
585 6.10 | 3m_a36fs8
586
587
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100588E.g. When using MSVC (as one line):
589
590 nmake -f Make_mvc.mak
591 MZSCHEME="C:\Program Files (x86)\Racket" DYNAMIC_MZSCHEME=yes
592 MZSCHEME_VER=3m_9z0ds0
593
594Or when using MinGW (as one line):
595
596 mingw32-make -f Make_ming.mak
597 MZSCHEME='C:/Program\ Files\ (x86)/Racket' DYNAMIC_MZSCHEME=yes
598 MZSCHEME_VER=3m_9z0ds0
599
600 Spaces should be escaped with '\'.
601
602
Bram Moolenaar18cfa942017-10-08 17:58:44 +02006032) Building with MzScheme support (older)
604
605(written by Sergey Khorev <sergey.khorev@gmail.com>)
606
607Vim with MzScheme (http://www.plt-scheme.org/software/mzscheme) support can
608be built with either MSVC, or MinGW, or Cygwin. Supported versions are 205 and
609above (including 299 and 30x series).
610
611The MSVC build is quite straightforward. Simply invoke (in one line)
612nmake -fMake_mvc.mak MZSCHEME=<Path-to-MzScheme>
613 [MZSCHEME_VER=<MzScheme-version>] [DYNAMIC_MZSCHEME=<yes or no>]
614where <MzScheme-version> is the last seven characters from MzScheme dll name
615(libmzschXXXXXXX.dll).
616If DYNAMIC_MZSCHEME=yes, resulting executable will not depend on MzScheme
617DLL's, but will load them in runtime on demand.
618
619Building dynamic MzScheme support on MinGW and Cygwin is similar. Take into
620account that <Path-to-MzScheme> should contain slashes rather than backslashes
621(e.g. d:/Develop/MzScheme)
622
623"Static" MzScheme support (Vim executable will depend on MzScheme DLLs
624explicitly) on MinGW and Cygwin requires additional step.
625
626libmzschXXXXXXX.dll and libmzgcXXXXXXX.dll should be copied from
627%WINDOWS%\System32 to other location (either build directory, some temporary
628dir or even MzScheme home).
629
630Pass that path as MZSCHEME_DLLS parameter for Make. E.g.,
631make -f Make_cyg.mak MZSCHEME=d:/Develop/MzScheme MZSCHEME_VER=209_000
632 MZSCHEME_DLLS=c:/Temp DYNAMIC_MZSCHEME=no
633
634After a successful build, these dlls can be freely removed, leaving them in
635%WINDOWS%\System32 only.
636
637
638
Bram Moolenaar304925e2018-06-30 16:27:02 +020063910. Building with Lua support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100640============================
641
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100642Vim with Lua support can be built with either MSVC or MinGW (or maybe Cygwin).
643You can use binaries from LuaBinaries: http://luabinaries.sourceforge.net/
644This also applies to when you get a Vim executable and don't build yourself,
645do the part up to "Build".
Bram Moolenaar30a89472016-01-10 14:35:58 +0100646
6471) Download and install LuaBinaries
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100648
Bram Moolenaar30a89472016-01-10 14:35:58 +0100649Go to the Download page of LuaBinaries:
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100650 http://luabinaries.sourceforge.net/download.html
Bram Moolenaar30a89472016-01-10 14:35:58 +0100651
652Download lua-X.Y.Z_Win32_dllw4_lib.zip for x86 or
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100653lua-X.Y.Z_Win64_dllw4_lib.zip for x64. You can use them both for MSVC and
Bram Moolenaar30a89472016-01-10 14:35:58 +0100654MinGW.
655
656Unpack it to a working directory. E.g. C:\projects\lua53.
657Lua's header files will be installed under the include directory.
658
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100659Copy luaXY.dll to your Windows system directory. The system directory depends
660on your Windows bitness and Vim bitness:
661 32-bit Vim on 32-bit Windows: C:\Windows\System32
662 32-bit Vim on 64-bit Windows: C:\Windows\SysWOW64
663 64-bit Vim on 64-bit Windows: C:\Windows\System32
664
665Or another option is copying luaXY.dll to the directory where gvim.exe
666(or vim.exe) is.
667
Bram Moolenaar30a89472016-01-10 14:35:58 +0100668
6692) Build
Bram Moolenaar30a89472016-01-10 14:35:58 +0100670
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100671You need to set LUA, DYNAMIC_LUA and LUA_VER.
672
673 LUA: Where Lua's header files are installed. E.g. C:\projects\lua53.
674 DYNAMIC_LUA: Whether dynamic linking is used. Set to yes.
675 LUA_VER: Lua version. E.g. 53 for Lua 5.3.X.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100676
677E.g. When using MSVC (as one line):
678
679 nmake -f Make_mvc.mak
680 LUA=C:\projects\lua53 DYNAMIC_LUA=yes LUA_VER=53
681
682Or when using MinGW (as one line):
683
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200684 mingw32-make -f Make_ming.mak
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100685 LUA=C:/projects/lua53 DYNAMIC_LUA=yes LUA_VER=53
Bram Moolenaar30a89472016-01-10 14:35:58 +0100686
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100687
688Or when using Cygwin (as one line) (untested):
Bram Moolenaar30a89472016-01-10 14:35:58 +0100689
690 make -f Make_cyg.mak
691 LUA=/cygdrive/c/projects/lua53 DYNAMIC_LUA=yes LUA_VER=53
692
693
Bram Moolenaar304925e2018-06-30 16:27:02 +020069411. Building with Perl support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100695==============================
696
697Vim with Perl support can be built with either MSVC or MinGW (or Cygwin).
698You can use binaries from ActiveState (ActivePerl) or Strawberry Perl.
699
700 http://www.activestate.com/activeperl
701 http://strawberryperl.com/
702
703When building, you need to set the following variables:
704
705 PERL: Where perl is installed. E.g. C:\Perl, C:\Strawberry\perl
706 DYNAMIC_PERL: Whether dynamic linking is used. Usually, set to yes.
707 PERL_VER: Perl version. E.g. 522 for Perl 5.22.X.
708
709E.g. When using MSVC (as one line):
710
711 nmake -f Make_mvc.mak
712 PERL=C:\Perl DYNAMIC_PERL=yes PERL_VER=522
713
714Or when using MinGW (as one line):
715
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200716 mingw32-make -f Make_ming.mak
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100717 PERL=C:/Perl DYNAMIC_PERL=yes PERL_VER=522
Bram Moolenaar30a89472016-01-10 14:35:58 +0100718
719
Bram Moolenaar304925e2018-06-30 16:27:02 +020072012. Building with Ruby support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100721==============================
722
723Vim with Ruby support can be built with either MSVC or MinGW (or Cygwin).
724Ruby doesn't provide the official Windows binaries. The most widely used
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200725Windows binaries might be RubyInstaller. Currently Ruby 2.4 is recommended.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100726
727 http://rubyinstaller.org/
728
729If you use MinGW you can easily build with RubyInstaller, but if you use MSVC
730you need some tricks described below.
731(Another binary distribution is ActiveScriptRuby:
732 http://www.artonx.org/data/asr/)
733
734When building, you need to set the following variables at least:
735
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200736 RUBY: Where ruby is installed. E.g. C:\Ruby24
Bram Moolenaar6384c5d2016-09-06 22:06:35 +0200737 DYNAMIC_RUBY: Whether dynamic linking is used. Usually, set to yes.
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200738 RUBY_VER: Ruby version. E.g. 24 for Ruby 2.4.X.
Bram Moolenaar6384c5d2016-09-06 22:06:35 +0200739 RUBY_API_VER_LONG: Ruby API version in a long format.
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200740 E.g. 2.4.0 for Ruby 2.4.X.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100741
742Ruby version vs. Ruby API version:
743
744 Ruby ver. | Ruby API ver.
745 =========================
746 1.8.X | 1.8
747 1.9.[1-3] | 1.9.1
748 2.0.0 | 2.0.0
749 2.X.Y | 2.X.0
750
751(Ruby 1.9.0 is excluded from the table because it is an unstable version.)
752
753
754A) Using MSVC
755
756If you want to link with ruby, normally you must use the same compiler as
757which was used to build the ruby binary. RubyInstaller is built with MinGW,
758so normally you cannot use MSVC for building Vim if you want to link with
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200759RubyInstaller. If you use a different compiler, there are mainly two problems:
Bram Moolenaar30a89472016-01-10 14:35:58 +0100760config.h and Ruby's DLL name. Here are the steps for working around them:
761
762 1) Download and Install RubyInstaller.
763 You can install RubyInstaller with the default options and directory.
764 E.g.:
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200765 C:\Ruby24 (32-bit) or C:\Ruby24-x64 (64-bit)
Bram Moolenaar30a89472016-01-10 14:35:58 +0100766
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200767 Ruby 2.4.X is used in this example.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100768
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200769 2) Download Ruby 2.4.X's source code and generate config.h:
Bram Moolenaar30a89472016-01-10 14:35:58 +0100770
771 cd C:\projects
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200772 git clone https://github.com/ruby/ruby.git -b ruby_2_4
Bram Moolenaar30a89472016-01-10 14:35:58 +0100773 cd ruby
774 win32\configure.bat
775 nmake .config.h.time
776
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200777 Note that ruby_2_4 is the branch name for Ruby 2.4.X's source code.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100778 There is no need to build whole Ruby, just config.h is needed.
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100779 If you use 32-bit MSVC 2015, the config.h is generated in the
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200780 .ext\include\i386-mswin32_140 directory.
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100781 If you use 64-bit MSVC 2015, the config.h is generated in the
782 .ext\include\x64-mswin64_140 directory.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100783
784 3) Install the generated config.h.
785
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100786 For 32-bit version:
787
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100788 xcopy /s .ext\include C:\Ruby24\include\ruby-2.4.0
Bram Moolenaar30a89472016-01-10 14:35:58 +0100789
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100790 For 64-bit version:
791
792 xcopy /s .ext\include C:\Ruby24-x64\include\ruby-2.4.0
793
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200794 Note that 2.4.0 is Ruby API version of Ruby 2.4.X.
795 You may need to close the console and reopen it to pick up the new $PATH.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100796
797 4) Build Vim. Note that you need to adjust some variables (as one line):
798
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100799 For 32-bit version:
800
Bram Moolenaar30a89472016-01-10 14:35:58 +0100801 nmake -f Make_mvc.mak
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200802 RUBY=C:\Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0
Bram Moolenaar30a89472016-01-10 14:35:58 +0100803 RUBY_MSVCRT_NAME=msvcrt
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200804 WINVER=0x501
Bram Moolenaar30a89472016-01-10 14:35:58 +0100805
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100806 For 64-bit version, replace RUBY=C:\Ruby24 with RUBY=C:\Ruby24-x64.
807
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200808 If you set WINVER explicitly, it must be set to >=0x500, when building
809 with Ruby 2.1 or later. (Default is 0x501.)
Bram Moolenaar30a89472016-01-10 14:35:58 +0100810 When using this trick, you also need to set RUBY_MSVCRT_NAME to msvcrt
811 which is used for the Ruby's DLL name.
812
813B) Using MinGW
814
815Using MinGW is easier than using MSVC when linking with RubyInstaller.
816After you install RubyInstaller, just type this (as one line):
817
818 mingw32-make -f Make_ming.mak
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100819 RUBY=C:/Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200820 WINVER=0x501
Bram Moolenaar30a89472016-01-10 14:35:58 +0100821
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100822For 64-bit version, replace RUBY=C:/Ruby24 with RUBY=C:/Ruby24-x64.
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200823If you set WINVER explicitly, it must be set to >=0x500, when building with
824Ruby 2.1 or later. (Default is 0x501.)
825
Bram Moolenaar30a89472016-01-10 14:35:58 +0100826
827
Bram Moolenaar304925e2018-06-30 16:27:02 +020082813. Building with Tcl support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100829=============================
830
831Vim with Tcl support can be built with either MSVC or MinGW (or Cygwin).
832You can use binaries from ActiveState (ActiveTcl).
833
834 http://www.activestate.com/activetcl
835
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200836For MSVC 2015 use version 8.6.6 or later.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100837When building, you need to set the following variables:
838
839 TCL: Where tcl is installed. E.g. C:\Tcl86
840 DYNAMIC_TCL: Whether dynamic linking is used. Usually, set to yes.
841 TCL_VER: Tcl version in a short format. E.g. 86 for Tcl 8.6.X.
842 TCL_VER_LONG: Tcl version in a long format. E.g. 8.6 for Tcl 8.6.X.
843
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200844Sometimes the Tcl dll name changes. E.g. ActiveTcl 8.6.4 comes with tcl86.dll,
845but ActiveTcl 8.6.6 comes with tcl86t.dll. You can set the dll name by setting
846the TCL_DLL variable:
847 TCL_DLL=tcl86t.dll
848
Bram Moolenaar30a89472016-01-10 14:35:58 +0100849E.g. When using MSVC (as one line):
850
851 nmake -f Make_mvc.mak
852 TCL=C:\Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
853
854Or when using MinGW (as one line):
855
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200856 mingw32-make -f Make_ming.mak
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100857 TCL=C:/Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
Bram Moolenaar30a89472016-01-10 14:35:58 +0100858
859
Bram Moolenaar304925e2018-06-30 16:27:02 +020086014. Building with Terminal support
Bram Moolenaar8f84c3a2017-07-22 16:14:44 +0200861==================================
862
Bram Moolenaar8a773062017-07-24 22:29:21 +0200863Vim with Terminal support can be built with either MSVC, MinGW or Cygwin.
Bram Moolenaar2aeaf3f2017-07-23 17:11:15 +0200864This uses the included libvterm and winpty. No extra header files or
Bram Moolenaar8a773062017-07-24 22:29:21 +0200865libraries are needed for building. Just set TERMINAL to yes.
Bram Moolenaar2aeaf3f2017-07-23 17:11:15 +0200866
Bram Moolenaar8a773062017-07-24 22:29:21 +0200867E.g. When using MSVC:
Bram Moolenaar8f84c3a2017-07-22 16:14:44 +0200868
Bram Moolenaar8a773062017-07-24 22:29:21 +0200869 nmake -f Make_mvc.mak TERMINAL=yes
Bram Moolenaar8f84c3a2017-07-22 16:14:44 +0200870
Bram Moolenaar7f88b652017-12-14 13:15:19 +0100871Or when using MinGW:
Bram Moolenaar8f84c3a2017-07-22 16:14:44 +0200872
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200873 mingw32-make -f Make_ming.mak TERMINAL=yes
Bram Moolenaar8f84c3a2017-07-22 16:14:44 +0200874
875
Bram Moolenaar304925e2018-06-30 16:27:02 +020087615. Building with DirectX (DirectWrite) support
Bram Moolenaar7f88b652017-12-14 13:15:19 +0100877===============================================
878
879Vim with DirectX (DirectWrite) support can be built with either MSVC or MinGW.
880This requires dwrite_2.h and some other header files which come with Windows
881SDK 8.1 or later (or MinGW-w64), if you want to enable color emoji support.
882This also requires MBYTE=yes which is enabled by default.
883
884A) Using MSVC
885
886If you use MSVC 2013 or later, Windows SDK 8.1 or later is used by default.
887You just need to specify DIRECTX=yes:
888
889 nmake -f Make_mvc.mak DIRECTX=yes
890
891If you use MSVC 2012 or earlier, the required header files are not available
892by default. However, you can use the header files from newer SDKs with older
893compilers. E.g.:
894
895 set "INCLUDE=%INCLUDE%;C:\Program Files (x86)\Windows Kits\8.1\Include\um"
896 nmake -f Make_mvc.mak DIRECTX=yes
897
898If you don't need color emoji support, only dwrite.h is required. You can use
899older compilers (e.g. VC2010) without Windows SDK 8.1. E.g.:
900
901 nmake -f Make_mvc.mak DIRECTX=yes COLOR_EMOJI=no
902
903B) Using MinGW-w64
904
905Just set DIRECTX to yes:
906
907 mingw32-make -f Make_ming.mak DIRECTX=yes
908
909
Bram Moolenaar304925e2018-06-30 16:27:02 +020091016. Windows 3.1x
Bram Moolenaar30a89472016-01-10 14:35:58 +0100911================
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000912
Bram Moolenaar6e722e22016-02-26 19:58:58 +0100913The Windows 3.1x support was removed in patch 7.4.1364.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000914
915
Bram Moolenaar304925e2018-06-30 16:27:02 +020091617. MS-DOS
Bram Moolenaar30a89472016-01-10 14:35:58 +0100917==========
Bram Moolenaar071d4272004-06-13 20:20:40 +0000918
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100919The MS-DOS support was removed in patch 7.4.1399. Only very old Vim versions
920work on MS-DOS because of the limited amount of memory available.
Bram Moolenaar734d9982011-07-15 13:52:04 +0200921
922
Bram Moolenaar304925e2018-06-30 16:27:02 +020092318. Installing after building from sources
Bram Moolenaar734d9982011-07-15 13:52:04 +0200924==========================================
925
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100926[provided by Michael Soyka, updated by Ken Takata]
Bram Moolenaar734d9982011-07-15 13:52:04 +0200927
928After you've built the Vim binaries as described above, you're ready to
929install Vim on your system. However, if you've obtained the Vim sources
Bram Moolenaar30a89472016-01-10 14:35:58 +0100930using Git, Mercurial or by downloading them as a unix tar file, you must
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200931first create a "vim80" directory. If you instead downloaded the sources as
Bram Moolenaar734d9982011-07-15 13:52:04 +0200932zip files, you can skip this setup as the zip archives already have the
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100933correct directory structure.
Bram Moolenaar734d9982011-07-15 13:52:04 +0200934
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200935 A. Create a Vim "runtime" subdirectory named "vim80"
Bram Moolenaar734d9982011-07-15 13:52:04 +0200936 -----------------------------------------------------
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100937 If you obtained your Vim sources as zip files, you can skip this step.
Bram Moolenaar734d9982011-07-15 13:52:04 +0200938 Otherwise, continue reading.
939
940 Go to the directory that contains the Vim "src" and "runtime"
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200941 directories and create a new subdirectory named "vim80".
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100942
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200943 Copy the "runtime" files into "vim80":
944 copy runtime\* vim80
Bram Moolenaar734d9982011-07-15 13:52:04 +0200945
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200946 B. Copy the new binaries into the "vim80" directory
Bram Moolenaar734d9982011-07-15 13:52:04 +0200947 ----------------------------------------------------
948 Regardless of how you installed the Vim sources, you need to copy the
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200949 new binaries you created above into "vim80":
Bram Moolenaar734d9982011-07-15 13:52:04 +0200950
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200951 copy src\*.exe vim80
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100952 copy src\tee\tee.exe vim80
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200953 copy src\xxd\xxd.exe vim80
Bram Moolenaar734d9982011-07-15 13:52:04 +0200954
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100955 To install the "Edit with Vim" popup menu, you need both 32-bit and 64-bit
956 versions of gvimext.dll. They should be copied to "vim80\GvimExt32" and
957 "vim80\GvimExt64" respectively.
958 First, build the 32-bit version, then:
959
960 mkdir vim80\GvimExt32
961 copy src\GvimExt\gvimext.dll vim80\GvimExt32
962
963 Next, clean the 32-bit version and build the 64-bit version, then:
964
965 mkdir vim80\GvimExt64
966 copy src\GvimExt\gvimext.dll vim80\GvimExt64
967
968 C. Copy gettext and iconv DLLs into the "vim80" directory
969 ----------------------------------------------------------
970 Get gettext and iconv DLLs from the following site:
971 https://github.com/mlocati/gettext-iconv-windows/releases
972 Both 64- and 32-bit versions are needed.
973 Download the files gettextX.X.X.X-iconvX.XX-shared-{32,64}.zip, extract
974 DLLs and place them as follows:
975
976 vim80\
977 | libintl-8.dll
978 | libiconv-2.dll
979 | libgcc_s_sjlj-1.dll (only for 32-bit)
980 |
981 + GvimExt32\
982 | libintl-8.dll
983 | libiconv-2.dll
984 | libgcc_s_sjlj-1.dll
985 |
986 ` GvimExt64\
987 libintl-8.dll
988 libiconv-2.dll
989
990 The DLLs in the "vim80" should be the same bitness with the (g)vim.exe.
991
992 D. Move the "vim80" directory into the Vim installation subdirectory
Bram Moolenaar734d9982011-07-15 13:52:04 +0200993 ---------------------------------------------------------------------
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200994 Move the "vim80" subdirectory into the subdirectory where you want Vim
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100995 to be installed. Typically, this subdirectory will be named "vim".
Bram Moolenaarbbe917d2016-09-21 22:41:24 +0200996 If you already have a "vim80" subdirectory in "vim", delete it first
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100997 by running its uninstal.exe program.
Bram Moolenaar734d9982011-07-15 13:52:04 +0200998
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100999 E. Install Vim
Bram Moolenaar734d9982011-07-15 13:52:04 +02001000 ---------------
Bram Moolenaarbbe917d2016-09-21 22:41:24 +02001001 "cd" to your Vim installation subdirectory "vim\vim80" and run the
Bram Moolenaar734d9982011-07-15 13:52:04 +02001002 "install.exe" program. It will ask you a number of questions about
1003 how you would like to have your Vim setup. Among these are:
1004 - You can tell it to write a "_vimrc" file with your preferences in the
1005 parent directory.
1006 - It can also install an "Edit with Vim" entry in the Windows Explorer
1007 popup menu.
1008 - You can have it create batch files, so that you can run Vim from the
1009 console or in a shell. You can select one of the directories in your
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +01001010 PATH or add the directory to PATH using the Windows Control Panel.
Bram Moolenaar734d9982011-07-15 13:52:04 +02001011 - Create entries for Vim on the desktop and in the Start menu.
1012
1013Happy Vimming!