blob: 79d75842cd1968bec6116b53c055e1356d1d96a5 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001INSTALL - 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
Bram Moolenaarb07269a2011-05-19 13:41:14 +020093. OS/2 (with EMX 0.9b)
104. Atari MiNT
Bram Moolenaar071d4272004-06-13 20:20:40 +000011
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +000012See INSTALLami.txt for Amiga
13See INSTALLmac.txt for Macintosh
Bram Moolenaarc4568ab2018-11-16 16:21:05 +010014See INSTALLpc.txt for PC (Windows XP/Vista/7/8/10)
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +000015See INSTALLvms.txt for VMS
Bram Moolenaarc1a11ed2008-06-24 22:09:24 +000016See INSTALLx.txt for cross-compiling on Unix
Bram Moolenaarc4568ab2018-11-16 16:21:05 +010017See ../READMEdir/README_390.txt for z/OS and OS/390 Unix
Bram Moolenaarb3f74062020-02-26 16:16:53 +010018See ../runtime/doc/os_haiku.txt for Haiku
Bram Moolenaar071d4272004-06-13 20:20:40 +000019
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
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +000039to disable the GUI and X11. If you don't have GUI libraries and/or X11, these
Bram Moolenaar071d4272004-06-13 20:20:40 +000040features will be disabled automatically.
41
Bram Moolenaar11e3c5b2021-04-21 18:09:37 +020042To build Vim on Ubuntu from scratch on a clean system using git:
Bram Moolenaar3d2bb8b2021-01-31 16:45:53 +010043 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
Bram Moolenaar89a9c152021-08-29 21:55:35 +020047 % sudo apt install libtool-bin
Bram Moolenaar3d2bb8b2021-01-31 16:45:53 +010048
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
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +010064 Add GUI support:
65 % sudo apt install libgtk-3-dev
Bram Moolenaar3d2bb8b2021-01-31 16:45:53 +010066 % 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000083See 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
Bram Moolenaar3d2bb8b2021-01-31 16:45:53 +010089 env CFLAGS=-I/usr/local/include LIBS=-lm make
Bram Moolenaar071d4272004-06-13 20:20:40 +000090
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
Bram Moolenaar64404472010-06-26 06:24:45 +020097on most systems without any adjustments. The disadvantage is that when
Bram Moolenaar071d4272004-06-13 20:20:40 +000098adjustments 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
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +0000130NOTE: This is incomplete, look in Makefile for more info.
131
Bram Moolenaar071d4272004-06-13 20:20:40 +0000132These configure arguments can be used to select which GUI to use:
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +0000133--enable-gui=gtk or: gtk2, motif, athena or auto
Bram Moolenaar071d4272004-06-13 20:20:40 +0000134--disable-gtk-check
135--disable-motif-check
136--disable-athena-check
137
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100138This configure argument can be used to disable the GUI, even when the necessary
139files are found:
140--disable-gui
141
Bram Moolenaar071d4272004-06-13 20:20:40 +0000142--enable-gui defaults to "auto", so it will automatically look for a GUI (in
Bram Moolenaarc8cdf0f2021-03-13 13:28:13 +0100143the order of GTK, Motif, then Athena). If one is found, then it is used and
Bram Moolenaar071d4272004-06-13 20:20:40 +0000144does not proceed to check any of the remaining ones. Otherwise, it moves on
145to the next one.
146
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +0000147--enable-{gtk,gtk2,kde,motif,athena}-check all default to "yes", such that if
Bram Moolenaar071d4272004-06-13 20:20:40 +0000148--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
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +0000150--disable-{gtk,gtk2,kde,motif,athena}-check.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000151
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
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +0000157--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.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000164
165For compiling with the GTK+ GUI, you need a recent version of glib and gtk+.
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +0000166Configure 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".
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169GTK 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
Bram Moolenaar4e32e4b2007-05-12 14:46:25 +0000177There 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.
Bram Moolenaar843ee412004-06-30 16:16:41 +0000179
180
Bram Moolenaar071d4272004-06-13 20:20:40 +0000181Unix: PUTTING vimrc IN /etc
182
183Some Linux distributions prefer to put the global vimrc file in /etc, and the
184Vim runtime files in /usr. This can be done with:
185 ./configure --prefix=/usr
186 make VIMRCLOC=/etc VIMRUNTIMEDIR=/usr/share/vim MAKE="make -e"
187
188Unix: COMPILING ON NeXT
189
190Add the "-posix" argument to the compiler by using one of these commands:
191 setenv CC 'cc -posix' (csh)
192 export CC='cc -posix' (sh)
193And run configure with "--disable-motif-check".
194
Bram Moolenaarc236c162008-07-13 17:41:49 +0000195Unix: LOCAL HEADERS AND LIBRARIES NOT IN /usr/local
196
197Sometimes it is necessary to search different path than /usr/local for locally
198installed headers (/usr/local/include) and libraries (/usr/local/lib).
199To search /stranger/include and /stranger/lib for locally installed
200headers and libraries, use:
201 ./configure --with-local-dir=/stranger
202And to not search for locally installed headers and libraries at all, use:
203 ./configure --without-local-dir
204
Bram Moolenaar071d4272004-06-13 20:20:40 +0000205
Bram Moolenaarb07269a2011-05-19 13:41:14 +02002063. OS/2
Bram Moolenaar071d4272004-06-13 20:20:40 +0000207=======
208
Bram Moolenaare7fedb62015-12-31 19:07:19 +0100209OS/2 support was removed in patch 7.4.1008
Bram Moolenaar071d4272004-06-13 20:20:40 +0000210
211
Bram Moolenaarb07269a2011-05-19 13:41:14 +02002124. Atari MiNT
Bram Moolenaar071d4272004-06-13 20:20:40 +0000213=============
214
Bram Moolenaare3f915d2020-07-14 23:02:44 +0200215Atari MiNT support was removed in patch 8.2.1215.