1INSTALLpc.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 6You can find the latest here: https://github.com/vim/vim-win32-installer 7This page also has links to install support for interfaces such as Perl, 8Python, Lua, etc. 9 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 14This 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. 17 18The recommended way is to build a 32 bit Vim, also on 64 bit systems. You can 19build a 64 bit Vim if you like, the executable will be bigger and Vim won't be 20any faster, but you can edit files larger than 2 Gbyte. 21 22 23Contents: 241. Microsoft Visual C++ 252. Using MSYS2 with MinGW 263. Using MinGW 274. Cygwin 285. 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 3613. Building with DirectX (DirectWrite) support 3714. Windows 3.1 3815. MS-DOS 39 4016. Installing after building from sources 41 42 43The currently recommended way (that means it has been verified to work) is 44using the "Visual Studio Community 2015" installation. This includes the SDK 45needed to target Windows XP. But not older Windows versions (95, 98), see 46"OLDER VERSIONS" below for that. 47 48 491. Microsoft Visual C++ 50======================= 51 52We do not provide download links, since Microsoft keeps changing them. You 53can search for "Visual Studio Community 2015", for example. You will need to 54create a Microsoft account (it's free). 55 56When installing "Visual Studio Community 2015 with Update 3" make sure to 57select "custom" and check "Windows XP Support for C++" and all checkboxes 58under "Universal Windows App Development Tools" 59 60 61Visual Studio 62------------- 63 64Building with Visual Studio (VS2010, VS2012, VS2013, VS2015, VS2017 and VS2019) 65is straightforward. 66 67To build Vim from the command line with MSVC, use Make_mvc.mak. 68Visual Studio installed a batch file called vcvars32.bat, which you must 69run to set up paths for nmake and MSVC. 70 71nmake -f Make_mvc.mak console Win32 SDK or Microsoft Visual C++ 72nmake -f Make_mvc.mak GUI=yes GUI Microsoft Visual C++ 73nmake -f Make_mvc.mak OLE=yes OLE Microsoft Visual C++ 74nmake -f Make_mvc.mak PERL=C:\Perl PYTHON=C:\Python etc. 75 Perl, Python, etc. 76 77Make_mvc.mak allows a Vim to be built with various different features and 78debug support. 79 80For compiling gVim with IME support on far-east Windows, add IME=yes 81to the parameters you pass to Make_mvc.mak. 82 83See the specific files for comments and options. 84 85These files have been supplied by George V. Reilly, Ben Singer, Ken Scott and 86Ron Aaron; they have been tested. 87 88 89Visual C++ 2010 Express Edition *msvc-2010-express* 90------------------------------- 91 92Visual C++ 2010 Express Edition can be downloaded for free from: 93 http://www.microsoft.com/express/vc/Default.aspx 94This includes the IDE and the debugger. 95 96To set the environment execute the msvc2010.bat script. You can then build 97Vim with Make_mvc.mak. 98 99 100Targeting Windows XP with MSVC 2012 and later *new-msvc-windows-xp* 101--------------------------------------------- 102 103Beginning with Visual C++ 2012, Microsoft changed the behavior of LINK.EXE 104so that it targets Windows 6.0 (Vista) by default. In order to override 105this, the target Windows version number needs to be passed to LINK like 106follows: 107 LINK ... /subsystem:console,5.01 108 109Make_mvc.mak now supports a macro SUBSYSTEM_VER to pass the Windows version. 110Use lines like follows to target Windows XP x86 (assuming using Visual C++ 1112012 under 64-bit Windows): 112 set WinSdk71=%ProgramFiles(x86)%\Microsoft SDKs\Windows\v7.1A 113 set INCLUDE=%WinSdk71%\Include;%INCLUDE% 114 set LIB=%WinSdk71%\Lib;%LIB% 115 set CL=/D_USING_V110_SDK71_ 116 nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.01 117 118To target Windows XP x64 instead of x86, you need to change the settings of 119LIB and SUBSYSTEM_VER: 120 ... 121 set LIB=%WinSdk71%\Lib\x64;%LIB% 122 ... 123 nmake -f Make_mvc.mak ... WINVER=0x0501 SUBSYSTEM_VER=5.02 124 125If you use Visual C++ 2015 (either Express or Community Edition), executing 126msvc2015.bat will set them automatically. For x86 builds run this without 127options: 128 msvc2015 129For x64 builds run this with the "x86_amd64" option: 130 msvc2015 x86_amd64 131This enables x86_x64 cross compiler. This works on any editions including 132Express edition. 133If you use Community (or Professional) edition, you can enable the x64 native 134compiler by using the "x64" option: 135 msvc2015 x64 136 137The following Visual C++ team blog can serve as a reference page: 138 http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx 139 140VC 2019 dropped support for targeting Windows XP. If you want a binary that 141targeting Windows XP, use VC 2017 or earlier. 142 143 144Cross compile support for Windows on ARM64 145------------------------------------------ 146 147This depends on VS2017 with the optional ARM64 compiler and SDK 148installed. Use "vcvarsall.bat x64_arm64" as the build environment. 149 150The ARM64 support was provided by Leendert van Doorn. 151 152 153OLDER VERSIONS 154 155The minimal supported version is Windows XP. Building with older compilers 156might still work, but these instructions might be outdated. 157 158If you need the executable to run on Windows 98 or ME, use the 2003 one 159|msvc-2003-toolkit| or |msvc-2005-express|, and use the source code before 1608.0.0029. 161 162Visual C++ Toolkit 2003 *msvc-2003-toolkit* 163----------------------- 164 165NOTE: this most likely does not work 166 167You could download the Microsoft Visual C++ Toolkit 2003 from 168 http://msdn.microsoft.com/visualc/vctoolkit2003/ 169Unfortunately this URL is no longer valid. Unofficial downloads appear to be 170available from links mentioned on these pages (use at your own risk): 171 http://www.filewatcher.com/m/VCToolkitSetup.exe.32952488.0.0.html 172 http://feargame.net/wiki/index.php?title=Building_Source_with_the_VC2003_Toolkit 173 174This contains the command-line tools (compiler, linker, CRT headers, 175and libraries) for Visual Studio .NET 2003, but not the Visual Studio IDE. 176To compile and debug Vim with the VC2003 Toolkit, you will also need 177|ms-platform-sdk|, |dotnet-1.1-redist|, |dotnet-1.1-sdk|, 178and |windbg-download|. 179 180It's easier to download Visual C++ 2008 Express Edition, |msvc-2008-express|, 181which is freely available in perpetuity. 182 183The free Code::Blocks IDE works with the VC2003 Toolkit, as described at 184 http://wiki.codeblocks.org/index.php?title=Integrating_Microsoft_Visual_Toolkit_2003_with_Code::Blocks_IDE 185(This site also takes you through configuring a number of other 186free C compilers for Win32.) 187 188To compile Vim using the VC2003 Toolkit and Make_mvc.mak, you must first 189execute the following commands in a cmd.exe window (the msvcsetup.bat batch 190file can be used): 191 192 set PATH=%SystemRoot%\Microsoft.NET\Framework\v1.1.4322;%PATH% 193 call "%VCToolkitInstallDir%vcvars32.bat" 194 set MSVCVer=7.1 195 call "%ProgramFiles%\Microsoft Platform SDK\SetEnv.Cmd" 196 set LIB=%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\lib;%LIB% 197 198Now you can build Vim with Make_mvc.mak. 199 200 201Getting the Windows Platform SDK *ms-platform-sdk* 202 203You will also need a copy of the Windows Platform SDK. Specifically, you need 204the Windows Core SDK subset of the Platform SDK, which contains the Windows 205headers and libraries. You need to search for it, Microsoft keeps changing 206the URL. 207 208 209Getting the .NET Framework 1.1 Runtime *dotnet-1.1-redist* 210 211You need the .NET Framework 1.1 Redistributable Package from 212 http://www.microsoft.com/downloads/details.aspx?familyid=262d25e3-f589-4842-8157-034d1e7cf3a3 213or from Windows Update: 214 http://windowsupdate.microsoft.com/ 215This is needed to install |dotnet-1.1-sdk|. It also contains cvtres.exe, 216which is needed to link Vim. 217 218 219Getting the .NET Framework 1.1 SDK *dotnet-1.1-sdk* 220 221You need the .NET Framework 1.1 SDK from 222 http://www.microsoft.com/downloads/details.aspx?familyid=9b3a2ca6-3647-4070-9f41-a333c6b9181d 223This contains some additional libraries needed to compile Vim, 224such as msvcrt.lib. You must install |dotnet-1.1-redist| before 225installing the .NET 1.1 SDK. 226 227 228Getting the WinDbg debugger *windbg-download* 229 230The Debugging Tools for Windows can be downloaded from 231 http://www.microsoft.com/whdc/devtools/debugging/default.mspx 232This includes the WinDbg debugger, which you will want if you ever need 233to debug Vim itself. An earlier version of the Debugging Tools 234is also available through the Platform SDK, |ms-platform-sdk|. 235 236 237Visual C++ 2005 Express Edition *msvc-2005-express* 238------------------------------- 239 240NOTE: this most likely does not work 241 242Visual C++ 2005 Express Edition can be downloaded for free from: 243 http://msdn.microsoft.com/vstudio/express/visualC/default.aspx 244This includes the IDE and the debugger. You will also need 245|ms-platform-sdk|. You can build Vim with Make_mvc.mak. 246 247Instructions for integrating the Platform SDK into VC Express: 248 http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx 249 250 251Visual C++ 2008 Express Edition *msvc-2008-express* 252------------------------------- 253 254NOTE: this most likely does not work 255 256Visual C++ 2008 Express Edition can be downloaded for free from: 257 http://www.microsoft.com/express/downloads/ 258This includes the IDE and the debugger. 259 260To set the environment execute the msvc2008.bat script. You can then build 261Vim with Make_mvc.mak. 262 263For building 64 bit binaries you also need to install the SDK: 264"Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1" 265You don't need the examples and documentation. 266 267 2682. MSYS2 with MinGW 269=================== 270 2712.1. Setup the basic msys2 environment 272 273Go to the official page of MSYS2: https://www.msys2.org 274Download an installer: 275 276* msys2-x86_64-YYYYMMDD.exe for 64-bit Windows 277 (Even if you want to build 32-bit Vim) 278* msys2-i686-YYYYMMDD.exe for 32-bit Windows 279 280Execute the installer and follow the instructions to update basic packages. 281At the end keep the checkbox checked to run msys2 now. If needed, you can 282open the window from the start menu, MSYS2 64 bit / MSYS2 MSYS. 283 284Execute: 285 $ pacman -Syu 286 287And restart MSYS2 console (select "MSYS2 MSYS 32-Bit" icon from the Start 288Menu for building 32 bit Vim, otherwise select "MSYS2 MinGW 64-Bit"). 289Then execute: 290 $ pacman -Su 291 292If pacman complains that `catgets` and `libcatgets` conflict with another 293package, select `y` to remove them. 294 295 2962.2. Install additional packages for building Vim 297 298The following package groups are required for building Vim: 299 300* base-devel 301* mingw-w64-i686-toolchain (for building 32-bit Vim) 302* mingw-w64-x86_64-toolchain (for building 64-bit Vim) 303 304(These groups also include some useful packages which are not used by Vim.) 305Use the following command to install them: 306 307 $ pacman -S base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain 308 309Or you can use the `pacboy` command to avoid long package names: 310 311 $ pacboy -S base-devel: toolchain:m 312 313The suffix ":" means that it disables the package name translation. 314The suffix ":m" means both i686 and x86_64. You can also use the ":i" suffix 315to install only i686, and the ":x" suffix to install only x86_64. 316(See `pacboy help` for the help.) 317 318See also the pacman page in ArchWiki for the general usage of pacman: 319 https://wiki.archlinux.org/index.php/pacman 320 321MSYS2 has its own git package, and you can also install it via pacman: 322 323 $ pacman -S git 324 325For enabling libsodium support, you also need to install the package 326 327 $ pacman -S mingw-w64-x86_64-libsodium 328 3292.3. Keep the build environment up-to-date 330 331After you have installed the build environment, you may want to keep it 332up-to-date (E.g. always use the latest GCC). 333In that case, you just need to execute the command: 334 $ pacman -Syu 335 336 3372.4. Build Vim 338 339Select one of the following icon from the Start Menu: 340 341* MSYS2 MinGW 32-bit (To build 32-bit versions of Vim) 342* MSYS2 MinGW 64-bit (To build 64-bit versions of Vim) 343 344Go to the source directory of Vim, then execute the make command. E.g.: 345 346 make -f Make_ming.mak 347 make -f Make_ming.mak GUI=no 348 make -f Make_ming.mak GUI=no DEBUG=yes 349 350NOTE: you can't execute vim.exe in the MSYS2 console, open a normal Windows 351console for that. You need to set $PATH to be able to build there, e.g.: 352 353 set PATH=c:\msys64\mingw32\bin;c:\msys64\usr\bin;%PATH% 354 355This command is in msys32.bat. Or for the 64 bit compiler use msys64.bat: 356 357 set PATH=c:\msys64\mingw64\bin;c:\msys64\usr\bin;%PATH% 358 359If you have msys64 in another location you will need to adjust the paths for 360that. 361 362 3633. MinGW 364======== 365 366(written by Ron Aaron: <[email protected]>, updated by Ken Takata, et al.) 367 368This is about how to produce a Win32 binary of gvim with MinGW from the normal 369Command Prompt window. (To use MSYS2 console, see above.) 370 371First, you need to get the 'MinGW-w64' compiler, which is free for the 372download at: 373 374 http://mingw-w64.sourceforge.net/ 375 376Or a compiler provided on msys2: 377 378 https://www.msys2.org/ 379 380The original 'mingw32' compiler is outdated, and may no longer work: 381 382 http://www.mingw.org/ 383 384Once you have downloaded the compiler binaries, unpack them on your hard disk 385somewhere, and put them on your PATH. Go to the Control Panel, (Performance 386and Maintenance), System, Advanced, and edit the environment from there. If 387you use the standalone MinGW-w64 compiler, the path may depend on your 388installation. If you use msys2 compilers, set your installed paths (normally 389one of the following): 390 391 C:\msys32\mingw32\bin (32-bit msys2, targeting 32-bit builds) 392 C:\msys64\mingw32\bin (64-bit msys2, targeting 32-bit builds) 393 C:\msys64\mingw64\bin (64-bit msys2, targeting 64-bit builds) 394 395Test if gcc is on your path. From a Command Prompt window: 396 397 C:\> gcc --version 398 gcc (GCC) 4.8.1 399 400 C:\> mingw32-make --version 401 GNU Make 3.82.90 (...etc...) 402 403Now you are ready to rock 'n' roll. Unpack the vim sources (look on 404www.vim.org for exactly which version of the vim files you need). 405 406Change directory to 'vim\src': 407 408 C:\> cd vim\src 409 C:\VIM\SRC> 410 411and you type: 412 413 mingw32-make -f Make_ming.mak gvim.exe 414 415After churning for a while, you will end up with 'gvim.exe' in the 'vim\src' 416directory. 417 418You should not need to do *any* editing of any files to get vim compiled this 419way. If, for some reason, you want the console-mode-only version of vim (this 420is NOT recommended on Win32, especially on '95/'98!!!), you can use: 421 422 mingw32-make -f Make_ming.mak GUI=no vim.exe 423 424If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX' 425(also free!) and compress the file (typical compression is 50%). UPX can be 426found at 427 http://www.upx.org/ 428 429As of 2011, UPX still does not support compressing 64-bit EXE's; if you have 430built a 64-bit vim then an alternative to UPX is 'MPRESS'. MPRESS can be found 431at: 432 http://www.matcode.com/mpress.htm 433 434 435ADDITION: NLS support with MinGW 436 437(by Eduardo F. Amatria <[email protected]>) 438 439If you want National Language Support, read the file src/po/README_mingw.txt. 440You need to uncomment lines in Make_ming.mak to have NLS defined. 441 442 4434. Cygwin 444========= 445 446Use Make_cyg.mak with Cygwin's GCC. See 447 http://users.skynet.be/antoine.mechelynck/vim/compile.htm 448 449With Cygnus gcc you should use the Unix Makefile instead (you need to get the 450Unix archive then). Then you get a Cygwin application (feels like Vim is 451running on Unix), while with Make_cyg.mak you get a Windows application (like 452with the other makefiles). 453 454 4555. Cross compiling for Win32 from a Linux machine 456================================================= 457 458[Update of 1) needs to be verified] 459 460If you like, you can compile the 'mingw' Win32 version from the comfort of 461your Linux (or other unix) box. To do this, you need to follow a few steps: 462 1) Install the mingw32 cross-compiler. See 463 http://www.mingw.org/wiki/LinuxCrossMinGW 464 http://www.libsdl.org/extras/win32/cross/README.txt 465 2) Get and unpack both the Unix sources and the extra archive 466 3) in 'Make_cyg_ming.mak', set 'CROSS' to 'yes' instead of 'no'. 467 Make further changes to 'Make_cyg_ming.mak' and 'Make_ming.mak' as you 468 wish. If your cross-compiler prefix differs from the predefined value, 469 set 'CROSS_COMPILE' corresponding. 470 4) make -f Make_ming.mak gvim.exe 471 472Now you have created the Windows binary from your Linux box! Have fun... 473 474 4756. Building with Python support 476=============================== 477 478For building with MSVC the "Windows Installer" from www.python.org works fine. 479 480When building, you need to set the following variables at least: 481 482 PYTHON: Where Python is installed. E.g. C:\Python27 483 DYNAMIC_PYTHON: Whether dynamic linking is used. Usually, set to yes. 484 PYTHON_VER: Python version. E.g. 27 for Python 2.7.X. 485 486E.g. When using MSVC (as one line): 487 488 nmake -f Make_mvc.mak 489 PYTHON=C:\Python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 490 491When using MinGW and link with the official Python (as one line): 492 493 mingw32-make -f Make_ming.mak 494 PYTHON=C:/Python27 DYNAMIC_PYTHON=yes PYTHON_VER=27 495 496When using msys2 and link with Python2 bundled with msys2 (as one line): 497 498 mingw32-make -f Make_ming.mak PYTHON=c:/msys64/mingw64 499 PYTHON_HOME=c:/msys64/mingw64 500 PYTHONINC=-Ic:/msys64/mingw64/include/python2.7 501 DYNAMIC_PYTHON=yes 502 PYTHON_VER=27 503 DYNAMIC_PYTHON_DLL=libpython2.7.dll 504 STATIC_STDCPLUS=yes 505 506(This is for 64-bit builds. For 32-bit builds, replace mingw64 with mingw32.) 507(STATIC_STDCPLUS is optional. Set to yes if you don't want to require 508libstdc++-6.dll.) 509 510 511(rest written by Ron Aaron: <[email protected]>) 512 513Building with the mingw32 compiler, and the ActiveState ActivePython: 514 http://www.ActiveState.com/Products/ActivePython/ 515 516After installing the ActivePython, you will have to create a 'mingw32' 517'libpython20.a' to link with: 518 cd $PYTHON/libs 519 pexports python20.dll > python20.def 520 dlltool -d python20.def -l libpython20.a 521 522Once that is done, edit the 'Make_ming.mak' so the PYTHON variable points to 523the root of the Python installation (C:\Python20, for example). If you are 524cross-compiling on Linux with the mingw32 setup, you need to also convert all 525the 'Include' files to *unix* line-endings. This bash command will do it 526easily: 527 for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil 528 529Now just do: 530 make -f Make_ming.mak gvim.exe 531 532You will end up with a Python-enabled, Win32 version. Enjoy! 533 534 5357. Building with Python3 support 536================================ 537 538For building with MSVC the "Windows Installer" from www.python.org works fine. 539Python 3.6 is recommended. 540 541When building, you need to set the following variables at least: 542 543 PYTHON3: Where Python3 is installed. E.g. C:\Python36 544 DYNAMIC_PYTHON3: Whether dynamic linking is used. Usually, set to yes. 545 PYTHON3_VER: Python3 version. E.g. 36 for Python 3.6.X. 546 547E.g. When using MSVC (as one line): 548 549 nmake -f Make_mvc.mak 550 PYTHON3=C:\Python36 DYNAMIC_PYTHON3=yes PYTHON3_VER=36 551 552When using MinGW and link with the official Python3 (as one line): 553 554 mingw32-make -f Make_ming.mak 555 PYTHON3=C:/Python36 DYNAMIC_PYTHON3=yes PYTHON3_VER=36 556 557When using msys2 and link with Python3 bundled with msys2 (as one line): 558 559 mingw32-make -f Make_ming.mak PYTHON3=c:/msys64/mingw64 560 PYTHON3_HOME=c:/msys64/mingw64 561 PYTHON3INC=-Ic:/msys64/mingw64/include/python3.6m 562 DYNAMIC_PYTHON3=yes 563 PYTHON3_VER=36 564 DYNAMIC_PYTHON3_DLL=libpython3.6m.dll 565 STATIC_STDCPLUS=yes 566 567(This is for 64-bit builds. For 32-bit builds, replace mingw64 with mingw32.) 568(STATIC_STDCPLUS is optional. Set to yes if you don't want to require 569libstdc++-6.dll.) 570 571 5728. Building with Racket or MzScheme support 573=========================================== 574 5751) Building with Racket support (newest) 576 577MzScheme and PLT Scheme names have been rebranded as Racket. Vim with Racket 578support can be built with either MSVC or MinGW (or Cygwin). 579Get it from https://download.racket-lang.org/ 580 581Copy lib/libracket{version}.dll to your Windows system directory. The system 582directory depends on your Windows bitness and Vim bitness: 583 32-bit Vim on 32-bit Windows: C:\Windows\System32 584 32-bit Vim on 64-bit Windows: C:\Windows\SysWOW64 585 64-bit Vim on 64-bit Windows: C:\Windows\System32 586 587For building you need to set the following variables: 588 589 MZSCHEME: Where Racket is installed. 590 E.g. C:\Program Files (x86)\Racket 591 DYNAMIC_MZSCHEME: Whether dynamic linking is used. Usually, set to yes. 592 MZSCHEME_VER: Racket DLL version which is used for the file name. 593 See below for a list of MZSCHEME_VER. 594 The DLL can be found under the lib directory. E.g. 595 C:\Program Files (x86)\Racket\lib\libracket3m_XXXXXX.dll 596 MZSCHEME_COLLECTS: (Optional) Path of the collects directory used at 597 runtime. Default: $(MZSCHEME)\collects 598 User can override this with the PLTCOLLECTS environment 599 variable. 600 601List of MZSCHEME_VER (incomplete): 602 603 Racket ver. | MZSCHEME_VER 604 ========================== 605 6.3 | 3m_9z0ds0 606 6.6 | 3m_a0solc 607 6.8 | 3m_a1zjsw 608 6.10 | 3m_a36fs8 609 610 611E.g. When using MSVC (as one line): 612 613 nmake -f Make_mvc.mak 614 MZSCHEME="C:\Program Files (x86)\Racket" DYNAMIC_MZSCHEME=yes 615 MZSCHEME_VER=3m_9z0ds0 616 617Or when using MinGW (as one line): 618 619 mingw32-make -f Make_ming.mak 620 MZSCHEME='C:/Program\ Files\ (x86)/Racket' DYNAMIC_MZSCHEME=yes 621 MZSCHEME_VER=3m_9z0ds0 622 623 Spaces should be escaped with '\'. 624 625 6262) Building with MzScheme support (older) 627 628(written by Sergey Khorev <[email protected]>) 629 630Vim with MzScheme (http://www.plt-scheme.org/software/mzscheme) support can 631be built with either MSVC, or MinGW, or Cygwin. Supported versions are 205 and 632above (including 299 and 30x series). 633 634The MSVC build is quite straightforward. Simply invoke (in one line) 635nmake -fMake_mvc.mak MZSCHEME=<Path-to-MzScheme> 636 [MZSCHEME_VER=<MzScheme-version>] [DYNAMIC_MZSCHEME=<yes or no>] 637where <MzScheme-version> is the last seven characters from MzScheme dll name 638(libmzschXXXXXXX.dll). 639If DYNAMIC_MZSCHEME=yes, resulting executable will not depend on MzScheme 640DLL's, but will load them in runtime on demand. 641 642Building dynamic MzScheme support on MinGW and Cygwin is similar. Take into 643account that <Path-to-MzScheme> should contain slashes rather than backslashes 644(e.g. d:/Develop/MzScheme) 645 646"Static" MzScheme support (Vim executable will depend on MzScheme DLLs 647explicitly) on MinGW and Cygwin requires additional step. 648 649libmzschXXXXXXX.dll and libmzgcXXXXXXX.dll should be copied from 650%WINDOWS%\System32 to other location (either build directory, some temporary 651dir or even MzScheme home). 652 653Pass that path as MZSCHEME_DLLS parameter for Make. E.g., 654make -f Make_cyg.mak MZSCHEME=d:/Develop/MzScheme MZSCHEME_VER=209_000 655 MZSCHEME_DLLS=c:/Temp DYNAMIC_MZSCHEME=no 656 657After a successful build, these dlls can be freely removed, leaving them in 658%WINDOWS%\System32 only. 659 660 661 6629. Building with Lua support 663============================ 664 665Vim with Lua support can be built with either MSVC or MinGW (or maybe Cygwin). 666You can use binaries from LuaBinaries: http://luabinaries.sourceforge.net/ 667This also applies to when you get a Vim executable and don't build yourself, 668do the part up to "Build". 669 6701) Download and install LuaBinaries 671 672Go to the Download page of LuaBinaries: 673 http://luabinaries.sourceforge.net/download.html 674 675Download lua-X.Y.Z_Win32_dllw4_lib.zip for x86 or 676lua-X.Y.Z_Win64_dllw4_lib.zip for x64. You can use them both for MSVC and 677MinGW. 678 679Unpack it to a working directory. E.g. C:\projects\lua53. 680Lua's header files will be installed under the include directory. 681 682Copy luaXY.dll to your Windows system directory. The system directory depends 683on your Windows bitness and Vim bitness: 684 32-bit Vim on 32-bit Windows: C:\Windows\System32 685 32-bit Vim on 64-bit Windows: C:\Windows\SysWOW64 686 64-bit Vim on 64-bit Windows: C:\Windows\System32 687 688Or another option is copying luaXY.dll to the directory where gvim.exe 689(or vim.exe) is. 690 691 6922) Build 693 694You need to set LUA, DYNAMIC_LUA and LUA_VER. 695 696 LUA: Where Lua's header files are installed. E.g. C:\projects\lua53. 697 DYNAMIC_LUA: Whether dynamic linking is used. Set to yes. 698 LUA_VER: Lua version. E.g. 53 for Lua 5.3.X. 699 700E.g. When using MSVC (as one line): 701 702 nmake -f Make_mvc.mak 703 LUA=C:\projects\lua53 DYNAMIC_LUA=yes LUA_VER=53 704 705Or when using MinGW (as one line): 706 707 mingw32-make -f Make_ming.mak 708 LUA=C:/projects/lua53 DYNAMIC_LUA=yes LUA_VER=53 709 710 711Or when using Cygwin (as one line) (untested): 712 713 make -f Make_cyg.mak 714 LUA=/cygdrive/c/projects/lua53 DYNAMIC_LUA=yes LUA_VER=53 715 716 71710. Building with Perl support 718============================== 719 720Vim with Perl support can be built with either MSVC or MinGW (or Cygwin). 721You can use binaries from ActiveState (ActivePerl) or Strawberry Perl. 722 723 http://www.activestate.com/activeperl 724 http://strawberryperl.com/ 725 726When building, you need to set the following variables: 727 728 PERL: Where perl is installed. E.g. C:\Perl, C:\Strawberry\perl 729 DYNAMIC_PERL: Whether dynamic linking is used. Usually, set to yes. 730 PERL_VER: Perl version. E.g. 522 for Perl 5.22.X. 731 732E.g. When using MSVC (as one line): 733 734 nmake -f Make_mvc.mak 735 PERL=C:\Perl DYNAMIC_PERL=yes PERL_VER=522 736 737Or when using MinGW (as one line): 738 739 mingw32-make -f Make_ming.mak 740 PERL=C:/Perl DYNAMIC_PERL=yes PERL_VER=522 741 742 74311. Building with Ruby support 744============================== 745 746Vim with Ruby support can be built with either MSVC or MinGW (or Cygwin). 747Ruby doesn't provide the official Windows binaries. The most widely used 748Windows binaries might be RubyInstaller. Currently Ruby 2.4 is recommended. 749 750 http://rubyinstaller.org/ 751 752If you use MinGW you can easily build with RubyInstaller, but if you use MSVC 753you need some tricks described below. 754(Another binary distribution is ActiveScriptRuby: 755 http://www.artonx.org/data/asr/) 756 757When building, you need to set the following variables at least: 758 759 RUBY: Where ruby is installed. E.g. C:\Ruby24 760 DYNAMIC_RUBY: Whether dynamic linking is used. Usually, set to yes. 761 RUBY_VER: Ruby version. E.g. 24 for Ruby 2.4.X. 762 RUBY_API_VER_LONG: Ruby API version in a long format. 763 E.g. 2.4.0 for Ruby 2.4.X. 764 765Ruby version vs. Ruby API version: 766 767 Ruby ver. | Ruby API ver. 768 ========================= 769 1.8.X | 1.8 770 1.9.[1-3] | 1.9.1 771 2.0.0 | 2.0.0 772 2.X.Y | 2.X.0 773 774(Ruby 1.9.0 is excluded from the table because it is an unstable version.) 775 776 777A) Using MSVC 778 779If you want to link with ruby, normally you must use the same compiler as 780which was used to build the ruby binary. RubyInstaller is built with MinGW, 781so normally you cannot use MSVC for building Vim if you want to link with 782RubyInstaller. If you use a different compiler, there are mainly two problems: 783config.h and Ruby's DLL name. Here are the steps for working around them: 784 785 1) Download and Install RubyInstaller. 786 You can install RubyInstaller with the default options and directory. 787 E.g.: 788 C:\Ruby24 (32-bit) or C:\Ruby24-x64 (64-bit) 789 790 Ruby 2.4.X is used in this example. 791 792 2) Download Ruby 2.4.X's source code and generate config.h: 793 794 cd C:\projects 795 git clone https://github.com/ruby/ruby.git -b ruby_2_4 796 cd ruby 797 win32\configure.bat 798 nmake .config.h.time 799 800 Note that ruby_2_4 is the branch name for Ruby 2.4.X's source code. 801 There is no need to build whole Ruby, just config.h is needed. 802 If you use 32-bit MSVC 2015, the config.h is generated in the 803 .ext\include\i386-mswin32_140 directory. 804 If you use 64-bit MSVC 2015, the config.h is generated in the 805 .ext\include\x64-mswin64_140 directory. 806 807 3) Install the generated config.h. 808 809 For 32-bit version: 810 811 xcopy /s .ext\include C:\Ruby24\include\ruby-2.4.0 812 813 For 64-bit version: 814 815 xcopy /s .ext\include C:\Ruby24-x64\include\ruby-2.4.0 816 817 Note that 2.4.0 is Ruby API version of Ruby 2.4.X. 818 You may need to close the console and reopen it to pick up the new $PATH. 819 820 4) Build Vim. Note that you need to adjust some variables (as one line): 821 822 For 32-bit version: 823 824 nmake -f Make_mvc.mak 825 RUBY=C:\Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0 826 RUBY_MSVCRT_NAME=msvcrt 827 WINVER=0x501 828 829 For 64-bit version, replace RUBY=C:\Ruby24 with RUBY=C:\Ruby24-x64. 830 831 If you set WINVER explicitly, it must be set to >=0x500, when building 832 with Ruby 2.1 or later. (Default is 0x501.) 833 When using this trick, you also need to set RUBY_MSVCRT_NAME to msvcrt 834 which is used for the Ruby's DLL name. 835 836B) Using MinGW 837 838Using MinGW is easier than using MSVC when linking with RubyInstaller. 839After you install RubyInstaller, just type this (as one line): 840 841 mingw32-make -f Make_ming.mak 842 RUBY=C:/Ruby24 DYNAMIC_RUBY=yes RUBY_VER=24 RUBY_API_VER_LONG=2.4.0 843 WINVER=0x600 844 845For 64-bit version, replace RUBY=C:/Ruby24 with RUBY=C:/Ruby24-x64. 846If you set WINVER explicitly, it must be set to >=0x500, when building with 847Ruby 2.1 or later. (Default is 0x600.) 848 849 850 85112. Building with Tcl support 852============================= 853 854Vim with Tcl support can be built with either MSVC or MinGW (or Cygwin). 855You can use binaries from ActiveState (ActiveTcl). 856 857 http://www.activestate.com/activetcl 858 859Alternatively, you can use the binaries provided by IronTcl from 860 861 https://www.irontcl.com/ 862 863They might lack behind the latest version a bit, but should provide 64bit 864and 32bit versions even if ActiveTcl does not provide them anymore. 865 866For building with MSVC 2015 use version 8.6.6 or later. 867When building, you need to set the following variables: 868 869 TCL: Where tcl is installed. E.g. C:\Tcl86 870 DYNAMIC_TCL: Whether dynamic linking is used. Usually, set to yes. 871 TCL_VER: Tcl version in a short format. E.g. 86 for Tcl 8.6.X. 872 TCL_VER_LONG: Tcl version in a long format. E.g. 8.6 for Tcl 8.6.X. 873 874Sometimes the Tcl dll name changes. E.g. ActiveTcl 8.6.4 comes with tcl86.dll, 875but ActiveTcl 8.6.6 comes with tcl86t.dll. You can set the dll name by setting 876the TCL_DLL variable: 877 TCL_DLL=tcl86t.dll 878 879E.g. When using MSVC (as one line): 880 881 nmake -f Make_mvc.mak 882 TCL=C:\Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6 883 884Or when using MinGW (as one line): 885 886 mingw32-make -f Make_ming.mak 887 TCL=C:/Tcl86 DYNAMIC_TCL=yes TCL_VER=86 TCL_VER_LONG=8.6 888 889 89013. Building with DirectX (DirectWrite) support 891=============================================== 892 893Vim with DirectX (DirectWrite) support can be built with either MSVC or MinGW. 894This requires dwrite_2.h and some other header files which come with Windows 895SDK 8.1 or later (or MinGW-w64), if you want to enable color emoji support. 896This also requires MBYTE=yes which is enabled by default. 897 898A) Using MSVC 899 900If you use MSVC 2013 or later, Windows SDK 8.1 or later is used by default. 901You just need to specify DIRECTX=yes: 902 903 nmake -f Make_mvc.mak DIRECTX=yes 904 905If you use MSVC 2012 or earlier, the required header files are not available 906by default. However, you can use the header files from newer SDKs with older 907compilers. E.g.: 908 909 set "INCLUDE=%INCLUDE%;C:\Program Files (x86)\Windows Kits\8.1\Include\um" 910 nmake -f Make_mvc.mak DIRECTX=yes 911 912If you don't need color emoji support, only dwrite.h is required. You can use 913older compilers (e.g. VC2010) without Windows SDK 8.1. E.g.: 914 915 nmake -f Make_mvc.mak DIRECTX=yes COLOR_EMOJI=no 916 917B) Using MinGW-w64 918 919Just set DIRECTX to yes: 920 921 mingw32-make -f Make_ming.mak DIRECTX=yes 922 923 92414. Windows 3.1x 925================ 926 927The Windows 3.1x support was removed in patch 7.4.1364. 928 929 93015. MS-DOS 931========== 932 933The MS-DOS support was removed in patch 7.4.1399. Only very old Vim versions 934work on MS-DOS because of the limited amount of memory available. 935 936 93716. Installing after building from sources 938========================================== 939 940[provided by Michael Soyka, updated by Ken Takata] 941 942After you've built the Vim binaries as described above, you're ready to 943install Vim on your system. However, if you've obtained the Vim sources 944using Git, Mercurial or by downloading them as a unix tar file, you must 945first create a "vim82" directory. If you instead downloaded the sources as 946zip files, you can skip this setup as the zip archives already have the 947correct directory structure. 948 949 A. Create a Vim "runtime" subdirectory named "vim82" 950 ----------------------------------------------------- 951 If you obtained your Vim sources as zip files, you can skip this step. 952 Otherwise, continue reading. 953 954 Go to the directory that contains the Vim "src" and "runtime" 955 directories and create a new subdirectory named "vim82". 956 957 Copy the "runtime" files into "vim82": 958 copy runtime\* vim82 959 xcopy /s runtime\* vim82 960 961 B. Copy the new binaries into the "vim82" directory 962 ---------------------------------------------------- 963 Regardless of how you installed the Vim sources, you need to copy the 964 new binaries you created above into "vim82": 965 966 copy src\*.exe vim82 967 copy src\tee\tee.exe vim82 968 copy src\xxd\xxd.exe vim82 969 970 To install the "Edit with Vim" popup menu, you need both 32-bit and 64-bit 971 versions of gvimext.dll. They should be copied to "vim82\GvimExt32" and 972 "vim82\GvimExt64" respectively. 973 First, build the 32-bit version, then: 974 975 mkdir vim82\GvimExt32 976 copy src\GvimExt\gvimext.dll vim82\GvimExt32 977 978 Next, clean the 32-bit version and build the 64-bit version, then: 979 980 mkdir vim82\GvimExt64 981 copy src\GvimExt\gvimext.dll vim82\GvimExt64 982 983 C. Copy gettext and iconv DLLs into the "vim82" directory 984 ---------------------------------------------------------- 985 Get gettext and iconv DLLs from the following site: 986 https://github.com/mlocati/gettext-iconv-windows/releases 987 Both 64- and 32-bit versions are needed. 988 Download the files gettextX.X.X.X-iconvX.XX-shared-{32,64}.zip, extract 989 DLLs and place them as follows: 990 991 vim82\ 992 | libintl-8.dll 993 | libiconv-2.dll 994 | libgcc_s_sjlj-1.dll (only for 32-bit) 995 | 996 + GvimExt32\ 997 | libintl-8.dll 998 | libiconv-2.dll 999 | libgcc_s_sjlj-1.dll 1000 | 1001 ` GvimExt64\ 1002 libintl-8.dll 1003 libiconv-2.dll 1004 1005 The DLLs in the "vim82" should be the same bitness with the (g)vim.exe. 1006 1007 D. Move the "vim82" directory into the Vim installation subdirectory 1008 --------------------------------------------------------------------- 1009 Move the "vim82" subdirectory into the subdirectory where you want Vim 1010 to be installed. Typically, this subdirectory will be named "vim". 1011 If you already have a "vim82" subdirectory in "vim", delete it first 1012 by running its uninstall.exe program. 1013 1014 E. Install Vim 1015 --------------- 1016 "cd" to your Vim installation subdirectory "vim\vim82" and run the 1017 "install.exe" program. It will ask you a number of questions about 1018 how you would like to have your Vim setup. Among these are: 1019 - You can tell it to write a "_vimrc" file with your preferences in the 1020 parent directory. 1021 - It can also install an "Edit with Vim" entry in the Windows Explorer 1022 popup menu. 1023 - You can have it create batch files, so that you can run Vim from the 1024 console or in a shell. You can select one of the directories in your 1025 PATH or add the directory to PATH using the Windows Control Panel. 1026 - Create entries for Vim on the desktop and in the Start menu. 1027 1028Happy Vimming! 1029