blob: 52e0600c89e94bea2b5f3c6afff756304b187dc4 [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
1164 LDFLAGS="$LDFLAGS -ldl"
1165 AC_RUN_IFELSE([
1166 #include <dlfcn.h>
1167 /* If this program fails, then RTLD_GLOBAL is needed.
1168 * RTLD_GLOBAL will be used and then it is not possible to
1169 * have both python versions enabled in the same vim instance.
1170 * Only the first pyhton version used will be switched on.
1171 */
1172
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001173 int no_rtl_global_needed_for(char *python_instsoname, char *prefix)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001174 {
1175 int needed = 0;
1176 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1177 if (pylib != 0)
1178 {
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001179 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome");
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001180 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1181 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1182 void (*final)(void) = dlsym(pylib, "Py_Finalize");
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001183 (*pfx)(prefix);
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001184 (*init)();
1185 needed = (*simple)("import termios") == -1;
1186 (*final)();
1187 dlclose(pylib);
1188 }
1189 return !needed;
1190 }
1191
1192 int main(int argc, char** argv)
1193 {
1194 int not_needed = 0;
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001195 if (no_rtl_global_needed_for("${python_INSTSONAME}", "${vi_cv_path_python_pfx}"))
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001196 not_needed = 1;
1197 return !not_needed;
1198 }],
1199 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001200
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001201 CFLAGS=$cflags_save
1202 LDFLAGS=$ldflags_save
Bram Moolenaar644d37b2010-11-16 19:26:02 +01001203
1204 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3)
1205 cflags_save=$CFLAGS
1206 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1207 ldflags_save=$LDFLAGS
1208 LDFLAGS="$LDFLAGS -ldl"
1209 AC_RUN_IFELSE([
1210 #include <dlfcn.h>
1211 #include <wchar.h>
1212 /* If this program fails, then RTLD_GLOBAL is needed.
1213 * RTLD_GLOBAL will be used and then it is not possible to
1214 * have both python versions enabled in the same vim instance.
1215 * Only the first pyhton version used will be switched on.
1216 */
1217
1218 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix)
1219 {
1220 int needed = 0;
1221 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1222 if (pylib != 0)
1223 {
1224 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome");
1225 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1226 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1227 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1228 (*pfx)(prefix);
1229 (*init)();
1230 needed = (*simple)("import termios") == -1;
1231 (*final)();
1232 dlclose(pylib);
1233 }
1234 return !needed;
1235 }
1236
1237 int main(int argc, char** argv)
1238 {
1239 int not_needed = 0;
1240 if (no_rtl_global_needed_for("${python3_INSTSONAME}", L"${vi_cv_path_python3_pfx}"))
1241 not_needed = 1;
1242 return !not_needed;
1243 }],
1244 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1245
1246 CFLAGS=$cflags_save
1247 LDFLAGS=$ldflags_save
1248
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001249 PYTHON_SRC="if_python.c"
1250 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001251 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001252 PYTHON_LIBS=
1253 PYTHON3_SRC="if_python3.c"
1254 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001255 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001256 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001257elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1258 AC_DEFINE(DYNAMIC_PYTHON)
1259 PYTHON_SRC="if_python.c"
1260 PYTHON_OBJ="objects/if_python.o"
1261 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1262 PYTHON_LIBS=
1263elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1264 AC_DEFINE(DYNAMIC_PYTHON3)
1265 PYTHON3_SRC="if_python3.c"
1266 PYTHON3_OBJ="objects/if_python3.o"
1267 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1268 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001269fi
1270
Bram Moolenaar071d4272004-06-13 20:20:40 +00001271AC_MSG_CHECKING(--enable-tclinterp argument)
1272AC_ARG_ENABLE(tclinterp,
1273 [ --enable-tclinterp Include Tcl interpreter.], ,
1274 [enable_tclinterp="no"])
1275AC_MSG_RESULT($enable_tclinterp)
1276
1277if test "$enable_tclinterp" = "yes"; then
1278
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001279 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001280 AC_MSG_CHECKING(--with-tclsh argument)
1281 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1282 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001283 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001284 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1285 AC_SUBST(vi_cv_path_tcl)
1286
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001287 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1288 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1289 tclsh_name="tclsh8.4"
1290 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1291 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001292 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001293 tclsh_name="tclsh8.2"
1294 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1295 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001296 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1297 tclsh_name="tclsh8.0"
1298 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1299 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001300 dnl still didn't find it, try without version number
1301 if test "X$vi_cv_path_tcl" = "X"; then
1302 tclsh_name="tclsh"
1303 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1304 fi
1305 if test "X$vi_cv_path_tcl" != "X"; then
1306 AC_MSG_CHECKING(Tcl version)
1307 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1308 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1309 AC_MSG_RESULT($tclver - OK);
1310 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 -`
1311
1312 AC_MSG_CHECKING(for location of Tcl include)
1313 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001314 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 +00001315 else
1316 dnl For Mac OS X 10.3, use the OS-provided framework location
1317 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1318 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001319 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001320 for try in $tclinc; do
1321 if test -f "$try/tcl.h"; then
1322 AC_MSG_RESULT($try/tcl.h)
1323 TCL_INC=$try
1324 break
1325 fi
1326 done
1327 if test -z "$TCL_INC"; then
1328 AC_MSG_RESULT(<not found>)
1329 SKIP_TCL=YES
1330 fi
1331 if test -z "$SKIP_TCL"; then
1332 AC_MSG_CHECKING(for location of tclConfig.sh script)
1333 if test "x$MACOSX" != "xyes"; then
1334 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001335 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001336 else
1337 dnl For Mac OS X 10.3, use the OS-provided framework location
1338 tclcnf="/System/Library/Frameworks/Tcl.framework"
1339 fi
1340 for try in $tclcnf; do
1341 if test -f $try/tclConfig.sh; then
1342 AC_MSG_RESULT($try/tclConfig.sh)
1343 . $try/tclConfig.sh
1344 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1345 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1346 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001347 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001348 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 +00001349 break
1350 fi
1351 done
1352 if test -z "$TCL_LIBS"; then
1353 AC_MSG_RESULT(<not found>)
1354 AC_MSG_CHECKING(for Tcl library by myself)
1355 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001356 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001357 for ext in .so .a ; do
1358 for ver in "" $tclver ; do
1359 for try in $tcllib ; do
1360 trylib=tcl$ver$ext
1361 if test -f $try/lib$trylib ; then
1362 AC_MSG_RESULT($try/lib$trylib)
1363 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1364 if test "`(uname) 2>/dev/null`" = SunOS &&
1365 uname -r | grep '^5' >/dev/null; then
1366 TCL_LIBS="$TCL_LIBS -R $try"
1367 fi
1368 break 3
1369 fi
1370 done
1371 done
1372 done
1373 if test -z "$TCL_LIBS"; then
1374 AC_MSG_RESULT(<not found>)
1375 SKIP_TCL=YES
1376 fi
1377 fi
1378 if test -z "$SKIP_TCL"; then
1379 AC_DEFINE(FEAT_TCL)
1380 TCL_SRC=if_tcl.c
1381 TCL_OBJ=objects/if_tcl.o
1382 TCL_PRO=if_tcl.pro
1383 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1384 fi
1385 fi
1386 else
1387 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1388 fi
1389 fi
1390fi
1391AC_SUBST(TCL_SRC)
1392AC_SUBST(TCL_OBJ)
1393AC_SUBST(TCL_PRO)
1394AC_SUBST(TCL_CFLAGS)
1395AC_SUBST(TCL_LIBS)
1396
1397AC_MSG_CHECKING(--enable-rubyinterp argument)
1398AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001399 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001400 [enable_rubyinterp="no"])
1401AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001402if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001403 AC_MSG_CHECKING(--with-ruby-command argument)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001404 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar948733a2011-05-05 18:10:16 +02001405 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1406 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD),
1407 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar165641d2010-02-17 16:23:09 +01001408 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001409 if test "X$vi_cv_path_ruby" != "X"; then
1410 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001411 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 +00001412 AC_MSG_RESULT(OK)
1413 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001414 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 +00001415 if test "X$rubyhdrdir" != "X"; then
1416 AC_MSG_RESULT($rubyhdrdir)
1417 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001418 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1419 if test -d "$rubyhdrdir/$rubyarch"; then
1420 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1421 fi
1422 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1423 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001424 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1425 if test "X$rubylibs" != "X"; then
1426 RUBY_LIBS="$rubylibs"
1427 fi
1428 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
Bram Moolenaar948733a2011-05-05 18:10:16 +02001429 librubya=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBY_A"]])'`
1430 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1431 if test -f "$rubylibdir/$librubya"; then
1432 librubyarg="$librubyarg"
1433 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
1434 elif test "$librubyarg" = "libruby.a"; then
1435 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1436 librubyarg="-lruby"
1437 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001438 fi
1439
1440 if test "X$librubyarg" != "X"; then
1441 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1442 fi
1443 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1444 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001445 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1446 dnl be included if requested by passing --with-mac-arch to
1447 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001448 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001449 if test "X$rubyldflags" != "X"; then
1450 LDFLAGS="$rubyldflags $LDFLAGS"
1451 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001452 fi
1453 RUBY_SRC="if_ruby.c"
1454 RUBY_OBJ="objects/if_ruby.o"
1455 RUBY_PRO="if_ruby.pro"
1456 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001457 if test "$enable_rubyinterp" = "dynamic"; then
1458 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1459 AC_DEFINE(DYNAMIC_RUBY)
1460 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1461 RUBY_LIBS=
1462 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001463 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001464 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001465 fi
1466 else
1467 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1468 fi
1469 fi
1470fi
1471AC_SUBST(RUBY_SRC)
1472AC_SUBST(RUBY_OBJ)
1473AC_SUBST(RUBY_PRO)
1474AC_SUBST(RUBY_CFLAGS)
1475AC_SUBST(RUBY_LIBS)
1476
1477AC_MSG_CHECKING(--enable-cscope argument)
1478AC_ARG_ENABLE(cscope,
1479 [ --enable-cscope Include cscope interface.], ,
1480 [enable_cscope="no"])
1481AC_MSG_RESULT($enable_cscope)
1482if test "$enable_cscope" = "yes"; then
1483 AC_DEFINE(FEAT_CSCOPE)
1484fi
1485
1486AC_MSG_CHECKING(--enable-workshop argument)
1487AC_ARG_ENABLE(workshop,
1488 [ --enable-workshop Include Sun Visual Workshop support.], ,
1489 [enable_workshop="no"])
1490AC_MSG_RESULT($enable_workshop)
1491if test "$enable_workshop" = "yes"; then
1492 AC_DEFINE(FEAT_SUN_WORKSHOP)
1493 WORKSHOP_SRC="workshop.c integration.c"
1494 AC_SUBST(WORKSHOP_SRC)
1495 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1496 AC_SUBST(WORKSHOP_OBJ)
1497 if test "${enable_gui-xxx}" = xxx; then
1498 enable_gui=motif
1499 fi
1500fi
1501
1502AC_MSG_CHECKING(--disable-netbeans argument)
1503AC_ARG_ENABLE(netbeans,
1504 [ --disable-netbeans Disable NetBeans integration support.],
1505 , [enable_netbeans="yes"])
1506if test "$enable_netbeans" = "yes"; then
1507 AC_MSG_RESULT(no)
1508 dnl On Solaris we need the socket and nsl library.
1509 AC_CHECK_LIB(socket, socket)
1510 AC_CHECK_LIB(nsl, gethostbyname)
1511 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1512 AC_TRY_LINK([
1513#include <stdio.h>
1514#include <stdlib.h>
1515#include <stdarg.h>
1516#include <fcntl.h>
1517#include <netdb.h>
1518#include <netinet/in.h>
1519#include <errno.h>
1520#include <sys/types.h>
1521#include <sys/socket.h>
1522 /* Check bitfields */
1523 struct nbbuf {
1524 unsigned int initDone:1;
1525 ushort signmaplen;
1526 };
1527 ], [
1528 /* Check creating a socket. */
1529 struct sockaddr_in server;
1530 (void)socket(AF_INET, SOCK_STREAM, 0);
1531 (void)htons(100);
1532 (void)gethostbyname("microsoft.com");
1533 if (errno == ECONNREFUSED)
1534 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1535 ],
1536 AC_MSG_RESULT(yes),
1537 AC_MSG_RESULT(no); enable_netbeans="no")
1538else
1539 AC_MSG_RESULT(yes)
1540fi
1541if test "$enable_netbeans" = "yes"; then
1542 AC_DEFINE(FEAT_NETBEANS_INTG)
1543 NETBEANS_SRC="netbeans.c"
1544 AC_SUBST(NETBEANS_SRC)
1545 NETBEANS_OBJ="objects/netbeans.o"
1546 AC_SUBST(NETBEANS_OBJ)
1547fi
1548
1549AC_MSG_CHECKING(--enable-sniff argument)
1550AC_ARG_ENABLE(sniff,
1551 [ --enable-sniff Include Sniff interface.], ,
1552 [enable_sniff="no"])
1553AC_MSG_RESULT($enable_sniff)
1554if test "$enable_sniff" = "yes"; then
1555 AC_DEFINE(FEAT_SNIFF)
1556 SNIFF_SRC="if_sniff.c"
1557 AC_SUBST(SNIFF_SRC)
1558 SNIFF_OBJ="objects/if_sniff.o"
1559 AC_SUBST(SNIFF_OBJ)
1560fi
1561
1562AC_MSG_CHECKING(--enable-multibyte argument)
1563AC_ARG_ENABLE(multibyte,
1564 [ --enable-multibyte Include multibyte editing support.], ,
1565 [enable_multibyte="no"])
1566AC_MSG_RESULT($enable_multibyte)
1567if test "$enable_multibyte" = "yes"; then
1568 AC_DEFINE(FEAT_MBYTE)
1569fi
1570
1571AC_MSG_CHECKING(--enable-hangulinput argument)
1572AC_ARG_ENABLE(hangulinput,
1573 [ --enable-hangulinput Include Hangul input support.], ,
1574 [enable_hangulinput="no"])
1575AC_MSG_RESULT($enable_hangulinput)
1576
1577AC_MSG_CHECKING(--enable-xim argument)
1578AC_ARG_ENABLE(xim,
1579 [ --enable-xim Include XIM input support.],
1580 AC_MSG_RESULT($enable_xim),
1581 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001582
1583AC_MSG_CHECKING(--enable-fontset argument)
1584AC_ARG_ENABLE(fontset,
1585 [ --enable-fontset Include X fontset output support.], ,
1586 [enable_fontset="no"])
1587AC_MSG_RESULT($enable_fontset)
1588dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1589
1590test -z "$with_x" && with_x=yes
1591test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1592if test "$with_x" = no; then
1593 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1594else
1595 dnl Do this check early, so that its failure can override user requests.
1596
1597 AC_PATH_PROG(xmkmfpath, xmkmf)
1598
1599 AC_PATH_XTRA
1600
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001601 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001602 dnl be compiled with a special option.
1603 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001604 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001605 CFLAGS="$CFLAGS -W c,dll"
1606 LDFLAGS="$LDFLAGS -W l,dll"
1607 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1608 fi
1609
1610 dnl On my HPUX system the X include dir is found, but the lib dir not.
1611 dnl This is a desparate try to fix this.
1612
1613 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1614 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1615 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1616 X_LIBS="$X_LIBS -L$x_libraries"
1617 if test "`(uname) 2>/dev/null`" = SunOS &&
1618 uname -r | grep '^5' >/dev/null; then
1619 X_LIBS="$X_LIBS -R $x_libraries"
1620 fi
1621 fi
1622
1623 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1624 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1625 AC_MSG_RESULT(Corrected X includes to $x_includes)
1626 X_CFLAGS="$X_CFLAGS -I$x_includes"
1627 fi
1628
1629 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1630 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1631 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1632 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1633 dnl Same for "-R/usr/lib ".
1634 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1635
1636
1637 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001638 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1639 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001640 AC_MSG_CHECKING(if X11 header files can be found)
1641 cflags_save=$CFLAGS
1642 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001643 AC_TRY_COMPILE([#include <X11/Xlib.h>
1644#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001645 AC_MSG_RESULT(yes),
1646 AC_MSG_RESULT(no); no_x=yes)
1647 CFLAGS=$cflags_save
1648
1649 if test "${no_x-no}" = yes; then
1650 with_x=no
1651 else
1652 AC_DEFINE(HAVE_X11)
1653 X_LIB="-lXt -lX11";
1654 AC_SUBST(X_LIB)
1655
1656 ac_save_LDFLAGS="$LDFLAGS"
1657 LDFLAGS="-L$x_libraries $LDFLAGS"
1658
1659 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1660 dnl For HP-UX 10.20 it must be before -lSM -lICE
1661 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1662 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1663
1664 dnl Some systems need -lnsl -lsocket when testing for ICE.
1665 dnl The check above doesn't do this, try here (again). Also needed to get
1666 dnl them after Xdmcp. link.sh will remove them when not needed.
1667 dnl Check for other function than above to avoid the cached value
1668 AC_CHECK_LIB(ICE, IceOpenConnection,
1669 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1670
1671 dnl Check for -lXpm (needed for some versions of Motif)
1672 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1673 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1674 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1675
1676 dnl Check that the X11 header files don't use implicit declarations
1677 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1678 cflags_save=$CFLAGS
1679 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1680 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1681 AC_MSG_RESULT(no),
1682 CFLAGS="$CFLAGS -Wno-implicit-int"
1683 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1684 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1685 AC_MSG_RESULT(test failed)
1686 )
1687 )
1688 CFLAGS=$cflags_save
1689
1690 LDFLAGS="$ac_save_LDFLAGS"
1691
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001692 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1693 AC_CACHE_VAL(ac_cv_small_wchar_t,
1694 [AC_TRY_RUN([
1695#include <X11/Xlib.h>
1696#if STDC_HEADERS
1697# include <stdlib.h>
1698# include <stddef.h>
1699#endif
1700 main()
1701 {
1702 if (sizeof(wchar_t) <= 2)
1703 exit(1);
1704 exit(0);
1705 }],
1706 ac_cv_small_wchar_t="no",
1707 ac_cv_small_wchar_t="yes",
1708 AC_MSG_ERROR(failed to compile test program))])
1709 AC_MSG_RESULT($ac_cv_small_wchar_t)
1710 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1711 AC_DEFINE(SMALL_WCHAR_T)
1712 fi
1713
Bram Moolenaar071d4272004-06-13 20:20:40 +00001714 fi
1715fi
1716
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001717test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001718
1719AC_MSG_CHECKING(--enable-gui argument)
1720AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001721 [ --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 +00001722
1723dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1724dnl Do not use character classes for portability with old tools.
1725enable_gui_canon=`echo "_$enable_gui" | \
1726 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1727
1728dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001729SKIP_GTK2=YES
1730SKIP_GNOME=YES
1731SKIP_MOTIF=YES
1732SKIP_ATHENA=YES
1733SKIP_NEXTAW=YES
1734SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001735SKIP_CARBON=YES
1736GUITYPE=NONE
1737
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001738if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001739 SKIP_PHOTON=
1740 case "$enable_gui_canon" in
1741 no) AC_MSG_RESULT(no GUI support)
1742 SKIP_PHOTON=YES ;;
1743 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1744 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1745 photon) AC_MSG_RESULT(Photon GUI support) ;;
1746 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1747 SKIP_PHOTON=YES ;;
1748 esac
1749
1750elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1751 SKIP_CARBON=
1752 case "$enable_gui_canon" in
1753 no) AC_MSG_RESULT(no GUI support)
1754 SKIP_CARBON=YES ;;
1755 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001756 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1757 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001758 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1759 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1760 SKIP_CARBON=YES ;;
1761 esac
1762
1763else
1764
Bram Moolenaar071d4272004-06-13 20:20:40 +00001765 case "$enable_gui_canon" in
1766 no|none) AC_MSG_RESULT(no GUI support) ;;
1767 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001768 SKIP_GTK2=
1769 SKIP_GNOME=
1770 SKIP_MOTIF=
1771 SKIP_ATHENA=
1772 SKIP_NEXTAW=
1773 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001774 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001775 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001776 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1777 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001778 SKIP_GTK2=;;
1779 motif) AC_MSG_RESULT(Motif GUI support)
1780 SKIP_MOTIF=;;
1781 athena) AC_MSG_RESULT(Athena GUI support)
1782 SKIP_ATHENA=;;
1783 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1784 SKIP_NEXTAW=;;
1785 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1786 esac
1787
1788fi
1789
Bram Moolenaar071d4272004-06-13 20:20:40 +00001790if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1791 -a "$enable_gui_canon" != "gnome2"; then
1792 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1793 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001794 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001795 , enable_gtk2_check="yes")
1796 AC_MSG_RESULT($enable_gtk2_check)
1797 if test "x$enable_gtk2_check" = "xno"; then
1798 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001799 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001800 fi
1801fi
1802
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001803if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001804 AC_MSG_CHECKING(whether or not to look for GNOME)
1805 AC_ARG_ENABLE(gnome-check,
1806 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1807 , enable_gnome_check="no")
1808 AC_MSG_RESULT($enable_gnome_check)
1809 if test "x$enable_gnome_check" = "xno"; then
1810 SKIP_GNOME=YES
1811 fi
1812fi
1813
1814if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1815 AC_MSG_CHECKING(whether or not to look for Motif)
1816 AC_ARG_ENABLE(motif-check,
1817 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1818 , enable_motif_check="yes")
1819 AC_MSG_RESULT($enable_motif_check)
1820 if test "x$enable_motif_check" = "xno"; then
1821 SKIP_MOTIF=YES
1822 fi
1823fi
1824
1825if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1826 AC_MSG_CHECKING(whether or not to look for Athena)
1827 AC_ARG_ENABLE(athena-check,
1828 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1829 , enable_athena_check="yes")
1830 AC_MSG_RESULT($enable_athena_check)
1831 if test "x$enable_athena_check" = "xno"; then
1832 SKIP_ATHENA=YES
1833 fi
1834fi
1835
1836if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1837 AC_MSG_CHECKING(whether or not to look for neXtaw)
1838 AC_ARG_ENABLE(nextaw-check,
1839 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1840 , enable_nextaw_check="yes")
1841 AC_MSG_RESULT($enable_nextaw_check);
1842 if test "x$enable_nextaw_check" = "xno"; then
1843 SKIP_NEXTAW=YES
1844 fi
1845fi
1846
1847if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1848 AC_MSG_CHECKING(whether or not to look for Carbon)
1849 AC_ARG_ENABLE(carbon-check,
1850 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1851 , enable_carbon_check="yes")
1852 AC_MSG_RESULT($enable_carbon_check);
1853 if test "x$enable_carbon_check" = "xno"; then
1854 SKIP_CARBON=YES
1855 fi
1856fi
1857
Bram Moolenaar843ee412004-06-30 16:16:41 +00001858
Bram Moolenaar071d4272004-06-13 20:20:40 +00001859if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1860 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001861 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001862 AC_MSG_RESULT(yes);
1863 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001864 if test "$VIMNAME" = "vim"; then
1865 VIMNAME=Vim
1866 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001867
Bram Moolenaar164fca32010-07-14 13:58:07 +02001868 if test "x$MACARCH" = "xboth"; then
1869 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1870 else
1871 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1872 fi
1873
Bram Moolenaar14716812006-05-04 21:54:08 +00001874 dnl Default install directory is not /usr/local
1875 if test x$prefix = xNONE; then
1876 prefix=/Applications
1877 fi
1878
1879 dnl Sorry for the hard coded default
1880 datadir='${prefix}/Vim.app/Contents/Resources'
1881
Bram Moolenaar071d4272004-06-13 20:20:40 +00001882 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001883 SKIP_GTK2=YES;
1884 SKIP_GNOME=YES;
1885 SKIP_MOTIF=YES;
1886 SKIP_ATHENA=YES;
1887 SKIP_NEXTAW=YES;
1888 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001889 SKIP_CARBON=YES
1890fi
1891
Bram Moolenaar071d4272004-06-13 20:20:40 +00001892dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001893dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001894dnl
1895dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001896dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001897dnl
1898AC_DEFUN(AM_PATH_GTK,
1899[
1900 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1901 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001902 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001903 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1904 no_gtk=""
1905 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1906 && $PKG_CONFIG --exists gtk+-2.0; then
1907 {
1908 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1909 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1910 dnl something like that.
1911 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001912 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001913 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1914 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1915 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1916 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1917 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1918 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1919 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1920 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001921 else
1922 no_gtk=yes
1923 fi
1924
1925 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1926 {
1927 ac_save_CFLAGS="$CFLAGS"
1928 ac_save_LIBS="$LIBS"
1929 CFLAGS="$CFLAGS $GTK_CFLAGS"
1930 LIBS="$LIBS $GTK_LIBS"
1931
1932 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001933 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001934 dnl
1935 rm -f conf.gtktest
1936 AC_TRY_RUN([
1937#include <gtk/gtk.h>
1938#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001939#if STDC_HEADERS
1940# include <stdlib.h>
1941# include <stddef.h>
1942#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001943
1944int
1945main ()
1946{
1947int major, minor, micro;
1948char *tmp_version;
1949
1950system ("touch conf.gtktest");
1951
1952/* HP/UX 9 (%@#!) writes to sscanf strings */
1953tmp_version = g_strdup("$min_gtk_version");
1954if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1955 printf("%s, bad version string\n", "$min_gtk_version");
1956 exit(1);
1957 }
1958
1959if ((gtk_major_version > major) ||
1960 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1961 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1962 (gtk_micro_version >= micro)))
1963{
1964 return 0;
1965}
1966return 1;
1967}
1968],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1969 CFLAGS="$ac_save_CFLAGS"
1970 LIBS="$ac_save_LIBS"
1971 }
1972 fi
1973 if test "x$no_gtk" = x ; then
1974 if test "x$enable_gtktest" = "xyes"; then
1975 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1976 else
1977 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1978 fi
1979 ifelse([$2], , :, [$2])
1980 else
1981 {
1982 AC_MSG_RESULT(no)
1983 GTK_CFLAGS=""
1984 GTK_LIBS=""
1985 ifelse([$3], , :, [$3])
1986 }
1987 fi
1988 }
1989 else
1990 GTK_CFLAGS=""
1991 GTK_LIBS=""
1992 ifelse([$3], , :, [$3])
1993 fi
1994 AC_SUBST(GTK_CFLAGS)
1995 AC_SUBST(GTK_LIBS)
1996 rm -f conf.gtktest
1997])
1998
1999dnl ---------------------------------------------------------------------------
2000dnl gnome
2001dnl ---------------------------------------------------------------------------
2002AC_DEFUN([GNOME_INIT_HOOK],
2003[
2004 AC_SUBST(GNOME_LIBS)
2005 AC_SUBST(GNOME_LIBDIR)
2006 AC_SUBST(GNOME_INCLUDEDIR)
2007
2008 AC_ARG_WITH(gnome-includes,
2009 [ --with-gnome-includes=DIR Specify location of GNOME headers],
2010 [CFLAGS="$CFLAGS -I$withval"]
2011 )
2012
2013 AC_ARG_WITH(gnome-libs,
2014 [ --with-gnome-libs=DIR Specify location of GNOME libs],
2015 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
2016 )
2017
2018 AC_ARG_WITH(gnome,
2019 [ --with-gnome Specify prefix for GNOME files],
2020 if test x$withval = xyes; then
2021 want_gnome=yes
2022 ifelse([$1], [], :, [$1])
2023 else
2024 if test "x$withval" = xno; then
2025 want_gnome=no
2026 else
2027 want_gnome=yes
2028 LDFLAGS="$LDFLAGS -L$withval/lib"
2029 CFLAGS="$CFLAGS -I$withval/include"
2030 gnome_prefix=$withval/lib
2031 fi
2032 fi,
2033 want_gnome=yes)
2034
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002035 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002036 {
2037 AC_MSG_CHECKING(for libgnomeui-2.0)
2038 if $PKG_CONFIG --exists libgnomeui-2.0; then
2039 AC_MSG_RESULT(yes)
2040 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
2041 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
2042 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002043
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002044 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
2045 dnl This might not be the right way but it works for me...
2046 AC_MSG_CHECKING(for FreeBSD)
2047 if test "`(uname) 2>/dev/null`" = FreeBSD; then
2048 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00002049 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00002050 GNOME_LIBS="$GNOME_LIBS -pthread"
2051 else
2052 AC_MSG_RESULT(no)
2053 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002054 $1
2055 else
2056 AC_MSG_RESULT(not found)
2057 if test "x$2" = xfail; then
2058 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
2059 fi
2060 fi
2061 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00002062 fi
2063])
2064
2065AC_DEFUN([GNOME_INIT],[
2066 GNOME_INIT_HOOK([],fail)
2067])
2068
2069
2070dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002071dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00002072dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002073if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002074
2075 AC_MSG_CHECKING(--disable-gtktest argument)
2076 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
2077 , enable_gtktest=yes)
2078 if test "x$enable_gtktest" = "xyes" ; then
2079 AC_MSG_RESULT(gtk test enabled)
2080 else
2081 AC_MSG_RESULT(gtk test disabled)
2082 fi
2083
Bram Moolenaar071d4272004-06-13 20:20:40 +00002084 if test "X$PKG_CONFIG" = "X"; then
2085 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
2086 fi
2087
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002088 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002089 dnl First try finding version 2.2.0 or later. The 2.0.x series has
2090 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002091 AM_PATH_GTK(2.2.0,
2092 [GUI_LIB_LOC="$GTK_LIBDIR"
2093 GTK_LIBNAME="$GTK_LIBS"
2094 GUI_INC_LOC="$GTK_CFLAGS"], )
2095 if test "x$GTK_CFLAGS" != "x"; then
2096 SKIP_ATHENA=YES
2097 SKIP_NEXTAW=YES
2098 SKIP_MOTIF=YES
2099 GUITYPE=GTK
2100 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002101 fi
2102 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002103 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002104 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2105 || test "0$gtk_minor_version" -ge 2; then
2106 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2107 fi
2108 dnl
2109 dnl if GTK exists, then check for GNOME.
2110 dnl
2111 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002112 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002113 GNOME_INIT_HOOK([have_gnome=yes])
2114 if test "x$have_gnome" = xyes ; then
2115 AC_DEFINE(FEAT_GUI_GNOME)
2116 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2117 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002118 fi
2119 }
2120 fi
2121 fi
2122fi
2123
2124dnl Check for Motif include files location.
2125dnl The LAST one found is used, this makes the highest version to be used,
2126dnl e.g. when Motif1.2 and Motif2.0 are both present.
2127
2128if test -z "$SKIP_MOTIF"; then
2129 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"
2130 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2131 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2132
2133 AC_MSG_CHECKING(for location of Motif GUI includes)
2134 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2135 GUI_INC_LOC=
2136 for try in $gui_includes; do
2137 if test -f "$try/Xm/Xm.h"; then
2138 GUI_INC_LOC=$try
2139 fi
2140 done
2141 if test -n "$GUI_INC_LOC"; then
2142 if test "$GUI_INC_LOC" = /usr/include; then
2143 GUI_INC_LOC=
2144 AC_MSG_RESULT(in default path)
2145 else
2146 AC_MSG_RESULT($GUI_INC_LOC)
2147 fi
2148 else
2149 AC_MSG_RESULT(<not found>)
2150 SKIP_MOTIF=YES
2151 fi
2152fi
2153
2154dnl Check for Motif library files location. In the same order as the include
2155dnl files, to avoid a mixup if several versions are present
2156
2157if test -z "$SKIP_MOTIF"; then
2158 AC_MSG_CHECKING(--with-motif-lib argument)
2159 AC_ARG_WITH(motif-lib,
2160 [ --with-motif-lib=STRING Library for Motif ],
2161 [ MOTIF_LIBNAME="${withval}" ] )
2162
2163 if test -n "$MOTIF_LIBNAME"; then
2164 AC_MSG_RESULT($MOTIF_LIBNAME)
2165 GUI_LIB_LOC=
2166 else
2167 AC_MSG_RESULT(no)
2168
2169 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2170 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2171
2172 AC_MSG_CHECKING(for location of Motif GUI libs)
2173 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"
2174 GUI_LIB_LOC=
2175 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002176 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002177 if test -f "$libtry"; then
2178 GUI_LIB_LOC=$try
2179 fi
2180 done
2181 done
2182 if test -n "$GUI_LIB_LOC"; then
2183 dnl Remove /usr/lib, it causes trouble on some systems
2184 if test "$GUI_LIB_LOC" = /usr/lib; then
2185 GUI_LIB_LOC=
2186 AC_MSG_RESULT(in default path)
2187 else
2188 if test -n "$GUI_LIB_LOC"; then
2189 AC_MSG_RESULT($GUI_LIB_LOC)
2190 if test "`(uname) 2>/dev/null`" = SunOS &&
2191 uname -r | grep '^5' >/dev/null; then
2192 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2193 fi
2194 fi
2195 fi
2196 MOTIF_LIBNAME=-lXm
2197 else
2198 AC_MSG_RESULT(<not found>)
2199 SKIP_MOTIF=YES
2200 fi
2201 fi
2202fi
2203
2204if test -z "$SKIP_MOTIF"; then
2205 SKIP_ATHENA=YES
2206 SKIP_NEXTAW=YES
2207 GUITYPE=MOTIF
2208 AC_SUBST(MOTIF_LIBNAME)
2209fi
2210
2211dnl Check if the Athena files can be found
2212
2213GUI_X_LIBS=
2214
2215if test -z "$SKIP_ATHENA"; then
2216 AC_MSG_CHECKING(if Athena header files can be found)
2217 cflags_save=$CFLAGS
2218 CFLAGS="$CFLAGS $X_CFLAGS"
2219 AC_TRY_COMPILE([
2220#include <X11/Intrinsic.h>
2221#include <X11/Xaw/Paned.h>], ,
2222 AC_MSG_RESULT(yes),
2223 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2224 CFLAGS=$cflags_save
2225fi
2226
2227if test -z "$SKIP_ATHENA"; then
2228 GUITYPE=ATHENA
2229fi
2230
2231if test -z "$SKIP_NEXTAW"; then
2232 AC_MSG_CHECKING(if neXtaw header files can be found)
2233 cflags_save=$CFLAGS
2234 CFLAGS="$CFLAGS $X_CFLAGS"
2235 AC_TRY_COMPILE([
2236#include <X11/Intrinsic.h>
2237#include <X11/neXtaw/Paned.h>], ,
2238 AC_MSG_RESULT(yes),
2239 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2240 CFLAGS=$cflags_save
2241fi
2242
2243if test -z "$SKIP_NEXTAW"; then
2244 GUITYPE=NEXTAW
2245fi
2246
2247if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2248 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2249 dnl Avoid adding it when it twice
2250 if test -n "$GUI_INC_LOC"; then
2251 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2252 fi
2253 if test -n "$GUI_LIB_LOC"; then
2254 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2255 fi
2256
2257 dnl Check for -lXext and then for -lXmu
2258 ldflags_save=$LDFLAGS
2259 LDFLAGS="$X_LIBS $LDFLAGS"
2260 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2261 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2262 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2263 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2264 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2265 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2266 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2267 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2268 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2269 if test -z "$SKIP_MOTIF"; then
2270 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2271 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2272 fi
2273 LDFLAGS=$ldflags_save
2274
2275 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2276 AC_MSG_CHECKING(for extra X11 defines)
2277 NARROW_PROTO=
2278 rm -fr conftestdir
2279 if mkdir conftestdir; then
2280 cd conftestdir
2281 cat > Imakefile <<'EOF'
2282acfindx:
2283 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2284EOF
2285 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2286 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2287 fi
2288 cd ..
2289 rm -fr conftestdir
2290 fi
2291 if test -z "$NARROW_PROTO"; then
2292 AC_MSG_RESULT(no)
2293 else
2294 AC_MSG_RESULT($NARROW_PROTO)
2295 fi
2296 AC_SUBST(NARROW_PROTO)
2297fi
2298
2299dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2300dnl use the X11 include path
2301if test "$enable_xsmp" = "yes"; then
2302 cppflags_save=$CPPFLAGS
2303 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2304 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2305 CPPFLAGS=$cppflags_save
2306fi
2307
2308
Bram Moolenaare667c952010-07-05 22:57:59 +02002309if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002310 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2311 cppflags_save=$CPPFLAGS
2312 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2313 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2314
2315 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2316 if test ! "$enable_xim" = "no"; then
2317 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2318 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2319 AC_MSG_RESULT(yes),
2320 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2321 fi
2322 CPPFLAGS=$cppflags_save
2323
2324 dnl automatically enable XIM when hangul input isn't enabled
2325 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2326 -a "x$GUITYPE" != "xNONE" ; then
2327 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2328 enable_xim="yes"
2329 fi
2330fi
2331
2332if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2333 cppflags_save=$CPPFLAGS
2334 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002335dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2336 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2337 AC_TRY_COMPILE([
2338#include <X11/Intrinsic.h>
2339#include <X11/Xmu/Editres.h>],
2340 [int i; i = 0;],
2341 AC_MSG_RESULT(yes)
2342 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2343 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002344 CPPFLAGS=$cppflags_save
2345fi
2346
2347dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2348if test -z "$SKIP_MOTIF"; then
2349 cppflags_save=$CPPFLAGS
2350 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002351 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 +00002352 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002353
2354 if test $ac_cv_header_Xm_XpmP_h = yes; then
2355 dnl Solaris uses XpmAttributes_21, very annoying.
2356 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2357 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2358 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2359 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2360 )
2361 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002362 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002363 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002364 CPPFLAGS=$cppflags_save
2365fi
2366
2367if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2368 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2369 enable_xim="no"
2370fi
2371if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2372 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2373 enable_fontset="no"
2374fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002375if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002376 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2377 enable_fontset="no"
2378fi
2379
Bram Moolenaar071d4272004-06-13 20:20:40 +00002380if test -z "$SKIP_PHOTON"; then
2381 GUITYPE=PHOTONGUI
2382fi
2383
2384AC_SUBST(GUI_INC_LOC)
2385AC_SUBST(GUI_LIB_LOC)
2386AC_SUBST(GUITYPE)
2387AC_SUBST(GUI_X_LIBS)
2388
2389if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2390 AC_MSG_ERROR([cannot use workshop without Motif])
2391fi
2392
2393dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2394if test "$enable_xim" = "yes"; then
2395 AC_DEFINE(FEAT_XIM)
2396fi
2397if test "$enable_fontset" = "yes"; then
2398 AC_DEFINE(FEAT_XFONTSET)
2399fi
2400
2401
2402dnl ---------------------------------------------------------------------------
2403dnl end of GUI-checking
2404dnl ---------------------------------------------------------------------------
2405
2406
2407dnl Only really enable hangul input when GUI and XFONTSET are available
2408if test "$enable_hangulinput" = "yes"; then
2409 if test "x$GUITYPE" = "xNONE"; then
2410 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2411 enable_hangulinput=no
2412 else
2413 AC_DEFINE(FEAT_HANGULIN)
2414 HANGULIN_SRC=hangulin.c
2415 AC_SUBST(HANGULIN_SRC)
2416 HANGULIN_OBJ=objects/hangulin.o
2417 AC_SUBST(HANGULIN_OBJ)
2418 fi
2419fi
2420
2421dnl Checks for libraries and include files.
2422
Bram Moolenaar446cb832008-06-24 21:56:24 +00002423AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2424 [
2425 AC_RUN_IFELSE([[
2426#include "confdefs.h"
2427#include <ctype.h>
2428#if STDC_HEADERS
2429# include <stdlib.h>
2430# include <stddef.h>
2431#endif
2432main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2433 ]],[
2434 vim_cv_toupper_broken=yes
2435 ],[
2436 vim_cv_toupper_broken=no
2437 ],[
2438 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2439 ])])
2440
2441if test "x$vim_cv_toupper_broken" = "xyes" ; then
2442 AC_DEFINE(BROKEN_TOUPPER)
2443fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002444
2445AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002446AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002447 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2448 AC_MSG_RESULT(no))
2449
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002450AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2451AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2452 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2453 AC_MSG_RESULT(no))
2454
Bram Moolenaar071d4272004-06-13 20:20:40 +00002455dnl Checks for header files.
2456AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2457dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2458if test "$HAS_ELF" = 1; then
2459 AC_CHECK_LIB(elf, main)
2460fi
2461
2462AC_HEADER_DIRENT
2463
Bram Moolenaar071d4272004-06-13 20:20:40 +00002464dnl If sys/wait.h is not found it might still exist but not be POSIX
2465dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2466if test $ac_cv_header_sys_wait_h = no; then
2467 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2468 AC_TRY_COMPILE([#include <sys/wait.h>],
2469 [union wait xx, yy; xx = yy],
2470 AC_MSG_RESULT(yes)
2471 AC_DEFINE(HAVE_SYS_WAIT_H)
2472 AC_DEFINE(HAVE_UNION_WAIT),
2473 AC_MSG_RESULT(no))
2474fi
2475
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002476AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2477 sys/select.h sys/utsname.h termcap.h fcntl.h \
2478 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2479 termio.h iconv.h inttypes.h langinfo.h math.h \
2480 unistd.h stropts.h errno.h sys/resource.h \
2481 sys/systeminfo.h locale.h sys/stream.h termios.h \
2482 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2483 utime.h sys/param.h libintl.h libgen.h \
2484 util/debug.h util/msg18n.h frame.h sys/acl.h \
2485 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002486
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002487dnl sys/ptem.h depends on sys/stream.h on Solaris
2488AC_CHECK_HEADERS(sys/ptem.h, [], [],
2489[#if defined HAVE_SYS_STREAM_H
2490# include <sys/stream.h>
2491#endif])
2492
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002493dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2494AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2495[#if defined HAVE_SYS_PARAM_H
2496# include <sys/param.h>
2497#endif])
2498
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002499
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002500dnl pthread_np.h may exist but can only be used after including pthread.h
2501AC_MSG_CHECKING([for pthread_np.h])
2502AC_TRY_COMPILE([
2503#include <pthread.h>
2504#include <pthread_np.h>],
2505 [int i; i = 0;],
2506 AC_MSG_RESULT(yes)
2507 AC_DEFINE(HAVE_PTHREAD_NP_H),
2508 AC_MSG_RESULT(no))
2509
Bram Moolenaare344bea2005-09-01 20:46:49 +00002510AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002511if test "x$MACOSX" = "xyes"; then
2512 dnl The strings.h file on OS/X contains a warning and nothing useful.
2513 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2514else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002515
2516dnl Check if strings.h and string.h can both be included when defined.
2517AC_MSG_CHECKING([if strings.h can be included after string.h])
2518cppflags_save=$CPPFLAGS
2519CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2520AC_TRY_COMPILE([
2521#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2522# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2523 /* but don't do it on AIX 5.1 (Uribarri) */
2524#endif
2525#ifdef HAVE_XM_XM_H
2526# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2527#endif
2528#ifdef HAVE_STRING_H
2529# include <string.h>
2530#endif
2531#if defined(HAVE_STRINGS_H)
2532# include <strings.h>
2533#endif
2534 ], [int i; i = 0;],
2535 AC_MSG_RESULT(yes),
2536 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2537 AC_MSG_RESULT(no))
2538CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002539fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002540
2541dnl Checks for typedefs, structures, and compiler characteristics.
2542AC_PROG_GCC_TRADITIONAL
2543AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002544AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002545AC_TYPE_MODE_T
2546AC_TYPE_OFF_T
2547AC_TYPE_PID_T
2548AC_TYPE_SIZE_T
2549AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002550AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002551
Bram Moolenaar071d4272004-06-13 20:20:40 +00002552AC_HEADER_TIME
2553AC_CHECK_TYPE(ino_t, long)
2554AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002555AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002556
2557AC_MSG_CHECKING(for rlim_t)
2558if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2559 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2560else
2561 AC_EGREP_CPP(dnl
2562changequote(<<,>>)dnl
2563<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2564changequote([,]),
2565 [
2566#include <sys/types.h>
2567#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002568# include <stdlib.h>
2569# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002570#endif
2571#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002572# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002573#endif
2574 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2575 AC_MSG_RESULT($ac_cv_type_rlim_t)
2576fi
2577if test $ac_cv_type_rlim_t = no; then
2578 cat >> confdefs.h <<\EOF
2579#define rlim_t unsigned long
2580EOF
2581fi
2582
2583AC_MSG_CHECKING(for stack_t)
2584if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2585 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2586else
2587 AC_EGREP_CPP(stack_t,
2588 [
2589#include <sys/types.h>
2590#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002591# include <stdlib.h>
2592# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002593#endif
2594#include <signal.h>
2595 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2596 AC_MSG_RESULT($ac_cv_type_stack_t)
2597fi
2598if test $ac_cv_type_stack_t = no; then
2599 cat >> confdefs.h <<\EOF
2600#define stack_t struct sigaltstack
2601EOF
2602fi
2603
2604dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2605AC_MSG_CHECKING(whether stack_t has an ss_base field)
2606AC_TRY_COMPILE([
2607#include <sys/types.h>
2608#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002609# include <stdlib.h>
2610# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002611#endif
2612#include <signal.h>
2613#include "confdefs.h"
2614 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2615 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2616 AC_MSG_RESULT(no))
2617
2618olibs="$LIBS"
2619AC_MSG_CHECKING(--with-tlib argument)
2620AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2621if test -n "$with_tlib"; then
2622 AC_MSG_RESULT($with_tlib)
2623 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002624 AC_MSG_CHECKING(for linking with $with_tlib library)
2625 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2626 dnl Need to check for tgetent() below.
2627 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002628else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002629 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002630 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2631 dnl curses, because curses is much slower.
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002632 dnl Newer versions of ncurses are preferred over anything, except
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02002633 dnl when tinfo has been split off, it contains all we need.
Bram Moolenaar071d4272004-06-13 20:20:40 +00002634 dnl Older versions of ncurses have bugs, get a new one!
2635 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002636 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002637 case "`uname -s 2>/dev/null`" in
Bram Moolenaar4e509b62011-02-09 17:42:57 +01002638 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";;
2639 *) tlibs="tinfo ncurses termlib termcap curses";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002640 esac
2641 for libname in $tlibs; do
2642 AC_CHECK_LIB(${libname}, tgetent,,)
2643 if test "x$olibs" != "x$LIBS"; then
2644 dnl It's possible that a library is found but it doesn't work
2645 dnl e.g., shared library that cannot be found
2646 dnl compile and run a test program to be sure
2647 AC_TRY_RUN([
2648#ifdef HAVE_TERMCAP_H
2649# include <termcap.h>
2650#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002651#if STDC_HEADERS
2652# include <stdlib.h>
2653# include <stddef.h>
2654#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002655main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2656 res="OK", res="FAIL", res="FAIL")
2657 if test "$res" = "OK"; then
2658 break
2659 fi
2660 AC_MSG_RESULT($libname library is not usable)
2661 LIBS="$olibs"
2662 fi
2663 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002664 if test "x$olibs" = "x$LIBS"; then
2665 AC_MSG_RESULT(no terminal library found)
2666 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002667fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002668
2669if test "x$olibs" = "x$LIBS"; then
2670 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002671 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002672 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2673 AC_MSG_RESULT(yes),
2674 AC_MSG_ERROR([NOT FOUND!
2675 You need to install a terminal library; for example ncurses.
2676 Or specify the name of the library with --with-tlib.]))
2677fi
2678
Bram Moolenaar446cb832008-06-24 21:56:24 +00002679AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2680 [
2681 AC_RUN_IFELSE([[
2682#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002683#ifdef HAVE_TERMCAP_H
2684# include <termcap.h>
2685#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002686#ifdef HAVE_STRING_H
2687# include <string.h>
2688#endif
2689#if STDC_HEADERS
2690# include <stdlib.h>
2691# include <stddef.h>
2692#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002693main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002694{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2695 ]],[
2696 vim_cv_terminfo=no
2697 ],[
2698 vim_cv_terminfo=yes
2699 ],[
2700 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2701 ])
2702 ])
2703
2704if test "x$vim_cv_terminfo" = "xyes" ; then
2705 AC_DEFINE(TERMINFO)
2706fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002707
2708if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002709 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2710 [
2711 AC_RUN_IFELSE([[
2712#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002713#ifdef HAVE_TERMCAP_H
2714# include <termcap.h>
2715#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002716#if STDC_HEADERS
2717# include <stdlib.h>
2718# include <stddef.h>
2719#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002720main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002721{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2722 ]],[
2723 vim_cv_tgent=zero
2724 ],[
2725 vim_cv_tgent=non-zero
2726 ],[
2727 AC_MSG_ERROR(failed to compile test program.)
2728 ])
2729 ])
2730
2731 if test "x$vim_cv_tgent" = "xzero" ; then
2732 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2733 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002734fi
2735
2736AC_MSG_CHECKING(whether termcap.h contains ospeed)
2737AC_TRY_LINK([
2738#ifdef HAVE_TERMCAP_H
2739# include <termcap.h>
2740#endif
2741 ], [ospeed = 20000],
2742 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2743 [AC_MSG_RESULT(no)
2744 AC_MSG_CHECKING(whether ospeed can be extern)
2745 AC_TRY_LINK([
2746#ifdef HAVE_TERMCAP_H
2747# include <termcap.h>
2748#endif
2749extern short ospeed;
2750 ], [ospeed = 20000],
2751 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2752 AC_MSG_RESULT(no))]
2753 )
2754
2755AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2756AC_TRY_LINK([
2757#ifdef HAVE_TERMCAP_H
2758# include <termcap.h>
2759#endif
2760 ], [if (UP == 0 && BC == 0) PC = 1],
2761 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2762 [AC_MSG_RESULT(no)
2763 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2764 AC_TRY_LINK([
2765#ifdef HAVE_TERMCAP_H
2766# include <termcap.h>
2767#endif
2768extern char *UP, *BC, PC;
2769 ], [if (UP == 0 && BC == 0) PC = 1],
2770 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2771 AC_MSG_RESULT(no))]
2772 )
2773
2774AC_MSG_CHECKING(whether tputs() uses outfuntype)
2775AC_TRY_COMPILE([
2776#ifdef HAVE_TERMCAP_H
2777# include <termcap.h>
2778#endif
2779 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2780 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2781 AC_MSG_RESULT(no))
2782
2783dnl On some SCO machines sys/select redefines struct timeval
2784AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2785AC_TRY_COMPILE([
2786#include <sys/types.h>
2787#include <sys/time.h>
2788#include <sys/select.h>], ,
2789 AC_MSG_RESULT(yes)
2790 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2791 AC_MSG_RESULT(no))
2792
2793dnl AC_DECL_SYS_SIGLIST
2794
2795dnl Checks for pty.c (copied from screen) ==========================
2796AC_MSG_CHECKING(for /dev/ptc)
2797if test -r /dev/ptc; then
2798 AC_DEFINE(HAVE_DEV_PTC)
2799 AC_MSG_RESULT(yes)
2800else
2801 AC_MSG_RESULT(no)
2802fi
2803
2804AC_MSG_CHECKING(for SVR4 ptys)
2805if test -c /dev/ptmx ; then
2806 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2807 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2808 AC_MSG_RESULT(no))
2809else
2810 AC_MSG_RESULT(no)
2811fi
2812
2813AC_MSG_CHECKING(for ptyranges)
2814if test -d /dev/ptym ; then
2815 pdir='/dev/ptym'
2816else
2817 pdir='/dev'
2818fi
2819dnl SCO uses ptyp%d
2820AC_EGREP_CPP(yes,
2821[#ifdef M_UNIX
2822 yes;
2823#endif
2824 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2825dnl if test -c /dev/ptyp19; then
2826dnl ptys=`echo /dev/ptyp??`
2827dnl else
2828dnl ptys=`echo $pdir/pty??`
2829dnl fi
2830if test "$ptys" != "$pdir/pty??" ; then
2831 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2832 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2833 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2834 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2835 AC_MSG_RESULT([$p0 / $p1])
2836else
2837 AC_MSG_RESULT([don't know])
2838fi
2839
2840dnl **** pty mode/group handling ****
2841dnl
2842dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002843rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002844AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2845 [
2846 AC_RUN_IFELSE([[
2847#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002848#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002849#if STDC_HEADERS
2850# include <stdlib.h>
2851# include <stddef.h>
2852#endif
2853#ifdef HAVE_UNISTD_H
2854#include <unistd.h>
2855#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002856#include <sys/stat.h>
2857#include <stdio.h>
2858main()
2859{
2860 struct stat sb;
2861 char *x,*ttyname();
2862 int om, m;
2863 FILE *fp;
2864
2865 if (!(x = ttyname(0))) exit(1);
2866 if (stat(x, &sb)) exit(1);
2867 om = sb.st_mode;
2868 if (om & 002) exit(0);
2869 m = system("mesg y");
2870 if (m == -1 || m == 127) exit(1);
2871 if (stat(x, &sb)) exit(1);
2872 m = sb.st_mode;
2873 if (chmod(x, om)) exit(1);
2874 if (m & 002) exit(0);
2875 if (sb.st_gid == getgid()) exit(1);
2876 if (!(fp=fopen("conftest_grp", "w")))
2877 exit(1);
2878 fprintf(fp, "%d\n", sb.st_gid);
2879 fclose(fp);
2880 exit(0);
2881}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002882 ]],[
2883 if test -f conftest_grp; then
2884 vim_cv_tty_group=`cat conftest_grp`
2885 if test "x$vim_cv_tty_mode" = "x" ; then
2886 vim_cv_tty_mode=0620
2887 fi
2888 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2889 else
2890 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002891 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002892 fi
2893 ],[
2894 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002895 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002896 ],[
2897 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2898 ])
2899 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002900rm -f conftest_grp
2901
Bram Moolenaar446cb832008-06-24 21:56:24 +00002902if test "x$vim_cv_tty_group" != "xworld" ; then
2903 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2904 if test "x$vim_cv_tty_mode" = "x" ; then
2905 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)])
2906 else
2907 AC_DEFINE(PTYMODE, 0620)
2908 fi
2909fi
2910
Bram Moolenaar071d4272004-06-13 20:20:40 +00002911dnl Checks for library functions. ===================================
2912
2913AC_TYPE_SIGNAL
2914
2915dnl find out what to use at the end of a signal function
2916if test $ac_cv_type_signal = void; then
2917 AC_DEFINE(SIGRETURN, [return])
2918else
2919 AC_DEFINE(SIGRETURN, [return 0])
2920fi
2921
2922dnl check if struct sigcontext is defined (used for SGI only)
2923AC_MSG_CHECKING(for struct sigcontext)
2924AC_TRY_COMPILE([
2925#include <signal.h>
2926test_sig()
2927{
2928 struct sigcontext *scont;
2929 scont = (struct sigcontext *)0;
2930 return 1;
2931} ], ,
2932 AC_MSG_RESULT(yes)
2933 AC_DEFINE(HAVE_SIGCONTEXT),
2934 AC_MSG_RESULT(no))
2935
2936dnl tricky stuff: try to find out if getcwd() is implemented with
2937dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002938AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2939 [
2940 AC_RUN_IFELSE([[
2941#include "confdefs.h"
2942#ifdef HAVE_UNISTD_H
2943#include <unistd.h>
2944#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002945char *dagger[] = { "IFS=pwd", 0 };
2946main()
2947{
2948 char buffer[500];
2949 extern char **environ;
2950 environ = dagger;
2951 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002952}
2953 ]],[
2954 vim_cv_getcwd_broken=no
2955 ],[
2956 vim_cv_getcwd_broken=yes
2957 ],[
2958 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2959 ])
2960 ])
2961
2962if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2963 AC_DEFINE(BAD_GETCWD)
2964fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002965
Bram Moolenaar25153e12010-02-24 14:47:08 +01002966dnl Check for functions in one big call, to reduce the size of configure.
2967dnl Can only be used for functions that do not require any include.
2968AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002969 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002970 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002971 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002972 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002973 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2974 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01002975AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00002976
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02002977dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2978dnl appropriate, so that off_t is 64 bits when needed.
2979AC_SYS_LARGEFILE
2980
Bram Moolenaar071d4272004-06-13 20:20:40 +00002981dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2982AC_MSG_CHECKING(for st_blksize)
2983AC_TRY_COMPILE(
2984[#include <sys/types.h>
2985#include <sys/stat.h>],
2986[ struct stat st;
2987 int n;
2988
2989 stat("/", &st);
2990 n = (int)st.st_blksize;],
2991 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2992 AC_MSG_RESULT(no))
2993
Bram Moolenaar446cb832008-06-24 21:56:24 +00002994AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2995 [
2996 AC_RUN_IFELSE([[
2997#include "confdefs.h"
2998#if STDC_HEADERS
2999# include <stdlib.h>
3000# include <stddef.h>
3001#endif
3002#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00003003#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00003004main() {struct stat st; exit(stat("configure/", &st) != 0); }
3005 ]],[
3006 vim_cv_stat_ignores_slash=yes
3007 ],[
3008 vim_cv_stat_ignores_slash=no
3009 ],[
3010 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
3011 ])
3012 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003013
Bram Moolenaar446cb832008-06-24 21:56:24 +00003014if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
3015 AC_DEFINE(STAT_IGNORES_SLASH)
3016fi
3017
Bram Moolenaar071d4272004-06-13 20:20:40 +00003018dnl Link with iconv for charset translation, if not found without library.
3019dnl check for iconv() requires including iconv.h
3020dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
3021dnl has been installed.
3022AC_MSG_CHECKING(for iconv_open())
3023save_LIBS="$LIBS"
3024LIBS="$LIBS -liconv"
3025AC_TRY_LINK([
3026#ifdef HAVE_ICONV_H
3027# include <iconv.h>
3028#endif
3029 ], [iconv_open("fr", "to");],
3030 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
3031 LIBS="$save_LIBS"
3032 AC_TRY_LINK([
3033#ifdef HAVE_ICONV_H
3034# include <iconv.h>
3035#endif
3036 ], [iconv_open("fr", "to");],
3037 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
3038 AC_MSG_RESULT(no)))
3039
3040
3041AC_MSG_CHECKING(for nl_langinfo(CODESET))
3042AC_TRY_LINK([
3043#ifdef HAVE_LANGINFO_H
3044# include <langinfo.h>
3045#endif
3046], [char *cs = nl_langinfo(CODESET);],
3047 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
3048 AC_MSG_RESULT(no))
3049
Bram Moolenaar446cb832008-06-24 21:56:24 +00003050dnl Need various functions for floating point support. Only enable
3051dnl floating point when they are all present.
3052AC_CHECK_LIB(m, strtod)
3053AC_MSG_CHECKING([for strtod() and other floating point functions])
3054AC_TRY_LINK([
3055#ifdef HAVE_MATH_H
3056# include <math.h>
3057#endif
3058#if STDC_HEADERS
3059# include <stdlib.h>
3060# include <stddef.h>
3061#endif
3062], [char *s; double d;
3063 d = strtod("1.1", &s);
3064 d = fabs(1.11);
3065 d = ceil(1.11);
3066 d = floor(1.11);
3067 d = log10(1.11);
3068 d = pow(1.11, 2.22);
3069 d = sqrt(1.11);
3070 d = sin(1.11);
3071 d = cos(1.11);
3072 d = atan(1.11);
3073 ],
3074 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
3075 AC_MSG_RESULT(no))
3076
Bram Moolenaar071d4272004-06-13 20:20:40 +00003077dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
3078dnl when -lacl works, also try to use -lattr (required for Debian).
3079AC_MSG_CHECKING(--disable-acl argument)
3080AC_ARG_ENABLE(acl,
3081 [ --disable-acl Don't check for ACL support.],
3082 , [enable_acl="yes"])
3083if test "$enable_acl" = "yes"; then
3084AC_MSG_RESULT(no)
3085AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
3086 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
3087 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
3088
3089AC_MSG_CHECKING(for POSIX ACL support)
3090AC_TRY_LINK([
3091#include <sys/types.h>
3092#ifdef HAVE_SYS_ACL_H
3093# include <sys/acl.h>
3094#endif
3095acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3096 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3097 acl_free(acl);],
3098 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3099 AC_MSG_RESULT(no))
3100
3101AC_MSG_CHECKING(for Solaris ACL support)
3102AC_TRY_LINK([
3103#ifdef HAVE_SYS_ACL_H
3104# include <sys/acl.h>
3105#endif], [acl("foo", GETACLCNT, 0, NULL);
3106 ],
3107 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
3108 AC_MSG_RESULT(no))
3109
3110AC_MSG_CHECKING(for AIX ACL support)
3111AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003112#if STDC_HEADERS
3113# include <stdlib.h>
3114# include <stddef.h>
3115#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003116#ifdef HAVE_SYS_ACL_H
3117# include <sys/acl.h>
3118#endif
3119#ifdef HAVE_SYS_ACCESS_H
3120# include <sys/access.h>
3121#endif
3122#define _ALL_SOURCE
3123
3124#include <sys/stat.h>
3125
3126int aclsize;
3127struct acl *aclent;], [aclsize = sizeof(struct acl);
3128 aclent = (void *)malloc(aclsize);
3129 statacl("foo", STX_NORMAL, aclent, aclsize);
3130 ],
3131 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3132 AC_MSG_RESULT(no))
3133else
3134 AC_MSG_RESULT(yes)
3135fi
3136
3137AC_MSG_CHECKING(--disable-gpm argument)
3138AC_ARG_ENABLE(gpm,
3139 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3140 [enable_gpm="yes"])
3141
3142if test "$enable_gpm" = "yes"; then
3143 AC_MSG_RESULT(no)
3144 dnl Checking if gpm support can be compiled
3145 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3146 [olibs="$LIBS" ; LIBS="-lgpm"]
3147 AC_TRY_LINK(
3148 [#include <gpm.h>
3149 #include <linux/keyboard.h>],
3150 [Gpm_GetLibVersion(NULL);],
3151 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3152 dnl FEAT_MOUSE_GPM if mouse support is included
3153 [vi_cv_have_gpm=yes],
3154 [vi_cv_have_gpm=no])
3155 [LIBS="$olibs"]
3156 )
3157 if test $vi_cv_have_gpm = yes; then
3158 LIBS="$LIBS -lgpm"
3159 AC_DEFINE(HAVE_GPM)
3160 fi
3161else
3162 AC_MSG_RESULT(yes)
3163fi
3164
Bram Moolenaar446cb832008-06-24 21:56:24 +00003165AC_MSG_CHECKING(--disable-sysmouse argument)
3166AC_ARG_ENABLE(sysmouse,
3167 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3168 [enable_sysmouse="yes"])
3169
3170if test "$enable_sysmouse" = "yes"; then
3171 AC_MSG_RESULT(no)
3172 dnl Checking if sysmouse support can be compiled
3173 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3174 dnl defines FEAT_SYSMOUSE if mouse support is included
3175 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3176 AC_TRY_LINK(
3177 [#include <sys/consio.h>
3178 #include <signal.h>
3179 #include <sys/fbio.h>],
3180 [struct mouse_info mouse;
3181 mouse.operation = MOUSE_MODE;
3182 mouse.operation = MOUSE_SHOW;
3183 mouse.u.mode.mode = 0;
3184 mouse.u.mode.signal = SIGUSR2;],
3185 [vi_cv_have_sysmouse=yes],
3186 [vi_cv_have_sysmouse=no])
3187 )
3188 if test $vi_cv_have_sysmouse = yes; then
3189 AC_DEFINE(HAVE_SYSMOUSE)
3190 fi
3191else
3192 AC_MSG_RESULT(yes)
3193fi
3194
Bram Moolenaarf05da212009-11-17 16:13:15 +00003195dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3196AC_MSG_CHECKING(for FD_CLOEXEC)
3197AC_TRY_COMPILE(
3198[#if HAVE_FCNTL_H
3199# include <fcntl.h>
3200#endif],
3201[ int flag = FD_CLOEXEC;],
3202 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3203 AC_MSG_RESULT(not usable))
3204
Bram Moolenaar071d4272004-06-13 20:20:40 +00003205dnl rename needs to be checked separately to work on Nextstep with cc
3206AC_MSG_CHECKING(for rename)
3207AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3208 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3209 AC_MSG_RESULT(no))
3210
3211dnl sysctl() may exist but not the arguments we use
3212AC_MSG_CHECKING(for sysctl)
3213AC_TRY_COMPILE(
3214[#include <sys/types.h>
3215#include <sys/sysctl.h>],
3216[ int mib[2], r;
3217 size_t len;
3218
3219 mib[0] = CTL_HW;
3220 mib[1] = HW_USERMEM;
3221 len = sizeof(r);
3222 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3223 ],
3224 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3225 AC_MSG_RESULT(not usable))
3226
3227dnl sysinfo() may exist but not be Linux compatible
3228AC_MSG_CHECKING(for sysinfo)
3229AC_TRY_COMPILE(
3230[#include <sys/types.h>
3231#include <sys/sysinfo.h>],
3232[ struct sysinfo sinfo;
3233 int t;
3234
3235 (void)sysinfo(&sinfo);
3236 t = sinfo.totalram;
3237 ],
3238 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3239 AC_MSG_RESULT(not usable))
3240
Bram Moolenaar914572a2007-05-01 11:37:47 +00003241dnl struct sysinfo may have the mem_unit field or not
3242AC_MSG_CHECKING(for sysinfo.mem_unit)
3243AC_TRY_COMPILE(
3244[#include <sys/types.h>
3245#include <sys/sysinfo.h>],
3246[ struct sysinfo sinfo;
3247 sinfo.mem_unit = 1;
3248 ],
3249 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3250 AC_MSG_RESULT(no))
3251
Bram Moolenaar071d4272004-06-13 20:20:40 +00003252dnl sysconf() may exist but not support what we want to use
3253AC_MSG_CHECKING(for sysconf)
3254AC_TRY_COMPILE(
3255[#include <unistd.h>],
3256[ (void)sysconf(_SC_PAGESIZE);
3257 (void)sysconf(_SC_PHYS_PAGES);
3258 ],
3259 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3260 AC_MSG_RESULT(not usable))
3261
Bram Moolenaar914703b2010-05-31 21:59:46 +02003262AC_CHECK_SIZEOF([int])
3263AC_CHECK_SIZEOF([long])
3264AC_CHECK_SIZEOF([time_t])
3265AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003266
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003267dnl Make sure that uint32_t is really 32 bits unsigned.
3268AC_MSG_CHECKING([uint32_t is 32 bits])
3269AC_TRY_RUN([
3270#ifdef HAVE_STDINT_H
3271# include <stdint.h>
3272#endif
3273#ifdef HAVE_INTTYPES_H
3274# include <inttypes.h>
3275#endif
3276main() {
3277 uint32_t nr1 = (uint32_t)-1;
3278 uint32_t nr2 = (uint32_t)0xffffffffUL;
3279 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3280 exit(0);
3281}],
3282AC_MSG_RESULT(ok),
3283AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
3284AC_MSG_ERROR([could not compile program using uint32_t.]))
3285
Bram Moolenaar446cb832008-06-24 21:56:24 +00003286dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3287dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3288
Bram Moolenaar071d4272004-06-13 20:20:40 +00003289[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003290#include "confdefs.h"
3291#ifdef HAVE_STRING_H
3292# include <string.h>
3293#endif
3294#if STDC_HEADERS
3295# include <stdlib.h>
3296# include <stddef.h>
3297#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003298main() {
3299 char buf[10];
3300 strcpy(buf, "abcdefghi");
3301 mch_memmove(buf, buf + 2, 3);
3302 if (strncmp(buf, "ababcf", 6))
3303 exit(1);
3304 strcpy(buf, "abcdefghi");
3305 mch_memmove(buf + 2, buf, 3);
3306 if (strncmp(buf, "cdedef", 6))
3307 exit(1);
3308 exit(0); /* libc version works properly. */
3309}']
3310
Bram Moolenaar446cb832008-06-24 21:56:24 +00003311AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3312 [
3313 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3314 [
3315 vim_cv_memmove_handles_overlap=yes
3316 ],[
3317 vim_cv_memmove_handles_overlap=no
3318 ],[
3319 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3320 ])
3321 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003322
Bram Moolenaar446cb832008-06-24 21:56:24 +00003323if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3324 AC_DEFINE(USEMEMMOVE)
3325else
3326 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3327 [
3328 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3329 [
3330 vim_cv_bcopy_handles_overlap=yes
3331 ],[
3332 vim_cv_bcopy_handles_overlap=no
3333 ],[
3334 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3335 ])
3336 ])
3337
3338 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3339 AC_DEFINE(USEBCOPY)
3340 else
3341 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3342 [
3343 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3344 [
3345 vim_cv_memcpy_handles_overlap=yes
3346 ],[
3347 vim_cv_memcpy_handles_overlap=no
3348 ],[
3349 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3350 ])
3351 ])
3352
3353 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3354 AC_DEFINE(USEMEMCPY)
3355 fi
3356 fi
3357fi
3358
Bram Moolenaar071d4272004-06-13 20:20:40 +00003359
3360dnl Check for multibyte locale functions
3361dnl Find out if _Xsetlocale() is supported by libX11.
3362dnl Check if X_LOCALE should be defined.
3363
3364if test "$enable_multibyte" = "yes"; then
3365 cflags_save=$CFLAGS
3366 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003367 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003368 CFLAGS="$CFLAGS -I$x_includes"
3369 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3370 AC_MSG_CHECKING(whether X_LOCALE needed)
3371 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3372 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3373 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3374 AC_MSG_RESULT(no))
3375 fi
3376 CFLAGS=$cflags_save
3377 LDFLAGS=$ldflags_save
3378fi
3379
3380dnl Link with xpg4, it is said to make Korean locale working
3381AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3382
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003383dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar8f4ba692011-05-05 17:24:27 +02003384dnl Use --version to detect Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003385dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003386dnl -t for typedefs (many ctags have this)
3387dnl -s for static functions (Elvis ctags only?)
3388dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3389dnl -i+m to test for older Exuberant ctags
3390AC_MSG_CHECKING(how to create tags)
3391test -f tags && mv tags tags.save
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003392if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003393 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar5897e0c2011-05-10 15:42:03 +02003394elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3395 TAGPRG="exctags -I INIT+ --fields=+S"
3396elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
3397 TAGPRG="exuberant-ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003398else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003399 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003400 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3401 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3402 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3403 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3404 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3405 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3406 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3407fi
3408test -f tags.save && mv tags.save tags
3409AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3410
3411dnl Check how we can run man with a section number
3412AC_MSG_CHECKING(how to run man with a section nr)
3413MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003414(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 +00003415AC_MSG_RESULT($MANDEF)
3416if test "$MANDEF" = "man -s"; then
3417 AC_DEFINE(USEMAN_S)
3418fi
3419
3420dnl Check if gettext() is working and if it needs -lintl
3421AC_MSG_CHECKING(--disable-nls argument)
3422AC_ARG_ENABLE(nls,
3423 [ --disable-nls Don't support NLS (gettext()).], ,
3424 [enable_nls="yes"])
3425
3426if test "$enable_nls" = "yes"; then
3427 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003428
3429 INSTALL_LANGS=install-languages
3430 AC_SUBST(INSTALL_LANGS)
3431 INSTALL_TOOL_LANGS=install-tool-languages
3432 AC_SUBST(INSTALL_TOOL_LANGS)
3433
Bram Moolenaar071d4272004-06-13 20:20:40 +00003434 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3435 AC_MSG_CHECKING([for NLS])
3436 if test -f po/Makefile; then
3437 have_gettext="no"
3438 if test -n "$MSGFMT"; then
3439 AC_TRY_LINK(
3440 [#include <libintl.h>],
3441 [gettext("Test");],
3442 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3443 olibs=$LIBS
3444 LIBS="$LIBS -lintl"
3445 AC_TRY_LINK(
3446 [#include <libintl.h>],
3447 [gettext("Test");],
3448 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3449 AC_MSG_RESULT([gettext() doesn't work]);
3450 LIBS=$olibs))
3451 else
3452 AC_MSG_RESULT([msgfmt not found - disabled]);
3453 fi
3454 if test $have_gettext = "yes"; then
3455 AC_DEFINE(HAVE_GETTEXT)
3456 MAKEMO=yes
3457 AC_SUBST(MAKEMO)
3458 dnl this was added in GNU gettext 0.10.36
3459 AC_CHECK_FUNCS(bind_textdomain_codeset)
3460 dnl _nl_msg_cat_cntr is required for GNU gettext
3461 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3462 AC_TRY_LINK(
3463 [#include <libintl.h>
3464 extern int _nl_msg_cat_cntr;],
3465 [++_nl_msg_cat_cntr;],
3466 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3467 AC_MSG_RESULT([no]))
3468 fi
3469 else
3470 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3471 fi
3472else
3473 AC_MSG_RESULT(yes)
3474fi
3475
3476dnl Check for dynamic linking loader
3477AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3478if test x${DLL} = xdlfcn.h; then
3479 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3480 AC_MSG_CHECKING([for dlopen()])
3481 AC_TRY_LINK(,[
3482 extern void* dlopen();
3483 dlopen();
3484 ],
3485 AC_MSG_RESULT(yes);
3486 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3487 AC_MSG_RESULT(no);
3488 AC_MSG_CHECKING([for dlopen() in -ldl])
3489 olibs=$LIBS
3490 LIBS="$LIBS -ldl"
3491 AC_TRY_LINK(,[
3492 extern void* dlopen();
3493 dlopen();
3494 ],
3495 AC_MSG_RESULT(yes);
3496 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3497 AC_MSG_RESULT(no);
3498 LIBS=$olibs))
3499 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3500 dnl ick :-)
3501 AC_MSG_CHECKING([for dlsym()])
3502 AC_TRY_LINK(,[
3503 extern void* dlsym();
3504 dlsym();
3505 ],
3506 AC_MSG_RESULT(yes);
3507 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3508 AC_MSG_RESULT(no);
3509 AC_MSG_CHECKING([for dlsym() in -ldl])
3510 olibs=$LIBS
3511 LIBS="$LIBS -ldl"
3512 AC_TRY_LINK(,[
3513 extern void* dlsym();
3514 dlsym();
3515 ],
3516 AC_MSG_RESULT(yes);
3517 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3518 AC_MSG_RESULT(no);
3519 LIBS=$olibs))
3520elif test x${DLL} = xdl.h; then
3521 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3522 AC_MSG_CHECKING([for shl_load()])
3523 AC_TRY_LINK(,[
3524 extern void* shl_load();
3525 shl_load();
3526 ],
3527 AC_MSG_RESULT(yes);
3528 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3529 AC_MSG_RESULT(no);
3530 AC_MSG_CHECKING([for shl_load() in -ldld])
3531 olibs=$LIBS
3532 LIBS="$LIBS -ldld"
3533 AC_TRY_LINK(,[
3534 extern void* shl_load();
3535 shl_load();
3536 ],
3537 AC_MSG_RESULT(yes);
3538 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3539 AC_MSG_RESULT(no);
3540 LIBS=$olibs))
3541fi
3542AC_CHECK_HEADERS(setjmp.h)
3543
3544if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3545 dnl -ldl must come after DynaLoader.a
3546 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3547 LIBS=`echo $LIBS | sed s/-ldl//`
3548 PERL_LIBS="$PERL_LIBS -ldl"
3549 fi
3550fi
3551
Bram Moolenaar164fca32010-07-14 13:58:07 +02003552if test "x$MACOSX" = "xyes"; then
3553 AC_MSG_CHECKING(whether we need -framework Cocoa)
3554 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3555 dnl disabled during tiny build)
3556 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3557 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003558 AC_MSG_RESULT(yes)
3559 else
3560 AC_MSG_RESULT(no)
3561 fi
3562fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003563if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003564 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003565fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003566
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003567dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3568dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3569dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003570dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3571dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003572DEPEND_CFLAGS_FILTER=
3573if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003574 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003575 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003576 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003577 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003578 AC_MSG_RESULT(yes)
3579 else
3580 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003581 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003582 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3583 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003584 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003585 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3586 if test "$gccmajor" -gt "3"; then
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003587 CFLAGS=`echo "$CFLAGS" | sed -e 's/-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/-D_FORTIFY_SOURCE=.//g' -e 's/$/ -D_FORTIFY_SOURCE=1/'`
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003588 AC_MSG_RESULT(yes)
3589 else
3590 AC_MSG_RESULT(no)
3591 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003592fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003593AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003594
Bram Moolenaar22e193d2010-11-03 22:32:24 +01003595dnl link.sh tries to avoid overlinking in a hackish way.
3596dnl At least GNU ld supports --as-needed which provides the same functionality
3597dnl at linker level. Let's use it.
3598AC_MSG_CHECKING(linker --as-needed support)
3599LINK_AS_NEEDED=
3600# Check if linker supports --as-needed and --no-as-needed options
3601if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then
3602 LDFLAGS="$LDFLAGS -Wl,--as-needed"
3603 LINK_AS_NEEDED=yes
3604fi
3605if test "$LINK_AS_NEEDED" = yes; then
3606 AC_MSG_RESULT(yes)
3607else
3608 AC_MSG_RESULT(no)
3609fi
3610AC_SUBST(LINK_AS_NEEDED)
3611
Bram Moolenaar071d4272004-06-13 20:20:40 +00003612dnl write output files
3613AC_OUTPUT(auto/config.mk:config.mk.in)
3614
3615dnl vim: set sw=2 tw=78 fo+=l: