1INSTALLx.txt - cross-compiling Vim on Unix
2
3Content:
4 1. Introduction
5 2. Necessary arguments for "configure"
6 3. Necessary environment variables for "configure"
7 4. Example
8
9
101. INTRODUCTION
11===============
12
13This document discusses cross-compiling VIM on Unix-like systems. We assume
14you are already familiar with cross-compiling and have a working cross-compile
15environment with at least the following components:
16
17 * a cross-compiler
18 * a libc to link against
19 * ncurses library to link against
20
21Discussing how to set up a cross-compile environment would go beyond the scope
22of this document. See http://www.kegel.com/crosstool/ for more information and
23a script that aids in setting up such an environment.
24
25
26The problem is that "configure" needs to compile and run small test programs
27to check for certain features. Running these test programs can't be done when
28cross-compiling so we need to pass the results these checks would produce via
29environment variables. See the list of variables and the examples at the end of
30this document.
31
32
332. NECESSARY ARGUMENTS FOR "configure"
34======================================
35
36You need to set the following "configure" command line switches:
37
38--build=... :
39	The build system (i.e. the platform name of the system you compile on
40	right now).
41	For example, "i586-linux".
42
43--host=... :
44	The system on which VIM will be run. Quite often this the name of your
45	cross-compiler without the "-gcc".
46	For example, "powerpc-603-linux-gnu".
47
48--target=... :
49	Only relevant for compiling compilers. Set this to the same value as
50	--host.
51
52--with-tlib=... :
53	Which terminal library to use.
54	For example, "ncurses".
55
56
573. NECESSARY ENVIRONMENT VARIABLES FOR "configure"
58==================================================
59
60Additionally to the variables listed here you might want to set the CPPFLAGS
61environment variable to enable optimization for your target system (e.g.
62"CPPFLAGS=-march=arm5te").
63
64The following variables need to be set:
65
66ac_cv_sizeof_int:
67	The size of an "int" C type in bytes. Should be "4" on all 32bit
68	machines.
69
70vi_cv_path_python_conf:
71	If Python support is enabled, set this variable to the path for
72	Python's library implementation. This is a path like
73	"/usr/lib/pythonX.Y/config" (the directory contains a file
74	"config.c").
75
76vi_cv_var_python_epfx:
77	If Python support is enabled, set this variable to the execution
78	prefix of your Python interpreter (that is, where it thinks it is
79	running).
80	This is the output of the following Python script:
81		import sys; print sys.exec_prefix
82
83vi_cv_var_python_pfx:
84	If Python support is enabled, set this variable to the prefix of your
85	Python interpreter (that is, where it was installed).
86	This is the output of the following Python script:
87		import sys; print sys.prefix
88
89vi_cv_var_python_version:
90	If Python support is enabled, set this variable to the version of the
91	Python interpreter that will be used.
92	This is the output of the following Python script:
93		import sys; print sys.version[:3]
94
95vim_cv_bcopy_handles_overlap:
96	Whether the "memmove" C library call is able to copy overlapping
97	memory regions. Set to "yes" if it does or "no" if it does not.
98	You only need to set this if vim_cv_memmove_handles_overlap is set
99	to "no".
100
101vim_cv_getcwd_broken:
102	Whether the "getcwd" C library call is broken. Set to "yes" if you
103	know that "getcwd" is implemented as 'system("sh -c pwd")', set to
104	"no" otherwise.
105
106vim_cv_memcpy_handles_overlap:
107	Whether the "memcpy" C library call is able to copy overlapping
108	memory regions. Set to "yes" if it does or "no" if it does not.
109	You only need to set this if both vim_cv_memmove_handles_overlap
110	and vim_cv_bcopy_handles_overlap are set to "no".
111
112vim_cv_memmove_handles_overlap:
113	Whether the "memmove" C library call is able to copy overlapping
114	memory regions. Set to "yes" if it does or "no" if it does not.
115
116vim_cv_stat_ignores_slash:
117	Whether the "stat" C library call ignores trailing slashes in the path
118	name. Set to "yes" if it ignores them or "no" if it does not ignore
119	them.
120
121vim_cv_tgetent:
122	Whether the "tgetent" terminal library call returns a zero or non-zero
123	value when it encounters an unknown terminal. Set to either the string
124	"zero" or "non-zero", corresponding.
125
126vim_cv_terminfo:
127	Whether the environment has terminfo support. Set to "yes" if so,
128	otherwise set to "no".
129
130vim_cv_toupper_broken:
131	Whether the "toupper" C library function works correctly. Set to "yes"
132	if you know it's broken, otherwise set to "no".
133
134vim_cv_tty_group:
135	The default group of pseudo terminals. Either set to the numeric value
136	of your tty group or to "world" if they are world accessible.
137
138vim_cv_tty_mode:
139	The default mode of pseudo terminals if they are not world accessible.
140	Most probably the value "0620".
141
142
1434. EXAMPLE:
144===========
145
146Assuming the target system string is "armeb-xscale-linux-gnu" (a Intel XScale
147system) with glibc and ncurses, the call to configure would look like this:
148
149ac_cv_sizeof_int=4 \
150vim_cv_getcwd_broken=no \
151vim_cv_memmove_handles_overlap=yes \
152vim_cv_stat_ignores_slash=yes \
153vim_cv_tgetent=zero \
154vim_cv_terminfo=yes \
155vim_cv_toupper_broken=no \
156vim_cv_tty_group=world \
157./configure \
158	--build=i586-linux \
159	--host=armeb-xscale-linux-gnu \
160	--target=armeb-xscale-linux-gnu \
161	--with-tlib=ncurses
162
163
164
165Written 2007 by Marc Haisenko <marc@darkdust.net> for the VIM project.
166