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