1INSTALL - Installation of Vim on different machines. 2 3This file contains instructions for compiling Vim. If you already have an 4executable version of Vim, you don't need this. 5 6Contents: 71. Generic 82. Unix 93. OS/2 (with EMX 0.9b) 104. Atari MiNT 11 12See INSTALLami.txt for Amiga 13See INSTALLmac.txt for Macintosh 14See INSTALLpc.txt for PC (Windows XP/Vista/7/8/10) 15See INSTALLvms.txt for VMS 16See INSTALLx.txt for cross-compiling on Unix 17See ../READMEdir/README_390.txt for z/OS and OS/390 Unix 18See ../runtime/doc/os_haiku.txt for Haiku 19 201. Generic 21========== 22 23If you compile Vim without specifying anything, you will get the default 24behaviour as is documented, which should be fine for most people. 25 26For features that you can't enable/disable in another way, you can edit the 27file "feature.h" to match your preferences. 28 29 302. Unix 31======= 32 33Summary: 341. make run configure, compile and link 352. make install installation in /usr/local 36 37This will include the GUI and X11 libraries, if you have them. If you want a 38version of Vim that is small and starts up quickly, see the Makefile for how 39to disable the GUI and X11. If you don't have GUI libraries and/or X11, these 40features will be disabled automatically. 41 42To build Vim on Ubuntu from scratch on a clean system using git: 43 Install tools required to be able to get and build Vim: 44 % sudo apt install git 45 % sudo apt install make 46 % sudo apt install clang 47 % sudo apt install libtool-bin 48 49 Build Vim with default features: 50 % git clone https://github.com/vim/vim.git 51 % cd vim/src 52 % make 53 54 Run tests to check there are no problems: 55 % make test 56 57 Install Vim in /usr/local: 58 % sudo make install 59 60 Add X windows clipboard support (also needed for GUI): 61 % sudo apt install libxt-dev 62 % make reconfig 63 64 Add GUI support: 65 % sudo apt install libgtk-3-dev 66 % make reconfig 67 68 Add Python 3 support: 69 % sudo apt install libpython3-dev 70 Uncomment this line in Makefile: 71 "CONF_OPT_PYTHON3 = --enable-python3interp" 72 % make reconfig 73 74 Debugging: 75 % sudo apt install valgrind 76 Uncomment this line in Makefile: 77 CFLAGS = -g -Wall -Wextra -Wshadow -Wmissing-prototypes -Wunreachable-code -Wno-deprecated-declarations -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 78 % make reconfig 79 % make test_{test-name} 80 See output in testdir/valgrind.test_{test-name} 81 82 83See the start of Makefile for more detailed instructions about how to compile 84Vim. 85 86If you need extra compiler and/or linker arguments, set $CFLAGS and/or $LIBS 87before starting configure. Example: 88 89 env CFLAGS=-I/usr/local/include LIBS=-lm make 90 91This is only needed for things that configure doesn't offer a specific argument 92for or figures out by itself. First try running configure without extra 93arguments. 94 95GNU Autoconf and a few other tools have been used to make Vim work on many 96different Unix systems. The advantage of this is that Vim should compile 97on most systems without any adjustments. The disadvantage is that when 98adjustments are required, it takes some time to understand what is happening. 99 100If configure finds all library files and then complains when linking that some 101of them can't be found, your linker doesn't return an error code for missing 102libraries. Vim should be linked fine anyway, mostly you can just ignore these 103errors. 104 105If you run configure by hand (not using the Makefile), remember that any 106changes in the Makefile have no influence on configure. This may be what you 107want, but maybe not! 108 109The advantage of running configure separately, is that you can write a script 110to build Vim, without changing the Makefile or feature.h. Example (using sh): 111 112 CFLAGS=-DCOMPILER_FLAG ./configure --enable-gui=motif 113 114One thing to watch out for: If the configure script itself changes, running 115"make" will execute it again, but without your arguments. Do "make clean" and 116run configure again. 117 118If you are compiling Vim for several machines, for each machine: 119 a. make shadow 120 b. mv shadow machine_name 121 c. cd machine_name 122 d. make; make install 123 124[Don't use a path for machine_name, just a directory name, otherwise the links 125that "make shadow" creates won't work.] 126 127 128Unix: COMPILING WITH/WITHOUT GUI 129 130NOTE: This is incomplete, look in Makefile for more info. 131 132These configure arguments can be used to select which GUI to use: 133--enable-gui=gtk or: gtk2, motif, athena or auto 134--disable-gtk-check 135--disable-motif-check 136--disable-athena-check 137 138This configure argument can be used to disable the GUI, even when the necessary 139files are found: 140--disable-gui 141 142--enable-gui defaults to "auto", so it will automatically look for a GUI (in 143the order of GTK, Motif, then Athena). If one is found, then it is used and 144does not proceed to check any of the remaining ones. Otherwise, it moves on 145to the next one. 146 147--enable-{gtk,gtk2,kde,motif,athena}-check all default to "yes", such that if 148--enable-gui is "auto" (which it is by default), GTK, Motif, and Athena will 149be checked for. If you want to *exclude* a certain check, then you use 150--disable-{gtk,gtk2,kde,motif,athena}-check. 151 152For example, if --enable-gui is set to "auto", but you don't want it look for 153Motif, you then also specify --disable-motif-check. This results in only 154checking for GTK and Athena. 155 156Lastly, if you know which one you want to use, then you can just do 157--enable-gui={gtk,gtk2,kde,motif,athena}. So if you wanted to only use Motif, 158then you'd specify --enable-gui=motif. Once you specify what you want, the 159--enable-{gtk,gtk2,kde,motif,athena}-check options are ignored. 160 161On Linux you usually need GUI "-devel" packages. You may already have GTK 162libraries installed, but that doesn't mean you can compile Vim with GTK, you 163also need the header files. 164 165For compiling with the GTK+ GUI, you need a recent version of glib and gtk+. 166Configure checks for at least version 1.1.16. An older version is not selected 167automatically. If you want to use it anyway, run configure with 168"--disable-gtktest". 169GTK requires an ANSI C compiler. If you fail to compile Vim with GTK+ (it 170is the preferred choice), try selecting another one in the Makefile. 171If you are sure you have GTK installed, but for some reason configure says you 172do not, you may have left-over header files and/or library files from an older 173(and incompatible) version of GTK. if this is the case, please check 174auto/config.log for any error messages that may give you a hint as to what's 175happening. 176 177There used to be a KDE version of Vim, using Qt libraries, but since it didn't 178work very well and there was no maintainer it was dropped. 179 180 181Unix: COMPILING WITH MULTI-BYTE 182 183When you want to compile with the multi-byte features enabled, make sure you 184compile on a machine where the locale settings actually work, otherwise the 185configure tests may fail. You need to compile with "big" features: 186 187 ./configure --with-features=big 188 189Unix: COMPILING ON LINUX 190 191On Linux, when using -g to compile (which is default for gcc), the executable 192will probably be statically linked. If you don't want this, remove the -g 193option from CFLAGS. 194 195Unix: PUTTING vimrc IN /etc 196 197Some Linux distributions prefer to put the global vimrc file in /etc, and the 198Vim runtime files in /usr. This can be done with: 199 ./configure --prefix=/usr 200 make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim MAKE="make -e" 201 202Unix: COMPILING ON NeXT 203 204Add the "-posix" argument to the compiler by using one of these commands: 205 setenv CC 'cc -posix' (csh) 206 export CC='cc -posix' (sh) 207And run configure with "--disable-motif-check". 208 209Unix: LOCAL HEADERS AND LIBRARIES NOT IN /usr/local 210 211Sometimes it is necessary to search different path than /usr/local for locally 212installed headers (/usr/local/include) and libraries (/usr/local/lib). 213To search /stranger/include and /stranger/lib for locally installed 214headers and libraries, use: 215 ./configure --with-local-dir=/stranger 216And to not search for locally installed headers and libraries at all, use: 217 ./configure --without-local-dir 218 219 2203. OS/2 221======= 222 223OS/2 support was removed in patch 7.4.1008 224 225 2264. Atari MiNT 227============= 228 229Atari MiNT support was removed in patch 8.2.1215. 230