blob: 8e3aa8db5016af3b9e554ded4bb4747fae71f269 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001dnl configure.in: autoconf script for Vim
2
3dnl Process this file with autoconf 2.12 or 2.13 to produce "configure".
4dnl Should also work with autoconf 2.54 and later.
5
6AC_INIT(vim.h)
7AC_CONFIG_HEADER(auto/config.h:config.h.in)
8
9dnl Being able to run configure means the system is Unix (compatible).
10AC_DEFINE(UNIX)
11AC_PROG_MAKE_SET
12
13dnl Checks for programs.
14AC_PROG_CC dnl required by almost everything
15AC_PROG_CPP dnl required by header file checks
16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP
17AC_ISC_POSIX dnl required by AC_C_CROSS
18AC_PROG_AWK dnl required for "make html" in ../doc
19
20dnl Don't strip if we don't have it
21AC_CHECK_PROG(STRIP, strip, strip, :)
22
Bram Moolenaar325b7a22004-07-05 15:58:32 +000023dnl Check for extension of executables
Bram Moolenaar071d4272004-06-13 20:20:40 +000024AC_EXEEXT
25
Bram Moolenaar446cb832008-06-24 21:56:24 +000026dnl Check for standard headers. We don't use this in Vim but other stuff
27dnl in autoconf needs it, where it uses STDC_HEADERS.
28AC_HEADER_STDC
29AC_HEADER_SYS_WAIT
30
Bram Moolenaar071d4272004-06-13 20:20:40 +000031dnl Set default value for CFLAGS if none is defined or it's empty
32if test -z "$CFLAGS"; then
33 CFLAGS="-O"
34 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall"
35fi
36if test "$GCC" = yes; then
Bram Moolenaar910f66f2006-04-05 20:41:53 +000037 dnl method that should work for nearly all versions
38 gccversion=`"$CC" -dumpversion`
39 if test "x$gccversion" = "x"; then
40 dnl old method; fall-back for when -dumpversion doesn't work
41 gccversion=`"$CC" --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'`
42 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +000043 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki
44 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +000045 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"'
Bram Moolenaar071d4272004-06-13 20:20:40 +000046 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'`
47 else
48 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then
49 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"'
50 CFLAGS="$CFLAGS -fno-strength-reduce"
51 fi
52 fi
53fi
54
Bram Moolenaar446cb832008-06-24 21:56:24 +000055dnl If configure thinks we are cross compiling, there might be something
56dnl wrong with the CC or CFLAGS settings, give a useful warning message
Bram Moolenaar071d4272004-06-13 20:20:40 +000057if test "$cross_compiling" = yes; then
Bram Moolenaar446cb832008-06-24 21:56:24 +000058 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS])
Bram Moolenaar071d4272004-06-13 20:20:40 +000059fi
60
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +000061dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies.
62dnl But gcc 3.1 changed the meaning! See near the end.
Bram Moolenaar071d4272004-06-13 20:20:40 +000063test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM)
64
65if test -f ./toolcheck; then
66 AC_CHECKING(for buggy tools)
67 sh ./toolcheck 1>&AC_FD_MSG
68fi
69
70OS_EXTRA_SRC=""; OS_EXTRA_OBJ=""
71
72dnl Check for BeOS, which needs an extra source file
73AC_MSG_CHECKING(for BeOS)
74case `uname` in
75 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o
76 BEOS=yes; AC_MSG_RESULT(yes);;
77 *) BEOS=no; AC_MSG_RESULT(no);;
78esac
79
80dnl If QNX is found, assume we don't want to use Xphoton
81dnl unless it was specifically asked for (--with-x)
82AC_MSG_CHECKING(for QNX)
83case `uname` in
84 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o
85 test -z "$with_x" && with_x=no
86 QNX=yes; AC_MSG_RESULT(yes);;
87 *) QNX=no; AC_MSG_RESULT(no);;
88esac
89
90dnl Check for Darwin and MacOS X
91dnl We do a check for MacOS X in the very beginning because there
92dnl are a lot of other things we need to change besides GUI stuff
Bram Moolenaar071d4272004-06-13 20:20:40 +000093AC_MSG_CHECKING([for Darwin (Mac OS X)])
94if test "`(uname) 2>/dev/null`" = Darwin; then
95 AC_MSG_RESULT(yes)
96
97 AC_MSG_CHECKING(--disable-darwin argument)
98 AC_ARG_ENABLE(darwin,
99 [ --disable-darwin Disable Darwin (Mac OS X) support.],
100 , [enable_darwin="yes"])
101 if test "$enable_darwin" = "yes"; then
102 AC_MSG_RESULT(no)
103 AC_MSG_CHECKING(if Darwin files are there)
Bram Moolenaar164fca32010-07-14 13:58:07 +0200104 if test -f os_macosx.m; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000105 AC_MSG_RESULT(yes)
106 else
107 AC_MSG_RESULT([no, Darwin support disabled])
108 enable_darwin=no
109 fi
110 else
111 AC_MSG_RESULT([yes, Darwin support excluded])
112 fi
113
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000114 AC_MSG_CHECKING(--with-mac-arch argument)
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000115 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both],
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000116 MACARCH="$withval"; AC_MSG_RESULT($MACARCH),
Bram Moolenaar899dddf2006-03-26 21:06:50 +0000117 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH))
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000118
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100119 AC_MSG_CHECKING(--with-developer-dir argument)
120 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools],
121 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR),
122 DEVELOPER_DIR=""; AC_MSG_RESULT(not present))
123
124 if test "x$DEVELOPER_DIR" = "x"; then
125 AC_PATH_PROG(XCODE_SELECT, xcode-select)
126 if test "x$XCODE_SELECT" != "x"; then
127 AC_MSG_CHECKING(for developer dir using xcode-select)
128 DEVELOPER_DIR=`$XCODE_SELECT -print-path`
129 AC_MSG_RESULT([$DEVELOPER_DIR])
130 else
131 DEVELOPER_DIR=/Developer
132 fi
133 fi
134
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000135 if test "x$MACARCH" = "xboth"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000136 AC_MSG_CHECKING(for 10.4 universal SDK)
137 dnl There is a terrible inconsistency (but we appear to get away with it):
138 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS
139 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure
140 dnl tests using the preprocessor are actually done with the wrong header
141 dnl files. $LDFLAGS is set at the end, because configure uses it together
142 dnl with $CFLAGS and we can only have one -sysroot argument.
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000143 save_cppflags="$CPPFLAGS"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000144 save_cflags="$CFLAGS"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000145 save_ldflags="$LDFLAGS"
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100146 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000147 AC_TRY_LINK([ ], [ ],
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000148 AC_MSG_RESULT(found, will make universal binary),
149
150 AC_MSG_RESULT(not found)
Bram Moolenaar1f35bf92006-03-07 22:38:47 +0000151 CFLAGS="$save_cflags"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000152 AC_MSG_CHECKING(if Intel architecture is supported)
153 CPPFLAGS="$CPPFLAGS -arch i386"
154 LDFLAGS="$save_ldflags -arch i386"
155 AC_TRY_LINK([ ], [ ],
156 AC_MSG_RESULT(yes); MACARCH="intel",
157 AC_MSG_RESULT(no, using PowerPC)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000158 MACARCH="ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000159 CPPFLAGS="$save_cppflags -arch ppc"
160 LDFLAGS="$save_ldflags -arch ppc"))
161 elif test "x$MACARCH" = "xintel"; then
162 CPPFLAGS="$CPPFLAGS -arch intel"
163 LDFLAGS="$LDFLAGS -arch intel"
Bram Moolenaare2f98b92006-03-29 21:18:24 +0000164 elif test "x$MACARCH" = "xppc"; then
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000165 CPPFLAGS="$CPPFLAGS -arch ppc"
166 LDFLAGS="$LDFLAGS -arch ppc"
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000167 fi
168
Bram Moolenaar071d4272004-06-13 20:20:40 +0000169 if test "$enable_darwin" = "yes"; then
170 MACOSX=yes
Bram Moolenaar164fca32010-07-14 13:58:07 +0200171 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c";
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000172 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o"
Bram Moolenaar32466aa2006-02-24 23:53:04 +0000173 dnl TODO: use -arch i386 on Intel machines
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000174 CPPFLAGS="$CPPFLAGS -DMACOS_X_UNIX -no-cpp-precomp"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000175
176 dnl If Carbon is found, assume we don't want X11
177 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000178 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000179 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
180 if test "x$CARBON" = "xyes"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +0200181 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000182 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000183 fi
184 fi
185 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000186
Bram Moolenaardb552d602006-03-23 22:59:57 +0000187 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000188 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000189 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000190 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
191 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
192 fi
193
Bram Moolenaar071d4272004-06-13 20:20:40 +0000194else
195 AC_MSG_RESULT(no)
196fi
197
198AC_SUBST(OS_EXTRA_SRC)
199AC_SUBST(OS_EXTRA_OBJ)
200
201dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
202dnl Only when the directory exists and it wasn't there yet.
203dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000204dnl Skip all of this when cross-compiling.
205if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000206 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000207 have_local_include=''
208 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000209 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
210 --without-local-dir do not search /usr/local for local libraries.], [
211 local_dir="$withval"
212 case "$withval" in
213 */*) ;;
214 no)
215 # avoid adding local dir to LDFLAGS and CPPFLAGS
Bram Moolenaare06c1882010-07-21 22:05:20 +0200216 have_local_include=yes
Bram Moolenaarc236c162008-07-13 17:41:49 +0000217 have_local_lib=yes
218 ;;
219 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
220 esac
221 AC_MSG_RESULT($local_dir)
222 ], [
223 local_dir=/usr/local
224 AC_MSG_RESULT(Defaulting to $local_dir)
225 ])
226 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000227 echo 'void f(){}' > conftest.c
228 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000229 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
230 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000231 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000232 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000233 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
234 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000235 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000236 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000237 fi
238 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000239 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
240 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000241 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000242 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000243 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000244 fi
245fi
246
247AC_MSG_CHECKING(--with-vim-name argument)
248AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
249 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000250 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000251AC_SUBST(VIMNAME)
252AC_MSG_CHECKING(--with-ex-name argument)
253AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
254 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
255 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
256AC_SUBST(EXNAME)
257AC_MSG_CHECKING(--with-view-name argument)
258AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
259 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
260 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
261AC_SUBST(VIEWNAME)
262
263AC_MSG_CHECKING(--with-global-runtime argument)
264AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
265 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
266 AC_MSG_RESULT(no))
267
268AC_MSG_CHECKING(--with-modified-by argument)
269AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
270 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
271 AC_MSG_RESULT(no))
272
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200273dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix
Bram Moolenaar071d4272004-06-13 20:20:40 +0000274AC_MSG_CHECKING(if character set is EBCDIC)
275AC_TRY_COMPILE([ ],
276[ /* TryCompile function for CharSet.
277 Treat any failure as ASCII for compatibility with existing art.
278 Use compile-time rather than run-time tests for cross-compiler
279 tolerance. */
280#if '0'!=240
281make an error "Character set is not EBCDIC"
282#endif ],
283[ # TryCompile action if true
284cf_cv_ebcdic=yes ],
285[ # TryCompile action if false
286cf_cv_ebcdic=no])
287# end of TryCompile ])
288# end of CacheVal CvEbcdic
289AC_MSG_RESULT($cf_cv_ebcdic)
290case "$cf_cv_ebcdic" in #(vi
291 yes) AC_DEFINE(EBCDIC)
292 line_break='"\\n"'
293 ;;
294 *) line_break='"\\012"';;
295esac
296AC_SUBST(line_break)
297
298if test "$cf_cv_ebcdic" = "yes"; then
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200299dnl If we have EBCDIC we most likley have z/OS Unix, let's test it!
300AC_MSG_CHECKING(for z/OS Unix)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000301case `uname` in
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200302 OS/390) zOSUnix="yes";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000303 dnl If using cc the environment variable _CC_CCMODE must be
304 dnl set to "1", so that some compiler extensions are enabled.
305 dnl If using c89 the environment variable is named _CC_C89MODE.
306 dnl Note: compile with c89 never tested.
307 if test "$CC" = "cc"; then
308 ccm="$_CC_CCMODE"
309 ccn="CC"
310 else
311 if test "$CC" = "c89"; then
312 ccm="$_CC_C89MODE"
313 ccn="C89"
314 else
315 ccm=1
316 fi
317 fi
318 if test "$ccm" != "1"; then
319 echo ""
320 echo "------------------------------------------"
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200321 echo " On z/OS Unix, the environment variable"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000322 echo " __CC_${ccn}MODE must be set to \"1\"!"
323 echo " Do:"
324 echo " export _CC_${ccn}MODE=1"
325 echo " and then call configure again."
326 echo "------------------------------------------"
327 exit 1
328 fi
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200329 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float\\(IEEE\\)";
330 LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000331 AC_MSG_RESULT(yes)
332 ;;
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200333 *) zOSUnix="no";
Bram Moolenaar071d4272004-06-13 20:20:40 +0000334 AC_MSG_RESULT(no)
335 ;;
336esac
337fi
338
Bram Moolenaar2c704a72010-06-03 21:17:25 +0200339dnl Set QUOTESED. Needs additional backslashes on zOS
340if test "$zOSUnix" = "yes"; then
341 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'"
342else
343 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'"
344fi
345AC_SUBST(QUOTESED)
346
347
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000348dnl Link with -lselinux for SELinux stuff; if not found
349AC_MSG_CHECKING(--disable-selinux argument)
350AC_ARG_ENABLE(selinux,
351 [ --disable-selinux Don't check for SELinux support.],
352 , enable_selinux="yes")
353if test "$enable_selinux" = "yes"; then
354 AC_MSG_RESULT(no)
355 AC_CHECK_LIB(selinux, is_selinux_enabled,
356 [LIBS="$LIBS -lselinux"
357 AC_DEFINE(HAVE_SELINUX)])
358else
359 AC_MSG_RESULT(yes)
360fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000361
362dnl Check user requested features.
363
364AC_MSG_CHECKING(--with-features argument)
365AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
366 features="$withval"; AC_MSG_RESULT($features),
367 features="normal"; AC_MSG_RESULT(Defaulting to normal))
368
369dovimdiff=""
370dogvimdiff=""
371case "$features" in
372 tiny) AC_DEFINE(FEAT_TINY) ;;
373 small) AC_DEFINE(FEAT_SMALL) ;;
374 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
375 dogvimdiff="installgvimdiff" ;;
376 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
377 dogvimdiff="installgvimdiff" ;;
378 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
379 dogvimdiff="installgvimdiff" ;;
380 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
381esac
382
383AC_SUBST(dovimdiff)
384AC_SUBST(dogvimdiff)
385
386AC_MSG_CHECKING(--with-compiledby argument)
387AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
388 compiledby="$withval"; AC_MSG_RESULT($withval),
389 compiledby=""; AC_MSG_RESULT(no))
390AC_SUBST(compiledby)
391
392AC_MSG_CHECKING(--disable-xsmp argument)
393AC_ARG_ENABLE(xsmp,
394 [ --disable-xsmp Disable XSMP session management],
395 , enable_xsmp="yes")
396
397if test "$enable_xsmp" = "yes"; then
398 AC_MSG_RESULT(no)
399 AC_MSG_CHECKING(--disable-xsmp-interact argument)
400 AC_ARG_ENABLE(xsmp-interact,
401 [ --disable-xsmp-interact Disable XSMP interaction],
402 , enable_xsmp_interact="yes")
403 if test "$enable_xsmp_interact" = "yes"; then
404 AC_MSG_RESULT(no)
405 AC_DEFINE(USE_XSMP_INTERACT)
406 else
407 AC_MSG_RESULT(yes)
408 fi
409else
410 AC_MSG_RESULT(yes)
411fi
412
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200413dnl Check for Lua feature.
414AC_MSG_CHECKING(--enable-luainterp argument)
415AC_ARG_ENABLE(luainterp,
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200416 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200417 [enable_luainterp="no"])
418AC_MSG_RESULT($enable_luainterp)
419
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200420if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200421 dnl -- find the lua executable
422 AC_SUBST(vi_cv_path_lua)
423
424 AC_MSG_CHECKING(--with-lua-prefix argument)
425 AC_ARG_WITH(lua_prefix,
426 [ --with-lua-prefix=PFX Prefix where Lua is installed.],
427 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix),
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200428 with_lua_prefix="";AC_MSG_RESULT(no))
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200429
430 if test "X$with_lua_prefix" != "X"; then
431 vi_cv_path_lua_pfx="$with_lua_prefix"
432 else
433 AC_MSG_CHECKING(LUA_PREFIX environment var)
434 if test "X$LUA_PREFIX" != "X"; then
435 AC_MSG_RESULT("$LUA_PREFIX")
436 vi_cv_path_lua_pfx="$LUA_PREFIX"
437 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200438 AC_MSG_RESULT([not set, default to /usr])
439 vi_cv_path_lua_pfx="/usr"
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200440 fi
441 fi
442
443 LUA_INC=
444 if test "X$vi_cv_path_lua_pfx" != "X"; then
445 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include)
446 if test -f $vi_cv_path_lua_pfx/include/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200447 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200448 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200449 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200450 dnl -- try to find Lua executable
451 AC_PATH_PROG(vi_cv_path_lua, lua)
452 if test "X$vi_cv_path_lua" != "X"; then
453 dnl -- find Lua version
454 AC_CACHE_CHECK(Lua version, vi_cv_version_lua,
Bram Moolenaar8220a682010-07-25 13:12:49 +0200455 [ vi_cv_version_lua=`${vi_cv_path_lua} -e "print(_VERSION)" | sed 's/.* //'` ])
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200456 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua)
457 if test -f $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h; then
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200458 AC_MSG_RESULT(yes)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200459 LUA_INC=/lua$vi_cv_version_lua
460 else
Bram Moolenaar0d2e4fc2010-07-18 12:35:47 +0200461 AC_MSG_RESULT(no)
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200462 vi_cv_path_lua_pfx=
463 fi
464 fi
465 fi
466 fi
467
468 if test "X$vi_cv_path_lua_pfx" != "X"; then
469 if test "X$vi_cv_version_lua" != "X"; then
470 dnl Test alternate location using version
471 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua"
472 else
473 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua"
474 fi
475 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}"
476 LUA_SRC="if_lua.c"
477 LUA_OBJ="objects/if_lua.o"
478 LUA_PRO="if_lua.pro"
479 AC_DEFINE(FEAT_LUA)
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200480 if test "$enable_luainterp" = "dynamic"; then
Bram Moolenaar8220a682010-07-25 13:12:49 +0200481 dnl Determine the SONAME for the current version, but fallback to
482 dnl liblua${vi_cv_version_lua}.so if no SONAME-versioned file is found.
483 for i in 0 1 2 3 4 5 6 7 8 9; do
484 if test -f "${vi_cv_path_lua_pfx}/lib/liblua${vi_cv_version_lua}.so.$i"; then
485 LUA_SONAME=".$i"
486 break
487 fi
488 done
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200489 AC_DEFINE(DYNAMIC_LUA)
490 LUA_LIBS=""
Bram Moolenaar8220a682010-07-25 13:12:49 +0200491 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"liblua${vi_cv_version_lua}.so$LUA_SONAME\\\" $LUA_CFLAGS"
Bram Moolenaar2334b6d2010-07-22 21:32:16 +0200492 fi
Bram Moolenaar0ba04292010-07-14 23:23:17 +0200493 fi
494 AC_SUBST(LUA_SRC)
495 AC_SUBST(LUA_OBJ)
496 AC_SUBST(LUA_PRO)
497 AC_SUBST(LUA_LIBS)
498 AC_SUBST(LUA_CFLAGS)
499fi
500
501
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000502dnl Check for MzScheme feature.
503AC_MSG_CHECKING(--enable-mzschemeinterp argument)
504AC_ARG_ENABLE(mzschemeinterp,
505 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
506 [enable_mzschemeinterp="no"])
507AC_MSG_RESULT($enable_mzschemeinterp)
508
509if test "$enable_mzschemeinterp" = "yes"; then
510 dnl -- find the mzscheme executable
511 AC_SUBST(vi_cv_path_mzscheme)
512
513 AC_MSG_CHECKING(--with-plthome argument)
514 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000515 [ --with-plthome=PLTHOME Use PLTHOME.],
516 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000517 with_plthome="";AC_MSG_RESULT("no"))
518
519 if test "X$with_plthome" != "X"; then
520 vi_cv_path_mzscheme_pfx="$with_plthome"
521 else
522 AC_MSG_CHECKING(PLTHOME environment var)
523 if test "X$PLTHOME" != "X"; then
524 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000525 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000526 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000527 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000528 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000529 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000530
531 dnl resolve symbolic link, the executable is often elsewhere and there
532 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000533 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000534 lsout=`ls -l $vi_cv_path_mzscheme`
535 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
536 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
537 fi
538 fi
539
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000540 if test "X$vi_cv_path_mzscheme" != "X"; then
541 dnl -- find where MzScheme thinks it was installed
542 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000543 dnl different versions of MzScheme differ in command line processing
544 dnl use universal approach
545 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000546 (build-path (call-with-values \
547 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000548 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
549 dnl Remove a trailing slash
550 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
551 sed -e 's+/$++'` ])
552 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000553 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000554 fi
555 fi
556
Bram Moolenaard7afed32007-05-06 13:26:41 +0000557 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000558 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
559 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
560 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000561 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
562 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000563 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000564 AC_MSG_RESULT(no)
565 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000566 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000567 AC_MSG_RESULT(yes)
568 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000569 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000570 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100571 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket)
572 if test -f $vi_cv_path_mzscheme_pfx/include/racket/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000573 AC_MSG_RESULT(yes)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100574 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000575 else
576 AC_MSG_RESULT(no)
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100577 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
578 if test -f /usr/include/plt/scheme.h; then
579 AC_MSG_RESULT(yes)
580 SCHEME_INC=/usr/include/plt
581 else
582 AC_MSG_RESULT(no)
583 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/)
584 if test -f /usr/include/racket/scheme.h; then
585 AC_MSG_RESULT(yes)
586 SCHEME_INC=/usr/include/racket
587 else
588 AC_MSG_RESULT(no)
589 vi_cv_path_mzscheme_pfx=
590 fi
591 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000592 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000593 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000594 fi
595 fi
596
597 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000598 if test "x$MACOSX" = "xyes"; then
599 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000600 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
601 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
602 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100603 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"; then
604 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket3m.a"
605 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
606 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.a"; then
607 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libracket.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
608 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000609 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme.a ${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000610 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000611 dnl Using shared objects
612 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
613 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
614 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100615 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket3m.so"; then
616 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket3m"
617 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
618 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libracket.so"; then
619 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lracket -lmzgc"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000620 else
621 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
622 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000623 if test "$GCC" = yes; then
624 dnl Make Vim remember the path to the library. For when it's not in
625 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000626 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000627 elif test "`(uname) 2>/dev/null`" = SunOS &&
628 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000629 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000630 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000631 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000632 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
633 SCHEME_COLLECTS=lib/plt/
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100634 else
635 if test -d $vi_cv_path_mzscheme_pfx/lib/racket/collects; then
636 SCHEME_COLLECTS=lib/racket/
637 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000638 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000639 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000640 MZSCHEME_EXTRA="mzscheme_base.c"
Bram Moolenaar2d0860d2010-11-03 21:59:30 +0100641 else
642 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then
643 MZSCHEME_EXTRA="mzscheme_base.c"
644 fi
645 fi
646 if test "X$MZSCHEME_EXTRA" != "X" ; then
647 dnl need to generate bytecode for MzScheme base
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000648 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
649 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
650 fi
651 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000652 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000653 MZSCHEME_SRC="if_mzsch.c"
654 MZSCHEME_OBJ="objects/if_mzsch.o"
655 MZSCHEME_PRO="if_mzsch.pro"
656 AC_DEFINE(FEAT_MZSCHEME)
657 fi
658 AC_SUBST(MZSCHEME_SRC)
659 AC_SUBST(MZSCHEME_OBJ)
660 AC_SUBST(MZSCHEME_PRO)
661 AC_SUBST(MZSCHEME_LIBS)
662 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000663 AC_SUBST(MZSCHEME_EXTRA)
664 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000665fi
666
667
Bram Moolenaar071d4272004-06-13 20:20:40 +0000668AC_MSG_CHECKING(--enable-perlinterp argument)
669AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200670 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000671 [enable_perlinterp="no"])
672AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200673if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000674 AC_SUBST(vi_cv_path_perl)
675 AC_PATH_PROG(vi_cv_path_perl, perl)
676 if test "X$vi_cv_path_perl" != "X"; then
677 AC_MSG_CHECKING(Perl version)
678 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
679 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200680 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000681 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
682 badthreads=no
683 else
684 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
685 eval `$vi_cv_path_perl -V:use5005threads`
686 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
687 badthreads=no
688 else
689 badthreads=yes
690 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
691 fi
692 else
693 badthreads=yes
694 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
695 fi
696 fi
697 if test $badthreads = no; then
698 AC_MSG_RESULT(OK)
699 eval `$vi_cv_path_perl -V:shrpenv`
700 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
701 shrpenv=""
702 fi
703 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
704 AC_SUBST(vi_cv_perllib)
705 dnl Remove "-fno-something", it breaks using cproto.
706 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
707 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
708 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
709 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
710 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
711 -e 's/-bE:perl.exp//' -e 's/-lc //'`
712 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
713 dnl a test in configure may fail because of that.
714 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
715 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
716
717 dnl check that compiling a simple program still works with the flags
718 dnl added for Perl.
719 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
720 cflags_save=$CFLAGS
721 libs_save=$LIBS
722 ldflags_save=$LDFLAGS
723 CFLAGS="$CFLAGS $perlcppflags"
724 LIBS="$LIBS $perllibs"
725 LDFLAGS="$perlldflags $LDFLAGS"
726 AC_TRY_LINK(,[ ],
727 AC_MSG_RESULT(yes); perl_ok=yes,
728 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
729 CFLAGS=$cflags_save
730 LIBS=$libs_save
731 LDFLAGS=$ldflags_save
732 if test $perl_ok = yes; then
733 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000734 dnl remove -pipe and -Wxxx, it confuses cproto
735 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000736 fi
737 if test "X$perlldflags" != "X"; then
738 LDFLAGS="$perlldflags $LDFLAGS"
739 fi
740 PERL_LIBS=$perllibs
741 PERL_SRC="auto/if_perl.c if_perlsfio.c"
742 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
743 PERL_PRO="if_perl.pro if_perlsfio.pro"
744 AC_DEFINE(FEAT_PERL)
745 fi
746 fi
747 else
748 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
749 fi
750 fi
751
752 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000753 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000754 dir=/System/Library/Perl
755 darwindir=$dir/darwin
756 if test -d $darwindir; then
757 PERL=/usr/bin/perl
758 else
759 dnl Mac OS X 10.3
760 dir=/System/Library/Perl/5.8.1
761 darwindir=$dir/darwin-thread-multi-2level
762 if test -d $darwindir; then
763 PERL=/usr/bin/perl
764 fi
765 fi
766 if test -n "$PERL"; then
767 PERL_DIR="$dir"
768 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
769 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
770 PERL_LIBS="-L$darwindir/CORE -lperl"
771 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200772 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
773 dnl be included if requested by passing --with-mac-arch to
774 dnl configure, so strip these flags first (if present)
775 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
776 PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000777 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200778 if test "$enable_perlinterp" = "dynamic"; then
779 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
780 AC_DEFINE(DYNAMIC_PERL)
781 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
782 fi
783 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000784fi
785AC_SUBST(shrpenv)
786AC_SUBST(PERL_SRC)
787AC_SUBST(PERL_OBJ)
788AC_SUBST(PERL_PRO)
789AC_SUBST(PERL_CFLAGS)
790AC_SUBST(PERL_LIBS)
791
792AC_MSG_CHECKING(--enable-pythoninterp argument)
793AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200794 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000795 [enable_pythoninterp="no"])
796AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200797if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000798 dnl -- find the python executable
799 AC_PATH_PROG(vi_cv_path_python, python)
800 if test "X$vi_cv_path_python" != "X"; then
801
802 dnl -- get its version number
803 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
804 [[vi_cv_var_python_version=`
805 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
806 ]])
807
808 dnl -- it must be at least version 1.4
809 AC_MSG_CHECKING(Python is 1.4 or better)
810 if ${vi_cv_path_python} -c \
811 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
812 then
813 AC_MSG_RESULT(yep)
814
815 dnl -- find where python thinks it was installed
816 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
817 [ vi_cv_path_python_pfx=`
818 ${vi_cv_path_python} -c \
819 "import sys; print sys.prefix"` ])
820
821 dnl -- and where it thinks it runs
822 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
823 [ vi_cv_path_python_epfx=`
824 ${vi_cv_path_python} -c \
825 "import sys; print sys.exec_prefix"` ])
826
827 dnl -- python's internal library path
828
829 AC_CACHE_VAL(vi_cv_path_pythonpath,
830 [ vi_cv_path_pythonpath=`
831 unset PYTHONPATH;
832 ${vi_cv_path_python} -c \
833 "import sys, string; print string.join(sys.path,':')"` ])
834
835 dnl -- where the Python implementation library archives are
836
837 AC_ARG_WITH(python-config-dir,
838 [ --with-python-config-dir=PATH Python's config directory],
839 [ vi_cv_path_python_conf="${withval}" ] )
840
841 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
842 [
843 vi_cv_path_python_conf=
844 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000845 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000846 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
847 if test -d "$d" && test -f "$d/config.c"; then
848 vi_cv_path_python_conf="$d"
849 fi
850 done
851 done
852 ])
853
854 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
855
856 if test "X$PYTHON_CONFDIR" = "X"; then
857 AC_MSG_RESULT([can't find it!])
858 else
859
860 dnl -- we need to examine Python's config/Makefile too
861 dnl see what the interpreter is built from
862 AC_CACHE_VAL(vi_cv_path_python_plibs,
863 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000864 pwd=`pwd`
865 tmp_mkf="$pwd/config-PyMake$$"
866 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000867__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200868 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000869 @echo "python_LIBS='$(LIBS)'"
870 @echo "python_SYSLIBS='$(SYSLIBS)'"
871 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200872 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000873eof
874 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000875 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
876 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000877 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
878 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
879 vi_cv_path_python_plibs="-framework Python"
880 else
881 if test "${vi_cv_var_python_version}" = "1.4"; then
882 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
883 else
884 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
885 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200886 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000887 dnl remove -ltermcap, it can conflict with an earlier -lncurses
888 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
889 fi
890 ])
891
892 PYTHON_LIBS="${vi_cv_path_python_plibs}"
893 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100894 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
Bram Moolenaar071d4272004-06-13 20:20:40 +0000895 else
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100896 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version} -I${vi_cv_path_python_epfx}/include/python${vi_cv_var_python_version} -DPYTHON_HOME=\\\"${vi_cv_path_python_pfx}\\\""
Bram Moolenaar071d4272004-06-13 20:20:40 +0000897 fi
898 PYTHON_SRC="if_python.c"
899 dnl For Mac OSX 10.2 config.o is included in the Python library.
900 if test "x$MACOSX" = "xyes"; then
901 PYTHON_OBJ="objects/if_python.o"
902 else
903 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
904 fi
905 if test "${vi_cv_var_python_version}" = "1.4"; then
906 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
907 fi
Bram Moolenaar644d37b2010-11-16 19:26:02 +0100908 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000909
910 dnl On FreeBSD linking with "-pthread" is required to use threads.
911 dnl _THREAD_SAFE must be used for compiling then.
912 dnl The "-pthread" is added to $LIBS, so that the following check for
913 dnl sigaltstack() will look in libc_r (it's there in libc!).
914 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
915 dnl will then define target-specific defines, e.g., -D_REENTRANT.
916 dnl Don't do this for Mac OSX, -pthread will generate a warning.
917 AC_MSG_CHECKING([if -pthread should be used])
918 threadsafe_flag=
919 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000920 dnl if test "x$MACOSX" != "xyes"; then
921 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000922 test "$GCC" = yes && threadsafe_flag="-pthread"
923 if test "`(uname) 2>/dev/null`" = FreeBSD; then
924 threadsafe_flag="-D_THREAD_SAFE"
925 thread_lib="-pthread"
926 fi
927 fi
928 libs_save_old=$LIBS
929 if test -n "$threadsafe_flag"; then
930 cflags_save=$CFLAGS
931 CFLAGS="$CFLAGS $threadsafe_flag"
932 LIBS="$LIBS $thread_lib"
933 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200934 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000935 AC_MSG_RESULT(no); LIBS=$libs_save_old
936 )
937 CFLAGS=$cflags_save
938 else
939 AC_MSG_RESULT(no)
940 fi
941
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200942 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000943 dnl added for Python.
944 AC_MSG_CHECKING([if compile and link flags for Python are sane])
945 cflags_save=$CFLAGS
946 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200947 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000948 LIBS="$LIBS $PYTHON_LIBS"
949 AC_TRY_LINK(,[ ],
950 AC_MSG_RESULT(yes); python_ok=yes,
951 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
952 CFLAGS=$cflags_save
953 LIBS=$libs_save
954 if test $python_ok = yes; then
955 AC_DEFINE(FEAT_PYTHON)
956 else
957 LIBS=$libs_save_old
958 PYTHON_SRC=
959 PYTHON_OBJ=
960 PYTHON_LIBS=
961 PYTHON_CFLAGS=
962 fi
963
964 fi
965 else
966 AC_MSG_RESULT(too old)
967 fi
968 fi
969fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200970
Bram Moolenaar071d4272004-06-13 20:20:40 +0000971AC_SUBST(PYTHON_CONFDIR)
972AC_SUBST(PYTHON_LIBS)
973AC_SUBST(PYTHON_GETPATH_CFLAGS)
974AC_SUBST(PYTHON_CFLAGS)
975AC_SUBST(PYTHON_SRC)
976AC_SUBST(PYTHON_OBJ)
977
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200978
979AC_MSG_CHECKING(--enable-python3interp argument)
980AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200981 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200982 [enable_python3interp="no"])
983AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200984if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200985 dnl -- find the python3 executable
986 AC_PATH_PROG(vi_cv_path_python3, python3)
987 if test "X$vi_cv_path_python3" != "X"; then
988
989 dnl -- get its version number
990 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
991 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +0200992 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200993 ]])
994
Bram Moolenaar456f2bb2011-06-12 21:37:13 +0200995 dnl -- get abiflags for python 3.2 or higher (PEP 3149)
996 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags,
997 [
998 vi_cv_var_python3_abiflags=
999 if ${vi_cv_path_python3} -c \
1000 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)"
1001 then
1002 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \
1003 "import sys; print(sys.abiflags)"`
1004 fi ])
1005
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001006 dnl -- find where python3 thinks it was installed
1007 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
1008 [ vi_cv_path_python3_pfx=`
1009 ${vi_cv_path_python3} -c \
1010 "import sys; print(sys.prefix)"` ])
1011
1012 dnl -- and where it thinks it runs
1013 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
1014 [ vi_cv_path_python3_epfx=`
1015 ${vi_cv_path_python3} -c \
1016 "import sys; print(sys.exec_prefix)"` ])
1017
1018 dnl -- python3's internal library path
1019
1020 AC_CACHE_VAL(vi_cv_path_python3path,
1021 [ vi_cv_path_python3path=`
1022 unset PYTHONPATH;
1023 ${vi_cv_path_python3} -c \
1024 "import sys, string; print(':'.join(sys.path))"` ])
1025
1026 dnl -- where the Python implementation library archives are
1027
1028 AC_ARG_WITH(python3-config-dir,
1029 [ --with-python3-config-dir=PATH Python's config directory],
1030 [ vi_cv_path_python3_conf="${withval}" ] )
1031
1032 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
1033 [
1034 vi_cv_path_python3_conf=
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001035 config_dir="config"
1036 if test "${vi_cv_var_python3_abiflags}" != ""; then
1037 config_dir="${config_dir}-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
1038 fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001039 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +02001040 for subdir in lib64 lib share; do
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001041 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001042 if test -d "$d" && test -f "$d/config.c"; then
1043 vi_cv_path_python3_conf="$d"
1044 fi
1045 done
1046 done
1047 ])
1048
1049 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1050
1051 if test "X$PYTHON3_CONFDIR" = "X"; then
1052 AC_MSG_RESULT([can't find it!])
1053 else
1054
1055 dnl -- we need to examine Python's config/Makefile too
1056 dnl see what the interpreter is built from
1057 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1058 [
1059 pwd=`pwd`
1060 tmp_mkf="$pwd/config-PyMake$$"
1061 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1062__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001063 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001064 @echo "python3_LIBS='$(LIBS)'"
1065 @echo "python3_SYSLIBS='$(SYSLIBS)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001066 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001067eof
1068 dnl -- delete the lines from make about Entering/Leaving directory
1069 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1070 rm -f -- "${tmp_mkf}"
Bram Moolenaar54ee2b82011-07-15 13:09:51 +02001071 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}"
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001072 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001073 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1074 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1075 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1076 ])
1077
1078 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1079 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar456f2bb2011-06-12 21:37:13 +02001080 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001081 else
Bram Moolenaar015de432011-06-13 01:32:46 +02001082 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -DPYTHON3_HOME=L\\\"${vi_cv_path_python3_pfx}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001083 fi
1084 PYTHON3_SRC="if_python3.c"
1085 dnl For Mac OSX 10.2 config.o is included in the Python library.
1086 if test "x$MACOSX" = "xyes"; then
1087 PYTHON3_OBJ="objects/if_python3.o"
1088 else
1089 PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
1090 fi
1091
1092 dnl On FreeBSD linking with "-pthread" is required to use threads.
1093 dnl _THREAD_SAFE must be used for compiling then.
1094 dnl The "-pthread" is added to $LIBS, so that the following check for
1095 dnl sigaltstack() will look in libc_r (it's there in libc!).
1096 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1097 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1098 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1099 AC_MSG_CHECKING([if -pthread should be used])
1100 threadsafe_flag=
1101 thread_lib=
1102 dnl if test "x$MACOSX" != "xyes"; then
1103 if test "`(uname) 2>/dev/null`" != Darwin; then
1104 test "$GCC" = yes && threadsafe_flag="-pthread"
1105 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1106 threadsafe_flag="-D_THREAD_SAFE"
1107 thread_lib="-pthread"
1108 fi
1109 fi
1110 libs_save_old=$LIBS
1111 if test -n "$threadsafe_flag"; then
1112 cflags_save=$CFLAGS
1113 CFLAGS="$CFLAGS $threadsafe_flag"
1114 LIBS="$LIBS $thread_lib"
1115 AC_TRY_LINK(,[ ],
1116 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1117 AC_MSG_RESULT(no); LIBS=$libs_save_old
1118 )
1119 CFLAGS=$cflags_save
1120 else
1121 AC_MSG_RESULT(no)
1122 fi
1123
1124 dnl check that compiling a simple program still works with the flags
1125 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001126 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001127 cflags_save=$CFLAGS
1128 libs_save=$LIBS
1129 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1130 LIBS="$LIBS $PYTHON3_LIBS"
1131 AC_TRY_LINK(,[ ],
1132 AC_MSG_RESULT(yes); python3_ok=yes,
1133 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1134 CFLAGS=$cflags_save
1135 LIBS=$libs_save
1136 if test "$python3_ok" = yes; then
1137 AC_DEFINE(FEAT_PYTHON3)
1138 else
1139 LIBS=$libs_save_old
1140 PYTHON3_SRC=
1141 PYTHON3_OBJ=
1142 PYTHON3_LIBS=
1143 PYTHON3_CFLAGS=
1144 fi
1145 fi
1146 fi
1147fi
1148
1149AC_SUBST(PYTHON3_CONFDIR)
1150AC_SUBST(PYTHON3_LIBS)
1151AC_SUBST(PYTHON3_CFLAGS)
1152AC_SUBST(PYTHON3_SRC)
1153AC_SUBST(PYTHON3_OBJ)
1154
1155dnl if python2.x and python3.x are enabled one can only link in code
1156dnl with dlopen(), dlsym(), dlclose()
1157if test "$python_ok" = yes && test "$python3_ok" = yes; then
1158 AC_DEFINE(DYNAMIC_PYTHON)
1159 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001160 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001161 cflags_save=$CFLAGS
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001162 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001163 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001164 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1165 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001166 AC_RUN_IFELSE([
1167 #include <dlfcn.h>
1168 /* If this program fails, then RTLD_GLOBAL is needed.
1169 * RTLD_GLOBAL will be used and then it is not possible to
1170 * have both python versions enabled in the same vim instance.
1171 * Only the first pyhton version used will be switched on.
1172 */
1173
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001174 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001175 {
1176 int needed = 0;
1177 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1178 if (pylib != 0)
1179 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001180 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001181 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1182 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1183 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001184 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001185 (*init)();
1186 needed = (*simple)("import termios") == -1;
1187 (*final)();
1188 dlclose(pylib);
1189 }
1190 return !needed;
1191 }
1192
1193 int main(int argc, char** argv)
1194 {
1195 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001196 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001197 not_needed = 1;
1198 return !not_needed;
1199 }],
1200 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001201
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001202 CFLAGS=$cflags_save
1203 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001204
1205 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1206 cflags_save=$CFLAGS
1207 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1208 ldflags_save=$LDFLAGS
Bram Moolenaar6fabcbe2011-09-02 12:27:25 +02001209 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier)
1210 LDFLAGS="-ldl $LDFLAGS"
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001211 AC_RUN_IFELSE([
1212 #include <dlfcn.h>
1213 #include <wchar.h>
1214 /* If this program fails, then RTLD_GLOBAL is needed.
1215 * RTLD_GLOBAL will be used and then it is not possible to
1216 * have both python versions enabled in the same vim instance.
1217 * Only the first pyhton version used will be switched on.
1218 */
1219
1220 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1221 {
1222 int needed = 0;
1223 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1224 if (pylib != 0)
1225 {
1226 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1227 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1228 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1229 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1230 (*pfx)(prefix);
1231 (*init)();
1232 needed = (*simple)("import termios") == -1;
1233 (*final)();
1234 dlclose(pylib);
1235 }
1236 return !needed;
1237 }
1238
1239 int main(int argc, char** argv)
1240 {
1241 int not_needed = 0;
1242 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1243 not_needed = 1;
1244 return !not_needed;
1245 }],
1246 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1247
1248 CFLAGS=$cflags_save
1249 LDFLAGS=$ldflags_save
1250
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001251 PYTHON_SRC="if_python.c"
1252 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001253 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001254 PYTHON_LIBS=
1255 PYTHON3_SRC="if_python3.c"
1256 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001257 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001258 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001259elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1260 AC_DEFINE(DYNAMIC_PYTHON)
1261 PYTHON_SRC="if_python.c"
1262 PYTHON_OBJ="objects/if_python.o"
1263 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1264 PYTHON_LIBS=
1265elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1266 AC_DEFINE(DYNAMIC_PYTHON3)
1267 PYTHON3_SRC="if_python3.c"
1268 PYTHON3_OBJ="objects/if_python3.o"
1269 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1270 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001271fi
1272
Bram Moolenaar071d4272004-06-13 20:20:40 +00001273AC_MSG_CHECKING(--enable-tclinterp argument)
1274AC_ARG_ENABLE(tclinterp,
1275 [ --enable-tclinterp Include Tcl interpreter.], ,
1276 [enable_tclinterp="no"])
1277AC_MSG_RESULT($enable_tclinterp)
1278
1279if test "$enable_tclinterp" = "yes"; then
1280
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001281 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001282 AC_MSG_CHECKING(--with-tclsh argument)
1283 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1284 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001285 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001286 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1287 AC_SUBST(vi_cv_path_tcl)
1288
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001289 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1290 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1291 tclsh_name="tclsh8.4"
1292 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1293 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001294 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001295 tclsh_name="tclsh8.2"
1296 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1297 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001298 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1299 tclsh_name="tclsh8.0"
1300 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1301 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001302 dnl still didn't find it, try without version number
1303 if test "X$vi_cv_path_tcl" = "X"; then
1304 tclsh_name="tclsh"
1305 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1306 fi
1307 if test "X$vi_cv_path_tcl" != "X"; then
1308 AC_MSG_CHECKING(Tcl version)
1309 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1310 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1311 AC_MSG_RESULT($tclver - OK);
1312 tclloc=`echo 'set l [[info library]];set i [[string last lib $l]];incr i -2;puts [[string range $l 0 $i]]' | $vi_cv_path_tcl -`
1313
1314 AC_MSG_CHECKING(for location of Tcl include)
1315 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001316 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001317 else
1318 dnl For Mac OS X 10.3, use the OS-provided framework location
1319 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1320 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001321 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001322 for try in $tclinc; do
1323 if test -f "$try/tcl.h"; then
1324 AC_MSG_RESULT($try/tcl.h)
1325 TCL_INC=$try
1326 break
1327 fi
1328 done
1329 if test -z "$TCL_INC"; then
1330 AC_MSG_RESULT(<not found>)
1331 SKIP_TCL=YES
1332 fi
1333 if test -z "$SKIP_TCL"; then
1334 AC_MSG_CHECKING(for location of tclConfig.sh script)
1335 if test "x$MACOSX" != "xyes"; then
1336 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001337 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001338 else
1339 dnl For Mac OS X 10.3, use the OS-provided framework location
1340 tclcnf="/System/Library/Frameworks/Tcl.framework"
1341 fi
1342 for try in $tclcnf; do
1343 if test -f $try/tclConfig.sh; then
1344 AC_MSG_RESULT($try/tclConfig.sh)
1345 . $try/tclConfig.sh
1346 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1347 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1348 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001349 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001350 TCL_DEFS=`echo $TCL_DEFS | sed -e 's/\\\\ /\\\\X/g' | tr ' ' '\012' | sed -e '/^[[^-]]/d' -e '/^-[[^D]]/d' -e '/-D[[^_]]/d' -e 's/-D_/ -D_/' | tr '\012' ' ' | sed -e 's/\\\\X/\\\\ /g'`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001351 break
1352 fi
1353 done
1354 if test -z "$TCL_LIBS"; then
1355 AC_MSG_RESULT(<not found>)
1356 AC_MSG_CHECKING(for Tcl library by myself)
1357 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001358 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001359 for ext in .so .a ; do
1360 for ver in "" $tclver ; do
1361 for try in $tcllib ; do
1362 trylib=tcl$ver$ext
1363 if test -f $try/lib$trylib ; then
1364 AC_MSG_RESULT($try/lib$trylib)
1365 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1366 if test "`(uname) 2>/dev/null`" = SunOS &&
1367 uname -r | grep '^5' >/dev/null; then
1368 TCL_LIBS="$TCL_LIBS -R $try"
1369 fi
1370 break 3
1371 fi
1372 done
1373 done
1374 done
1375 if test -z "$TCL_LIBS"; then
1376 AC_MSG_RESULT(<not found>)
1377 SKIP_TCL=YES
1378 fi
1379 fi
1380 if test -z "$SKIP_TCL"; then
1381 AC_DEFINE(FEAT_TCL)
1382 TCL_SRC=if_tcl.c
1383 TCL_OBJ=objects/if_tcl.o
1384 TCL_PRO=if_tcl.pro
1385 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1386 fi
1387 fi
1388 else
1389 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1390 fi
1391 fi
1392fi
1393AC_SUBST(TCL_SRC)
1394AC_SUBST(TCL_OBJ)
1395AC_SUBST(TCL_PRO)
1396AC_SUBST(TCL_CFLAGS)
1397AC_SUBST(TCL_LIBS)
1398
1399AC_MSG_CHECKING(--enable-rubyinterp argument)
1400AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001401 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001402 [enable_rubyinterp="no"])
1403AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001404if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001405 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001406 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001407 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1408 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1409 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001410 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001411 if test "X$vi_cv_path_ruby" != "X"; then
1412 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001413 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001414 AC_MSG_RESULT(OK)
1415 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001416 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e 'print Config::CONFIG[["rubyhdrdir"]] || Config::CONFIG[["archdir"]] || $hdrdir' 2>/dev/null`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001417 if test "X$rubyhdrdir" != "X"; then
1418 AC_MSG_RESULT($rubyhdrdir)
1419 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001420 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1421 if test -d "$rubyhdrdir/$rubyarch"; then
1422 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1423 fi
1424 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1425 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001426 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1427 if test "X$rubylibs" != "X"; then
1428 RUBY_LIBS="$rubylibs"
1429 fi
1430 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001431 librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
1432 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1433 if test -f "$rubylibdir/$librubya"; then
1434 librubyarg="$librubyarg"
1435 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1436 elif test "$librubyarg" = "libruby.a"; then
1437 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1438 librubyarg="-lruby"
1439 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001440 fi
1441
1442 if test "X$librubyarg" != "X"; then
1443 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1444 fi
1445 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1446 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001447 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1448 dnl be included if requested by passing --with-mac-arch to
1449 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001450 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001451 if test "X$rubyldflags" != "X"; then
1452 LDFLAGS="$rubyldflags $LDFLAGS"
1453 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001454 fi
1455 RUBY_SRC="if_ruby.c"
1456 RUBY_OBJ="objects/if_ruby.o"
1457 RUBY_PRO="if_ruby.pro"
1458 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001459 if test "$enable_rubyinterp" = "dynamic"; then
1460 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1461 AC_DEFINE(DYNAMIC_RUBY)
1462 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1463 RUBY_LIBS=
1464 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001465 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001466 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001467 fi
1468 else
1469 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1470 fi
1471 fi
1472fi
1473AC_SUBST(RUBY_SRC)
1474AC_SUBST(RUBY_OBJ)
1475AC_SUBST(RUBY_PRO)
1476AC_SUBST(RUBY_CFLAGS)
1477AC_SUBST(RUBY_LIBS)
1478
1479AC_MSG_CHECKING(--enable-cscope argument)
1480AC_ARG_ENABLE(cscope,
1481 [ --enable-cscope Include cscope interface.], ,
1482 [enable_cscope="no"])
1483AC_MSG_RESULT($enable_cscope)
1484if test "$enable_cscope" = "yes"; then
1485 AC_DEFINE(FEAT_CSCOPE)
1486fi
1487
1488AC_MSG_CHECKING(--enable-workshop argument)
1489AC_ARG_ENABLE(workshop,
1490 [ --enable-workshop Include Sun Visual Workshop support.], ,
1491 [enable_workshop="no"])
1492AC_MSG_RESULT($enable_workshop)
1493if test "$enable_workshop" = "yes"; then
1494 AC_DEFINE(FEAT_SUN_WORKSHOP)
1495 WORKSHOP_SRC="workshop.c integration.c"
1496 AC_SUBST(WORKSHOP_SRC)
1497 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1498 AC_SUBST(WORKSHOP_OBJ)
1499 if test "${enable_gui-xxx}" = xxx; then
1500 enable_gui=motif
1501 fi
1502fi
1503
1504AC_MSG_CHECKING(--disable-netbeans argument)
1505AC_ARG_ENABLE(netbeans,
1506 [ --disable-netbeans Disable NetBeans integration support.],
1507 , [enable_netbeans="yes"])
1508if test "$enable_netbeans" = "yes"; then
1509 AC_MSG_RESULT(no)
1510 dnl On Solaris we need the socket and nsl library.
1511 AC_CHECK_LIB(socket, socket)
1512 AC_CHECK_LIB(nsl, gethostbyname)
1513 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1514 AC_TRY_LINK([
1515#include <stdio.h>
1516#include <stdlib.h>
1517#include <stdarg.h>
1518#include <fcntl.h>
1519#include <netdb.h>
1520#include <netinet/in.h>
1521#include <errno.h>
1522#include <sys/types.h>
1523#include <sys/socket.h>
1524 /* Check bitfields */
1525 struct nbbuf {
1526 unsigned int initDone:1;
1527 ushort signmaplen;
1528 };
1529 ], [
1530 /* Check creating a socket. */
1531 struct sockaddr_in server;
1532 (void)socket(AF_INET, SOCK_STREAM, 0);
1533 (void)htons(100);
1534 (void)gethostbyname("microsoft.com");
1535 if (errno == ECONNREFUSED)
1536 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1537 ],
1538 AC_MSG_RESULT(yes),
1539 AC_MSG_RESULT(no); enable_netbeans="no")
1540else
1541 AC_MSG_RESULT(yes)
1542fi
1543if test "$enable_netbeans" = "yes"; then
1544 AC_DEFINE(FEAT_NETBEANS_INTG)
1545 NETBEANS_SRC="netbeans.c"
1546 AC_SUBST(NETBEANS_SRC)
1547 NETBEANS_OBJ="objects/netbeans.o"
1548 AC_SUBST(NETBEANS_OBJ)
1549fi
1550
1551AC_MSG_CHECKING(--enable-sniff argument)
1552AC_ARG_ENABLE(sniff,
1553 [ --enable-sniff Include Sniff interface.], ,
1554 [enable_sniff="no"])
1555AC_MSG_RESULT($enable_sniff)
1556if test "$enable_sniff" = "yes"; then
1557 AC_DEFINE(FEAT_SNIFF)
1558 SNIFF_SRC="if_sniff.c"
1559 AC_SUBST(SNIFF_SRC)
1560 SNIFF_OBJ="objects/if_sniff.o"
1561 AC_SUBST(SNIFF_OBJ)
1562fi
1563
1564AC_MSG_CHECKING(--enable-multibyte argument)
1565AC_ARG_ENABLE(multibyte,
1566 [ --enable-multibyte Include multibyte editing support.], ,
1567 [enable_multibyte="no"])
1568AC_MSG_RESULT($enable_multibyte)
1569if test "$enable_multibyte" = "yes"; then
1570 AC_DEFINE(FEAT_MBYTE)
1571fi
1572
1573AC_MSG_CHECKING(--enable-hangulinput argument)
1574AC_ARG_ENABLE(hangulinput,
1575 [ --enable-hangulinput Include Hangul input support.], ,
1576 [enable_hangulinput="no"])
1577AC_MSG_RESULT($enable_hangulinput)
1578
1579AC_MSG_CHECKING(--enable-xim argument)
1580AC_ARG_ENABLE(xim,
1581 [ --enable-xim Include XIM input support.],
1582 AC_MSG_RESULT($enable_xim),
1583 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001584
1585AC_MSG_CHECKING(--enable-fontset argument)
1586AC_ARG_ENABLE(fontset,
1587 [ --enable-fontset Include X fontset output support.], ,
1588 [enable_fontset="no"])
1589AC_MSG_RESULT($enable_fontset)
1590dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1591
1592test -z "$with_x" && with_x=yes
1593test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1594if test "$with_x" = no; then
1595 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1596else
1597 dnl Do this check early, so that its failure can override user requests.
1598
1599 AC_PATH_PROG(xmkmfpath, xmkmf)
1600
1601 AC_PATH_XTRA
1602
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001603 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001604 dnl be compiled with a special option.
1605 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001606 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001607 CFLAGS="$CFLAGS -W c,dll"
1608 LDFLAGS="$LDFLAGS -W l,dll"
1609 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1610 fi
1611
1612 dnl On my HPUX system the X include dir is found, but the lib dir not.
1613 dnl This is a desparate try to fix this.
1614
1615 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1616 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1617 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1618 X_LIBS="$X_LIBS -L$x_libraries"
1619 if test "`(uname) 2>/dev/null`" = SunOS &&
1620 uname -r | grep '^5' >/dev/null; then
1621 X_LIBS="$X_LIBS -R $x_libraries"
1622 fi
1623 fi
1624
1625 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1626 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1627 AC_MSG_RESULT(Corrected X includes to $x_includes)
1628 X_CFLAGS="$X_CFLAGS -I$x_includes"
1629 fi
1630
1631 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1632 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1633 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1634 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1635 dnl Same for "-R/usr/lib ".
1636 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1637
1638
1639 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001640 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1641 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001642 AC_MSG_CHECKING(if X11 header files can be found)
1643 cflags_save=$CFLAGS
1644 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001645 AC_TRY_COMPILE([#include <X11/Xlib.h>
1646#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001647 AC_MSG_RESULT(yes),
1648 AC_MSG_RESULT(no); no_x=yes)
1649 CFLAGS=$cflags_save
1650
1651 if test "${no_x-no}" = yes; then
1652 with_x=no
1653 else
1654 AC_DEFINE(HAVE_X11)
1655 X_LIB="-lXt -lX11";
1656 AC_SUBST(X_LIB)
1657
1658 ac_save_LDFLAGS="$LDFLAGS"
1659 LDFLAGS="-L$x_libraries $LDFLAGS"
1660
1661 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1662 dnl For HP-UX 10.20 it must be before -lSM -lICE
1663 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1664 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1665
1666 dnl Some systems need -lnsl -lsocket when testing for ICE.
1667 dnl The check above doesn't do this, try here (again). Also needed to get
1668 dnl them after Xdmcp. link.sh will remove them when not needed.
1669 dnl Check for other function than above to avoid the cached value
1670 AC_CHECK_LIB(ICE, IceOpenConnection,
1671 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1672
1673 dnl Check for -lXpm (needed for some versions of Motif)
1674 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1675 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1676 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1677
1678 dnl Check that the X11 header files don't use implicit declarations
1679 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1680 cflags_save=$CFLAGS
1681 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1682 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1683 AC_MSG_RESULT(no),
1684 CFLAGS="$CFLAGS -Wno-implicit-int"
1685 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1686 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1687 AC_MSG_RESULT(test failed)
1688 )
1689 )
1690 CFLAGS=$cflags_save
1691
1692 LDFLAGS="$ac_save_LDFLAGS"
1693
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001694 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1695 AC_CACHE_VAL(ac_cv_small_wchar_t,
1696 [AC_TRY_RUN([
1697#include <X11/Xlib.h>
1698#if STDC_HEADERS
1699# include <stdlib.h>
1700# include <stddef.h>
1701#endif
1702 main()
1703 {
1704 if (sizeof(wchar_t) <= 2)
1705 exit(1);
1706 exit(0);
1707 }],
1708 ac_cv_small_wchar_t="no",
1709 ac_cv_small_wchar_t="yes",
1710 AC_MSG_ERROR(failed to compile test program))])
1711 AC_MSG_RESULT($ac_cv_small_wchar_t)
1712 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1713 AC_DEFINE(SMALL_WCHAR_T)
1714 fi
1715
Bram Moolenaar071d4272004-06-13 20:20:40 +00001716 fi
1717fi
1718
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001719test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001720
1721AC_MSG_CHECKING(--enable-gui argument)
1722AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001723 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk2/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00001724
1725dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1726dnl Do not use character classes for portability with old tools.
1727enable_gui_canon=`echo "_$enable_gui" | \
1728 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1729
1730dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001731SKIP_GTK2=YES
1732SKIP_GNOME=YES
1733SKIP_MOTIF=YES
1734SKIP_ATHENA=YES
1735SKIP_NEXTAW=YES
1736SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001737SKIP_CARBON=YES
1738GUITYPE=NONE
1739
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001740if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001741 SKIP_PHOTON=
1742 case "$enable_gui_canon" in
1743 no) AC_MSG_RESULT(no GUI support)
1744 SKIP_PHOTON=YES ;;
1745 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1746 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1747 photon) AC_MSG_RESULT(Photon GUI support) ;;
1748 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1749 SKIP_PHOTON=YES ;;
1750 esac
1751
1752elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1753 SKIP_CARBON=
1754 case "$enable_gui_canon" in
1755 no) AC_MSG_RESULT(no GUI support)
1756 SKIP_CARBON=YES ;;
1757 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001758 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1759 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001760 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1761 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1762 SKIP_CARBON=YES ;;
1763 esac
1764
1765else
1766
Bram Moolenaar071d4272004-06-13 20:20:40 +00001767 case "$enable_gui_canon" in
1768 no|none) AC_MSG_RESULT(no GUI support) ;;
1769 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001770 SKIP_GTK2=
1771 SKIP_GNOME=
1772 SKIP_MOTIF=
1773 SKIP_ATHENA=
1774 SKIP_NEXTAW=
1775 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001776 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001777 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001778 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1779 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001780 SKIP_GTK2=;;
1781 motif) AC_MSG_RESULT(Motif GUI support)
1782 SKIP_MOTIF=;;
1783 athena) AC_MSG_RESULT(Athena GUI support)
1784 SKIP_ATHENA=;;
1785 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1786 SKIP_NEXTAW=;;
1787 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1788 esac
1789
1790fi
1791
Bram Moolenaar071d4272004-06-13 20:20:40 +00001792if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1793 -a "$enable_gui_canon" != "gnome2"; then
1794 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1795 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001796 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001797 , enable_gtk2_check="yes")
1798 AC_MSG_RESULT($enable_gtk2_check)
1799 if test "x$enable_gtk2_check" = "xno"; then
1800 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001801 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001802 fi
1803fi
1804
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001805if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001806 AC_MSG_CHECKING(whether or not to look for GNOME)
1807 AC_ARG_ENABLE(gnome-check,
1808 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1809 , enable_gnome_check="no")
1810 AC_MSG_RESULT($enable_gnome_check)
1811 if test "x$enable_gnome_check" = "xno"; then
1812 SKIP_GNOME=YES
1813 fi
1814fi
1815
1816if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1817 AC_MSG_CHECKING(whether or not to look for Motif)
1818 AC_ARG_ENABLE(motif-check,
1819 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1820 , enable_motif_check="yes")
1821 AC_MSG_RESULT($enable_motif_check)
1822 if test "x$enable_motif_check" = "xno"; then
1823 SKIP_MOTIF=YES
1824 fi
1825fi
1826
1827if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1828 AC_MSG_CHECKING(whether or not to look for Athena)
1829 AC_ARG_ENABLE(athena-check,
1830 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1831 , enable_athena_check="yes")
1832 AC_MSG_RESULT($enable_athena_check)
1833 if test "x$enable_athena_check" = "xno"; then
1834 SKIP_ATHENA=YES
1835 fi
1836fi
1837
1838if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1839 AC_MSG_CHECKING(whether or not to look for neXtaw)
1840 AC_ARG_ENABLE(nextaw-check,
1841 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1842 , enable_nextaw_check="yes")
1843 AC_MSG_RESULT($enable_nextaw_check);
1844 if test "x$enable_nextaw_check" = "xno"; then
1845 SKIP_NEXTAW=YES
1846 fi
1847fi
1848
1849if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1850 AC_MSG_CHECKING(whether or not to look for Carbon)
1851 AC_ARG_ENABLE(carbon-check,
1852 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1853 , enable_carbon_check="yes")
1854 AC_MSG_RESULT($enable_carbon_check);
1855 if test "x$enable_carbon_check" = "xno"; then
1856 SKIP_CARBON=YES
1857 fi
1858fi
1859
Bram Moolenaar843ee412004-06-30 16:16:41 +00001860
Bram Moolenaar071d4272004-06-13 20:20:40 +00001861if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1862 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001863 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001864 AC_MSG_RESULT(yes);
1865 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001866 if test "$VIMNAME" = "vim"; then
1867 VIMNAME=Vim
1868 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001869
Bram Moolenaar164fca32010-07-14 13:58:07 +02001870 if test "x$MACARCH" = "xboth"; then
1871 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1872 else
1873 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1874 fi
1875
Bram Moolenaar14716812006-05-04 21:54:08 +00001876 dnl Default install directory is not /usr/local
1877 if test x$prefix = xNONE; then
1878 prefix=/Applications
1879 fi
1880
1881 dnl Sorry for the hard coded default
1882 datadir='${prefix}/Vim.app/Contents/Resources'
1883
Bram Moolenaar071d4272004-06-13 20:20:40 +00001884 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001885 SKIP_GTK2=YES;
1886 SKIP_GNOME=YES;
1887 SKIP_MOTIF=YES;
1888 SKIP_ATHENA=YES;
1889 SKIP_NEXTAW=YES;
1890 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001891 SKIP_CARBON=YES
1892fi
1893
Bram Moolenaar071d4272004-06-13 20:20:40 +00001894dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001895dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001896dnl
1897dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001898dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001899dnl
1900AC_DEFUN(AM_PATH_GTK,
1901[
1902 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1903 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001904 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001905 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1906 no_gtk=""
1907 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1908 && $PKG_CONFIG --exists gtk+-2.0; then
1909 {
1910 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1911 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1912 dnl something like that.
1913 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001914 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001915 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1916 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1917 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1918 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1919 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1920 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1921 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1922 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001923 else
1924 no_gtk=yes
1925 fi
1926
1927 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1928 {
1929 ac_save_CFLAGS="$CFLAGS"
1930 ac_save_LIBS="$LIBS"
1931 CFLAGS="$CFLAGS $GTK_CFLAGS"
1932 LIBS="$LIBS $GTK_LIBS"
1933
1934 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001935 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001936 dnl
1937 rm -f conf.gtktest
1938 AC_TRY_RUN([
1939#include <gtk/gtk.h>
1940#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001941#if STDC_HEADERS
1942# include <stdlib.h>
1943# include <stddef.h>
1944#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001945
1946int
1947main ()
1948{
1949int major, minor, micro;
1950char *tmp_version;
1951
1952system ("touch conf.gtktest");
1953
1954/* HP/UX 9 (%@#!) writes to sscanf strings */
1955tmp_version = g_strdup("$min_gtk_version");
1956if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1957 printf("%s, bad version string\n", "$min_gtk_version");
1958 exit(1);
1959 }
1960
1961if ((gtk_major_version > major) ||
1962 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1963 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1964 (gtk_micro_version >= micro)))
1965{
1966 return 0;
1967}
1968return 1;
1969}
1970],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1971 CFLAGS="$ac_save_CFLAGS"
1972 LIBS="$ac_save_LIBS"
1973 }
1974 fi
1975 if test "x$no_gtk" = x ; then
1976 if test "x$enable_gtktest" = "xyes"; then
1977 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1978 else
1979 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1980 fi
1981 ifelse([$2], , :, [$2])
1982 else
1983 {
1984 AC_MSG_RESULT(no)
1985 GTK_CFLAGS=""
1986 GTK_LIBS=""
1987 ifelse([$3], , :, [$3])
1988 }
1989 fi
1990 }
1991 else
1992 GTK_CFLAGS=""
1993 GTK_LIBS=""
1994 ifelse([$3], , :, [$3])
1995 fi
1996 AC_SUBST(GTK_CFLAGS)
1997 AC_SUBST(GTK_LIBS)
1998 rm -f conf.gtktest
1999])
2000
2001dnl ---------------------------------------------------------------------------
2002dnl gnome
2003dnl ---------------------------------------------------------------------------
2004AC_DEFUN([GNOME_INIT_HOOK],
2005[
2006 AC_SUBST(GNOME_LIBS)
2007 AC_SUBST(GNOME_LIBDIR)
2008 AC_SUBST(GNOME_INCLUDEDIR)
2009
2010 AC_ARG_WITH(gnome-includes,
2011 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2012 [CFLAGS="$CFLAGS -I$withval"]
2013 )
2014
2015 AC_ARG_WITH(gnome-libs,
2016 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2017 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2018 )
2019
2020 AC_ARG_WITH(gnome,
2021 [ --with-gnome Specify prefix for GNOME files],
2022 if test x$withval = xyes; then
2023 want_gnome=yes
2024 ifelse([$1], [], :, [$1])
2025 else
2026 if test "x$withval" = xno; then
2027 want_gnome=no
2028 else
2029 want_gnome=yes
2030 LDFLAGS="$LDFLAGS -L$withval/lib"
2031 CFLAGS="$CFLAGS -I$withval/include"
2032 gnome_prefix=$withval/lib
2033 fi
2034 fi,
2035 want_gnome=yes)
2036
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002037 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002038 {
2039 AC_MSG_CHECKING(for libgnomeui-2.0)
2040 if $PKG_CONFIG --exists libgnomeui-2.0; then
2041 AC_MSG_RESULT(yes)
2042 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2043 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2044 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002045
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002046 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2047 dnl This might not be the right way but it works for me...
2048 AC_MSG_CHECKING(for FreeBSD)
2049 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2050 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002051 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002052 GNOME_LIBS="$GNOME_LIBS -pthread"
2053 else
2054 AC_MSG_RESULT(no)
2055 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002056 $1
2057 else
2058 AC_MSG_RESULT(not found)
2059 if test "x$2" = xfail; then
2060 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2061 fi
2062 fi
2063 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002064 fi
2065])
2066
2067AC_DEFUN([GNOME_INIT],[
2068 GNOME_INIT_HOOK([],fail)
2069])
2070
2071
2072dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002073dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002074dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002075if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002076
2077 AC_MSG_CHECKING(--disable-gtktest argument)
2078 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2079 , enable_gtktest=yes)
2080 if test "x$enable_gtktest" = "xyes" ; then
2081 AC_MSG_RESULT(gtk test enabled)
2082 else
2083 AC_MSG_RESULT(gtk test disabled)
2084 fi
2085
Bram Moolenaar071d4272004-06-13 20:20:40 +00002086 if test "X$PKG_CONFIG" = "X"; then
2087 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2088 fi
2089
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002090 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002091 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2092 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002093 AM_PATH_GTK(2.2.0,
2094 [GUI_LIB_LOC="$GTK_LIBDIR"
2095 GTK_LIBNAME="$GTK_LIBS"
2096 GUI_INC_LOC="$GTK_CFLAGS"], )
2097 if test "x$GTK_CFLAGS" != "x"; then
2098 SKIP_ATHENA=YES
2099 SKIP_NEXTAW=YES
2100 SKIP_MOTIF=YES
2101 GUITYPE=GTK
2102 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002103 fi
2104 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002105 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002106 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2107 || test "0$gtk_minor_version" -ge 2; then
2108 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2109 fi
2110 dnl
2111 dnl if GTK exists, then check for GNOME.
2112 dnl
2113 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002114 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002115 GNOME_INIT_HOOK([have_gnome=yes])
2116 if test "x$have_gnome" = xyes ; then
2117 AC_DEFINE(FEAT_GUI_GNOME)
2118 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2119 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002120 fi
2121 }
2122 fi
2123 fi
2124fi
2125
2126dnl Check for Motif include files location.
2127dnl The LAST one found is used, this makes the highest version to be used,
2128dnl e.g. when Motif1.2 and Motif2.0 are both present.
2129
2130if test -z "$SKIP_MOTIF"; then
2131 gui_XXX="/usr/XXX/Motif* /usr/Motif*/XXX /usr/XXX /usr/shlib /usr/X11*/XXX /usr/XXX/X11* /usr/dt/XXX /local/Motif*/XXX /local/XXX/Motif* /usr/local/Motif*/XXX /usr/local/XXX/Motif* /usr/local/XXX /usr/local/X11*/XXX /usr/local/LessTif/Motif*/XXX $MOTIFHOME/XXX"
2132 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2133 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2134
2135 AC_MSG_CHECKING(for location of Motif GUI includes)
2136 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2137 GUI_INC_LOC=
2138 for try in $gui_includes; do
2139 if test -f "$try/Xm/Xm.h"; then
2140 GUI_INC_LOC=$try
2141 fi
2142 done
2143 if test -n "$GUI_INC_LOC"; then
2144 if test "$GUI_INC_LOC" = /usr/include; then
2145 GUI_INC_LOC=
2146 AC_MSG_RESULT(in default path)
2147 else
2148 AC_MSG_RESULT($GUI_INC_LOC)
2149 fi
2150 else
2151 AC_MSG_RESULT(<not found>)
2152 SKIP_MOTIF=YES
2153 fi
2154fi
2155
2156dnl Check for Motif library files location. In the same order as the include
2157dnl files, to avoid a mixup if several versions are present
2158
2159if test -z "$SKIP_MOTIF"; then
2160 AC_MSG_CHECKING(--with-motif-lib argument)
2161 AC_ARG_WITH(motif-lib,
2162 [ --with-motif-lib=STRING Library for Motif ],
2163 [ MOTIF_LIBNAME="${withval}" ] )
2164
2165 if test -n "$MOTIF_LIBNAME"; then
2166 AC_MSG_RESULT($MOTIF_LIBNAME)
2167 GUI_LIB_LOC=
2168 else
2169 AC_MSG_RESULT(no)
2170
2171 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2172 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2173
2174 AC_MSG_CHECKING(for location of Motif GUI libs)
2175 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC"
2176 GUI_LIB_LOC=
2177 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002178 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002179 if test -f "$libtry"; then
2180 GUI_LIB_LOC=$try
2181 fi
2182 done
2183 done
2184 if test -n "$GUI_LIB_LOC"; then
2185 dnl Remove /usr/lib, it causes trouble on some systems
2186 if test "$GUI_LIB_LOC" = /usr/lib; then
2187 GUI_LIB_LOC=
2188 AC_MSG_RESULT(in default path)
2189 else
2190 if test -n "$GUI_LIB_LOC"; then
2191 AC_MSG_RESULT($GUI_LIB_LOC)
2192 if test "`(uname) 2>/dev/null`" = SunOS &&
2193 uname -r | grep '^5' >/dev/null; then
2194 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2195 fi
2196 fi
2197 fi
2198 MOTIF_LIBNAME=-lXm
2199 else
2200 AC_MSG_RESULT(<not found>)
2201 SKIP_MOTIF=YES
2202 fi
2203 fi
2204fi
2205
2206if test -z "$SKIP_MOTIF"; then
2207 SKIP_ATHENA=YES
2208 SKIP_NEXTAW=YES
2209 GUITYPE=MOTIF
2210 AC_SUBST(MOTIF_LIBNAME)
2211fi
2212
2213dnl Check if the Athena files can be found
2214
2215GUI_X_LIBS=
2216
2217if test -z "$SKIP_ATHENA"; then
2218 AC_MSG_CHECKING(if Athena header files can be found)
2219 cflags_save=$CFLAGS
2220 CFLAGS="$CFLAGS $X_CFLAGS"
2221 AC_TRY_COMPILE([
2222#include <X11/Intrinsic.h>
2223#include <X11/Xaw/Paned.h>], ,
2224 AC_MSG_RESULT(yes),
2225 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2226 CFLAGS=$cflags_save
2227fi
2228
2229if test -z "$SKIP_ATHENA"; then
2230 GUITYPE=ATHENA
2231fi
2232
2233if test -z "$SKIP_NEXTAW"; then
2234 AC_MSG_CHECKING(if neXtaw header files can be found)
2235 cflags_save=$CFLAGS
2236 CFLAGS="$CFLAGS $X_CFLAGS"
2237 AC_TRY_COMPILE([
2238#include <X11/Intrinsic.h>
2239#include <X11/neXtaw/Paned.h>], ,
2240 AC_MSG_RESULT(yes),
2241 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2242 CFLAGS=$cflags_save
2243fi
2244
2245if test -z "$SKIP_NEXTAW"; then
2246 GUITYPE=NEXTAW
2247fi
2248
2249if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2250 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2251 dnl Avoid adding it when it twice
2252 if test -n "$GUI_INC_LOC"; then
2253 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2254 fi
2255 if test -n "$GUI_LIB_LOC"; then
2256 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2257 fi
2258
2259 dnl Check for -lXext and then for -lXmu
2260 ldflags_save=$LDFLAGS
2261 LDFLAGS="$X_LIBS $LDFLAGS"
2262 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2263 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2264 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2265 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2266 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2267 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2268 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2269 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2270 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2271 if test -z "$SKIP_MOTIF"; then
2272 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2273 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2274 fi
2275 LDFLAGS=$ldflags_save
2276
2277 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2278 AC_MSG_CHECKING(for extra X11 defines)
2279 NARROW_PROTO=
2280 rm -fr conftestdir
2281 if mkdir conftestdir; then
2282 cd conftestdir
2283 cat > Imakefile <<'EOF'
2284acfindx:
2285 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2286EOF
2287 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2288 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2289 fi
2290 cd ..
2291 rm -fr conftestdir
2292 fi
2293 if test -z "$NARROW_PROTO"; then
2294 AC_MSG_RESULT(no)
2295 else
2296 AC_MSG_RESULT($NARROW_PROTO)
2297 fi
2298 AC_SUBST(NARROW_PROTO)
2299fi
2300
2301dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2302dnl use the X11 include path
2303if test "$enable_xsmp" = "yes"; then
2304 cppflags_save=$CPPFLAGS
2305 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2306 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2307 CPPFLAGS=$cppflags_save
2308fi
2309
2310
Bram Moolenaare667c952010-07-05 22:57:59 +02002311if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002312 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2313 cppflags_save=$CPPFLAGS
2314 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2315 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2316
2317 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2318 if test ! "$enable_xim" = "no"; then
2319 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2320 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2321 AC_MSG_RESULT(yes),
2322 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2323 fi
2324 CPPFLAGS=$cppflags_save
2325
2326 dnl automatically enable XIM when hangul input isn't enabled
2327 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2328 -a "x$GUITYPE" != "xNONE" ; then
2329 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2330 enable_xim="yes"
2331 fi
2332fi
2333
2334if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2335 cppflags_save=$CPPFLAGS
2336 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002337dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2338 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2339 AC_TRY_COMPILE([
2340#include <X11/Intrinsic.h>
2341#include <X11/Xmu/Editres.h>],
2342 [int i; i = 0;],
2343 AC_MSG_RESULT(yes)
2344 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2345 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002346 CPPFLAGS=$cppflags_save
2347fi
2348
2349dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2350if test -z "$SKIP_MOTIF"; then
2351 cppflags_save=$CPPFLAGS
2352 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002353 AC_CHECK_HEADERS(Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h \
Bram Moolenaarfc1421e2006-04-20 22:17:20 +00002354 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002355
2356 if test $ac_cv_header_Xm_XpmP_h = yes; then
2357 dnl Solaris uses XpmAttributes_21, very annoying.
2358 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2359 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2360 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2361 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2362 )
2363 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002364 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002365 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002366 CPPFLAGS=$cppflags_save
2367fi
2368
2369if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2370 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2371 enable_xim="no"
2372fi
2373if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2374 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2375 enable_fontset="no"
2376fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002377if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002378 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2379 enable_fontset="no"
2380fi
2381
Bram Moolenaar071d4272004-06-13 20:20:40 +00002382if test -z "$SKIP_PHOTON"; then
2383 GUITYPE=PHOTONGUI
2384fi
2385
2386AC_SUBST(GUI_INC_LOC)
2387AC_SUBST(GUI_LIB_LOC)
2388AC_SUBST(GUITYPE)
2389AC_SUBST(GUI_X_LIBS)
2390
2391if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2392 AC_MSG_ERROR([cannot use workshop without Motif])
2393fi
2394
2395dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2396if test "$enable_xim" = "yes"; then
2397 AC_DEFINE(FEAT_XIM)
2398fi
2399if test "$enable_fontset" = "yes"; then
2400 AC_DEFINE(FEAT_XFONTSET)
2401fi
2402
2403
2404dnl ---------------------------------------------------------------------------
2405dnl end of GUI-checking
2406dnl ---------------------------------------------------------------------------
2407
2408
2409dnl Only really enable hangul input when GUI and XFONTSET are available
2410if test "$enable_hangulinput" = "yes"; then
2411 if test "x$GUITYPE" = "xNONE"; then
2412 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2413 enable_hangulinput=no
2414 else
2415 AC_DEFINE(FEAT_HANGULIN)
2416 HANGULIN_SRC=hangulin.c
2417 AC_SUBST(HANGULIN_SRC)
2418 HANGULIN_OBJ=objects/hangulin.o
2419 AC_SUBST(HANGULIN_OBJ)
2420 fi
2421fi
2422
2423dnl Checks for libraries and include files.
2424
Bram Moolenaar446cb832008-06-24 21:56:24 +00002425AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2426 [
2427 AC_RUN_IFELSE([[
2428#include "confdefs.h"
2429#include <ctype.h>
2430#if STDC_HEADERS
2431# include <stdlib.h>
2432# include <stddef.h>
2433#endif
2434main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2435 ]],[
2436 vim_cv_toupper_broken=yes
2437 ],[
2438 vim_cv_toupper_broken=no
2439 ],[
2440 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2441 ])])
2442
2443if test "x$vim_cv_toupper_broken" = "xyes" ; then
2444 AC_DEFINE(BROKEN_TOUPPER)
2445fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002446
2447AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002448AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002449 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2450 AC_MSG_RESULT(no))
2451
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002452AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2453AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2454 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2455 AC_MSG_RESULT(no))
2456
Bram Moolenaar071d4272004-06-13 20:20:40 +00002457dnl Checks for header files.
2458AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2459dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2460if test "$HAS_ELF" = 1; then
2461 AC_CHECK_LIB(elf, main)
2462fi
2463
2464AC_HEADER_DIRENT
2465
Bram Moolenaar071d4272004-06-13 20:20:40 +00002466dnl If sys/wait.h is not found it might still exist but not be POSIX
2467dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2468if test $ac_cv_header_sys_wait_h = no; then
2469 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2470 AC_TRY_COMPILE([#include <sys/wait.h>],
2471 [union wait xx, yy; xx = yy],
2472 AC_MSG_RESULT(yes)
2473 AC_DEFINE(HAVE_SYS_WAIT_H)
2474 AC_DEFINE(HAVE_UNION_WAIT),
2475 AC_MSG_RESULT(no))
2476fi
2477
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002478AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2479 sys/select.h sys/utsname.h termcap.h fcntl.h \
2480 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2481 termio.h iconv.h inttypes.h langinfo.h math.h \
2482 unistd.h stropts.h errno.h sys/resource.h \
2483 sys/systeminfo.h locale.h sys/stream.h termios.h \
2484 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2485 utime.h sys/param.h libintl.h libgen.h \
2486 util/debug.h util/msg18n.h frame.h sys/acl.h \
2487 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002488
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002489dnl sys/ptem.h depends on sys/stream.h on Solaris
2490AC_CHECK_HEADERS(sys/ptem.h, [], [],
2491[#if defined HAVE_SYS_STREAM_H
2492# include <sys/stream.h>
2493#endif])
2494
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002495dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2496AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2497[#if defined HAVE_SYS_PARAM_H
2498# include <sys/param.h>
2499#endif])
2500
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002501
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002502dnl pthread_np.h may exist but can only be used after including pthread.h
2503AC_MSG_CHECKING([for pthread_np.h])
2504AC_TRY_COMPILE([
2505#include <pthread.h>
2506#include <pthread_np.h>],
2507 [int i; i = 0;],
2508 AC_MSG_RESULT(yes)
2509 AC_DEFINE(HAVE_PTHREAD_NP_H),
2510 AC_MSG_RESULT(no))
2511
Bram Moolenaare344bea2005-09-01 20:46:49 +00002512AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002513if test "x$MACOSX" = "xyes"; then
2514 dnl The strings.h file on OS/X contains a warning and nothing useful.
2515 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2516else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002517
2518dnl Check if strings.h and string.h can both be included when defined.
2519AC_MSG_CHECKING([if strings.h can be included after string.h])
2520cppflags_save=$CPPFLAGS
2521CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2522AC_TRY_COMPILE([
2523#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2524# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2525 /* but don't do it on AIX 5.1 (Uribarri) */
2526#endif
2527#ifdef HAVE_XM_XM_H
2528# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2529#endif
2530#ifdef HAVE_STRING_H
2531# include <string.h>
2532#endif
2533#if defined(HAVE_STRINGS_H)
2534# include <strings.h>
2535#endif
2536 ], [int i; i = 0;],
2537 AC_MSG_RESULT(yes),
2538 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2539 AC_MSG_RESULT(no))
2540CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002541fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002542
2543dnl Checks for typedefs, structures, and compiler characteristics.
2544AC_PROG_GCC_TRADITIONAL
2545AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002546AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002547AC_TYPE_MODE_T
2548AC_TYPE_OFF_T
2549AC_TYPE_PID_T
2550AC_TYPE_SIZE_T
2551AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002552AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002553
Bram Moolenaar071d4272004-06-13 20:20:40 +00002554AC_HEADER_TIME
2555AC_CHECK_TYPE(ino_t, long)
2556AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002557AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002558
2559AC_MSG_CHECKING(for rlim_t)
2560if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2561 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2562else
2563 AC_EGREP_CPP(dnl
2564changequote(<<,>>)dnl
2565<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2566changequote([,]),
2567 [
2568#include <sys/types.h>
2569#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002570# include <stdlib.h>
2571# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002572#endif
2573#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002574# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002575#endif
2576 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2577 AC_MSG_RESULT($ac_cv_type_rlim_t)
2578fi
2579if test $ac_cv_type_rlim_t = no; then
2580 cat >> confdefs.h <<\EOF
2581#define rlim_t unsigned long
2582EOF
2583fi
2584
2585AC_MSG_CHECKING(for stack_t)
2586if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2587 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2588else
2589 AC_EGREP_CPP(stack_t,
2590 [
2591#include <sys/types.h>
2592#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002593# include <stdlib.h>
2594# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002595#endif
2596#include <signal.h>
2597 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2598 AC_MSG_RESULT($ac_cv_type_stack_t)
2599fi
2600if test $ac_cv_type_stack_t = no; then
2601 cat >> confdefs.h <<\EOF
2602#define stack_t struct sigaltstack
2603EOF
2604fi
2605
2606dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2607AC_MSG_CHECKING(whether stack_t has an ss_base field)
2608AC_TRY_COMPILE([
2609#include <sys/types.h>
2610#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002611# include <stdlib.h>
2612# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002613#endif
2614#include <signal.h>
2615#include "confdefs.h"
2616 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2617 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2618 AC_MSG_RESULT(no))
2619
2620olibs="$LIBS"
2621AC_MSG_CHECKING(--with-tlib argument)
2622AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2623if test -n "$with_tlib"; then
2624 AC_MSG_RESULT($with_tlib)
2625 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002626 AC_MSG_CHECKING(for linking with $with_tlib library)
2627 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2628 dnl Need to check for tgetent() below.
2629 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002630else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002631 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002632 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2633 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002634 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002635 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002636 dnl Older versions of ncurses have bugs, get a new one!
2637 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002638 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002639 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002640 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2641 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002642 esac
2643 for libname in $tlibs; do
2644 AC_CHECK_LIB(${libname}, tgetent,,)
2645 if test "x$olibs" != "x$LIBS"; then
2646 dnl It's possible that a library is found but it doesn't work
2647 dnl e.g., shared library that cannot be found
2648 dnl compile and run a test program to be sure
2649 AC_TRY_RUN([
2650#ifdef HAVE_TERMCAP_H
2651# include <termcap.h>
2652#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002653#if STDC_HEADERS
2654# include <stdlib.h>
2655# include <stddef.h>
2656#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002657main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2658 res="OK", res="FAIL", res="FAIL")
2659 if test "$res" = "OK"; then
2660 break
2661 fi
2662 AC_MSG_RESULT($libname library is not usable)
2663 LIBS="$olibs"
2664 fi
2665 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002666 if test "x$olibs" = "x$LIBS"; then
2667 AC_MSG_RESULT(no terminal library found)
2668 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002669fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002670
2671if test "x$olibs" = "x$LIBS"; then
2672 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002673 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002674 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2675 AC_MSG_RESULT(yes),
2676 AC_MSG_ERROR([NOT FOUND!
2677 You need to install a terminal library; for example ncurses.
2678 Or specify the name of the library with --with-tlib.]))
2679fi
2680
Bram Moolenaar446cb832008-06-24 21:56:24 +00002681AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2682 [
2683 AC_RUN_IFELSE([[
2684#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002685#ifdef HAVE_TERMCAP_H
2686# include <termcap.h>
2687#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002688#ifdef HAVE_STRING_H
2689# include <string.h>
2690#endif
2691#if STDC_HEADERS
2692# include <stdlib.h>
2693# include <stddef.h>
2694#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002695main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002696{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2697 ]],[
2698 vim_cv_terminfo=no
2699 ],[
2700 vim_cv_terminfo=yes
2701 ],[
2702 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2703 ])
2704 ])
2705
2706if test "x$vim_cv_terminfo" = "xyes" ; then
2707 AC_DEFINE(TERMINFO)
2708fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002709
2710if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002711 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2712 [
2713 AC_RUN_IFELSE([[
2714#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002715#ifdef HAVE_TERMCAP_H
2716# include <termcap.h>
2717#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002718#if STDC_HEADERS
2719# include <stdlib.h>
2720# include <stddef.h>
2721#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002722main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002723{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2724 ]],[
2725 vim_cv_tgent=zero
2726 ],[
2727 vim_cv_tgent=non-zero
2728 ],[
2729 AC_MSG_ERROR(failed to compile test program.)
2730 ])
2731 ])
2732
2733 if test "x$vim_cv_tgent" = "xzero" ; then
2734 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2735 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002736fi
2737
2738AC_MSG_CHECKING(whether termcap.h contains ospeed)
2739AC_TRY_LINK([
2740#ifdef HAVE_TERMCAP_H
2741# include <termcap.h>
2742#endif
2743 ], [ospeed = 20000],
2744 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2745 [AC_MSG_RESULT(no)
2746 AC_MSG_CHECKING(whether ospeed can be extern)
2747 AC_TRY_LINK([
2748#ifdef HAVE_TERMCAP_H
2749# include <termcap.h>
2750#endif
2751extern short ospeed;
2752 ], [ospeed = 20000],
2753 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2754 AC_MSG_RESULT(no))]
2755 )
2756
2757AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2758AC_TRY_LINK([
2759#ifdef HAVE_TERMCAP_H
2760# include <termcap.h>
2761#endif
2762 ], [if (UP == 0 && BC == 0) PC = 1],
2763 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2764 [AC_MSG_RESULT(no)
2765 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2766 AC_TRY_LINK([
2767#ifdef HAVE_TERMCAP_H
2768# include <termcap.h>
2769#endif
2770extern char *UP, *BC, PC;
2771 ], [if (UP == 0 && BC == 0) PC = 1],
2772 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2773 AC_MSG_RESULT(no))]
2774 )
2775
2776AC_MSG_CHECKING(whether tputs() uses outfuntype)
2777AC_TRY_COMPILE([
2778#ifdef HAVE_TERMCAP_H
2779# include <termcap.h>
2780#endif
2781 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2782 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2783 AC_MSG_RESULT(no))
2784
2785dnl On some SCO machines sys/select redefines struct timeval
2786AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2787AC_TRY_COMPILE([
2788#include <sys/types.h>
2789#include <sys/time.h>
2790#include <sys/select.h>], ,
2791 AC_MSG_RESULT(yes)
2792 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2793 AC_MSG_RESULT(no))
2794
2795dnl AC_DECL_SYS_SIGLIST
2796
2797dnl Checks for pty.c (copied from screen) ==========================
2798AC_MSG_CHECKING(for /dev/ptc)
2799if test -r /dev/ptc; then
2800 AC_DEFINE(HAVE_DEV_PTC)
2801 AC_MSG_RESULT(yes)
2802else
2803 AC_MSG_RESULT(no)
2804fi
2805
2806AC_MSG_CHECKING(for SVR4 ptys)
2807if test -c /dev/ptmx ; then
2808 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2809 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2810 AC_MSG_RESULT(no))
2811else
2812 AC_MSG_RESULT(no)
2813fi
2814
2815AC_MSG_CHECKING(for ptyranges)
2816if test -d /dev/ptym ; then
2817 pdir='/dev/ptym'
2818else
2819 pdir='/dev'
2820fi
2821dnl SCO uses ptyp%d
2822AC_EGREP_CPP(yes,
2823[#ifdef M_UNIX
2824 yes;
2825#endif
2826 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2827dnl if test -c /dev/ptyp19; then
2828dnl ptys=`echo /dev/ptyp??`
2829dnl else
2830dnl ptys=`echo $pdir/pty??`
2831dnl fi
2832if test "$ptys" != "$pdir/pty??" ; then
2833 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2834 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2835 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2836 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2837 AC_MSG_RESULT([$p0 / $p1])
2838else
2839 AC_MSG_RESULT([don't know])
2840fi
2841
2842dnl **** pty mode/group handling ****
2843dnl
2844dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002845rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002846AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2847 [
2848 AC_RUN_IFELSE([[
2849#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002850#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002851#if STDC_HEADERS
2852# include <stdlib.h>
2853# include <stddef.h>
2854#endif
2855#ifdef HAVE_UNISTD_H
2856#include <unistd.h>
2857#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002858#include <sys/stat.h>
2859#include <stdio.h>
2860main()
2861{
2862 struct stat sb;
2863 char *x,*ttyname();
2864 int om, m;
2865 FILE *fp;
2866
2867 if (!(x = ttyname(0))) exit(1);
2868 if (stat(x, &sb)) exit(1);
2869 om = sb.st_mode;
2870 if (om & 002) exit(0);
2871 m = system("mesg y");
2872 if (m == -1 || m == 127) exit(1);
2873 if (stat(x, &sb)) exit(1);
2874 m = sb.st_mode;
2875 if (chmod(x, om)) exit(1);
2876 if (m & 002) exit(0);
2877 if (sb.st_gid == getgid()) exit(1);
2878 if (!(fp=fopen("conftest_grp", "w")))
2879 exit(1);
2880 fprintf(fp, "%d\n", sb.st_gid);
2881 fclose(fp);
2882 exit(0);
2883}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002884 ]],[
2885 if test -f conftest_grp; then
2886 vim_cv_tty_group=`cat conftest_grp`
2887 if test "x$vim_cv_tty_mode" = "x" ; then
2888 vim_cv_tty_mode=0620
2889 fi
2890 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2891 else
2892 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002893 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002894 fi
2895 ],[
2896 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002897 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002898 ],[
2899 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2900 ])
2901 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002902rm -f conftest_grp
2903
Bram Moolenaar446cb832008-06-24 21:56:24 +00002904if test "x$vim_cv_tty_group" != "xworld" ; then
2905 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2906 if test "x$vim_cv_tty_mode" = "x" ; then
2907 AC_MSG_ERROR([It seems you're cross compiling and have 'vim_cv_tty_group' set, please also set the environment variable 'vim_cv_tty_mode' to the correct mode (propably 0620)])
2908 else
2909 AC_DEFINE(PTYMODE, 0620)
2910 fi
2911fi
2912
Bram Moolenaar071d4272004-06-13 20:20:40 +00002913dnl Checks for library functions. ===================================
2914
2915AC_TYPE_SIGNAL
2916
2917dnl find out what to use at the end of a signal function
2918if test $ac_cv_type_signal = void; then
2919 AC_DEFINE(SIGRETURN, [return])
2920else
2921 AC_DEFINE(SIGRETURN, [return 0])
2922fi
2923
2924dnl check if struct sigcontext is defined (used for SGI only)
2925AC_MSG_CHECKING(for struct sigcontext)
2926AC_TRY_COMPILE([
2927#include <signal.h>
2928test_sig()
2929{
2930 struct sigcontext *scont;
2931 scont = (struct sigcontext *)0;
2932 return 1;
2933} ], ,
2934 AC_MSG_RESULT(yes)
2935 AC_DEFINE(HAVE_SIGCONTEXT),
2936 AC_MSG_RESULT(no))
2937
2938dnl tricky stuff: try to find out if getcwd() is implemented with
2939dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002940AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2941 [
2942 AC_RUN_IFELSE([[
2943#include "confdefs.h"
2944#ifdef HAVE_UNISTD_H
2945#include <unistd.h>
2946#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002947char *dagger[] = { "IFS=pwd", 0 };
2948main()
2949{
2950 char buffer[500];
2951 extern char **environ;
2952 environ = dagger;
2953 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002954}
2955 ]],[
2956 vim_cv_getcwd_broken=no
2957 ],[
2958 vim_cv_getcwd_broken=yes
2959 ],[
2960 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2961 ])
2962 ])
2963
2964if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2965 AC_DEFINE(BAD_GETCWD)
2966fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002967
Bram Moolenaar25153e12010-02-24 14:47:08 +01002968dnl Check for functions in one big call, to reduce the size of configure.
2969dnl Can only be used for functions that do not require any include.
2970AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002971 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002972 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002973 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002974 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002975 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2976 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01002977AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00002978
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02002979dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2980dnl appropriate, so that off_t is 64 bits when needed.
2981AC_SYS_LARGEFILE
2982
Bram Moolenaar071d4272004-06-13 20:20:40 +00002983dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2984AC_MSG_CHECKING(for st_blksize)
2985AC_TRY_COMPILE(
2986[#include <sys/types.h>
2987#include <sys/stat.h>],
2988[ struct stat st;
2989 int n;
2990
2991 stat("/", &st);
2992 n = (int)st.st_blksize;],
2993 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2994 AC_MSG_RESULT(no))
2995
Bram Moolenaar446cb832008-06-24 21:56:24 +00002996AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2997 [
2998 AC_RUN_IFELSE([[
2999#include "confdefs.h"
3000#if STDC_HEADERS
3001# include <stdlib.h>
3002# include <stddef.h>
3003#endif
3004#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003005#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003006main() {struct stat st; exit(stat("configure/", &st) != 0); }
3007 ]],[
3008 vim_cv_stat_ignores_slash=yes
3009 ],[
3010 vim_cv_stat_ignores_slash=no
3011 ],[
3012 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3013 ])
3014 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003015
Bram Moolenaar446cb832008-06-24 21:56:24 +00003016if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3017 AC_DEFINE(STAT_IGNORES_SLASH)
3018fi
3019
Bram Moolenaar071d4272004-06-13 20:20:40 +00003020dnl Link with iconv for charset translation, if not found without library.
3021dnl check for iconv() requires including iconv.h
3022dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3023dnl has been installed.
3024AC_MSG_CHECKING(for iconv_open())
3025save_LIBS="$LIBS"
3026LIBS="$LIBS -liconv"
3027AC_TRY_LINK([
3028#ifdef HAVE_ICONV_H
3029# include <iconv.h>
3030#endif
3031 ], [iconv_open("fr", "to");],
3032 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3033 LIBS="$save_LIBS"
3034 AC_TRY_LINK([
3035#ifdef HAVE_ICONV_H
3036# include <iconv.h>
3037#endif
3038 ], [iconv_open("fr", "to");],
3039 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3040 AC_MSG_RESULT(no)))
3041
3042
3043AC_MSG_CHECKING(for nl_langinfo(CODESET))
3044AC_TRY_LINK([
3045#ifdef HAVE_LANGINFO_H
3046# include <langinfo.h>
3047#endif
3048], [char *cs = nl_langinfo(CODESET);],
3049 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3050 AC_MSG_RESULT(no))
3051
Bram Moolenaar446cb832008-06-24 21:56:24 +00003052dnl Need various functions for floating point support. Only enable
3053dnl floating point when they are all present.
3054AC_CHECK_LIB(m, strtod)
3055AC_MSG_CHECKING([for strtod() and other floating point functions])
3056AC_TRY_LINK([
3057#ifdef HAVE_MATH_H
3058# include <math.h>
3059#endif
3060#if STDC_HEADERS
3061# include <stdlib.h>
3062# include <stddef.h>
3063#endif
3064], [char *s; double d;
3065 d = strtod("1.1", &s);
3066 d = fabs(1.11);
3067 d = ceil(1.11);
3068 d = floor(1.11);
3069 d = log10(1.11);
3070 d = pow(1.11, 2.22);
3071 d = sqrt(1.11);
3072 d = sin(1.11);
3073 d = cos(1.11);
3074 d = atan(1.11);
3075 ],
3076 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3077 AC_MSG_RESULT(no))
3078
Bram Moolenaar071d4272004-06-13 20:20:40 +00003079dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3080dnl when -lacl works, also try to use -lattr (required for Debian).
3081AC_MSG_CHECKING(--disable-acl argument)
3082AC_ARG_ENABLE(acl,
3083 [ --disable-acl Don't check for ACL support.],
3084 , [enable_acl="yes"])
3085if test "$enable_acl" = "yes"; then
3086AC_MSG_RESULT(no)
3087AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3088 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3089 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3090
3091AC_MSG_CHECKING(for POSIX ACL support)
3092AC_TRY_LINK([
3093#include <sys/types.h>
3094#ifdef HAVE_SYS_ACL_H
3095# include <sys/acl.h>
3096#endif
3097acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3098 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3099 acl_free(acl);],
3100 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3101 AC_MSG_RESULT(no))
3102
3103AC_MSG_CHECKING(for Solaris ACL support)
3104AC_TRY_LINK([
3105#ifdef HAVE_SYS_ACL_H
3106# include <sys/acl.h>
3107#endif], [acl("foo", GETACLCNT, 0, NULL);
3108 ],
3109 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
3110 AC_MSG_RESULT(no))
3111
3112AC_MSG_CHECKING(for AIX ACL support)
3113AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003114#if STDC_HEADERS
3115# include <stdlib.h>
3116# include <stddef.h>
3117#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003118#ifdef HAVE_SYS_ACL_H
3119# include <sys/acl.h>
3120#endif
3121#ifdef HAVE_SYS_ACCESS_H
3122# include <sys/access.h>
3123#endif
3124#define _ALL_SOURCE
3125
3126#include <sys/stat.h>
3127
3128int aclsize;
3129struct acl *aclent;], [aclsize = sizeof(struct acl);
3130 aclent = (void *)malloc(aclsize);
3131 statacl("foo", STX_NORMAL, aclent, aclsize);
3132 ],
3133 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3134 AC_MSG_RESULT(no))
3135else
3136 AC_MSG_RESULT(yes)
3137fi
3138
3139AC_MSG_CHECKING(--disable-gpm argument)
3140AC_ARG_ENABLE(gpm,
3141 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3142 [enable_gpm="yes"])
3143
3144if test "$enable_gpm" = "yes"; then
3145 AC_MSG_RESULT(no)
3146 dnl Checking if gpm support can be compiled
3147 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3148 [olibs="$LIBS" ; LIBS="-lgpm"]
3149 AC_TRY_LINK(
3150 [#include <gpm.h>
3151 #include <linux/keyboard.h>],
3152 [Gpm_GetLibVersion(NULL);],
3153 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3154 dnl FEAT_MOUSE_GPM if mouse support is included
3155 [vi_cv_have_gpm=yes],
3156 [vi_cv_have_gpm=no])
3157 [LIBS="$olibs"]
3158 )
3159 if test $vi_cv_have_gpm = yes; then
3160 LIBS="$LIBS -lgpm"
3161 AC_DEFINE(HAVE_GPM)
3162 fi
3163else
3164 AC_MSG_RESULT(yes)
3165fi
3166
Bram Moolenaar446cb832008-06-24 21:56:24 +00003167AC_MSG_CHECKING(--disable-sysmouse argument)
3168AC_ARG_ENABLE(sysmouse,
3169 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3170 [enable_sysmouse="yes"])
3171
3172if test "$enable_sysmouse" = "yes"; then
3173 AC_MSG_RESULT(no)
3174 dnl Checking if sysmouse support can be compiled
3175 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3176 dnl defines FEAT_SYSMOUSE if mouse support is included
3177 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3178 AC_TRY_LINK(
3179 [#include <sys/consio.h>
3180 #include <signal.h>
3181 #include <sys/fbio.h>],
3182 [struct mouse_info mouse;
3183 mouse.operation = MOUSE_MODE;
3184 mouse.operation = MOUSE_SHOW;
3185 mouse.u.mode.mode = 0;
3186 mouse.u.mode.signal = SIGUSR2;],
3187 [vi_cv_have_sysmouse=yes],
3188 [vi_cv_have_sysmouse=no])
3189 )
3190 if test $vi_cv_have_sysmouse = yes; then
3191 AC_DEFINE(HAVE_SYSMOUSE)
3192 fi
3193else
3194 AC_MSG_RESULT(yes)
3195fi
3196
Bram Moolenaarf05da212009-11-17 16:13:15 +00003197dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3198AC_MSG_CHECKING(for FD_CLOEXEC)
3199AC_TRY_COMPILE(
3200[#if HAVE_FCNTL_H
3201# include <fcntl.h>
3202#endif],
3203[ int flag = FD_CLOEXEC;],
3204 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3205 AC_MSG_RESULT(not usable))
3206
Bram Moolenaar071d4272004-06-13 20:20:40 +00003207dnl rename needs to be checked separately to work on Nextstep with cc
3208AC_MSG_CHECKING(for rename)
3209AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3210 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3211 AC_MSG_RESULT(no))
3212
3213dnl sysctl() may exist but not the arguments we use
3214AC_MSG_CHECKING(for sysctl)
3215AC_TRY_COMPILE(
3216[#include <sys/types.h>
3217#include <sys/sysctl.h>],
3218[ int mib[2], r;
3219 size_t len;
3220
3221 mib[0] = CTL_HW;
3222 mib[1] = HW_USERMEM;
3223 len = sizeof(r);
3224 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3225 ],
3226 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3227 AC_MSG_RESULT(not usable))
3228
3229dnl sysinfo() may exist but not be Linux compatible
3230AC_MSG_CHECKING(for sysinfo)
3231AC_TRY_COMPILE(
3232[#include <sys/types.h>
3233#include <sys/sysinfo.h>],
3234[ struct sysinfo sinfo;
3235 int t;
3236
3237 (void)sysinfo(&sinfo);
3238 t = sinfo.totalram;
3239 ],
3240 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3241 AC_MSG_RESULT(not usable))
3242
Bram Moolenaar914572a2007-05-01 11:37:47 +00003243dnl struct sysinfo may have the mem_unit field or not
3244AC_MSG_CHECKING(for sysinfo.mem_unit)
3245AC_TRY_COMPILE(
3246[#include <sys/types.h>
3247#include <sys/sysinfo.h>],
3248[ struct sysinfo sinfo;
3249 sinfo.mem_unit = 1;
3250 ],
3251 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3252 AC_MSG_RESULT(no))
3253
Bram Moolenaar071d4272004-06-13 20:20:40 +00003254dnl sysconf() may exist but not support what we want to use
3255AC_MSG_CHECKING(for sysconf)
3256AC_TRY_COMPILE(
3257[#include <unistd.h>],
3258[ (void)sysconf(_SC_PAGESIZE);
3259 (void)sysconf(_SC_PHYS_PAGES);
3260 ],
3261 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3262 AC_MSG_RESULT(not usable))
3263
Bram Moolenaar914703b2010-05-31 21:59:46 +02003264AC_CHECK_SIZEOF([int])
3265AC_CHECK_SIZEOF([long])
3266AC_CHECK_SIZEOF([time_t])
3267AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003268
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003269dnl Make sure that uint32_t is really 32 bits unsigned.
3270AC_MSG_CHECKING([uint32_t is 32 bits])
3271AC_TRY_RUN([
3272#ifdef HAVE_STDINT_H
3273# include <stdint.h>
3274#endif
3275#ifdef HAVE_INTTYPES_H
3276# include <inttypes.h>
3277#endif
3278main() {
3279 uint32_t nr1 = (uint32_t)-1;
3280 uint32_t nr2 = (uint32_t)0xffffffffUL;
3281 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3282 exit(0);
3283}],
3284AC_MSG_RESULT(ok),
3285AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
Bram Moolenaar323cb952011-12-14 19:22:34 +01003286AC_MSG_WARN([cannot check uint32_t when cross-compiling.]))
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003287
Bram Moolenaar446cb832008-06-24 21:56:24 +00003288dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3289dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3290
Bram Moolenaar071d4272004-06-13 20:20:40 +00003291[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003292#include "confdefs.h"
3293#ifdef HAVE_STRING_H
3294# include <string.h>
3295#endif
3296#if STDC_HEADERS
3297# include <stdlib.h>
3298# include <stddef.h>
3299#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003300main() {
3301 char buf[10];
3302 strcpy(buf, "abcdefghi");
3303 mch_memmove(buf, buf + 2, 3);
3304 if (strncmp(buf, "ababcf", 6))
3305 exit(1);
3306 strcpy(buf, "abcdefghi");
3307 mch_memmove(buf + 2, buf, 3);
3308 if (strncmp(buf, "cdedef", 6))
3309 exit(1);
3310 exit(0); /* libc version works properly. */
3311}']
3312
Bram Moolenaar446cb832008-06-24 21:56:24 +00003313AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3314 [
3315 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3316 [
3317 vim_cv_memmove_handles_overlap=yes
3318 ],[
3319 vim_cv_memmove_handles_overlap=no
3320 ],[
3321 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3322 ])
3323 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003324
Bram Moolenaar446cb832008-06-24 21:56:24 +00003325if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3326 AC_DEFINE(USEMEMMOVE)
3327else
3328 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3329 [
3330 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3331 [
3332 vim_cv_bcopy_handles_overlap=yes
3333 ],[
3334 vim_cv_bcopy_handles_overlap=no
3335 ],[
3336 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3337 ])
3338 ])
3339
3340 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3341 AC_DEFINE(USEBCOPY)
3342 else
3343 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3344 [
3345 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3346 [
3347 vim_cv_memcpy_handles_overlap=yes
3348 ],[
3349 vim_cv_memcpy_handles_overlap=no
3350 ],[
3351 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3352 ])
3353 ])
3354
3355 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3356 AC_DEFINE(USEMEMCPY)
3357 fi
3358 fi
3359fi
3360
Bram Moolenaar071d4272004-06-13 20:20:40 +00003361
3362dnl Check for multibyte locale functions
3363dnl Find out if _Xsetlocale() is supported by libX11.
3364dnl Check if X_LOCALE should be defined.
3365
3366if test "$enable_multibyte" = "yes"; then
3367 cflags_save=$CFLAGS
3368 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003369 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003370 CFLAGS="$CFLAGS -I$x_includes"
3371 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3372 AC_MSG_CHECKING(whether X_LOCALE needed)
3373 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3374 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3375 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3376 AC_MSG_RESULT(no))
3377 fi
3378 CFLAGS=$cflags_save
3379 LDFLAGS=$ldflags_save
3380fi
3381
3382dnl Link with xpg4, it is said to make Korean locale working
3383AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3384
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003385dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003386dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003387dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003388dnl -t for typedefs (many ctags have this)
3389dnl -s for static functions (Elvis ctags only?)
3390dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3391dnl -i+m to test for older Exuberant ctags
3392AC_MSG_CHECKING(how to create tags)
3393test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003394if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003395 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003396elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3397 TAGPRG="exctags -I INIT+ --fields=+S"
3398elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3399 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003400else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003401 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003402 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3403 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3404 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3405 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3406 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3407 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3408 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3409fi
3410test -f tags.save && mv tags.save tags
3411AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3412
3413dnl Check how we can run man with a section number
3414AC_MSG_CHECKING(how to run man with a section nr)
3415MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003416(eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003417AC_MSG_RESULT($MANDEF)
3418if test "$MANDEF" = "man -s"; then
3419 AC_DEFINE(USEMAN_S)
3420fi
3421
3422dnl Check if gettext() is working and if it needs -lintl
3423AC_MSG_CHECKING(--disable-nls argument)
3424AC_ARG_ENABLE(nls,
3425 [ --disable-nls Don't support NLS (gettext()).], ,
3426 [enable_nls="yes"])
3427
3428if test "$enable_nls" = "yes"; then
3429 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003430
3431 INSTALL_LANGS=install-languages
3432 AC_SUBST(INSTALL_LANGS)
3433 INSTALL_TOOL_LANGS=install-tool-languages
3434 AC_SUBST(INSTALL_TOOL_LANGS)
3435
Bram Moolenaar071d4272004-06-13 20:20:40 +00003436 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3437 AC_MSG_CHECKING([for NLS])
3438 if test -f po/Makefile; then
3439 have_gettext="no"
3440 if test -n "$MSGFMT"; then
3441 AC_TRY_LINK(
3442 [#include <libintl.h>],
3443 [gettext("Test");],
3444 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3445 olibs=$LIBS
3446 LIBS="$LIBS -lintl"
3447 AC_TRY_LINK(
3448 [#include <libintl.h>],
3449 [gettext("Test");],
3450 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3451 AC_MSG_RESULT([gettext() doesn't work]);
3452 LIBS=$olibs))
3453 else
3454 AC_MSG_RESULT([msgfmt not found - disabled]);
3455 fi
3456 if test $have_gettext = "yes"; then
3457 AC_DEFINE(HAVE_GETTEXT)
3458 MAKEMO=yes
3459 AC_SUBST(MAKEMO)
3460 dnl this was added in GNU gettext 0.10.36
3461 AC_CHECK_FUNCS(bind_textdomain_codeset)
3462 dnl _nl_msg_cat_cntr is required for GNU gettext
3463 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3464 AC_TRY_LINK(
3465 [#include <libintl.h>
3466 extern int _nl_msg_cat_cntr;],
3467 [++_nl_msg_cat_cntr;],
3468 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3469 AC_MSG_RESULT([no]))
3470 fi
3471 else
3472 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3473 fi
3474else
3475 AC_MSG_RESULT(yes)
3476fi
3477
3478dnl Check for dynamic linking loader
3479AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3480if test x${DLL} = xdlfcn.h; then
3481 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3482 AC_MSG_CHECKING([for dlopen()])
3483 AC_TRY_LINK(,[
3484 extern void* dlopen();
3485 dlopen();
3486 ],
3487 AC_MSG_RESULT(yes);
3488 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3489 AC_MSG_RESULT(no);
3490 AC_MSG_CHECKING([for dlopen() in -ldl])
3491 olibs=$LIBS
3492 LIBS="$LIBS -ldl"
3493 AC_TRY_LINK(,[
3494 extern void* dlopen();
3495 dlopen();
3496 ],
3497 AC_MSG_RESULT(yes);
3498 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3499 AC_MSG_RESULT(no);
3500 LIBS=$olibs))
3501 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3502 dnl ick :-)
3503 AC_MSG_CHECKING([for dlsym()])
3504 AC_TRY_LINK(,[
3505 extern void* dlsym();
3506 dlsym();
3507 ],
3508 AC_MSG_RESULT(yes);
3509 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3510 AC_MSG_RESULT(no);
3511 AC_MSG_CHECKING([for dlsym() in -ldl])
3512 olibs=$LIBS
3513 LIBS="$LIBS -ldl"
3514 AC_TRY_LINK(,[
3515 extern void* dlsym();
3516 dlsym();
3517 ],
3518 AC_MSG_RESULT(yes);
3519 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3520 AC_MSG_RESULT(no);
3521 LIBS=$olibs))
3522elif test x${DLL} = xdl.h; then
3523 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3524 AC_MSG_CHECKING([for shl_load()])
3525 AC_TRY_LINK(,[
3526 extern void* shl_load();
3527 shl_load();
3528 ],
3529 AC_MSG_RESULT(yes);
3530 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3531 AC_MSG_RESULT(no);
3532 AC_MSG_CHECKING([for shl_load() in -ldld])
3533 olibs=$LIBS
3534 LIBS="$LIBS -ldld"
3535 AC_TRY_LINK(,[
3536 extern void* shl_load();
3537 shl_load();
3538 ],
3539 AC_MSG_RESULT(yes);
3540 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3541 AC_MSG_RESULT(no);
3542 LIBS=$olibs))
3543fi
3544AC_CHECK_HEADERS(setjmp.h)
3545
3546if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3547 dnl -ldl must come after DynaLoader.a
3548 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3549 LIBS=`echo $LIBS | sed s/-ldl//`
3550 PERL_LIBS="$PERL_LIBS -ldl"
3551 fi
3552fi
3553
Bram Moolenaar164fca32010-07-14 13:58:07 +02003554if test "x$MACOSX" = "xyes"; then
3555 AC_MSG_CHECKING(whether we need -framework Cocoa)
3556 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3557 dnl disabled during tiny build)
3558 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3559 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003560 AC_MSG_RESULT(yes)
3561 else
3562 AC_MSG_RESULT(no)
3563 fi
3564fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003565if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003566 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003567fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003568
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003569dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3570dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3571dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003572dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3573dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003574DEPEND_CFLAGS_FILTER=
3575if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003576 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003577 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003578 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003579 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003580 AC_MSG_RESULT(yes)
3581 else
3582 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003583 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003584 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3585 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003586 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003587 dnl And undefine it first to avoid a warning.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003588 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3589 if test "$gccmajor" -gt "3"; then
Bram Moolenaaraeabe052011-12-08 15:17:34 +01003590 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003591 AC_MSG_RESULT(yes)
3592 else
3593 AC_MSG_RESULT(no)
3594 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003595fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003596AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003597
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003598dnl link.sh tries to avoid overlinking in a hackish way.
3599dnl At least GNU ld supports --as-needed which provides the same functionality
3600dnl at linker level. Let's use it.
3601AC_MSG_CHECKING(linker --as-needed support)
3602LINK_AS_NEEDED=
3603# Check if linker supports --as-needed and --no-as-needed options
3604if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3605 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3606 LINK_AS_NEEDED=yes
3607fi
3608if test "$LINK_AS_NEEDED" = yes; then
3609 AC_MSG_RESULT(yes)
3610else
3611 AC_MSG_RESULT(no)
3612fi
3613AC_SUBST(LINK_AS_NEEDED)
3614
Bram Moolenaar071d4272004-06-13 20:20:40 +00003615dnl write output files
3616AC_OUTPUT(auto/config.mk:config.mk.in)
3617
3618dnl vim: set sw=2 tw=78 fo+=l: