blob: 24bbe04f3321103f81f30af899b7416ad5726e48 [file] [log] [blame]
Christian Brabandtc952fd12025-05-14 20:14:30 +02001INSTALLpc.txt - Installation of Vim on PC - Last Update: 2025 May 14
Bram Moolenaar071d4272004-06-13 20:20:40 +00002
3This file contains instructions for compiling Vim. If you already have an
4executable version of Vim, you don't need this.
5
Bram Moolenaara87f8fd2018-09-18 22:58:41 +02006You can find the latest here: https://github.com/vim/vim-win32-installer
Bram Moolenaar18cfa942017-10-08 17:58:44 +02007This 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
K.Takata27b53be2022-09-18 12:25:49 +0100157/8/10/11). There are also instructions for pre-Vista and pre-XP systems, but
Bram Moolenaar02cfac82016-04-21 14:34:58 +020016they 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
Bram Moolenaareae1b912019-05-09 15:12:55 +0200285. Cross compiling for Win32 from a Linux machine
296. Building with Python support
307. Building with Python3 support
318. Building with Racket or MzScheme support
329. Building with Lua support
3310. Building with Perl support
3411. Building with Ruby support
3512. Building with Tcl support
Bram Moolenaar8024f932020-01-14 19:29:13 +01003613. Building with DirectX (DirectWrite) support
K.Takatad8f86292022-03-07 15:16:15 +00003714. Building with libsodium support
3815. Windows 3.1
3916. MS-DOS
Bram Moolenaar362e1a32006-03-06 23:29:24 +000040
K.Takatad8f86292022-03-07 15:16:15 +00004117. Installing after building from sources
Bram Moolenaar734d9982011-07-15 13:52:04 +020042
43
Bram Moolenaar18cfa942017-10-08 17:58:44 +020044The currently recommended way (that means it has been verified to work) is
Christopher Plewright60908c42023-01-13 15:28:14 +000045using the "Visual Studio 2022 Community Edition" installation. This doesn't
46include the SDK for older Windows versions (95 - XP), see "OLDER VERSIONS"
47below for that.
Bram Moolenaar071d4272004-06-13 20:20:40 +000048
49
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000501. Microsoft Visual C++
51=======================
52
Bram Moolenaar73f44392017-10-07 18:38:43 +020053We do not provide download links, since Microsoft keeps changing them. You
Christopher Plewright60908c42023-01-13 15:28:14 +000054can search for "Visual Studio 2022 Community Edition", for example. You will
55need to create a Microsoft account (it's free). You need to download the
56"DVD", and execute the installer from it.
Bram Moolenaar73f44392017-10-07 18:38:43 +020057
Christopher Plewright60908c42023-01-13 15:28:14 +000058When installing "Visual Studio 2022 Community Edition" or "Build Tools for
59Visual Studio 2022" make sure to select "custom" and check all checkboxes
60under "Universal Windows App Development Tools". Or whatever they are called
61now.
62
63Note: Vim source code no longer supports Windows XP since Patch 9.0.0496.
64Also, Visual Studio 2017 was the last version to support a Windows XP target.
65If you still want to target Windows XP, you can check out an older version of
66vim source code and install Visual Studio 2017 or 2015 - making sure to check
67the checkbox for "Windows XP Support for C++". Additional build instructions
68for Windows XP are provided below. |new-msvc-windows-xp|
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +010069
Bram Moolenaar73f44392017-10-07 18:38:43 +020070
Bram Moolenaar362e1a32006-03-06 23:29:24 +000071Visual Studio
72-------------
73
Bram Moolenaar4cbdcbd2022-09-20 21:23:12 +010074Building with Visual Studio (VS2015, VS2017, VS2019 and VS2022) is
75straightforward. Older versions probably don't work.
76
Christopher Plewright60908c42023-01-13 15:28:14 +000077Vim versions built with VS2015 and VS2017 are systematically tested and known
78to work well on Windows versions 7, 8 and 8.1.
79
80Vim versions built with VS2015 and VS2017 are also known to work well on all
81early versions of Windows 10. However, Vim versions built with VS2015 and
82VS2017 may run into a known issue on the latest versions of Windows 10 and 11.
83Building Vim with VS2019 or VS2022 resolves the issue.
84
85Vim versions built with VS2019 and VS2022 are systematically tested and
86known to work on Windows versions 7, 8, 8.1, 10, 11 and all respective server
87variants.
88
K.Takatac3430cb2022-09-21 11:56:41 +010089Visual Studio installed a batch file called vcvarsall.bat, which you must
Bram Moolenaar4cbdcbd2022-09-20 21:23:12 +010090run to set up paths for nmake and MSVC. We provide a batch file
dundargocc57b5bc2022-11-02 13:30:51 +000091"msvc2015.bat" for this. You may need to edit it if you didn't install Visual
Bram Moolenaar4cbdcbd2022-09-20 21:23:12 +010092Studio in the standard location.
K.Takatac3430cb2022-09-21 11:56:41 +010093If you use VS2017 or later, you can use "msvc-latest.bat" (or "msvc2017.bat"
94and so on for the specific version). You must specify the architecture (e.g.
95"x86", "x64", etc.) as the first argument when you use this. If you use VS2017
96Express, you must use "x86_amd64" instead of "x64" for targeting the x64
97platform.
Bram Moolenaar97cc2382012-10-03 21:46:54 +020098
Bram Moolenaar362e1a32006-03-06 23:29:24 +000099To build Vim from the command line with MSVC, use Make_mvc.mak.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000100
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000101nmake -f Make_mvc.mak console Win32 SDK or Microsoft Visual C++
102nmake -f Make_mvc.mak GUI=yes GUI Microsoft Visual C++
103nmake -f Make_mvc.mak OLE=yes OLE Microsoft Visual C++
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000104nmake -f Make_mvc.mak PERL=C:\Perl PYTHON=C:\Python etc.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000105 Perl, Python, etc.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000106
107Make_mvc.mak allows a Vim to be built with various different features and
Bram Moolenaarfda97842019-05-07 22:25:27 +0200108debug support.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000109
Bram Moolenaara0754902019-11-19 23:01:28 +0100110For compiling gVim with IME support on far-east Windows, add IME=yes
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000111to the parameters you pass to Make_mvc.mak.
112
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000113See the specific files for comments and options.
114
115These files have been supplied by George V. Reilly, Ben Singer, Ken Scott and
Bram Moolenaar4cbdcbd2022-09-20 21:23:12 +0100116Ron Aaron; they have been tested. But several things changed after that...
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000117
118
Christopher Plewright60908c42023-01-13 15:28:14 +0000119Targeting Windows XP with MSVC 2015 or 2017 *new-msvc-windows-xp*
120-------------------------------------------
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200121
Bram Moolenaar4cbdcbd2022-09-20 21:23:12 +0100122(The support for pre-Vista was removed in patch 9.0.0496. If you want to
K.Takata27b53be2022-09-18 12:25:49 +0100123target Windows XP, use the source code before that.)
124
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200125Beginning with Visual C++ 2012, Microsoft changed the behavior of LINK.EXE
126so that it targets Windows 6.0 (Vista) by default. In order to override
127this, the target Windows version number needs to be passed to LINK like
128follows:
129 LINK ... /subsystem:console,5.01
130
131Make_mvc.mak now supports a macro SUBSYSTEM_VER to pass the Windows version.
Bram Moolenaar73f44392017-10-07 18:38:43 +0200132Use lines like follows to target Windows XP x86 (assuming using Visual C++
1332012 under 64-bit Windows):
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200134 set WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200135 set INCLUDE=%WinSdk71%\Include;%INCLUDE%
136 set LIB=%WinSdk71%\Lib;%LIB%
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200137 set CL=/D_USING_V110_SDK71_
138 nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.01
139
Bram Moolenaar73f44392017-10-07 18:38:43 +0200140To target Windows XP x64 instead of x86, you need to change the settings of
141LIB and SUBSYSTEM_VER:
142 ...
143 set LIB=%WinSdk71%\Lib\x64;%LIB%
144 ...
145 nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.02
146
147If you use Visual C++ 2015 (either Express or Community Edition), executing
148msvc2015.bat will set them automatically. For x86 builds run this without
149options:
150 msvc2015
151For x64 builds run this with the "x86_amd64" option:
152 msvc2015 x86_amd64
Bram Moolenaara87f8fd2018-09-18 22:58:41 +0200153This enables x86_x64 cross compiler. This works on any editions including
154Express edition.
155If you use Community (or Professional) edition, you can enable the x64 native
156compiler by using the "x64" option:
157 msvc2015 x64
Bram Moolenaar73f44392017-10-07 18:38:43 +0200158
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200159The following Visual C++ team blog can serve as a reference page:
160 http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx
161
162
Bram Moolenaar577fadf2019-04-04 20:32:24 +0200163Cross compile support for Windows on ARM64
164------------------------------------------
165
166This depends on VS2017 with the optional ARM64 compiler and SDK
167installed. Use "vcvarsall.bat x64_arm64" as the build environment.
168
169The ARM64 support was provided by Leendert van Doorn.
170
171
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200172OLDER VERSIONS
173
Christopher Plewright60908c42023-01-13 15:28:14 +0000174The minimal supported version is Windows 7. Building with compilers older than
1752015 most likely doesn't work. Since MSVC 2022 can be obtained for free there
176is no point in supporting older versions.
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200177
K.Takata76687d22022-01-25 10:31:37 +0000178If you need the executable to run on Windows 98 or ME, use the 2005 one
Bram Moolenaar4cbdcbd2022-09-20 21:23:12 +0100179|msvc-2005-express|, and use the source code before 8.0.0029. See the
180src/INSTALLpc.txt file for instructions.
Bram Moolenaara0754902019-11-19 23:01:28 +0100181
Bram Moolenaara0754902019-11-19 23:01:28 +0100182
Bram Moolenaar304925e2018-06-30 16:27:02 +02001832. MSYS2 with MinGW
184===================
Bram Moolenaarce2f2e02014-08-22 18:12:57 +0200185
Christian Brabandtc952fd12025-05-14 20:14:30 +02001862.1 Buidling x86 32bit or 64bit versions.
187
1882.1.1. Setup the basic msys2 environment
Bram Moolenaar304925e2018-06-30 16:27:02 +0200189
190Go to the official page of MSYS2: https://www.msys2.org
191Download an installer:
192
193* msys2-x86_64-YYYYMMDD.exe for 64-bit Windows
194 (Even if you want to build 32-bit Vim)
195* msys2-i686-YYYYMMDD.exe for 32-bit Windows
196
197Execute the installer and follow the instructions to update basic packages.
198At the end keep the checkbox checked to run msys2 now. If needed, you can
Bram Moolenaara87f8fd2018-09-18 22:58:41 +0200199open the window from the start menu, MSYS2 64 bit / MSYS2 MSYS.
Bram Moolenaar304925e2018-06-30 16:27:02 +0200200
201Execute:
202 $ pacman -Syu
Bram Moolenaara87f8fd2018-09-18 22:58:41 +0200203
Bram Moolenaar2346a632021-06-13 19:02:49 +0200204And restart MSYS2 console (select "MSYS2 MSYS 32-Bit" icon from the Start
205Menu for building 32 bit Vim, otherwise select "MSYS2 MinGW 64-Bit").
Bram Moolenaar304925e2018-06-30 16:27:02 +0200206Then execute:
207 $ pacman -Su
208
209If pacman complains that `catgets` and `libcatgets` conflict with another
210package, select `y` to remove them.
211
212
Christian Brabandtc952fd12025-05-14 20:14:30 +02002132.1.2. Install additional packages for building Vim
Bram Moolenaar304925e2018-06-30 16:27:02 +0200214
215The following package groups are required for building Vim:
216
217* base-devel
218* mingw-w64-i686-toolchain (for building 32-bit Vim)
219* mingw-w64-x86_64-toolchain (for building 64-bit Vim)
Christian Brabandt177437c2023-09-17 16:36:33 +0200220* git (optional, to clone the repository)
221* pactoys (optional for the pacboy command)
Bram Moolenaar304925e2018-06-30 16:27:02 +0200222
Bram Moolenaara87f8fd2018-09-18 22:58:41 +0200223(These groups also include some useful packages which are not used by Vim.)
Bram Moolenaar304925e2018-06-30 16:27:02 +0200224Use the following command to install them:
225
Christian Brabandt177437c2023-09-17 16:36:33 +0200226 $ pacman -S base-devel mingw-w64-i686-toolchain \
227 mingw-w64-x86_64-toolchain pactoys git
Bram Moolenaar304925e2018-06-30 16:27:02 +0200228
229Or you can use the `pacboy` command to avoid long package names:
230
231 $ pacboy -S base-devel: toolchain:m
232
Bram Moolenaara87f8fd2018-09-18 22:58:41 +0200233The suffix ":" means that it disables the package name translation.
234The suffix ":m" means both i686 and x86_64. You can also use the ":i" suffix
Christian Brabandtc952fd12025-05-14 20:14:30 +0200235to install only i686, the ":x" suffix for x86_64 and ":a" for "aarch64".
Bram Moolenaar304925e2018-06-30 16:27:02 +0200236(See `pacboy help` for the help.)
237
Bram Moolenaara87f8fd2018-09-18 22:58:41 +0200238See also the pacman page in ArchWiki for the general usage of pacman:
239 https://wiki.archlinux.org/index.php/pacman
240
241MSYS2 has its own git package, and you can also install it via pacman:
242
243 $ pacman -S git
244
Bram Moolenaar304925e2018-06-30 16:27:02 +0200245
Christian Brabandtc952fd12025-05-14 20:14:30 +02002462.1.3. Keep the build environment up-to-date
Bram Moolenaar304925e2018-06-30 16:27:02 +0200247
248After you have installed the build environment, you may want to keep it
249up-to-date (E.g. always use the latest GCC).
250In that case, you just need to execute the command:
251 $ pacman -Syu
252
253
Christian Brabandtc952fd12025-05-14 20:14:30 +02002542.1.4. Build Vim
Bram Moolenaar304925e2018-06-30 16:27:02 +0200255
256Select one of the following icon from the Start Menu:
257
258* MSYS2 MinGW 32-bit (To build 32-bit versions of Vim)
259* MSYS2 MinGW 64-bit (To build 64-bit versions of Vim)
260
Andrey A. Voropaev157397e2024-12-26 15:55:24 +0100261Before building look through notes for MinGW in part 3 below.
262
Bram Moolenaar304925e2018-06-30 16:27:02 +0200263Go to the source directory of Vim, then execute the make command. E.g.:
264
265 make -f Make_ming.mak
266 make -f Make_ming.mak GUI=no
267 make -f Make_ming.mak GUI=no DEBUG=yes
268
Bram Moolenaara87f8fd2018-09-18 22:58:41 +0200269NOTE: you can't execute vim.exe in the MSYS2 console, open a normal Windows
Bram Moolenaar304925e2018-06-30 16:27:02 +0200270console for that. You need to set $PATH to be able to build there, e.g.:
271
272 set PATH=c:\msys64\mingw32\bin;c:\msys64\usr\bin;%PATH%
273
Bram Moolenaara87f8fd2018-09-18 22:58:41 +0200274This command is in msys32.bat. Or for the 64 bit compiler use msys64.bat:
Bram Moolenaar304925e2018-06-30 16:27:02 +0200275
276 set PATH=c:\msys64\mingw64\bin;c:\msys64\usr\bin;%PATH%
277
278If you have msys64 in another location you will need to adjust the paths for
279that.
280
Christian Brabandtc952fd12025-05-14 20:14:30 +02002812.1.5. Build Vim with Clang
Yegappan Lakshmanan1630bd92022-06-14 12:30:25 +0100282
283The following package group is required for building Vim with Clang:
284
285* mingw-w64-clang-x86_64-clang
286
287Use the following command to install it:
288
289 $ pacman -S mingw-w64-clang-x86_64-clang
290
291Go to the source directory of Vim, then execute the make command. E.g.:
292
293 CC=clang
294 CXX=clang++
Yegappan Lakshmanancf65d882022-06-15 18:31:45 +0100295 # To build Vim without the GUI support
Yegappan Lakshmanan1630bd92022-06-14 12:30:25 +0100296 make -f Make_ming.mak GUI=no
Yegappan Lakshmanancf65d882022-06-15 18:31:45 +0100297 # To build Vim with the GUI support
298 make -f Make_ming.mak GUI=yes XPM=no
Yegappan Lakshmanan1630bd92022-06-14 12:30:25 +0100299
300To build Vim with the address sanitizer (ASAN), execute the following command:
301
302 CC=clang
303 CXX=clang++
304 make -f Make_ming.mak DEBUG=yes ASAN=yes
Bram Moolenaar304925e2018-06-30 16:27:02 +0200305
Christian Brabandtc952fd12025-05-14 20:14:30 +02003062.2 Buidling an Arch64 version of Vim
307
3082.2.1. Setup the basic msys2 environment
309
310See also https://www.msys2.org/wiki/arm64/
311Go to the official page of MSYS2: https://www.msys2.org
312
313Download the self-extracting archive:
314
315* msys2-base-x86_64-latest.sfx.exe
316
317Execute the self-extracting archive into a folder of your choice.
318In the extracted folder, run clangarm64.exe
319This will open a MSYS2 terminal window for you.
320
321Execute:
322 $ pacman -Syu
323
324And restart MSYS2 console. Then execute:
325 $ pacman -Su
326
327
3282.2.2. Install additional packages for building Vim
329
330 $ pacman -S mingw-w64-clang-aarch64-clang mingw-w64-clang-aarch64-toolchain base-devel git
331
332Or you can use the `pacboy` command to avoid long package names:
333
334 $ pacboy -S base-devel: toolchain:a
335
336The suffix ":" means that it disables the package name translation.
337The suffix ":m" means both i686 and x86_64. You can also use the ":i" suffix
338to install only i686, the ":x" suffix for x86_64 and ":a" for "aarch64".
339(See `pacboy help` for the help.)
340
341See also the pacman page in ArchWiki for the general usage of pacman:
342 https://wiki.archlinux.org/index.php/pacman
343
3442.2.3. Keep the build environment up-to-date
345
346After you have installed the build environment, you may want to keep it
347up-to-date (E.g. always use the latest GCC).
348In that case, you just need to execute the command:
349 $ pacman -Syu
350
351
3522.2.4. Build Vim
353
354Before building look through notes for MinGW in part 3 below.
355
356Go to the source directory of Vim, then execute the make command. E.g.:
357
358 CC=clang
359 CXX=clang++
360 make -f Make_ming.mak
361 make -f Make_ming.mak GUI=yes
362 make -f Make_ming.mak GUI=no DEBUG=yes
363
364NOTE: you can't execute vim.exe in the MSYS2 console, open a normal Windows
365console for that.
366
367To build Vim with the address sanitizer (ASAN), execute the following command:
368
369 make -f Make_ming.mak DEBUG=yes ASAN=yes
370
Bram Moolenaar304925e2018-06-30 16:27:02 +02003713. MinGW
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000372========
373
Bram Moolenaara0754902019-11-19 23:01:28 +0100374(written by Ron Aaron: <ronaharon@yahoo.com>, updated by Ken Takata, et al.)
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000375
Bram Moolenaara0754902019-11-19 23:01:28 +0100376This is about how to produce a Win32 binary of gvim with MinGW from the normal
377Command Prompt window. (To use MSYS2 console, see above.)
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000378
Bram Moolenaara0754902019-11-19 23:01:28 +0100379First, you need to get the 'MinGW-w64' compiler, which is free for the
380download at:
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100381
382 http://mingw-w64.sourceforge.net/
383
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100384Or a compiler provided on msys2:
385
Bram Moolenaara0754902019-11-19 23:01:28 +0100386 https://www.msys2.org/
387
388The original 'mingw32' compiler is outdated, and may no longer work:
389
390 http://www.mingw.org/
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100391
Andrey A. Voropaev157397e2024-12-26 15:55:24 +0100392Please note, newer versions of Windows (I believe starting with Win10)
393offer support for UCRT C-library in addition to traditional MSVCRT. As result,
394one may find 2 flavors of MinGW: one compiling against UCRT and another compiling
395against MSVCRT. Currently VIM comes with libXpm.a compiled against MSVCRT,
396so an attempt to build VIM against UCRT will fail with:
397
398 undefined reference to __imp___iob_func
399
400In which case, if one does not need support for XPM, then argument XPM=no can be
401added to make-command. If support is needed, then another flavor of MinGW must
402be used.
403
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000404Once you have downloaded the compiler binaries, unpack them on your hard disk
Bram Moolenaara0754902019-11-19 23:01:28 +0100405somewhere, and put them on your PATH. Go to the Control Panel, (Performance
406and Maintenance), System, Advanced, and edit the environment from there. If
Bram Moolenaar23515b42020-11-29 14:36:24 +0100407you use the standalone MinGW-w64 compiler, the path may depend on your
Bram Moolenaara0754902019-11-19 23:01:28 +0100408installation. If you use msys2 compilers, set your installed paths (normally
409one of the following):
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100410
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100411 C:\msys32\mingw32\bin (32-bit msys2, targeting 32-bit builds)
412 C:\msys64\mingw32\bin (64-bit msys2, targeting 32-bit builds)
413 C:\msys64\mingw64\bin (64-bit msys2, targeting 64-bit builds)
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000414
Bram Moolenaara0754902019-11-19 23:01:28 +0100415Test if gcc is on your path. From a Command Prompt window:
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000416
417 C:\> gcc --version
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100418 gcc (GCC) 4.8.1
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000419
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100420 C:\> mingw32-make --version
421 GNU Make 3.82.90 (...etc...)
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000422
423Now you are ready to rock 'n' roll. Unpack the vim sources (look on
424www.vim.org for exactly which version of the vim files you need).
425
426Change directory to 'vim\src':
427
428 C:\> cd vim\src
429 C:\VIM\SRC>
430
431and you type:
432
Andrey A. Voropaev157397e2024-12-26 15:55:24 +0100433 mingw32-make -f Make_ming.mak ARCH=x86-64 gvim.exe
434
435Note, ARCH is necessary if you don't have the sed command in your $PATH. Just
436make sure that the correct value is used with ARCH. In the example above the
Christian Brabandt0a3b9fb2024-12-27 15:51:09 +0100437value corresponds to 64-bit architecture. For 32-bit the value is "i686".
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000438
439After churning for a while, you will end up with 'gvim.exe' in the 'vim\src'
440directory.
441
Andrey A. Voropaev157397e2024-12-26 15:55:24 +0100442If you also want to get xxd.exe, install.exe etc. then just remove "gvim.exe"
443from the make-command.
444
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000445You should not need to do *any* editing of any files to get vim compiled this
446way. If, for some reason, you want the console-mode-only version of vim (this
Bram Moolenaar5e3dae82010-03-02 16:19:40 +0100447is NOT recommended on Win32, especially on '95/'98!!!), you can use:
Bram Moolenaard8e21d32010-01-06 21:16:31 +0100448
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100449 mingw32-make -f Make_ming.mak GUI=no vim.exe
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000450
451If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
452(also free!) and compress the file (typical compression is 50%). UPX can be
453found at
454 http://www.upx.org/
455
Bram Moolenaar91856272012-02-29 16:56:39 +0100456As of 2011, UPX still does not support compressing 64-bit EXE's; if you have
457built a 64-bit vim then an alternative to UPX is 'MPRESS'. MPRESS can be found
458at:
459 http://www.matcode.com/mpress.htm
460
461
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000462ADDITION: NLS support with MinGW
463
464(by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>)
465
466If you want National Language Support, read the file src/po/README_mingw.txt.
467You need to uncomment lines in Make_ming.mak to have NLS defined.
468
469
Bram Moolenaar304925e2018-06-30 16:27:02 +02004704. Cygwin
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000471=========
472
473Use Make_cyg.mak with Cygwin's GCC. See
474 http://users.skynet.be/antoine.mechelynck/vim/compile.htm
475
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100476With Cygnus gcc you should use the Unix Makefile instead (you need to get the
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000477Unix archive then). Then you get a Cygwin application (feels like Vim is
Bram Moolenaar48f80c22010-02-24 15:08:27 +0100478running on Unix), while with Make_cyg.mak you get a Windows application (like
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000479with the other makefiles).
480
481
Bram Moolenaareae1b912019-05-09 15:12:55 +02004825. Cross compiling for Win32 from a Linux machine
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000483=================================================
484
485[Update of 1) needs to be verified]
486
487If you like, you can compile the 'mingw' Win32 version from the comfort of
488your Linux (or other unix) box. To do this, you need to follow a few steps:
489 1) Install the mingw32 cross-compiler. See
Bram Moolenaard8e21d32010-01-06 21:16:31 +0100490 http://www.mingw.org/wiki/LinuxCrossMinGW
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000491 http://www.libsdl.org/extras/win32/cross/README.txt
Bram Moolenaara7241f52008-06-24 20:39:31 +0000492 2) Get and unpack both the Unix sources and the extra archive
Bram Moolenaar4f7e8212014-11-05 13:53:32 +0100493 3) in 'Make_cyg_ming.mak', set 'CROSS' to 'yes' instead of 'no'.
494 Make further changes to 'Make_cyg_ming.mak' and 'Make_ming.mak' as you
495 wish. If your cross-compiler prefix differs from the predefined value,
Bram Moolenaard8e21d32010-01-06 21:16:31 +0100496 set 'CROSS_COMPILE' corresponding.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000497 4) make -f Make_ming.mak gvim.exe
498
499Now you have created the Windows binary from your Linux box! Have fun...
500
501
Bram Moolenaareae1b912019-05-09 15:12:55 +02005026. Building with Python support
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000503===============================
504
Bram Moolenaara0754902019-11-19 23:01:28 +0100505For building with MSVC the "Windows Installer" from www.python.org works fine.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000506
Bram Moolenaar30a89472016-01-10 14:35:58 +0100507When building, you need to set the following variables at least:
508
509 PYTHON: Where Python is installed. E.g. C:\Python27
510 DYNAMIC_PYTHON: Whether dynamic linking is used. Usually, set to yes.
511 PYTHON_VER: Python version. E.g. 27 for Python 2.7.X.
512
513E.g. When using MSVC (as one line):
514
515 nmake -f Make_mvc.mak
516 PYTHON=C:\Python27 DYNAMIC_PYTHON=yes PYTHON_VER=27
517
Bram Moolenaarba7e1862019-01-09 23:02:43 +0100518When using MinGW and link with the official Python (as one line):
519
520 mingw32-make -f Make_ming.mak
521 PYTHON=C:/Python27 DYNAMIC_PYTHON=yes PYTHON_VER=27
522
523When using msys2 and link with Python2 bundled with msys2 (as one line):
524
525 mingw32-make -f Make_ming.mak PYTHON=c:/msys64/mingw64
526 PYTHON_HOME=c:/msys64/mingw64
527 PYTHONINC=-Ic:/msys64/mingw64/include/python2.7
528 DYNAMIC_PYTHON=yes
529 PYTHON_VER=27
530 DYNAMIC_PYTHON_DLL=libpython2.7.dll
531 STATIC_STDCPLUS=yes
532
533(This is for 64-bit builds. For 32-bit builds, replace mingw64 with mingw32.)
534(STATIC_STDCPLUS is optional. Set to yes if you don't want to require
535libstdc++-6.dll.)
536
537
Bram Moolenaar97cc2382012-10-03 21:46:54 +0200538(rest written by Ron Aaron: <ronaharon@yahoo.com>)
539
540Building with the mingw32 compiler, and the ActiveState ActivePython:
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000541 http://www.ActiveState.com/Products/ActivePython/
542
543After installing the ActivePython, you will have to create a 'mingw32'
544'libpython20.a' to link with:
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100545 cd $PYTHON/libs
546 pexports python20.dll > python20.def
547 dlltool -d python20.def -l libpython20.a
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000548
549Once that is done, edit the 'Make_ming.mak' so the PYTHON variable points to
550the root of the Python installation (C:\Python20, for example). If you are
551cross-compiling on Linux with the mingw32 setup, you need to also convert all
552the 'Include' files to *unix* line-endings. This bash command will do it
553easily:
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100554 for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000555
556Now just do:
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100557 make -f Make_ming.mak gvim.exe
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000558
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +0100559You will end up with a Python-enabled, Win32 version. Enjoy!
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000560
561
Bram Moolenaareae1b912019-05-09 15:12:55 +02005627. Building with Python3 support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100563================================
564
Bram Moolenaara0754902019-11-19 23:01:28 +0100565For building with MSVC the "Windows Installer" from www.python.org works fine.
566Python 3.6 is recommended.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100567
568When building, you need to set the following variables at least:
569
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100570 PYTHON3: Where Python3 is installed. E.g. C:\Python36
Bram Moolenaar30a89472016-01-10 14:35:58 +0100571 DYNAMIC_PYTHON3: Whether dynamic linking is used. Usually, set to yes.
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100572 PYTHON3_VER: Python3 version. E.g. 36 for Python 3.6.X.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100573
574E.g. When using MSVC (as one line):
575
576 nmake -f Make_mvc.mak
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100577 PYTHON3=C:\Python36 DYNAMIC_PYTHON3=yes PYTHON3_VER=36
578
Bram Moolenaarba7e1862019-01-09 23:02:43 +0100579When using MinGW and link with the official Python3 (as one line):
580
581 mingw32-make -f Make_ming.mak
582 PYTHON3=C:/Python36 DYNAMIC_PYTHON3=yes PYTHON3_VER=36
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100583
584When using msys2 and link with Python3 bundled with msys2 (as one line):
585
586 mingw32-make -f Make_ming.mak PYTHON3=c:/msys64/mingw64
587 PYTHON3_HOME=c:/msys64/mingw64
588 PYTHON3INC=-Ic:/msys64/mingw64/include/python3.6m
589 DYNAMIC_PYTHON3=yes
590 PYTHON3_VER=36
591 DYNAMIC_PYTHON3_DLL=libpython3.6m.dll
592 STATIC_STDCPLUS=yes
593
594(This is for 64-bit builds. For 32-bit builds, replace mingw64 with mingw32.)
Bram Moolenaarba7e1862019-01-09 23:02:43 +0100595(STATIC_STDCPLUS is optional. Set to yes if you don't want to require
596libstdc++-6.dll.)
Bram Moolenaar30a89472016-01-10 14:35:58 +0100597
598
Bram Moolenaareae1b912019-05-09 15:12:55 +02005998. Building with Racket or MzScheme support
Bram Moolenaara0754902019-11-19 23:01:28 +0100600===========================================
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100601
Bram Moolenaar18cfa942017-10-08 17:58:44 +02006021) Building with Racket support (newest)
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100603
604MzScheme and PLT Scheme names have been rebranded as Racket. Vim with Racket
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200605support can be built with either MSVC or MinGW (or Cygwin).
606Get it from https://download.racket-lang.org/
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100607
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200608Copy lib/libracket{version}.dll to your Windows system directory. The system
609directory depends on your Windows bitness and Vim bitness:
610 32-bit Vim on 32-bit Windows: C:\Windows\System32
611 32-bit Vim on 64-bit Windows: C:\Windows\SysWOW64
612 64-bit Vim on 64-bit Windows: C:\Windows\System32
613
614For building you need to set the following variables:
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100615
616 MZSCHEME: Where Racket is installed.
617 E.g. C:\Program Files (x86)\Racket
618 DYNAMIC_MZSCHEME: Whether dynamic linking is used. Usually, set to yes.
Bram Moolenaarf55e4c82017-08-01 20:44:53 +0200619 MZSCHEME_VER: Racket DLL version which is used for the file name.
Bram Moolenaar73f44392017-10-07 18:38:43 +0200620 See below for a list of MZSCHEME_VER.
Bram Moolenaarf55e4c82017-08-01 20:44:53 +0200621 The DLL can be found under the lib directory. E.g.
622 C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100623 MZSCHEME_COLLECTS: (Optional) Path of the collects directory used at
624 runtime. Default: $(MZSCHEME)\collects
625 User can override this with the PLTCOLLECTS environment
626 variable.
627
Bram Moolenaar73f44392017-10-07 18:38:43 +0200628List of MZSCHEME_VER (incomplete):
629
630 Racket ver. | MZSCHEME_VER
631 ==========================
632 6.3 | 3m_9z0ds0
633 6.6 | 3m_a0solc
634 6.8 | 3m_a1zjsw
635 6.10 | 3m_a36fs8
636
637
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100638E.g. When using MSVC (as one line):
639
640 nmake -f Make_mvc.mak
641 MZSCHEME="C:\Program Files (x86)\Racket" DYNAMIC_MZSCHEME=yes
642 MZSCHEME_VER=3m_9z0ds0
643
644Or when using MinGW (as one line):
645
646 mingw32-make -f Make_ming.mak
647 MZSCHEME='C:/Program\ Files\ (x86)/Racket' DYNAMIC_MZSCHEME=yes
648 MZSCHEME_VER=3m_9z0ds0
649
650 Spaces should be escaped with '\'.
651
652
Bram Moolenaar18cfa942017-10-08 17:58:44 +02006532) Building with MzScheme support (older)
654
655(written by Sergey Khorev <sergey.khorev@gmail.com>)
656
657Vim with MzScheme (http://www.plt-scheme.org/software/mzscheme) support can
658be built with either MSVC, or MinGW, or Cygwin. Supported versions are 205 and
659above (including 299 and 30x series).
660
661The MSVC build is quite straightforward. Simply invoke (in one line)
662nmake -fMake_mvc.mak MZSCHEME=<Path-to-MzScheme>
663 [MZSCHEME_VER=<MzScheme-version>] [DYNAMIC_MZSCHEME=<yes or no>]
664where <MzScheme-version> is the last seven characters from MzScheme dll name
665(libmzschXXXXXXX.dll).
666If DYNAMIC_MZSCHEME=yes, resulting executable will not depend on MzScheme
667DLL's, but will load them in runtime on demand.
668
669Building dynamic MzScheme support on MinGW and Cygwin is similar. Take into
670account that <Path-to-MzScheme> should contain slashes rather than backslashes
671(e.g. d:/Develop/MzScheme)
672
673"Static" MzScheme support (Vim executable will depend on MzScheme DLLs
674explicitly) on MinGW and Cygwin requires additional step.
675
676libmzschXXXXXXX.dll and libmzgcXXXXXXX.dll should be copied from
677%WINDOWS%\System32 to other location (either build directory, some temporary
678dir or even MzScheme home).
679
680Pass that path as MZSCHEME_DLLS parameter for Make. E.g.,
681make -f Make_cyg.mak MZSCHEME=d:/Develop/MzScheme MZSCHEME_VER=209_000
682 MZSCHEME_DLLS=c:/Temp DYNAMIC_MZSCHEME=no
683
684After a successful build, these dlls can be freely removed, leaving them in
685%WINDOWS%\System32 only.
686
687
688
Bram Moolenaareae1b912019-05-09 15:12:55 +02006899. Building with Lua support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100690============================
691
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100692Vim with Lua support can be built with either MSVC or MinGW (or maybe Cygwin).
693You can use binaries from LuaBinaries: http://luabinaries.sourceforge.net/
694This also applies to when you get a Vim executable and don't build yourself,
695do the part up to "Build".
Bram Moolenaar30a89472016-01-10 14:35:58 +0100696
6971) Download and install LuaBinaries
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100698
Bram Moolenaar30a89472016-01-10 14:35:58 +0100699Go to the Download page of LuaBinaries:
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100700 http://luabinaries.sourceforge.net/download.html
Bram Moolenaar30a89472016-01-10 14:35:58 +0100701
702Download lua-X.Y.Z_Win32_dllw4_lib.zip for x86 or
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100703lua-X.Y.Z_Win64_dllw4_lib.zip for x64. You can use them both for MSVC and
Bram Moolenaar30a89472016-01-10 14:35:58 +0100704MinGW.
705
706Unpack it to a working directory. E.g. C:\projects\lua53.
707Lua's header files will be installed under the include directory.
708
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100709Copy luaXY.dll to your Windows system directory. The system directory depends
710on your Windows bitness and Vim bitness:
711 32-bit Vim on 32-bit Windows: C:\Windows\System32
712 32-bit Vim on 64-bit Windows: C:\Windows\SysWOW64
713 64-bit Vim on 64-bit Windows: C:\Windows\System32
714
715Or another option is copying luaXY.dll to the directory where gvim.exe
716(or vim.exe) is.
717
Bram Moolenaar30a89472016-01-10 14:35:58 +0100718
7192) Build
Bram Moolenaar30a89472016-01-10 14:35:58 +0100720
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100721You need to set LUA, DYNAMIC_LUA and LUA_VER.
722
723 LUA: Where Lua's header files are installed. E.g. C:\projects\lua53.
724 DYNAMIC_LUA: Whether dynamic linking is used. Set to yes.
725 LUA_VER: Lua version. E.g. 53 for Lua 5.3.X.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100726
727E.g. When using MSVC (as one line):
728
729 nmake -f Make_mvc.mak
730 LUA=C:\projects\lua53 DYNAMIC_LUA=yes LUA_VER=53
731
732Or when using MinGW (as one line):
733
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200734 mingw32-make -f Make_ming.mak
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100735 LUA=C:/projects/lua53 DYNAMIC_LUA=yes LUA_VER=53
Bram Moolenaar30a89472016-01-10 14:35:58 +0100736
Bram Moolenaar4e640bd2016-01-16 16:20:38 +0100737
738Or when using Cygwin (as one line) (untested):
Bram Moolenaar30a89472016-01-10 14:35:58 +0100739
740 make -f Make_cyg.mak
741 LUA=/cygdrive/c/projects/lua53 DYNAMIC_LUA=yes LUA_VER=53
742
743
Bram Moolenaareae1b912019-05-09 15:12:55 +020074410. Building with Perl support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100745==============================
746
747Vim with Perl support can be built with either MSVC or MinGW (or Cygwin).
748You can use binaries from ActiveState (ActivePerl) or Strawberry Perl.
749
750 http://www.activestate.com/activeperl
751 http://strawberryperl.com/
752
753When building, you need to set the following variables:
754
755 PERL: Where perl is installed. E.g. C:\Perl, C:\Strawberry\perl
756 DYNAMIC_PERL: Whether dynamic linking is used. Usually, set to yes.
757 PERL_VER: Perl version. E.g. 522 for Perl 5.22.X.
758
759E.g. When using MSVC (as one line):
760
761 nmake -f Make_mvc.mak
Andrey A. Voropaev157397e2024-12-26 15:55:24 +0100762 PERL=C:\StrawberryPerl\perl DYNAMIC_PERL=yes PERL_VER=522
Bram Moolenaar30a89472016-01-10 14:35:58 +0100763
764Or when using MinGW (as one line):
765
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200766 mingw32-make -f Make_ming.mak
Andrey A. Voropaev157397e2024-12-26 15:55:24 +0100767 PERL=C:/StrawberryPerl/perl DYNAMIC_PERL=yes PERL_VER=522
Bram Moolenaar30a89472016-01-10 14:35:58 +0100768
769
Bram Moolenaareae1b912019-05-09 15:12:55 +020077011. Building with Ruby support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100771==============================
772
773Vim with Ruby support can be built with either MSVC or MinGW (or Cygwin).
774Ruby doesn't provide the official Windows binaries. The most widely used
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200775Windows binaries might be RubyInstaller. Currently Ruby 2.4 is recommended.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100776
777 http://rubyinstaller.org/
778
779If you use MinGW you can easily build with RubyInstaller, but if you use MSVC
780you need some tricks described below.
781(Another binary distribution is ActiveScriptRuby:
782 http://www.artonx.org/data/asr/)
783
784When building, you need to set the following variables at least:
785
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200786 RUBY: Where ruby is installed. E.g. C:\Ruby24
Bram Moolenaar6384c5d2016-09-06 22:06:35 +0200787 DYNAMIC_RUBY: Whether dynamic linking is used. Usually, set to yes.
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200788 RUBY_VER: Ruby version. E.g. 24 for Ruby 2.4.X.
Bram Moolenaar6384c5d2016-09-06 22:06:35 +0200789 RUBY_API_VER_LONG: Ruby API version in a long format.
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200790 E.g. 2.4.0 for Ruby 2.4.X.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100791
792Ruby version vs. Ruby API version:
793
794 Ruby ver. | Ruby API ver.
795 =========================
Bram Moolenaar30a89472016-01-10 14:35:58 +0100796 1.9.[1-3] | 1.9.1
797 2.0.0 | 2.0.0
798 2.X.Y | 2.X.0
799
800(Ruby 1.9.0 is excluded from the table because it is an unstable version.)
801
802
803A) Using MSVC
804
805If you want to link with ruby, normally you must use the same compiler as
806which was used to build the ruby binary. RubyInstaller is built with MinGW,
807so normally you cannot use MSVC for building Vim if you want to link with
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200808RubyInstaller. If you use a different compiler, there are mainly two problems:
Bram Moolenaar30a89472016-01-10 14:35:58 +0100809config.h and Ruby's DLL name. Here are the steps for working around them:
810
811 1) Download and Install RubyInstaller.
812 You can install RubyInstaller with the default options and directory.
813 E.g.:
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200814 C:\Ruby24 (32-bit) or C:\Ruby24-x64 (64-bit)
Bram Moolenaar30a89472016-01-10 14:35:58 +0100815
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200816 Ruby 2.4.X is used in this example.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100817
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200818 2) Download Ruby 2.4.X's source code and generate config.h:
Bram Moolenaar30a89472016-01-10 14:35:58 +0100819
820 cd C:\projects
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200821 git clone https://github.com/ruby/ruby.git -b ruby_2_4
Bram Moolenaar30a89472016-01-10 14:35:58 +0100822 cd ruby
823 win32\configure.bat
824 nmake .config.h.time
825
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200826 Note that ruby_2_4 is the branch name for Ruby 2.4.X's source code.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100827 There is no need to build whole Ruby, just config.h is needed.
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100828 If you use 32-bit MSVC 2015, the config.h is generated in the
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200829 .ext\include\i386-mswin32_140 directory.
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100830 If you use 64-bit MSVC 2015, the config.h is generated in the
831 .ext\include\x64-mswin64_140 directory.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100832
833 3) Install the generated config.h.
834
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100835 For 32-bit version:
836
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100837 xcopy /s .ext\include C:\Ruby24\include\ruby-2.4.0
Bram Moolenaar30a89472016-01-10 14:35:58 +0100838
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100839 For 64-bit version:
840
841 xcopy /s .ext\include C:\Ruby24-x64\include\ruby-2.4.0
842
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200843 Note that 2.4.0 is Ruby API version of Ruby 2.4.X.
844 You may need to close the console and reopen it to pick up the new $PATH.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100845
846 4) Build Vim. Note that you need to adjust some variables (as one line):
847
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100848 For 32-bit version:
849
Bram Moolenaar30a89472016-01-10 14:35:58 +0100850 nmake -f Make_mvc.mak
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200851 RUBY=C:\Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0
Bram Moolenaar30a89472016-01-10 14:35:58 +0100852 RUBY_MSVCRT_NAME=msvcrt
K.Takata27b53be2022-09-18 12:25:49 +0100853 WINVER=0x601
Bram Moolenaar30a89472016-01-10 14:35:58 +0100854
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100855 For 64-bit version, replace RUBY=C:\Ruby24 with RUBY=C:\Ruby24-x64.
856
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200857 If you set WINVER explicitly, it must be set to >=0x500, when building
K.Takata27b53be2022-09-18 12:25:49 +0100858 with Ruby 2.1 or later. (Default is 0x601.)
Bram Moolenaar30a89472016-01-10 14:35:58 +0100859 When using this trick, you also need to set RUBY_MSVCRT_NAME to msvcrt
860 which is used for the Ruby's DLL name.
861
862B) Using MinGW
863
864Using MinGW is easier than using MSVC when linking with RubyInstaller.
865After you install RubyInstaller, just type this (as one line):
866
867 mingw32-make -f Make_ming.mak
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100868 RUBY=C:/Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0
K.Takata27b53be2022-09-18 12:25:49 +0100869 WINVER=0x601
Bram Moolenaar30a89472016-01-10 14:35:58 +0100870
Bram Moolenaar59eb0162017-12-10 18:17:44 +0100871For 64-bit version, replace RUBY=C:/Ruby24 with RUBY=C:/Ruby24-x64.
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200872If you set WINVER explicitly, it must be set to >=0x500, when building with
K.Takata27b53be2022-09-18 12:25:49 +0100873Ruby 2.1 or later. (Default is 0x601.)
Bram Moolenaar02cfac82016-04-21 14:34:58 +0200874
Bram Moolenaar30a89472016-01-10 14:35:58 +0100875
876
Bram Moolenaareae1b912019-05-09 15:12:55 +020087712. Building with Tcl support
Bram Moolenaar30a89472016-01-10 14:35:58 +0100878=============================
879
880Vim with Tcl support can be built with either MSVC or MinGW (or Cygwin).
881You can use binaries from ActiveState (ActiveTcl).
882
883 http://www.activestate.com/activetcl
884
Bram Moolenaarba7e1862019-01-09 23:02:43 +0100885Alternatively, you can use the binaries provided by IronTcl from
886
887 https://www.irontcl.com/
888
889They might lack behind the latest version a bit, but should provide 64bit
890and 32bit versions even if ActiveTcl does not provide them anymore.
891
892For building with MSVC 2015 use version 8.6.6 or later.
Bram Moolenaar30a89472016-01-10 14:35:58 +0100893When building, you need to set the following variables:
894
895 TCL: Where tcl is installed. E.g. C:\Tcl86
896 DYNAMIC_TCL: Whether dynamic linking is used. Usually, set to yes.
897 TCL_VER: Tcl version in a short format. E.g. 86 for Tcl 8.6.X.
898 TCL_VER_LONG: Tcl version in a long format. E.g. 8.6 for Tcl 8.6.X.
899
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200900Sometimes the Tcl dll name changes. E.g. ActiveTcl 8.6.4 comes with tcl86.dll,
901but ActiveTcl 8.6.6 comes with tcl86t.dll. You can set the dll name by setting
902the TCL_DLL variable:
903 TCL_DLL=tcl86t.dll
904
Bram Moolenaar30a89472016-01-10 14:35:58 +0100905E.g. When using MSVC (as one line):
906
907 nmake -f Make_mvc.mak
908 TCL=C:\Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
909
910Or when using MinGW (as one line):
911
Bram Moolenaar18cfa942017-10-08 17:58:44 +0200912 mingw32-make -f Make_ming.mak
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100913 TCL=C:/Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6
Bram Moolenaar30a89472016-01-10 14:35:58 +0100914
915
Bram Moolenaar8024f932020-01-14 19:29:13 +010091613. Building with DirectX (DirectWrite) support
Bram Moolenaar7f88b652017-12-14 13:15:19 +0100917===============================================
918
919Vim with DirectX (DirectWrite) support can be built with either MSVC or MinGW.
920This requires dwrite_2.h and some other header files which come with Windows
921SDK 8.1 or later (or MinGW-w64), if you want to enable color emoji support.
922This also requires MBYTE=yes which is enabled by default.
923
924A) Using MSVC
925
926If you use MSVC 2013 or later, Windows SDK 8.1 or later is used by default.
927You just need to specify DIRECTX=yes:
928
929 nmake -f Make_mvc.mak DIRECTX=yes
930
931If you use MSVC 2012 or earlier, the required header files are not available
932by default. However, you can use the header files from newer SDKs with older
933compilers. E.g.:
934
935 set "INCLUDE=%INCLUDE%;C:\Program Files (x86)\Windows Kits\8.1\Include\um"
936 nmake -f Make_mvc.mak DIRECTX=yes
937
938If you don't need color emoji support, only dwrite.h is required. You can use
939older compilers (e.g. VC2010) without Windows SDK 8.1. E.g.:
940
941 nmake -f Make_mvc.mak DIRECTX=yes COLOR_EMOJI=no
942
943B) Using MinGW-w64
944
945Just set DIRECTX to yes:
946
947 mingw32-make -f Make_ming.mak DIRECTX=yes
948
949
K.Takatad8f86292022-03-07 15:16:15 +000095014. Building with libsodium support
951===================================
952
953For better encryption support, you can build Vim with libsodium.
954
955A) Using MSVC
956
957You can download the latest libsodium library from here:
958 https://download.libsodium.org/libsodium/releases/
959
960At this moment, libsodium-1.0.18-stable-msvc.zip is the latest package.
961Unpack it to anywhere you like, and specify the path to the SODIUM option:
962
963 nmake -f Make_mvc.mak SODIUM=C:/path/to/libsodium
964 (libsodium.dll will be used as the libsodium DLL name.)
965
966B) Using MinGW
967
968If you use msys2, you can install the libsodium package by pacman (or pacboy):
969
970 $ pacman -S mingw-w64-x86_64-libsodium # for 64-bit Vim
971 $ pacman -S mingw-w64-i686-libsodium # for 32-bit Vim
972 $ pacboy -S libsodium:m # for both 32-bit and 64-bit Vim
973
974Then set SODIUM to yes:
975
976 mingw32-make -f Make_ming.mak SODIUM=yes
977 (libsodium-23.dll will be used as the libsodium DLL name.)
978
979Or you can set the path to libsodium explicitly:
980
981 mingw32-make -f Make_ming.mak SODIUM=C:/path/to/libsodium
982 (libsodium.dll will be used as the libsodium DLL name.)
983
984
98515. Windows 3.1x
Bram Moolenaar30a89472016-01-10 14:35:58 +0100986================
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000987
Bram Moolenaar6e722e22016-02-26 19:58:58 +0100988The Windows 3.1x support was removed in patch 7.4.1364.
Bram Moolenaar362e1a32006-03-06 23:29:24 +0000989
990
K.Takatad8f86292022-03-07 15:16:15 +000099116. MS-DOS
Bram Moolenaar30a89472016-01-10 14:35:58 +0100992==========
Bram Moolenaar071d4272004-06-13 20:20:40 +0000993
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +0100994The MS-DOS support was removed in patch 7.4.1399. Only very old Vim versions
995work on MS-DOS because of the limited amount of memory available.
Bram Moolenaar734d9982011-07-15 13:52:04 +0200996
997
K.Takatad8f86292022-03-07 15:16:15 +000099817. Installing after building from sources
Bram Moolenaar734d9982011-07-15 13:52:04 +0200999==========================================
1000
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +01001001[provided by Michael Soyka, updated by Ken Takata]
Bram Moolenaar734d9982011-07-15 13:52:04 +02001002
1003After you've built the Vim binaries as described above, you're ready to
1004install Vim on your system. However, if you've obtained the Vim sources
Bram Moolenaar30a89472016-01-10 14:35:58 +01001005using Git, Mercurial or by downloading them as a unix tar file, you must
mikoto2000166f89e2024-09-26 15:52:22 +02001006first create a "vim91" directory. If you instead downloaded the sources as
Bram Moolenaar734d9982011-07-15 13:52:04 +02001007zip files, you can skip this setup as the zip archives already have the
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +01001008correct directory structure.
Bram Moolenaar734d9982011-07-15 13:52:04 +02001009
mikoto2000166f89e2024-09-26 15:52:22 +02001010 A. Create a Vim "runtime" subdirectory named "vim91"
Bram Moolenaar734d9982011-07-15 13:52:04 +02001011 -----------------------------------------------------
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +01001012 If you obtained your Vim sources as zip files, you can skip this step.
Bram Moolenaar734d9982011-07-15 13:52:04 +02001013 Otherwise, continue reading.
1014
1015 Go to the directory that contains the Vim "src" and "runtime"
mikoto2000166f89e2024-09-26 15:52:22 +02001016 directories and create a new subdirectory named "vim91".
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +01001017
mikoto2000166f89e2024-09-26 15:52:22 +02001018 Copy the "runtime" files into "vim91":
1019 copy runtime\* vim91
1020 xcopy /s runtime\* vim91
Bram Moolenaar734d9982011-07-15 13:52:04 +02001021
mikoto2000166f89e2024-09-26 15:52:22 +02001022 B. Copy the new binaries into the "vim91" directory
Bram Moolenaar734d9982011-07-15 13:52:04 +02001023 ----------------------------------------------------
1024 Regardless of how you installed the Vim sources, you need to copy the
mikoto2000166f89e2024-09-26 15:52:22 +02001025 new binaries you created above into "vim91":
Bram Moolenaar734d9982011-07-15 13:52:04 +02001026
mikoto2000166f89e2024-09-26 15:52:22 +02001027 copy src\*.exe vim91
1028 copy src\tee\tee.exe vim91
1029 copy src\xxd\xxd.exe vim91
Bram Moolenaar734d9982011-07-15 13:52:04 +02001030
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +01001031 To install the "Edit with Vim" popup menu, you need both 32-bit and 64-bit
mikoto2000166f89e2024-09-26 15:52:22 +02001032 versions of gvimext.dll. They should be copied to "vim91\GvimExt32" and
1033 "vim91\GvimExt64" respectively.
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +01001034 First, build the 32-bit version, then:
1035
mikoto2000166f89e2024-09-26 15:52:22 +02001036 mkdir vim91\GvimExt32
1037 copy src\GvimExt\gvimext.dll vim91\GvimExt32
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +01001038
1039 Next, clean the 32-bit version and build the 64-bit version, then:
1040
mikoto2000166f89e2024-09-26 15:52:22 +02001041 mkdir vim91\GvimExt64
1042 copy src\GvimExt\gvimext.dll vim91\GvimExt64
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +01001043
mikoto2000166f89e2024-09-26 15:52:22 +02001044 C. Copy gettext and iconv DLLs into the "vim91" directory
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +01001045 ----------------------------------------------------------
1046 Get gettext and iconv DLLs from the following site:
1047 https://github.com/mlocati/gettext-iconv-windows/releases
1048 Both 64- and 32-bit versions are needed.
1049 Download the files gettextX.X.X.X-iconvX.XX-shared-{32,64}.zip, extract
1050 DLLs and place them as follows:
1051
mikoto2000166f89e2024-09-26 15:52:22 +02001052 vim91\
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +01001053 | libintl-8.dll
1054 | libiconv-2.dll
1055 | libgcc_s_sjlj-1.dll (only for 32-bit)
1056 |
1057 + GvimExt32\
1058 | libintl-8.dll
1059 | libiconv-2.dll
1060 | libgcc_s_sjlj-1.dll
1061 |
1062 ` GvimExt64\
1063 libintl-8.dll
1064 libiconv-2.dll
1065
mikoto2000166f89e2024-09-26 15:52:22 +02001066 The DLLs in the "vim91" should be the same bitness with the (g)vim.exe.
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +01001067
mikoto2000166f89e2024-09-26 15:52:22 +02001068 D. Move the "vim91" directory into the Vim installation subdirectory
Bram Moolenaar734d9982011-07-15 13:52:04 +02001069 ---------------------------------------------------------------------
mikoto2000166f89e2024-09-26 15:52:22 +02001070 Move the "vim91" subdirectory into the subdirectory where you want Vim
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +01001071 to be installed. Typically, this subdirectory will be named "vim".
mikoto2000166f89e2024-09-26 15:52:22 +02001072 If you already have a "vim91" subdirectory in "vim", delete it first
Bram Moolenaar30e8e732019-09-27 13:08:36 +02001073 by running its uninstall.exe program.
Bram Moolenaar734d9982011-07-15 13:52:04 +02001074
Bram Moolenaar3bf8c3c2017-11-05 16:04:43 +01001075 E. Install Vim
Bram Moolenaar734d9982011-07-15 13:52:04 +02001076 ---------------
mikoto2000166f89e2024-09-26 15:52:22 +02001077 "cd" to your Vim installation subdirectory "vim\vim91" and run the
Bram Moolenaar734d9982011-07-15 13:52:04 +02001078 "install.exe" program. It will ask you a number of questions about
1079 how you would like to have your Vim setup. Among these are:
1080 - You can tell it to write a "_vimrc" file with your preferences in the
1081 parent directory.
1082 - It can also install an "Edit with Vim" entry in the Windows Explorer
1083 popup menu.
1084 - You can have it create batch files, so that you can run Vim from the
1085 console or in a shell. You can select one of the directories in your
Bram Moolenaar3c6f92e2016-01-02 20:26:36 +01001086 PATH or add the directory to PATH using the Windows Control Panel.
Bram Moolenaar734d9982011-07-15 13:52:04 +02001087 - Create entries for Vim on the desktop and in the Start menu.
1088
1089Happy Vimming!