blob: e7794f1ee086911bea53801cf722a198ad88ed06 [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)
571 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
572 if test -f /usr/include/plt/scheme.h; then
573 AC_MSG_RESULT(yes)
574 SCHEME_INC=/usr/include/plt
575 else
576 AC_MSG_RESULT(no)
577 vi_cv_path_mzscheme_pfx=
578 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000579 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000580 fi
581 fi
582
583 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000584 if test "x$MACOSX" = "xyes"; then
585 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000586 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
587 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
588 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000589 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000590 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 +0000591 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000592 dnl Using shared objects
593 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
594 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
595 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
596 else
597 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
598 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000599 if test "$GCC" = yes; then
600 dnl Make Vim remember the path to the library. For when it's not in
601 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000602 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000603 elif test "`(uname) 2>/dev/null`" = SunOS &&
604 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000605 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000606 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000607 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000608 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
609 SCHEME_COLLECTS=lib/plt/
610 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000611 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
612 dnl need to generate bytecode for MzScheme base
613 MZSCHEME_EXTRA="mzscheme_base.c"
614 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
615 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
616 fi
617 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000618 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000619 MZSCHEME_SRC="if_mzsch.c"
620 MZSCHEME_OBJ="objects/if_mzsch.o"
621 MZSCHEME_PRO="if_mzsch.pro"
622 AC_DEFINE(FEAT_MZSCHEME)
623 fi
624 AC_SUBST(MZSCHEME_SRC)
625 AC_SUBST(MZSCHEME_OBJ)
626 AC_SUBST(MZSCHEME_PRO)
627 AC_SUBST(MZSCHEME_LIBS)
628 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000629 AC_SUBST(MZSCHEME_EXTRA)
630 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000631fi
632
633
Bram Moolenaar071d4272004-06-13 20:20:40 +0000634AC_MSG_CHECKING(--enable-perlinterp argument)
635AC_ARG_ENABLE(perlinterp,
Bram Moolenaare06c1882010-07-21 22:05:20 +0200636 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000637 [enable_perlinterp="no"])
638AC_MSG_RESULT($enable_perlinterp)
Bram Moolenaare06c1882010-07-21 22:05:20 +0200639if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000640 AC_SUBST(vi_cv_path_perl)
641 AC_PATH_PROG(vi_cv_path_perl, perl)
642 if test "X$vi_cv_path_perl" != "X"; then
643 AC_MSG_CHECKING(Perl version)
644 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
645 eval `$vi_cv_path_perl -V:usethreads`
Bram Moolenaare06c1882010-07-21 22:05:20 +0200646 eval `$vi_cv_path_perl -V:libperl`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000647 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
648 badthreads=no
649 else
650 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
651 eval `$vi_cv_path_perl -V:use5005threads`
652 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
653 badthreads=no
654 else
655 badthreads=yes
656 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
657 fi
658 else
659 badthreads=yes
660 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
661 fi
662 fi
663 if test $badthreads = no; then
664 AC_MSG_RESULT(OK)
665 eval `$vi_cv_path_perl -V:shrpenv`
666 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
667 shrpenv=""
668 fi
669 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
670 AC_SUBST(vi_cv_perllib)
671 dnl Remove "-fno-something", it breaks using cproto.
672 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
673 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
674 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
675 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
676 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
677 -e 's/-bE:perl.exp//' -e 's/-lc //'`
678 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
679 dnl a test in configure may fail because of that.
680 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
681 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
682
683 dnl check that compiling a simple program still works with the flags
684 dnl added for Perl.
685 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
686 cflags_save=$CFLAGS
687 libs_save=$LIBS
688 ldflags_save=$LDFLAGS
689 CFLAGS="$CFLAGS $perlcppflags"
690 LIBS="$LIBS $perllibs"
691 LDFLAGS="$perlldflags $LDFLAGS"
692 AC_TRY_LINK(,[ ],
693 AC_MSG_RESULT(yes); perl_ok=yes,
694 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
695 CFLAGS=$cflags_save
696 LIBS=$libs_save
697 LDFLAGS=$ldflags_save
698 if test $perl_ok = yes; then
699 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000700 dnl remove -pipe and -Wxxx, it confuses cproto
701 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000702 fi
703 if test "X$perlldflags" != "X"; then
704 LDFLAGS="$perlldflags $LDFLAGS"
705 fi
706 PERL_LIBS=$perllibs
707 PERL_SRC="auto/if_perl.c if_perlsfio.c"
708 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
709 PERL_PRO="if_perl.pro if_perlsfio.pro"
710 AC_DEFINE(FEAT_PERL)
711 fi
712 fi
713 else
714 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
715 fi
716 fi
717
718 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000719 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000720 dir=/System/Library/Perl
721 darwindir=$dir/darwin
722 if test -d $darwindir; then
723 PERL=/usr/bin/perl
724 else
725 dnl Mac OS X 10.3
726 dir=/System/Library/Perl/5.8.1
727 darwindir=$dir/darwin-thread-multi-2level
728 if test -d $darwindir; then
729 PERL=/usr/bin/perl
730 fi
731 fi
732 if test -n "$PERL"; then
733 PERL_DIR="$dir"
734 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
735 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
736 PERL_LIBS="-L$darwindir/CORE -lperl"
737 fi
Bram Moolenaar5dff57d2010-07-24 16:19:44 +0200738 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only
739 dnl be included if requested by passing --with-mac-arch to
740 dnl configure, so strip these flags first (if present)
741 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
742 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 +0000743 fi
Bram Moolenaare06c1882010-07-21 22:05:20 +0200744 if test "$enable_perlinterp" = "dynamic"; then
745 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then
746 AC_DEFINE(DYNAMIC_PERL)
747 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS"
748 fi
749 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000750fi
751AC_SUBST(shrpenv)
752AC_SUBST(PERL_SRC)
753AC_SUBST(PERL_OBJ)
754AC_SUBST(PERL_PRO)
755AC_SUBST(PERL_CFLAGS)
756AC_SUBST(PERL_LIBS)
757
758AC_MSG_CHECKING(--enable-pythoninterp argument)
759AC_ARG_ENABLE(pythoninterp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200760 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +0000761 [enable_pythoninterp="no"])
762AC_MSG_RESULT($enable_pythoninterp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200763if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000764 dnl -- find the python executable
765 AC_PATH_PROG(vi_cv_path_python, python)
766 if test "X$vi_cv_path_python" != "X"; then
767
768 dnl -- get its version number
769 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
770 [[vi_cv_var_python_version=`
771 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
772 ]])
773
774 dnl -- it must be at least version 1.4
775 AC_MSG_CHECKING(Python is 1.4 or better)
776 if ${vi_cv_path_python} -c \
777 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
778 then
779 AC_MSG_RESULT(yep)
780
781 dnl -- find where python thinks it was installed
782 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
783 [ vi_cv_path_python_pfx=`
784 ${vi_cv_path_python} -c \
785 "import sys; print sys.prefix"` ])
786
787 dnl -- and where it thinks it runs
788 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
789 [ vi_cv_path_python_epfx=`
790 ${vi_cv_path_python} -c \
791 "import sys; print sys.exec_prefix"` ])
792
793 dnl -- python's internal library path
794
795 AC_CACHE_VAL(vi_cv_path_pythonpath,
796 [ vi_cv_path_pythonpath=`
797 unset PYTHONPATH;
798 ${vi_cv_path_python} -c \
799 "import sys, string; print string.join(sys.path,':')"` ])
800
801 dnl -- where the Python implementation library archives are
802
803 AC_ARG_WITH(python-config-dir,
804 [ --with-python-config-dir=PATH Python's config directory],
805 [ vi_cv_path_python_conf="${withval}" ] )
806
807 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
808 [
809 vi_cv_path_python_conf=
810 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000811 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000812 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
813 if test -d "$d" && test -f "$d/config.c"; then
814 vi_cv_path_python_conf="$d"
815 fi
816 done
817 done
818 ])
819
820 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
821
822 if test "X$PYTHON_CONFDIR" = "X"; then
823 AC_MSG_RESULT([can't find it!])
824 else
825
826 dnl -- we need to examine Python's config/Makefile too
827 dnl see what the interpreter is built from
828 AC_CACHE_VAL(vi_cv_path_python_plibs,
829 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000830 pwd=`pwd`
831 tmp_mkf="$pwd/config-PyMake$$"
832 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000833__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200834 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000835 @echo "python_LIBS='$(LIBS)'"
836 @echo "python_SYSLIBS='$(SYSLIBS)'"
837 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +0200838 @echo "python_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000839eof
840 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000841 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
842 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000843 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
844 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
845 vi_cv_path_python_plibs="-framework Python"
846 else
847 if test "${vi_cv_var_python_version}" = "1.4"; then
848 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
849 else
850 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
851 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200852 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 +0000853 dnl remove -ltermcap, it can conflict with an earlier -lncurses
854 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
855 fi
856 ])
857
858 PYTHON_LIBS="${vi_cv_path_python_plibs}"
859 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
860 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
861 else
862 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}"
863 fi
864 PYTHON_SRC="if_python.c"
865 dnl For Mac OSX 10.2 config.o is included in the Python library.
866 if test "x$MACOSX" = "xyes"; then
867 PYTHON_OBJ="objects/if_python.o"
868 else
869 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
870 fi
871 if test "${vi_cv_var_python_version}" = "1.4"; then
872 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
873 fi
874 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
875
876 dnl On FreeBSD linking with "-pthread" is required to use threads.
877 dnl _THREAD_SAFE must be used for compiling then.
878 dnl The "-pthread" is added to $LIBS, so that the following check for
879 dnl sigaltstack() will look in libc_r (it's there in libc!).
880 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
881 dnl will then define target-specific defines, e.g., -D_REENTRANT.
882 dnl Don't do this for Mac OSX, -pthread will generate a warning.
883 AC_MSG_CHECKING([if -pthread should be used])
884 threadsafe_flag=
885 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000886 dnl if test "x$MACOSX" != "xyes"; then
887 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000888 test "$GCC" = yes && threadsafe_flag="-pthread"
889 if test "`(uname) 2>/dev/null`" = FreeBSD; then
890 threadsafe_flag="-D_THREAD_SAFE"
891 thread_lib="-pthread"
892 fi
893 fi
894 libs_save_old=$LIBS
895 if test -n "$threadsafe_flag"; then
896 cflags_save=$CFLAGS
897 CFLAGS="$CFLAGS $threadsafe_flag"
898 LIBS="$LIBS $thread_lib"
899 AC_TRY_LINK(,[ ],
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200900 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000901 AC_MSG_RESULT(no); LIBS=$libs_save_old
902 )
903 CFLAGS=$cflags_save
904 else
905 AC_MSG_RESULT(no)
906 fi
907
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200908 dnl Check that compiling a simple program still works with the flags
Bram Moolenaar071d4272004-06-13 20:20:40 +0000909 dnl added for Python.
910 AC_MSG_CHECKING([if compile and link flags for Python are sane])
911 cflags_save=$CFLAGS
912 libs_save=$LIBS
Bram Moolenaar69f787a2010-07-11 20:52:58 +0200913 CFLAGS="$CFLAGS $PYTHON_CFLAGS"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000914 LIBS="$LIBS $PYTHON_LIBS"
915 AC_TRY_LINK(,[ ],
916 AC_MSG_RESULT(yes); python_ok=yes,
917 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
918 CFLAGS=$cflags_save
919 LIBS=$libs_save
920 if test $python_ok = yes; then
921 AC_DEFINE(FEAT_PYTHON)
922 else
923 LIBS=$libs_save_old
924 PYTHON_SRC=
925 PYTHON_OBJ=
926 PYTHON_LIBS=
927 PYTHON_CFLAGS=
928 fi
929
930 fi
931 else
932 AC_MSG_RESULT(too old)
933 fi
934 fi
935fi
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200936
Bram Moolenaar071d4272004-06-13 20:20:40 +0000937AC_SUBST(PYTHON_CONFDIR)
938AC_SUBST(PYTHON_LIBS)
939AC_SUBST(PYTHON_GETPATH_CFLAGS)
940AC_SUBST(PYTHON_CFLAGS)
941AC_SUBST(PYTHON_SRC)
942AC_SUBST(PYTHON_OBJ)
943
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200944
945AC_MSG_CHECKING(--enable-python3interp argument)
946AC_ARG_ENABLE(python3interp,
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200947 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200948 [enable_python3interp="no"])
949AC_MSG_RESULT($enable_python3interp)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +0200950if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200951 dnl -- find the python3 executable
952 AC_PATH_PROG(vi_cv_path_python3, python3)
953 if test "X$vi_cv_path_python3" != "X"; then
954
955 dnl -- get its version number
956 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version,
957 [[vi_cv_var_python3_version=`
Bram Moolenaar3804aeb2010-07-19 21:18:54 +0200958 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'`
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200959 ]])
960
961 dnl -- find where python3 thinks it was installed
962 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx,
963 [ vi_cv_path_python3_pfx=`
964 ${vi_cv_path_python3} -c \
965 "import sys; print(sys.prefix)"` ])
966
967 dnl -- and where it thinks it runs
968 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx,
969 [ vi_cv_path_python3_epfx=`
970 ${vi_cv_path_python3} -c \
971 "import sys; print(sys.exec_prefix)"` ])
972
973 dnl -- python3's internal library path
974
975 AC_CACHE_VAL(vi_cv_path_python3path,
976 [ vi_cv_path_python3path=`
977 unset PYTHONPATH;
978 ${vi_cv_path_python3} -c \
979 "import sys, string; print(':'.join(sys.path))"` ])
980
981 dnl -- where the Python implementation library archives are
982
983 AC_ARG_WITH(python3-config-dir,
984 [ --with-python3-config-dir=PATH Python's config directory],
985 [ vi_cv_path_python3_conf="${withval}" ] )
986
987 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf,
988 [
989 vi_cv_path_python3_conf=
990 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do
Bram Moolenaar9f5e36b2010-07-24 16:11:21 +0200991 for subdir in lib64 lib share; do
Bram Moolenaar3804aeb2010-07-19 21:18:54 +0200992 d="${path}/${subdir}/python${vi_cv_var_python3_version}/config"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +0200993 if test -d "$d" && test -f "$d/config.c"; then
994 vi_cv_path_python3_conf="$d"
995 fi
996 done
997 done
998 ])
999
1000 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}"
1001
1002 if test "X$PYTHON3_CONFDIR" = "X"; then
1003 AC_MSG_RESULT([can't find it!])
1004 else
1005
1006 dnl -- we need to examine Python's config/Makefile too
1007 dnl see what the interpreter is built from
1008 AC_CACHE_VAL(vi_cv_path_python3_plibs,
1009 [
1010 pwd=`pwd`
1011 tmp_mkf="$pwd/config-PyMake$$"
1012 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
1013__:
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001014 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001015 @echo "python3_LIBS='$(LIBS)'"
1016 @echo "python3_SYSLIBS='$(SYSLIBS)'"
1017 @echo "python3_LINKFORSHARED='$(LINKFORSHARED)'"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001018 @echo "python3_INSTSONAME='$(INSTSONAME)'"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001019eof
1020 dnl -- delete the lines from make about Entering/Leaving directory
1021 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
1022 rm -f -- "${tmp_mkf}"
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001023 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}"
1024 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS} ${python3_LINKFORSHARED}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001025 dnl remove -ltermcap, it can conflict with an earlier -lncurses
1026 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//`
1027 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//`
1028 ])
1029
1030 PYTHON3_LIBS="${vi_cv_path_python3_plibs}"
1031 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001032 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001033 else
Bram Moolenaar3804aeb2010-07-19 21:18:54 +02001034 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}"
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001035 fi
1036 PYTHON3_SRC="if_python3.c"
1037 dnl For Mac OSX 10.2 config.o is included in the Python library.
1038 if test "x$MACOSX" = "xyes"; then
1039 PYTHON3_OBJ="objects/if_python3.o"
1040 else
1041 PYTHON3_OBJ="objects/if_python3.o objects/py3_config.o"
1042 fi
1043
1044 dnl On FreeBSD linking with "-pthread" is required to use threads.
1045 dnl _THREAD_SAFE must be used for compiling then.
1046 dnl The "-pthread" is added to $LIBS, so that the following check for
1047 dnl sigaltstack() will look in libc_r (it's there in libc!).
1048 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
1049 dnl will then define target-specific defines, e.g., -D_REENTRANT.
1050 dnl Don't do this for Mac OSX, -pthread will generate a warning.
1051 AC_MSG_CHECKING([if -pthread should be used])
1052 threadsafe_flag=
1053 thread_lib=
1054 dnl if test "x$MACOSX" != "xyes"; then
1055 if test "`(uname) 2>/dev/null`" != Darwin; then
1056 test "$GCC" = yes && threadsafe_flag="-pthread"
1057 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1058 threadsafe_flag="-D_THREAD_SAFE"
1059 thread_lib="-pthread"
1060 fi
1061 fi
1062 libs_save_old=$LIBS
1063 if test -n "$threadsafe_flag"; then
1064 cflags_save=$CFLAGS
1065 CFLAGS="$CFLAGS $threadsafe_flag"
1066 LIBS="$LIBS $thread_lib"
1067 AC_TRY_LINK(,[ ],
1068 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag",
1069 AC_MSG_RESULT(no); LIBS=$libs_save_old
1070 )
1071 CFLAGS=$cflags_save
1072 else
1073 AC_MSG_RESULT(no)
1074 fi
1075
1076 dnl check that compiling a simple program still works with the flags
1077 dnl added for Python.
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001078 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane])
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001079 cflags_save=$CFLAGS
1080 libs_save=$LIBS
1081 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1082 LIBS="$LIBS $PYTHON3_LIBS"
1083 AC_TRY_LINK(,[ ],
1084 AC_MSG_RESULT(yes); python3_ok=yes,
1085 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no)
1086 CFLAGS=$cflags_save
1087 LIBS=$libs_save
1088 if test "$python3_ok" = yes; then
1089 AC_DEFINE(FEAT_PYTHON3)
1090 else
1091 LIBS=$libs_save_old
1092 PYTHON3_SRC=
1093 PYTHON3_OBJ=
1094 PYTHON3_LIBS=
1095 PYTHON3_CFLAGS=
1096 fi
1097 fi
1098 fi
1099fi
1100
1101AC_SUBST(PYTHON3_CONFDIR)
1102AC_SUBST(PYTHON3_LIBS)
1103AC_SUBST(PYTHON3_CFLAGS)
1104AC_SUBST(PYTHON3_SRC)
1105AC_SUBST(PYTHON3_OBJ)
1106
1107dnl if python2.x and python3.x are enabled one can only link in code
1108dnl with dlopen(), dlsym(), dlclose()
1109if test "$python_ok" = yes && test "$python3_ok" = yes; then
1110 AC_DEFINE(DYNAMIC_PYTHON)
1111 AC_DEFINE(DYNAMIC_PYTHON3)
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001112 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL)
1113 cflags_save=$CFLAGS
1114 CFLAGS="$CFLAGS $PYTHON3_CFLAGS"
1115 ldflags_save=$LDFLAGS
1116 LDFLAGS="$LDFLAGS -ldl"
1117 AC_RUN_IFELSE([
1118 #include <dlfcn.h>
1119 /* If this program fails, then RTLD_GLOBAL is needed.
1120 * RTLD_GLOBAL will be used and then it is not possible to
1121 * have both python versions enabled in the same vim instance.
1122 * Only the first pyhton version used will be switched on.
1123 */
1124
1125 int no_rtl_global_needed_for(char *python_instsoname)
1126 {
1127 int needed = 0;
1128 void* pylib = dlopen(python_instsoname, RTLD_LAZY);
1129 if (pylib != 0)
1130 {
1131 void (*init)(void) = dlsym(pylib, "Py_Initialize");
1132 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString");
1133 void (*final)(void) = dlsym(pylib, "Py_Finalize");
1134 (*init)();
1135 needed = (*simple)("import termios") == -1;
1136 (*final)();
1137 dlclose(pylib);
1138 }
1139 return !needed;
1140 }
1141
1142 int main(int argc, char** argv)
1143 {
1144 int not_needed = 0;
1145 if (no_rtl_global_needed_for("libpython2.7.so.1.0") && no_rtl_global_needed_for("libpython3.1.so.1.0"))
1146 not_needed = 1;
1147 return !not_needed;
1148 }],
1149 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)])
1150 CFLAGS=$cflags_save
1151 LDFLAGS=$ldflags_save
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001152 PYTHON_SRC="if_python.c"
1153 PYTHON_OBJ="objects/if_python.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001154 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001155 PYTHON_LIBS=
1156 PYTHON3_SRC="if_python3.c"
1157 PYTHON3_OBJ="objects/if_python3.o"
Bram Moolenaar2a7e2a62010-07-24 15:19:11 +02001158 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001159 PYTHON3_LIBS=
Bram Moolenaarb744b2f2010-08-13 16:22:57 +02001160elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then
1161 AC_DEFINE(DYNAMIC_PYTHON)
1162 PYTHON_SRC="if_python.c"
1163 PYTHON_OBJ="objects/if_python.o"
1164 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${python_INSTSONAME}\\\""
1165 PYTHON_LIBS=
1166elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then
1167 AC_DEFINE(DYNAMIC_PYTHON3)
1168 PYTHON3_SRC="if_python3.c"
1169 PYTHON3_OBJ="objects/if_python3.o"
1170 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${python3_INSTSONAME}\\\""
1171 PYTHON3_LIBS=
Bram Moolenaarbd5e15f2010-07-17 21:19:38 +02001172fi
1173
Bram Moolenaar071d4272004-06-13 20:20:40 +00001174AC_MSG_CHECKING(--enable-tclinterp argument)
1175AC_ARG_ENABLE(tclinterp,
1176 [ --enable-tclinterp Include Tcl interpreter.], ,
1177 [enable_tclinterp="no"])
1178AC_MSG_RESULT($enable_tclinterp)
1179
1180if test "$enable_tclinterp" = "yes"; then
1181
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001182 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001183 AC_MSG_CHECKING(--with-tclsh argument)
1184 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
1185 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001186 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001187 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1188 AC_SUBST(vi_cv_path_tcl)
1189
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001190 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
1191 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
1192 tclsh_name="tclsh8.4"
1193 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1194 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001195 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001196 tclsh_name="tclsh8.2"
1197 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1198 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001199 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
1200 tclsh_name="tclsh8.0"
1201 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1202 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001203 dnl still didn't find it, try without version number
1204 if test "X$vi_cv_path_tcl" = "X"; then
1205 tclsh_name="tclsh"
1206 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
1207 fi
1208 if test "X$vi_cv_path_tcl" != "X"; then
1209 AC_MSG_CHECKING(Tcl version)
1210 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
1211 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
1212 AC_MSG_RESULT($tclver - OK);
1213 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 -`
1214
1215 AC_MSG_CHECKING(for location of Tcl include)
1216 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001217 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 +00001218 else
1219 dnl For Mac OS X 10.3, use the OS-provided framework location
1220 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
1221 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +00001222 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001223 for try in $tclinc; do
1224 if test -f "$try/tcl.h"; then
1225 AC_MSG_RESULT($try/tcl.h)
1226 TCL_INC=$try
1227 break
1228 fi
1229 done
1230 if test -z "$TCL_INC"; then
1231 AC_MSG_RESULT(<not found>)
1232 SKIP_TCL=YES
1233 fi
1234 if test -z "$SKIP_TCL"; then
1235 AC_MSG_CHECKING(for location of tclConfig.sh script)
1236 if test "x$MACOSX" != "xyes"; then
1237 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001238 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001239 else
1240 dnl For Mac OS X 10.3, use the OS-provided framework location
1241 tclcnf="/System/Library/Frameworks/Tcl.framework"
1242 fi
1243 for try in $tclcnf; do
1244 if test -f $try/tclConfig.sh; then
1245 AC_MSG_RESULT($try/tclConfig.sh)
1246 . $try/tclConfig.sh
1247 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
1248 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
1249 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +00001250 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +00001251 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 +00001252 break
1253 fi
1254 done
1255 if test -z "$TCL_LIBS"; then
1256 AC_MSG_RESULT(<not found>)
1257 AC_MSG_CHECKING(for Tcl library by myself)
1258 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +00001259 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001260 for ext in .so .a ; do
1261 for ver in "" $tclver ; do
1262 for try in $tcllib ; do
1263 trylib=tcl$ver$ext
1264 if test -f $try/lib$trylib ; then
1265 AC_MSG_RESULT($try/lib$trylib)
1266 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
1267 if test "`(uname) 2>/dev/null`" = SunOS &&
1268 uname -r | grep '^5' >/dev/null; then
1269 TCL_LIBS="$TCL_LIBS -R $try"
1270 fi
1271 break 3
1272 fi
1273 done
1274 done
1275 done
1276 if test -z "$TCL_LIBS"; then
1277 AC_MSG_RESULT(<not found>)
1278 SKIP_TCL=YES
1279 fi
1280 fi
1281 if test -z "$SKIP_TCL"; then
1282 AC_DEFINE(FEAT_TCL)
1283 TCL_SRC=if_tcl.c
1284 TCL_OBJ=objects/if_tcl.o
1285 TCL_PRO=if_tcl.pro
1286 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
1287 fi
1288 fi
1289 else
1290 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
1291 fi
1292 fi
1293fi
1294AC_SUBST(TCL_SRC)
1295AC_SUBST(TCL_OBJ)
1296AC_SUBST(TCL_PRO)
1297AC_SUBST(TCL_CFLAGS)
1298AC_SUBST(TCL_LIBS)
1299
1300AC_MSG_CHECKING(--enable-rubyinterp argument)
1301AC_ARG_ENABLE(rubyinterp,
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001302 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001303 [enable_rubyinterp="no"])
1304AC_MSG_RESULT($enable_rubyinterp)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001305if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +01001306 AC_MSG_CHECKING(--with-ruby-command argument)
1307 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
1308 RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
1309 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar071d4272004-06-13 20:20:40 +00001310 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001311 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001312 if test "X$vi_cv_path_ruby" != "X"; then
1313 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +00001314 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 +00001315 AC_MSG_RESULT(OK)
1316 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +01001317 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 +00001318 if test "X$rubyhdrdir" != "X"; then
1319 AC_MSG_RESULT($rubyhdrdir)
1320 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +01001321 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
1322 if test -d "$rubyhdrdir/$rubyarch"; then
1323 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
1324 fi
1325 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
1326 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001327 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
1328 if test "X$rubylibs" != "X"; then
1329 RUBY_LIBS="$rubylibs"
1330 fi
1331 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
1332 if test -f "$rubyhdrdir/$librubyarg"; then
1333 librubyarg="$rubyhdrdir/$librubyarg"
1334 else
1335 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1336 if test -f "$rubylibdir/$librubyarg"; then
1337 librubyarg="$rubylibdir/$librubyarg"
1338 elif test "$librubyarg" = "libruby.a"; then
1339 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1340 librubyarg="-lruby"
1341 else
1342 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
1343 fi
1344 fi
1345
1346 if test "X$librubyarg" != "X"; then
1347 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1348 fi
1349 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1350 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001351 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1352 dnl be included if requested by passing --with-mac-arch to
1353 dnl configure, so strip these flags first (if present)
Bram Moolenaar5dff57d2010-07-24 16:19:44 +02001354 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'`
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001355 if test "X$rubyldflags" != "X"; then
1356 LDFLAGS="$rubyldflags $LDFLAGS"
1357 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001358 fi
1359 RUBY_SRC="if_ruby.c"
1360 RUBY_OBJ="objects/if_ruby.o"
1361 RUBY_PRO="if_ruby.pro"
1362 AC_DEFINE(FEAT_RUBY)
Bram Moolenaar3ca71f12010-10-27 16:49:47 +02001363 if test "$enable_rubyinterp" = "dynamic"; then
1364 libruby=`$vi_cv_path_ruby -r rbconfig -e 'printf "lib%s.%s\n", Config::CONFIG[["RUBY_SO_NAME"]], Config::CONFIG[["DLEXT"]]'`
1365 AC_DEFINE(DYNAMIC_RUBY)
1366 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS"
1367 RUBY_LIBS=
1368 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001369 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001370 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001371 fi
1372 else
1373 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1374 fi
1375 fi
1376fi
1377AC_SUBST(RUBY_SRC)
1378AC_SUBST(RUBY_OBJ)
1379AC_SUBST(RUBY_PRO)
1380AC_SUBST(RUBY_CFLAGS)
1381AC_SUBST(RUBY_LIBS)
1382
1383AC_MSG_CHECKING(--enable-cscope argument)
1384AC_ARG_ENABLE(cscope,
1385 [ --enable-cscope Include cscope interface.], ,
1386 [enable_cscope="no"])
1387AC_MSG_RESULT($enable_cscope)
1388if test "$enable_cscope" = "yes"; then
1389 AC_DEFINE(FEAT_CSCOPE)
1390fi
1391
1392AC_MSG_CHECKING(--enable-workshop argument)
1393AC_ARG_ENABLE(workshop,
1394 [ --enable-workshop Include Sun Visual Workshop support.], ,
1395 [enable_workshop="no"])
1396AC_MSG_RESULT($enable_workshop)
1397if test "$enable_workshop" = "yes"; then
1398 AC_DEFINE(FEAT_SUN_WORKSHOP)
1399 WORKSHOP_SRC="workshop.c integration.c"
1400 AC_SUBST(WORKSHOP_SRC)
1401 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1402 AC_SUBST(WORKSHOP_OBJ)
1403 if test "${enable_gui-xxx}" = xxx; then
1404 enable_gui=motif
1405 fi
1406fi
1407
1408AC_MSG_CHECKING(--disable-netbeans argument)
1409AC_ARG_ENABLE(netbeans,
1410 [ --disable-netbeans Disable NetBeans integration support.],
1411 , [enable_netbeans="yes"])
1412if test "$enable_netbeans" = "yes"; then
1413 AC_MSG_RESULT(no)
1414 dnl On Solaris we need the socket and nsl library.
1415 AC_CHECK_LIB(socket, socket)
1416 AC_CHECK_LIB(nsl, gethostbyname)
1417 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1418 AC_TRY_LINK([
1419#include <stdio.h>
1420#include <stdlib.h>
1421#include <stdarg.h>
1422#include <fcntl.h>
1423#include <netdb.h>
1424#include <netinet/in.h>
1425#include <errno.h>
1426#include <sys/types.h>
1427#include <sys/socket.h>
1428 /* Check bitfields */
1429 struct nbbuf {
1430 unsigned int initDone:1;
1431 ushort signmaplen;
1432 };
1433 ], [
1434 /* Check creating a socket. */
1435 struct sockaddr_in server;
1436 (void)socket(AF_INET, SOCK_STREAM, 0);
1437 (void)htons(100);
1438 (void)gethostbyname("microsoft.com");
1439 if (errno == ECONNREFUSED)
1440 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1441 ],
1442 AC_MSG_RESULT(yes),
1443 AC_MSG_RESULT(no); enable_netbeans="no")
1444else
1445 AC_MSG_RESULT(yes)
1446fi
1447if test "$enable_netbeans" = "yes"; then
1448 AC_DEFINE(FEAT_NETBEANS_INTG)
1449 NETBEANS_SRC="netbeans.c"
1450 AC_SUBST(NETBEANS_SRC)
1451 NETBEANS_OBJ="objects/netbeans.o"
1452 AC_SUBST(NETBEANS_OBJ)
1453fi
1454
1455AC_MSG_CHECKING(--enable-sniff argument)
1456AC_ARG_ENABLE(sniff,
1457 [ --enable-sniff Include Sniff interface.], ,
1458 [enable_sniff="no"])
1459AC_MSG_RESULT($enable_sniff)
1460if test "$enable_sniff" = "yes"; then
1461 AC_DEFINE(FEAT_SNIFF)
1462 SNIFF_SRC="if_sniff.c"
1463 AC_SUBST(SNIFF_SRC)
1464 SNIFF_OBJ="objects/if_sniff.o"
1465 AC_SUBST(SNIFF_OBJ)
1466fi
1467
1468AC_MSG_CHECKING(--enable-multibyte argument)
1469AC_ARG_ENABLE(multibyte,
1470 [ --enable-multibyte Include multibyte editing support.], ,
1471 [enable_multibyte="no"])
1472AC_MSG_RESULT($enable_multibyte)
1473if test "$enable_multibyte" = "yes"; then
1474 AC_DEFINE(FEAT_MBYTE)
1475fi
1476
1477AC_MSG_CHECKING(--enable-hangulinput argument)
1478AC_ARG_ENABLE(hangulinput,
1479 [ --enable-hangulinput Include Hangul input support.], ,
1480 [enable_hangulinput="no"])
1481AC_MSG_RESULT($enable_hangulinput)
1482
1483AC_MSG_CHECKING(--enable-xim argument)
1484AC_ARG_ENABLE(xim,
1485 [ --enable-xim Include XIM input support.],
1486 AC_MSG_RESULT($enable_xim),
1487 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
Bram Moolenaar071d4272004-06-13 20:20:40 +00001488
1489AC_MSG_CHECKING(--enable-fontset argument)
1490AC_ARG_ENABLE(fontset,
1491 [ --enable-fontset Include X fontset output support.], ,
1492 [enable_fontset="no"])
1493AC_MSG_RESULT($enable_fontset)
1494dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1495
1496test -z "$with_x" && with_x=yes
1497test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1498if test "$with_x" = no; then
1499 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1500else
1501 dnl Do this check early, so that its failure can override user requests.
1502
1503 AC_PATH_PROG(xmkmfpath, xmkmf)
1504
1505 AC_PATH_XTRA
1506
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001507 dnl On z/OS Unix the X libraries are DLLs. To use them the code must
Bram Moolenaar071d4272004-06-13 20:20:40 +00001508 dnl be compiled with a special option.
1509 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
Bram Moolenaar2c704a72010-06-03 21:17:25 +02001510 if test "$zOSUnix" = "yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001511 CFLAGS="$CFLAGS -W c,dll"
1512 LDFLAGS="$LDFLAGS -W l,dll"
1513 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1514 fi
1515
1516 dnl On my HPUX system the X include dir is found, but the lib dir not.
1517 dnl This is a desparate try to fix this.
1518
1519 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1520 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1521 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1522 X_LIBS="$X_LIBS -L$x_libraries"
1523 if test "`(uname) 2>/dev/null`" = SunOS &&
1524 uname -r | grep '^5' >/dev/null; then
1525 X_LIBS="$X_LIBS -R $x_libraries"
1526 fi
1527 fi
1528
1529 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1530 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1531 AC_MSG_RESULT(Corrected X includes to $x_includes)
1532 X_CFLAGS="$X_CFLAGS -I$x_includes"
1533 fi
1534
1535 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1536 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1537 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1538 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1539 dnl Same for "-R/usr/lib ".
1540 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1541
1542
1543 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001544 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1545 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001546 AC_MSG_CHECKING(if X11 header files can be found)
1547 cflags_save=$CFLAGS
1548 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001549 AC_TRY_COMPILE([#include <X11/Xlib.h>
1550#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001551 AC_MSG_RESULT(yes),
1552 AC_MSG_RESULT(no); no_x=yes)
1553 CFLAGS=$cflags_save
1554
1555 if test "${no_x-no}" = yes; then
1556 with_x=no
1557 else
1558 AC_DEFINE(HAVE_X11)
1559 X_LIB="-lXt -lX11";
1560 AC_SUBST(X_LIB)
1561
1562 ac_save_LDFLAGS="$LDFLAGS"
1563 LDFLAGS="-L$x_libraries $LDFLAGS"
1564
1565 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1566 dnl For HP-UX 10.20 it must be before -lSM -lICE
1567 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1568 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1569
1570 dnl Some systems need -lnsl -lsocket when testing for ICE.
1571 dnl The check above doesn't do this, try here (again). Also needed to get
1572 dnl them after Xdmcp. link.sh will remove them when not needed.
1573 dnl Check for other function than above to avoid the cached value
1574 AC_CHECK_LIB(ICE, IceOpenConnection,
1575 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1576
1577 dnl Check for -lXpm (needed for some versions of Motif)
1578 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1579 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1580 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1581
1582 dnl Check that the X11 header files don't use implicit declarations
1583 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1584 cflags_save=$CFLAGS
1585 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1586 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1587 AC_MSG_RESULT(no),
1588 CFLAGS="$CFLAGS -Wno-implicit-int"
1589 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1590 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1591 AC_MSG_RESULT(test failed)
1592 )
1593 )
1594 CFLAGS=$cflags_save
1595
1596 LDFLAGS="$ac_save_LDFLAGS"
1597
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001598 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1599 AC_CACHE_VAL(ac_cv_small_wchar_t,
1600 [AC_TRY_RUN([
1601#include <X11/Xlib.h>
1602#if STDC_HEADERS
1603# include <stdlib.h>
1604# include <stddef.h>
1605#endif
1606 main()
1607 {
1608 if (sizeof(wchar_t) <= 2)
1609 exit(1);
1610 exit(0);
1611 }],
1612 ac_cv_small_wchar_t="no",
1613 ac_cv_small_wchar_t="yes",
1614 AC_MSG_ERROR(failed to compile test program))])
1615 AC_MSG_RESULT($ac_cv_small_wchar_t)
1616 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1617 AC_DEFINE(SMALL_WCHAR_T)
1618 fi
1619
Bram Moolenaar071d4272004-06-13 20:20:40 +00001620 fi
1621fi
1622
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001623test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001624
1625AC_MSG_CHECKING(--enable-gui argument)
1626AC_ARG_ENABLE(gui,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001627 [ --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 +00001628
1629dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1630dnl Do not use character classes for portability with old tools.
1631enable_gui_canon=`echo "_$enable_gui" | \
1632 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1633
1634dnl Skip everything by default.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001635SKIP_GTK2=YES
1636SKIP_GNOME=YES
1637SKIP_MOTIF=YES
1638SKIP_ATHENA=YES
1639SKIP_NEXTAW=YES
1640SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001641SKIP_CARBON=YES
1642GUITYPE=NONE
1643
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001644if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001645 SKIP_PHOTON=
1646 case "$enable_gui_canon" in
1647 no) AC_MSG_RESULT(no GUI support)
1648 SKIP_PHOTON=YES ;;
1649 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1650 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1651 photon) AC_MSG_RESULT(Photon GUI support) ;;
1652 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1653 SKIP_PHOTON=YES ;;
1654 esac
1655
1656elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1657 SKIP_CARBON=
1658 case "$enable_gui_canon" in
1659 no) AC_MSG_RESULT(no GUI support)
1660 SKIP_CARBON=YES ;;
1661 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
Bram Moolenaar164fca32010-07-14 13:58:07 +02001662 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support)
1663 SKIP_CARBON=YES ;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001664 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1665 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1666 SKIP_CARBON=YES ;;
1667 esac
1668
1669else
1670
Bram Moolenaar071d4272004-06-13 20:20:40 +00001671 case "$enable_gui_canon" in
1672 no|none) AC_MSG_RESULT(no GUI support) ;;
1673 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001674 SKIP_GTK2=
1675 SKIP_GNOME=
1676 SKIP_MOTIF=
1677 SKIP_ATHENA=
1678 SKIP_NEXTAW=
1679 SKIP_CARBON=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001680 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001681 SKIP_GTK2=;;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001682 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1683 SKIP_GNOME=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001684 SKIP_GTK2=;;
1685 motif) AC_MSG_RESULT(Motif GUI support)
1686 SKIP_MOTIF=;;
1687 athena) AC_MSG_RESULT(Athena GUI support)
1688 SKIP_ATHENA=;;
1689 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1690 SKIP_NEXTAW=;;
1691 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1692 esac
1693
1694fi
1695
Bram Moolenaar071d4272004-06-13 20:20:40 +00001696if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1697 -a "$enable_gui_canon" != "gnome2"; then
1698 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1699 AC_ARG_ENABLE(gtk2-check,
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001700 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]],
Bram Moolenaar071d4272004-06-13 20:20:40 +00001701 , enable_gtk2_check="yes")
1702 AC_MSG_RESULT($enable_gtk2_check)
1703 if test "x$enable_gtk2_check" = "xno"; then
1704 SKIP_GTK2=YES
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001705 SKIP_GNOME=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001706 fi
1707fi
1708
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001709if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001710 AC_MSG_CHECKING(whether or not to look for GNOME)
1711 AC_ARG_ENABLE(gnome-check,
1712 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1713 , enable_gnome_check="no")
1714 AC_MSG_RESULT($enable_gnome_check)
1715 if test "x$enable_gnome_check" = "xno"; then
1716 SKIP_GNOME=YES
1717 fi
1718fi
1719
1720if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1721 AC_MSG_CHECKING(whether or not to look for Motif)
1722 AC_ARG_ENABLE(motif-check,
1723 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1724 , enable_motif_check="yes")
1725 AC_MSG_RESULT($enable_motif_check)
1726 if test "x$enable_motif_check" = "xno"; then
1727 SKIP_MOTIF=YES
1728 fi
1729fi
1730
1731if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1732 AC_MSG_CHECKING(whether or not to look for Athena)
1733 AC_ARG_ENABLE(athena-check,
1734 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1735 , enable_athena_check="yes")
1736 AC_MSG_RESULT($enable_athena_check)
1737 if test "x$enable_athena_check" = "xno"; then
1738 SKIP_ATHENA=YES
1739 fi
1740fi
1741
1742if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1743 AC_MSG_CHECKING(whether or not to look for neXtaw)
1744 AC_ARG_ENABLE(nextaw-check,
1745 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1746 , enable_nextaw_check="yes")
1747 AC_MSG_RESULT($enable_nextaw_check);
1748 if test "x$enable_nextaw_check" = "xno"; then
1749 SKIP_NEXTAW=YES
1750 fi
1751fi
1752
1753if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1754 AC_MSG_CHECKING(whether or not to look for Carbon)
1755 AC_ARG_ENABLE(carbon-check,
1756 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1757 , enable_carbon_check="yes")
1758 AC_MSG_RESULT($enable_carbon_check);
1759 if test "x$enable_carbon_check" = "xno"; then
1760 SKIP_CARBON=YES
1761 fi
1762fi
1763
Bram Moolenaar843ee412004-06-30 16:16:41 +00001764
Bram Moolenaar071d4272004-06-13 20:20:40 +00001765if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1766 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001767 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001768 AC_MSG_RESULT(yes);
1769 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001770 if test "$VIMNAME" = "vim"; then
1771 VIMNAME=Vim
1772 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001773
Bram Moolenaar164fca32010-07-14 13:58:07 +02001774 if test "x$MACARCH" = "xboth"; then
1775 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
1776 else
1777 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
1778 fi
1779
Bram Moolenaar14716812006-05-04 21:54:08 +00001780 dnl Default install directory is not /usr/local
1781 if test x$prefix = xNONE; then
1782 prefix=/Applications
1783 fi
1784
1785 dnl Sorry for the hard coded default
1786 datadir='${prefix}/Vim.app/Contents/Resources'
1787
Bram Moolenaar071d4272004-06-13 20:20:40 +00001788 dnl skip everything else
Bram Moolenaar071d4272004-06-13 20:20:40 +00001789 SKIP_GTK2=YES;
1790 SKIP_GNOME=YES;
1791 SKIP_MOTIF=YES;
1792 SKIP_ATHENA=YES;
1793 SKIP_NEXTAW=YES;
1794 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001795 SKIP_CARBON=YES
1796fi
1797
Bram Moolenaar071d4272004-06-13 20:20:40 +00001798dnl define an autoconf function to check for a specified version of GTK, and
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001799dnl try to compile/link a GTK program.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001800dnl
1801dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001802dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001803dnl
1804AC_DEFUN(AM_PATH_GTK,
1805[
1806 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1807 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001808 min_gtk_version=ifelse([$1], ,2.2.0,$1)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001809 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1810 no_gtk=""
1811 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1812 && $PKG_CONFIG --exists gtk+-2.0; then
1813 {
1814 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1815 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1816 dnl something like that.
1817 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001818 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001819 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1820 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1821 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1822 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1823 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1824 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1825 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1826 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001827 else
1828 no_gtk=yes
1829 fi
1830
1831 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1832 {
1833 ac_save_CFLAGS="$CFLAGS"
1834 ac_save_LIBS="$LIBS"
1835 CFLAGS="$CFLAGS $GTK_CFLAGS"
1836 LIBS="$LIBS $GTK_LIBS"
1837
1838 dnl
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001839 dnl Now check if the installed GTK is sufficiently new.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001840 dnl
1841 rm -f conf.gtktest
1842 AC_TRY_RUN([
1843#include <gtk/gtk.h>
1844#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001845#if STDC_HEADERS
1846# include <stdlib.h>
1847# include <stddef.h>
1848#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001849
1850int
1851main ()
1852{
1853int major, minor, micro;
1854char *tmp_version;
1855
1856system ("touch conf.gtktest");
1857
1858/* HP/UX 9 (%@#!) writes to sscanf strings */
1859tmp_version = g_strdup("$min_gtk_version");
1860if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1861 printf("%s, bad version string\n", "$min_gtk_version");
1862 exit(1);
1863 }
1864
1865if ((gtk_major_version > major) ||
1866 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1867 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1868 (gtk_micro_version >= micro)))
1869{
1870 return 0;
1871}
1872return 1;
1873}
1874],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1875 CFLAGS="$ac_save_CFLAGS"
1876 LIBS="$ac_save_LIBS"
1877 }
1878 fi
1879 if test "x$no_gtk" = x ; then
1880 if test "x$enable_gtktest" = "xyes"; then
1881 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1882 else
1883 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1884 fi
1885 ifelse([$2], , :, [$2])
1886 else
1887 {
1888 AC_MSG_RESULT(no)
1889 GTK_CFLAGS=""
1890 GTK_LIBS=""
1891 ifelse([$3], , :, [$3])
1892 }
1893 fi
1894 }
1895 else
1896 GTK_CFLAGS=""
1897 GTK_LIBS=""
1898 ifelse([$3], , :, [$3])
1899 fi
1900 AC_SUBST(GTK_CFLAGS)
1901 AC_SUBST(GTK_LIBS)
1902 rm -f conf.gtktest
1903])
1904
1905dnl ---------------------------------------------------------------------------
1906dnl gnome
1907dnl ---------------------------------------------------------------------------
1908AC_DEFUN([GNOME_INIT_HOOK],
1909[
1910 AC_SUBST(GNOME_LIBS)
1911 AC_SUBST(GNOME_LIBDIR)
1912 AC_SUBST(GNOME_INCLUDEDIR)
1913
1914 AC_ARG_WITH(gnome-includes,
1915 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1916 [CFLAGS="$CFLAGS -I$withval"]
1917 )
1918
1919 AC_ARG_WITH(gnome-libs,
1920 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1921 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1922 )
1923
1924 AC_ARG_WITH(gnome,
1925 [ --with-gnome Specify prefix for GNOME files],
1926 if test x$withval = xyes; then
1927 want_gnome=yes
1928 ifelse([$1], [], :, [$1])
1929 else
1930 if test "x$withval" = xno; then
1931 want_gnome=no
1932 else
1933 want_gnome=yes
1934 LDFLAGS="$LDFLAGS -L$withval/lib"
1935 CFLAGS="$CFLAGS -I$withval/include"
1936 gnome_prefix=$withval/lib
1937 fi
1938 fi,
1939 want_gnome=yes)
1940
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001941 if test "x$want_gnome" = xyes; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001942 {
1943 AC_MSG_CHECKING(for libgnomeui-2.0)
1944 if $PKG_CONFIG --exists libgnomeui-2.0; then
1945 AC_MSG_RESULT(yes)
1946 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1947 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1948 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001949
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001950 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1951 dnl This might not be the right way but it works for me...
1952 AC_MSG_CHECKING(for FreeBSD)
1953 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1954 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001955 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001956 GNOME_LIBS="$GNOME_LIBS -pthread"
1957 else
1958 AC_MSG_RESULT(no)
1959 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001960 $1
1961 else
1962 AC_MSG_RESULT(not found)
1963 if test "x$2" = xfail; then
1964 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1965 fi
1966 fi
1967 }
Bram Moolenaar071d4272004-06-13 20:20:40 +00001968 fi
1969])
1970
1971AC_DEFUN([GNOME_INIT],[
1972 GNOME_INIT_HOOK([],fail)
1973])
1974
1975
1976dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001977dnl Check for GTK2. If it fails, then continue on for Motif as before...
Bram Moolenaar071d4272004-06-13 20:20:40 +00001978dnl ---------------------------------------------------------------------------
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001979if test -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001980
1981 AC_MSG_CHECKING(--disable-gtktest argument)
1982 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1983 , enable_gtktest=yes)
1984 if test "x$enable_gtktest" = "xyes" ; then
1985 AC_MSG_RESULT(gtk test enabled)
1986 else
1987 AC_MSG_RESULT(gtk test disabled)
1988 fi
1989
Bram Moolenaar071d4272004-06-13 20:20:40 +00001990 if test "X$PKG_CONFIG" = "X"; then
1991 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1992 fi
1993
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001994 if test "x$PKG_CONFIG" != "xno"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001995 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1996 dnl problems (bold fonts, --remote doesn't work).
Bram Moolenaar182c5be2010-06-25 05:37:59 +02001997 AM_PATH_GTK(2.2.0,
1998 [GUI_LIB_LOC="$GTK_LIBDIR"
1999 GTK_LIBNAME="$GTK_LIBS"
2000 GUI_INC_LOC="$GTK_CFLAGS"], )
2001 if test "x$GTK_CFLAGS" != "x"; then
2002 SKIP_ATHENA=YES
2003 SKIP_NEXTAW=YES
2004 SKIP_MOTIF=YES
2005 GUITYPE=GTK
2006 AC_SUBST(GTK_LIBNAME)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002007 fi
2008 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002009 if test "x$GUITYPE" = "xGTK"; then
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002010 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
2011 || test "0$gtk_minor_version" -ge 2; then
2012 AC_DEFINE(HAVE_GTK_MULTIHEAD)
2013 fi
2014 dnl
2015 dnl if GTK exists, then check for GNOME.
2016 dnl
2017 if test -z "$SKIP_GNOME"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002018 {
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002019 GNOME_INIT_HOOK([have_gnome=yes])
2020 if test "x$have_gnome" = xyes ; then
2021 AC_DEFINE(FEAT_GUI_GNOME)
2022 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
2023 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002024 fi
2025 }
2026 fi
2027 fi
2028fi
2029
2030dnl Check for Motif include files location.
2031dnl The LAST one found is used, this makes the highest version to be used,
2032dnl e.g. when Motif1.2 and Motif2.0 are both present.
2033
2034if test -z "$SKIP_MOTIF"; then
2035 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"
2036 dnl Remove "-I" from before $GUI_INC_LOC if it's there
2037 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
2038
2039 AC_MSG_CHECKING(for location of Motif GUI includes)
2040 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
2041 GUI_INC_LOC=
2042 for try in $gui_includes; do
2043 if test -f "$try/Xm/Xm.h"; then
2044 GUI_INC_LOC=$try
2045 fi
2046 done
2047 if test -n "$GUI_INC_LOC"; then
2048 if test "$GUI_INC_LOC" = /usr/include; then
2049 GUI_INC_LOC=
2050 AC_MSG_RESULT(in default path)
2051 else
2052 AC_MSG_RESULT($GUI_INC_LOC)
2053 fi
2054 else
2055 AC_MSG_RESULT(<not found>)
2056 SKIP_MOTIF=YES
2057 fi
2058fi
2059
2060dnl Check for Motif library files location. In the same order as the include
2061dnl files, to avoid a mixup if several versions are present
2062
2063if test -z "$SKIP_MOTIF"; then
2064 AC_MSG_CHECKING(--with-motif-lib argument)
2065 AC_ARG_WITH(motif-lib,
2066 [ --with-motif-lib=STRING Library for Motif ],
2067 [ MOTIF_LIBNAME="${withval}" ] )
2068
2069 if test -n "$MOTIF_LIBNAME"; then
2070 AC_MSG_RESULT($MOTIF_LIBNAME)
2071 GUI_LIB_LOC=
2072 else
2073 AC_MSG_RESULT(no)
2074
2075 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
2076 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
2077
2078 AC_MSG_CHECKING(for location of Motif GUI libs)
2079 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"
2080 GUI_LIB_LOC=
2081 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00002082 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00002083 if test -f "$libtry"; then
2084 GUI_LIB_LOC=$try
2085 fi
2086 done
2087 done
2088 if test -n "$GUI_LIB_LOC"; then
2089 dnl Remove /usr/lib, it causes trouble on some systems
2090 if test "$GUI_LIB_LOC" = /usr/lib; then
2091 GUI_LIB_LOC=
2092 AC_MSG_RESULT(in default path)
2093 else
2094 if test -n "$GUI_LIB_LOC"; then
2095 AC_MSG_RESULT($GUI_LIB_LOC)
2096 if test "`(uname) 2>/dev/null`" = SunOS &&
2097 uname -r | grep '^5' >/dev/null; then
2098 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
2099 fi
2100 fi
2101 fi
2102 MOTIF_LIBNAME=-lXm
2103 else
2104 AC_MSG_RESULT(<not found>)
2105 SKIP_MOTIF=YES
2106 fi
2107 fi
2108fi
2109
2110if test -z "$SKIP_MOTIF"; then
2111 SKIP_ATHENA=YES
2112 SKIP_NEXTAW=YES
2113 GUITYPE=MOTIF
2114 AC_SUBST(MOTIF_LIBNAME)
2115fi
2116
2117dnl Check if the Athena files can be found
2118
2119GUI_X_LIBS=
2120
2121if test -z "$SKIP_ATHENA"; then
2122 AC_MSG_CHECKING(if Athena header files can be found)
2123 cflags_save=$CFLAGS
2124 CFLAGS="$CFLAGS $X_CFLAGS"
2125 AC_TRY_COMPILE([
2126#include <X11/Intrinsic.h>
2127#include <X11/Xaw/Paned.h>], ,
2128 AC_MSG_RESULT(yes),
2129 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
2130 CFLAGS=$cflags_save
2131fi
2132
2133if test -z "$SKIP_ATHENA"; then
2134 GUITYPE=ATHENA
2135fi
2136
2137if test -z "$SKIP_NEXTAW"; then
2138 AC_MSG_CHECKING(if neXtaw header files can be found)
2139 cflags_save=$CFLAGS
2140 CFLAGS="$CFLAGS $X_CFLAGS"
2141 AC_TRY_COMPILE([
2142#include <X11/Intrinsic.h>
2143#include <X11/neXtaw/Paned.h>], ,
2144 AC_MSG_RESULT(yes),
2145 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
2146 CFLAGS=$cflags_save
2147fi
2148
2149if test -z "$SKIP_NEXTAW"; then
2150 GUITYPE=NEXTAW
2151fi
2152
2153if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2154 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
2155 dnl Avoid adding it when it twice
2156 if test -n "$GUI_INC_LOC"; then
2157 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
2158 fi
2159 if test -n "$GUI_LIB_LOC"; then
2160 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
2161 fi
2162
2163 dnl Check for -lXext and then for -lXmu
2164 ldflags_save=$LDFLAGS
2165 LDFLAGS="$X_LIBS $LDFLAGS"
2166 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
2167 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2168 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
2169 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
2170 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2171 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
2172 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2173 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
2174 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2175 if test -z "$SKIP_MOTIF"; then
2176 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
2177 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
2178 fi
2179 LDFLAGS=$ldflags_save
2180
2181 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
2182 AC_MSG_CHECKING(for extra X11 defines)
2183 NARROW_PROTO=
2184 rm -fr conftestdir
2185 if mkdir conftestdir; then
2186 cd conftestdir
2187 cat > Imakefile <<'EOF'
2188acfindx:
2189 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
2190EOF
2191 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
2192 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
2193 fi
2194 cd ..
2195 rm -fr conftestdir
2196 fi
2197 if test -z "$NARROW_PROTO"; then
2198 AC_MSG_RESULT(no)
2199 else
2200 AC_MSG_RESULT($NARROW_PROTO)
2201 fi
2202 AC_SUBST(NARROW_PROTO)
2203fi
2204
2205dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2206dnl use the X11 include path
2207if test "$enable_xsmp" = "yes"; then
2208 cppflags_save=$CPPFLAGS
2209 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2210 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2211 CPPFLAGS=$cppflags_save
2212fi
2213
2214
Bram Moolenaare667c952010-07-05 22:57:59 +02002215if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002216 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2217 cppflags_save=$CPPFLAGS
2218 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2219 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2220
2221 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2222 if test ! "$enable_xim" = "no"; then
2223 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2224 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2225 AC_MSG_RESULT(yes),
2226 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2227 fi
2228 CPPFLAGS=$cppflags_save
2229
2230 dnl automatically enable XIM when hangul input isn't enabled
2231 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2232 -a "x$GUITYPE" != "xNONE" ; then
2233 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2234 enable_xim="yes"
2235 fi
2236fi
2237
2238if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2239 cppflags_save=$CPPFLAGS
2240 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002241dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2242 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2243 AC_TRY_COMPILE([
2244#include <X11/Intrinsic.h>
2245#include <X11/Xmu/Editres.h>],
2246 [int i; i = 0;],
2247 AC_MSG_RESULT(yes)
2248 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2249 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002250 CPPFLAGS=$cppflags_save
2251fi
2252
2253dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2254if test -z "$SKIP_MOTIF"; then
2255 cppflags_save=$CPPFLAGS
2256 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002257 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 +00002258 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002259
2260 if test $ac_cv_header_Xm_XpmP_h = yes; then
2261 dnl Solaris uses XpmAttributes_21, very annoying.
2262 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2263 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2264 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2265 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2266 )
2267 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002268 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002269 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002270 CPPFLAGS=$cppflags_save
2271fi
2272
2273if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2274 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2275 enable_xim="no"
2276fi
2277if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2278 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2279 enable_fontset="no"
2280fi
Bram Moolenaar182c5be2010-06-25 05:37:59 +02002281if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00002282 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2283 enable_fontset="no"
2284fi
2285
Bram Moolenaar071d4272004-06-13 20:20:40 +00002286if test -z "$SKIP_PHOTON"; then
2287 GUITYPE=PHOTONGUI
2288fi
2289
2290AC_SUBST(GUI_INC_LOC)
2291AC_SUBST(GUI_LIB_LOC)
2292AC_SUBST(GUITYPE)
2293AC_SUBST(GUI_X_LIBS)
2294
2295if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2296 AC_MSG_ERROR([cannot use workshop without Motif])
2297fi
2298
2299dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2300if test "$enable_xim" = "yes"; then
2301 AC_DEFINE(FEAT_XIM)
2302fi
2303if test "$enable_fontset" = "yes"; then
2304 AC_DEFINE(FEAT_XFONTSET)
2305fi
2306
2307
2308dnl ---------------------------------------------------------------------------
2309dnl end of GUI-checking
2310dnl ---------------------------------------------------------------------------
2311
2312
2313dnl Only really enable hangul input when GUI and XFONTSET are available
2314if test "$enable_hangulinput" = "yes"; then
2315 if test "x$GUITYPE" = "xNONE"; then
2316 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2317 enable_hangulinput=no
2318 else
2319 AC_DEFINE(FEAT_HANGULIN)
2320 HANGULIN_SRC=hangulin.c
2321 AC_SUBST(HANGULIN_SRC)
2322 HANGULIN_OBJ=objects/hangulin.o
2323 AC_SUBST(HANGULIN_OBJ)
2324 fi
2325fi
2326
2327dnl Checks for libraries and include files.
2328
Bram Moolenaar446cb832008-06-24 21:56:24 +00002329AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2330 [
2331 AC_RUN_IFELSE([[
2332#include "confdefs.h"
2333#include <ctype.h>
2334#if STDC_HEADERS
2335# include <stdlib.h>
2336# include <stddef.h>
2337#endif
2338main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2339 ]],[
2340 vim_cv_toupper_broken=yes
2341 ],[
2342 vim_cv_toupper_broken=no
2343 ],[
2344 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2345 ])])
2346
2347if test "x$vim_cv_toupper_broken" = "xyes" ; then
2348 AC_DEFINE(BROKEN_TOUPPER)
2349fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002350
2351AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002352AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002353 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2354 AC_MSG_RESULT(no))
2355
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002356AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2357AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2358 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2359 AC_MSG_RESULT(no))
2360
Bram Moolenaar071d4272004-06-13 20:20:40 +00002361dnl Checks for header files.
2362AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2363dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2364if test "$HAS_ELF" = 1; then
2365 AC_CHECK_LIB(elf, main)
2366fi
2367
2368AC_HEADER_DIRENT
2369
Bram Moolenaar071d4272004-06-13 20:20:40 +00002370dnl If sys/wait.h is not found it might still exist but not be POSIX
2371dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2372if test $ac_cv_header_sys_wait_h = no; then
2373 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2374 AC_TRY_COMPILE([#include <sys/wait.h>],
2375 [union wait xx, yy; xx = yy],
2376 AC_MSG_RESULT(yes)
2377 AC_DEFINE(HAVE_SYS_WAIT_H)
2378 AC_DEFINE(HAVE_UNION_WAIT),
2379 AC_MSG_RESULT(no))
2380fi
2381
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002382AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2383 sys/select.h sys/utsname.h termcap.h fcntl.h \
2384 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2385 termio.h iconv.h inttypes.h langinfo.h math.h \
2386 unistd.h stropts.h errno.h sys/resource.h \
2387 sys/systeminfo.h locale.h sys/stream.h termios.h \
2388 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2389 utime.h sys/param.h libintl.h libgen.h \
2390 util/debug.h util/msg18n.h frame.h sys/acl.h \
2391 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002392
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002393dnl sys/ptem.h depends on sys/stream.h on Solaris
2394AC_CHECK_HEADERS(sys/ptem.h, [], [],
2395[#if defined HAVE_SYS_STREAM_H
2396# include <sys/stream.h>
2397#endif])
2398
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002399dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2400AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2401[#if defined HAVE_SYS_PARAM_H
2402# include <sys/param.h>
2403#endif])
2404
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002405
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002406dnl pthread_np.h may exist but can only be used after including pthread.h
2407AC_MSG_CHECKING([for pthread_np.h])
2408AC_TRY_COMPILE([
2409#include <pthread.h>
2410#include <pthread_np.h>],
2411 [int i; i = 0;],
2412 AC_MSG_RESULT(yes)
2413 AC_DEFINE(HAVE_PTHREAD_NP_H),
2414 AC_MSG_RESULT(no))
2415
Bram Moolenaare344bea2005-09-01 20:46:49 +00002416AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002417if test "x$MACOSX" = "xyes"; then
2418 dnl The strings.h file on OS/X contains a warning and nothing useful.
2419 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2420else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002421
2422dnl Check if strings.h and string.h can both be included when defined.
2423AC_MSG_CHECKING([if strings.h can be included after string.h])
2424cppflags_save=$CPPFLAGS
2425CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2426AC_TRY_COMPILE([
2427#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2428# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2429 /* but don't do it on AIX 5.1 (Uribarri) */
2430#endif
2431#ifdef HAVE_XM_XM_H
2432# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2433#endif
2434#ifdef HAVE_STRING_H
2435# include <string.h>
2436#endif
2437#if defined(HAVE_STRINGS_H)
2438# include <strings.h>
2439#endif
2440 ], [int i; i = 0;],
2441 AC_MSG_RESULT(yes),
2442 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2443 AC_MSG_RESULT(no))
2444CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002445fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002446
2447dnl Checks for typedefs, structures, and compiler characteristics.
2448AC_PROG_GCC_TRADITIONAL
2449AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002450AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002451AC_TYPE_MODE_T
2452AC_TYPE_OFF_T
2453AC_TYPE_PID_T
2454AC_TYPE_SIZE_T
2455AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002456AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002457
Bram Moolenaar071d4272004-06-13 20:20:40 +00002458AC_HEADER_TIME
2459AC_CHECK_TYPE(ino_t, long)
2460AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002461AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002462
2463AC_MSG_CHECKING(for rlim_t)
2464if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2465 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2466else
2467 AC_EGREP_CPP(dnl
2468changequote(<<,>>)dnl
2469<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2470changequote([,]),
2471 [
2472#include <sys/types.h>
2473#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002474# include <stdlib.h>
2475# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002476#endif
2477#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002478# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002479#endif
2480 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2481 AC_MSG_RESULT($ac_cv_type_rlim_t)
2482fi
2483if test $ac_cv_type_rlim_t = no; then
2484 cat >> confdefs.h <<\EOF
2485#define rlim_t unsigned long
2486EOF
2487fi
2488
2489AC_MSG_CHECKING(for stack_t)
2490if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2491 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2492else
2493 AC_EGREP_CPP(stack_t,
2494 [
2495#include <sys/types.h>
2496#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002497# include <stdlib.h>
2498# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002499#endif
2500#include <signal.h>
2501 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2502 AC_MSG_RESULT($ac_cv_type_stack_t)
2503fi
2504if test $ac_cv_type_stack_t = no; then
2505 cat >> confdefs.h <<\EOF
2506#define stack_t struct sigaltstack
2507EOF
2508fi
2509
2510dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2511AC_MSG_CHECKING(whether stack_t has an ss_base field)
2512AC_TRY_COMPILE([
2513#include <sys/types.h>
2514#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002515# include <stdlib.h>
2516# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002517#endif
2518#include <signal.h>
2519#include "confdefs.h"
2520 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2521 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2522 AC_MSG_RESULT(no))
2523
2524olibs="$LIBS"
2525AC_MSG_CHECKING(--with-tlib argument)
2526AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2527if test -n "$with_tlib"; then
2528 AC_MSG_RESULT($with_tlib)
2529 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002530 AC_MSG_CHECKING(for linking with $with_tlib library)
2531 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2532 dnl Need to check for tgetent() below.
2533 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002534else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002535 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002536 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2537 dnl curses, because curses is much slower.
2538 dnl Newer versions of ncurses are preferred over anything.
2539 dnl Older versions of ncurses have bugs, get a new one!
2540 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002541 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002542 case "`uname -s 2>/dev/null`" in
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002543 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002544 *) tlibs="ncurses termlib termcap curses";;
2545 esac
2546 for libname in $tlibs; do
2547 AC_CHECK_LIB(${libname}, tgetent,,)
2548 if test "x$olibs" != "x$LIBS"; then
2549 dnl It's possible that a library is found but it doesn't work
2550 dnl e.g., shared library that cannot be found
2551 dnl compile and run a test program to be sure
2552 AC_TRY_RUN([
2553#ifdef HAVE_TERMCAP_H
2554# include <termcap.h>
2555#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002556#if STDC_HEADERS
2557# include <stdlib.h>
2558# include <stddef.h>
2559#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002560main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2561 res="OK", res="FAIL", res="FAIL")
2562 if test "$res" = "OK"; then
2563 break
2564 fi
2565 AC_MSG_RESULT($libname library is not usable)
2566 LIBS="$olibs"
2567 fi
2568 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002569 if test "x$olibs" = "x$LIBS"; then
2570 AC_MSG_RESULT(no terminal library found)
2571 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002572fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002573
2574if test "x$olibs" = "x$LIBS"; then
2575 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002576 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002577 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2578 AC_MSG_RESULT(yes),
2579 AC_MSG_ERROR([NOT FOUND!
2580 You need to install a terminal library; for example ncurses.
2581 Or specify the name of the library with --with-tlib.]))
2582fi
2583
Bram Moolenaar446cb832008-06-24 21:56:24 +00002584AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2585 [
2586 AC_RUN_IFELSE([[
2587#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002588#ifdef HAVE_TERMCAP_H
2589# include <termcap.h>
2590#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002591#ifdef HAVE_STRING_H
2592# include <string.h>
2593#endif
2594#if STDC_HEADERS
2595# include <stdlib.h>
2596# include <stddef.h>
2597#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002598main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002599{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2600 ]],[
2601 vim_cv_terminfo=no
2602 ],[
2603 vim_cv_terminfo=yes
2604 ],[
2605 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2606 ])
2607 ])
2608
2609if test "x$vim_cv_terminfo" = "xyes" ; then
2610 AC_DEFINE(TERMINFO)
2611fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002612
2613if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002614 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2615 [
2616 AC_RUN_IFELSE([[
2617#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002618#ifdef HAVE_TERMCAP_H
2619# include <termcap.h>
2620#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002621#if STDC_HEADERS
2622# include <stdlib.h>
2623# include <stddef.h>
2624#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002625main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002626{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2627 ]],[
2628 vim_cv_tgent=zero
2629 ],[
2630 vim_cv_tgent=non-zero
2631 ],[
2632 AC_MSG_ERROR(failed to compile test program.)
2633 ])
2634 ])
2635
2636 if test "x$vim_cv_tgent" = "xzero" ; then
2637 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2638 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002639fi
2640
2641AC_MSG_CHECKING(whether termcap.h contains ospeed)
2642AC_TRY_LINK([
2643#ifdef HAVE_TERMCAP_H
2644# include <termcap.h>
2645#endif
2646 ], [ospeed = 20000],
2647 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2648 [AC_MSG_RESULT(no)
2649 AC_MSG_CHECKING(whether ospeed can be extern)
2650 AC_TRY_LINK([
2651#ifdef HAVE_TERMCAP_H
2652# include <termcap.h>
2653#endif
2654extern short ospeed;
2655 ], [ospeed = 20000],
2656 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2657 AC_MSG_RESULT(no))]
2658 )
2659
2660AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2661AC_TRY_LINK([
2662#ifdef HAVE_TERMCAP_H
2663# include <termcap.h>
2664#endif
2665 ], [if (UP == 0 && BC == 0) PC = 1],
2666 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2667 [AC_MSG_RESULT(no)
2668 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2669 AC_TRY_LINK([
2670#ifdef HAVE_TERMCAP_H
2671# include <termcap.h>
2672#endif
2673extern char *UP, *BC, PC;
2674 ], [if (UP == 0 && BC == 0) PC = 1],
2675 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2676 AC_MSG_RESULT(no))]
2677 )
2678
2679AC_MSG_CHECKING(whether tputs() uses outfuntype)
2680AC_TRY_COMPILE([
2681#ifdef HAVE_TERMCAP_H
2682# include <termcap.h>
2683#endif
2684 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2685 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2686 AC_MSG_RESULT(no))
2687
2688dnl On some SCO machines sys/select redefines struct timeval
2689AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2690AC_TRY_COMPILE([
2691#include <sys/types.h>
2692#include <sys/time.h>
2693#include <sys/select.h>], ,
2694 AC_MSG_RESULT(yes)
2695 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2696 AC_MSG_RESULT(no))
2697
2698dnl AC_DECL_SYS_SIGLIST
2699
2700dnl Checks for pty.c (copied from screen) ==========================
2701AC_MSG_CHECKING(for /dev/ptc)
2702if test -r /dev/ptc; then
2703 AC_DEFINE(HAVE_DEV_PTC)
2704 AC_MSG_RESULT(yes)
2705else
2706 AC_MSG_RESULT(no)
2707fi
2708
2709AC_MSG_CHECKING(for SVR4 ptys)
2710if test -c /dev/ptmx ; then
2711 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2712 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2713 AC_MSG_RESULT(no))
2714else
2715 AC_MSG_RESULT(no)
2716fi
2717
2718AC_MSG_CHECKING(for ptyranges)
2719if test -d /dev/ptym ; then
2720 pdir='/dev/ptym'
2721else
2722 pdir='/dev'
2723fi
2724dnl SCO uses ptyp%d
2725AC_EGREP_CPP(yes,
2726[#ifdef M_UNIX
2727 yes;
2728#endif
2729 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2730dnl if test -c /dev/ptyp19; then
2731dnl ptys=`echo /dev/ptyp??`
2732dnl else
2733dnl ptys=`echo $pdir/pty??`
2734dnl fi
2735if test "$ptys" != "$pdir/pty??" ; then
2736 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2737 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2738 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2739 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2740 AC_MSG_RESULT([$p0 / $p1])
2741else
2742 AC_MSG_RESULT([don't know])
2743fi
2744
2745dnl **** pty mode/group handling ****
2746dnl
2747dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002748rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002749AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2750 [
2751 AC_RUN_IFELSE([[
2752#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002753#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002754#if STDC_HEADERS
2755# include <stdlib.h>
2756# include <stddef.h>
2757#endif
2758#ifdef HAVE_UNISTD_H
2759#include <unistd.h>
2760#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002761#include <sys/stat.h>
2762#include <stdio.h>
2763main()
2764{
2765 struct stat sb;
2766 char *x,*ttyname();
2767 int om, m;
2768 FILE *fp;
2769
2770 if (!(x = ttyname(0))) exit(1);
2771 if (stat(x, &sb)) exit(1);
2772 om = sb.st_mode;
2773 if (om & 002) exit(0);
2774 m = system("mesg y");
2775 if (m == -1 || m == 127) exit(1);
2776 if (stat(x, &sb)) exit(1);
2777 m = sb.st_mode;
2778 if (chmod(x, om)) exit(1);
2779 if (m & 002) exit(0);
2780 if (sb.st_gid == getgid()) exit(1);
2781 if (!(fp=fopen("conftest_grp", "w")))
2782 exit(1);
2783 fprintf(fp, "%d\n", sb.st_gid);
2784 fclose(fp);
2785 exit(0);
2786}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002787 ]],[
2788 if test -f conftest_grp; then
2789 vim_cv_tty_group=`cat conftest_grp`
2790 if test "x$vim_cv_tty_mode" = "x" ; then
2791 vim_cv_tty_mode=0620
2792 fi
2793 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2794 else
2795 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002796 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002797 fi
2798 ],[
2799 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002800 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002801 ],[
2802 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2803 ])
2804 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002805rm -f conftest_grp
2806
Bram Moolenaar446cb832008-06-24 21:56:24 +00002807if test "x$vim_cv_tty_group" != "xworld" ; then
2808 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2809 if test "x$vim_cv_tty_mode" = "x" ; then
2810 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)])
2811 else
2812 AC_DEFINE(PTYMODE, 0620)
2813 fi
2814fi
2815
Bram Moolenaar071d4272004-06-13 20:20:40 +00002816dnl Checks for library functions. ===================================
2817
2818AC_TYPE_SIGNAL
2819
2820dnl find out what to use at the end of a signal function
2821if test $ac_cv_type_signal = void; then
2822 AC_DEFINE(SIGRETURN, [return])
2823else
2824 AC_DEFINE(SIGRETURN, [return 0])
2825fi
2826
2827dnl check if struct sigcontext is defined (used for SGI only)
2828AC_MSG_CHECKING(for struct sigcontext)
2829AC_TRY_COMPILE([
2830#include <signal.h>
2831test_sig()
2832{
2833 struct sigcontext *scont;
2834 scont = (struct sigcontext *)0;
2835 return 1;
2836} ], ,
2837 AC_MSG_RESULT(yes)
2838 AC_DEFINE(HAVE_SIGCONTEXT),
2839 AC_MSG_RESULT(no))
2840
2841dnl tricky stuff: try to find out if getcwd() is implemented with
2842dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002843AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2844 [
2845 AC_RUN_IFELSE([[
2846#include "confdefs.h"
2847#ifdef HAVE_UNISTD_H
2848#include <unistd.h>
2849#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002850char *dagger[] = { "IFS=pwd", 0 };
2851main()
2852{
2853 char buffer[500];
2854 extern char **environ;
2855 environ = dagger;
2856 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002857}
2858 ]],[
2859 vim_cv_getcwd_broken=no
2860 ],[
2861 vim_cv_getcwd_broken=yes
2862 ],[
2863 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2864 ])
2865 ])
2866
2867if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2868 AC_DEFINE(BAD_GETCWD)
2869fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002870
Bram Moolenaar25153e12010-02-24 14:47:08 +01002871dnl Check for functions in one big call, to reduce the size of configure.
2872dnl Can only be used for functions that do not require any include.
2873AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002874 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002875 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002876 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002877 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002878 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2879 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01002880AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00002881
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02002882dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2883dnl appropriate, so that off_t is 64 bits when needed.
2884AC_SYS_LARGEFILE
2885
Bram Moolenaar071d4272004-06-13 20:20:40 +00002886dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2887AC_MSG_CHECKING(for st_blksize)
2888AC_TRY_COMPILE(
2889[#include <sys/types.h>
2890#include <sys/stat.h>],
2891[ struct stat st;
2892 int n;
2893
2894 stat("/", &st);
2895 n = (int)st.st_blksize;],
2896 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2897 AC_MSG_RESULT(no))
2898
Bram Moolenaar446cb832008-06-24 21:56:24 +00002899AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2900 [
2901 AC_RUN_IFELSE([[
2902#include "confdefs.h"
2903#if STDC_HEADERS
2904# include <stdlib.h>
2905# include <stddef.h>
2906#endif
2907#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002908#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002909main() {struct stat st; exit(stat("configure/", &st) != 0); }
2910 ]],[
2911 vim_cv_stat_ignores_slash=yes
2912 ],[
2913 vim_cv_stat_ignores_slash=no
2914 ],[
2915 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2916 ])
2917 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002918
Bram Moolenaar446cb832008-06-24 21:56:24 +00002919if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2920 AC_DEFINE(STAT_IGNORES_SLASH)
2921fi
2922
Bram Moolenaar071d4272004-06-13 20:20:40 +00002923dnl Link with iconv for charset translation, if not found without library.
2924dnl check for iconv() requires including iconv.h
2925dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2926dnl has been installed.
2927AC_MSG_CHECKING(for iconv_open())
2928save_LIBS="$LIBS"
2929LIBS="$LIBS -liconv"
2930AC_TRY_LINK([
2931#ifdef HAVE_ICONV_H
2932# include <iconv.h>
2933#endif
2934 ], [iconv_open("fr", "to");],
2935 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2936 LIBS="$save_LIBS"
2937 AC_TRY_LINK([
2938#ifdef HAVE_ICONV_H
2939# include <iconv.h>
2940#endif
2941 ], [iconv_open("fr", "to");],
2942 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2943 AC_MSG_RESULT(no)))
2944
2945
2946AC_MSG_CHECKING(for nl_langinfo(CODESET))
2947AC_TRY_LINK([
2948#ifdef HAVE_LANGINFO_H
2949# include <langinfo.h>
2950#endif
2951], [char *cs = nl_langinfo(CODESET);],
2952 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2953 AC_MSG_RESULT(no))
2954
Bram Moolenaar446cb832008-06-24 21:56:24 +00002955dnl Need various functions for floating point support. Only enable
2956dnl floating point when they are all present.
2957AC_CHECK_LIB(m, strtod)
2958AC_MSG_CHECKING([for strtod() and other floating point functions])
2959AC_TRY_LINK([
2960#ifdef HAVE_MATH_H
2961# include <math.h>
2962#endif
2963#if STDC_HEADERS
2964# include <stdlib.h>
2965# include <stddef.h>
2966#endif
2967], [char *s; double d;
2968 d = strtod("1.1", &s);
2969 d = fabs(1.11);
2970 d = ceil(1.11);
2971 d = floor(1.11);
2972 d = log10(1.11);
2973 d = pow(1.11, 2.22);
2974 d = sqrt(1.11);
2975 d = sin(1.11);
2976 d = cos(1.11);
2977 d = atan(1.11);
2978 ],
2979 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2980 AC_MSG_RESULT(no))
2981
Bram Moolenaar071d4272004-06-13 20:20:40 +00002982dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2983dnl when -lacl works, also try to use -lattr (required for Debian).
2984AC_MSG_CHECKING(--disable-acl argument)
2985AC_ARG_ENABLE(acl,
2986 [ --disable-acl Don't check for ACL support.],
2987 , [enable_acl="yes"])
2988if test "$enable_acl" = "yes"; then
2989AC_MSG_RESULT(no)
2990AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2991 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2992 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2993
2994AC_MSG_CHECKING(for POSIX ACL support)
2995AC_TRY_LINK([
2996#include <sys/types.h>
2997#ifdef HAVE_SYS_ACL_H
2998# include <sys/acl.h>
2999#endif
3000acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
3001 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
3002 acl_free(acl);],
3003 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
3004 AC_MSG_RESULT(no))
3005
3006AC_MSG_CHECKING(for Solaris ACL support)
3007AC_TRY_LINK([
3008#ifdef HAVE_SYS_ACL_H
3009# include <sys/acl.h>
3010#endif], [acl("foo", GETACLCNT, 0, NULL);
3011 ],
3012 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
3013 AC_MSG_RESULT(no))
3014
3015AC_MSG_CHECKING(for AIX ACL support)
3016AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00003017#if STDC_HEADERS
3018# include <stdlib.h>
3019# include <stddef.h>
3020#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003021#ifdef HAVE_SYS_ACL_H
3022# include <sys/acl.h>
3023#endif
3024#ifdef HAVE_SYS_ACCESS_H
3025# include <sys/access.h>
3026#endif
3027#define _ALL_SOURCE
3028
3029#include <sys/stat.h>
3030
3031int aclsize;
3032struct acl *aclent;], [aclsize = sizeof(struct acl);
3033 aclent = (void *)malloc(aclsize);
3034 statacl("foo", STX_NORMAL, aclent, aclsize);
3035 ],
3036 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
3037 AC_MSG_RESULT(no))
3038else
3039 AC_MSG_RESULT(yes)
3040fi
3041
3042AC_MSG_CHECKING(--disable-gpm argument)
3043AC_ARG_ENABLE(gpm,
3044 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
3045 [enable_gpm="yes"])
3046
3047if test "$enable_gpm" = "yes"; then
3048 AC_MSG_RESULT(no)
3049 dnl Checking if gpm support can be compiled
3050 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
3051 [olibs="$LIBS" ; LIBS="-lgpm"]
3052 AC_TRY_LINK(
3053 [#include <gpm.h>
3054 #include <linux/keyboard.h>],
3055 [Gpm_GetLibVersion(NULL);],
3056 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
3057 dnl FEAT_MOUSE_GPM if mouse support is included
3058 [vi_cv_have_gpm=yes],
3059 [vi_cv_have_gpm=no])
3060 [LIBS="$olibs"]
3061 )
3062 if test $vi_cv_have_gpm = yes; then
3063 LIBS="$LIBS -lgpm"
3064 AC_DEFINE(HAVE_GPM)
3065 fi
3066else
3067 AC_MSG_RESULT(yes)
3068fi
3069
Bram Moolenaar446cb832008-06-24 21:56:24 +00003070AC_MSG_CHECKING(--disable-sysmouse argument)
3071AC_ARG_ENABLE(sysmouse,
3072 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
3073 [enable_sysmouse="yes"])
3074
3075if test "$enable_sysmouse" = "yes"; then
3076 AC_MSG_RESULT(no)
3077 dnl Checking if sysmouse support can be compiled
3078 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
3079 dnl defines FEAT_SYSMOUSE if mouse support is included
3080 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
3081 AC_TRY_LINK(
3082 [#include <sys/consio.h>
3083 #include <signal.h>
3084 #include <sys/fbio.h>],
3085 [struct mouse_info mouse;
3086 mouse.operation = MOUSE_MODE;
3087 mouse.operation = MOUSE_SHOW;
3088 mouse.u.mode.mode = 0;
3089 mouse.u.mode.signal = SIGUSR2;],
3090 [vi_cv_have_sysmouse=yes],
3091 [vi_cv_have_sysmouse=no])
3092 )
3093 if test $vi_cv_have_sysmouse = yes; then
3094 AC_DEFINE(HAVE_SYSMOUSE)
3095 fi
3096else
3097 AC_MSG_RESULT(yes)
3098fi
3099
Bram Moolenaarf05da212009-11-17 16:13:15 +00003100dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
3101AC_MSG_CHECKING(for FD_CLOEXEC)
3102AC_TRY_COMPILE(
3103[#if HAVE_FCNTL_H
3104# include <fcntl.h>
3105#endif],
3106[ int flag = FD_CLOEXEC;],
3107 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
3108 AC_MSG_RESULT(not usable))
3109
Bram Moolenaar071d4272004-06-13 20:20:40 +00003110dnl rename needs to be checked separately to work on Nextstep with cc
3111AC_MSG_CHECKING(for rename)
3112AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
3113 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
3114 AC_MSG_RESULT(no))
3115
3116dnl sysctl() may exist but not the arguments we use
3117AC_MSG_CHECKING(for sysctl)
3118AC_TRY_COMPILE(
3119[#include <sys/types.h>
3120#include <sys/sysctl.h>],
3121[ int mib[2], r;
3122 size_t len;
3123
3124 mib[0] = CTL_HW;
3125 mib[1] = HW_USERMEM;
3126 len = sizeof(r);
3127 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
3128 ],
3129 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
3130 AC_MSG_RESULT(not usable))
3131
3132dnl sysinfo() may exist but not be Linux compatible
3133AC_MSG_CHECKING(for sysinfo)
3134AC_TRY_COMPILE(
3135[#include <sys/types.h>
3136#include <sys/sysinfo.h>],
3137[ struct sysinfo sinfo;
3138 int t;
3139
3140 (void)sysinfo(&sinfo);
3141 t = sinfo.totalram;
3142 ],
3143 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
3144 AC_MSG_RESULT(not usable))
3145
Bram Moolenaar914572a2007-05-01 11:37:47 +00003146dnl struct sysinfo may have the mem_unit field or not
3147AC_MSG_CHECKING(for sysinfo.mem_unit)
3148AC_TRY_COMPILE(
3149[#include <sys/types.h>
3150#include <sys/sysinfo.h>],
3151[ struct sysinfo sinfo;
3152 sinfo.mem_unit = 1;
3153 ],
3154 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
3155 AC_MSG_RESULT(no))
3156
Bram Moolenaar071d4272004-06-13 20:20:40 +00003157dnl sysconf() may exist but not support what we want to use
3158AC_MSG_CHECKING(for sysconf)
3159AC_TRY_COMPILE(
3160[#include <unistd.h>],
3161[ (void)sysconf(_SC_PAGESIZE);
3162 (void)sysconf(_SC_PHYS_PAGES);
3163 ],
3164 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
3165 AC_MSG_RESULT(not usable))
3166
Bram Moolenaar914703b2010-05-31 21:59:46 +02003167AC_CHECK_SIZEOF([int])
3168AC_CHECK_SIZEOF([long])
3169AC_CHECK_SIZEOF([time_t])
3170AC_CHECK_SIZEOF([off_t])
Bram Moolenaar644fdff2010-05-30 13:26:21 +02003171
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003172dnl Make sure that uint32_t is really 32 bits unsigned.
3173AC_MSG_CHECKING([uint32_t is 32 bits])
3174AC_TRY_RUN([
3175#ifdef HAVE_STDINT_H
3176# include <stdint.h>
3177#endif
3178#ifdef HAVE_INTTYPES_H
3179# include <inttypes.h>
3180#endif
3181main() {
3182 uint32_t nr1 = (uint32_t)-1;
3183 uint32_t nr2 = (uint32_t)0xffffffffUL;
3184 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3185 exit(0);
3186}],
3187AC_MSG_RESULT(ok),
3188AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
3189AC_MSG_ERROR([could not compile program using uint32_t.]))
3190
Bram Moolenaar446cb832008-06-24 21:56:24 +00003191dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3192dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3193
Bram Moolenaar071d4272004-06-13 20:20:40 +00003194[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003195#include "confdefs.h"
3196#ifdef HAVE_STRING_H
3197# include <string.h>
3198#endif
3199#if STDC_HEADERS
3200# include <stdlib.h>
3201# include <stddef.h>
3202#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003203main() {
3204 char buf[10];
3205 strcpy(buf, "abcdefghi");
3206 mch_memmove(buf, buf + 2, 3);
3207 if (strncmp(buf, "ababcf", 6))
3208 exit(1);
3209 strcpy(buf, "abcdefghi");
3210 mch_memmove(buf + 2, buf, 3);
3211 if (strncmp(buf, "cdedef", 6))
3212 exit(1);
3213 exit(0); /* libc version works properly. */
3214}']
3215
Bram Moolenaar446cb832008-06-24 21:56:24 +00003216AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3217 [
3218 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3219 [
3220 vim_cv_memmove_handles_overlap=yes
3221 ],[
3222 vim_cv_memmove_handles_overlap=no
3223 ],[
3224 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3225 ])
3226 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003227
Bram Moolenaar446cb832008-06-24 21:56:24 +00003228if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3229 AC_DEFINE(USEMEMMOVE)
3230else
3231 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3232 [
3233 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3234 [
3235 vim_cv_bcopy_handles_overlap=yes
3236 ],[
3237 vim_cv_bcopy_handles_overlap=no
3238 ],[
3239 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3240 ])
3241 ])
3242
3243 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3244 AC_DEFINE(USEBCOPY)
3245 else
3246 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3247 [
3248 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3249 [
3250 vim_cv_memcpy_handles_overlap=yes
3251 ],[
3252 vim_cv_memcpy_handles_overlap=no
3253 ],[
3254 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3255 ])
3256 ])
3257
3258 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3259 AC_DEFINE(USEMEMCPY)
3260 fi
3261 fi
3262fi
3263
Bram Moolenaar071d4272004-06-13 20:20:40 +00003264
3265dnl Check for multibyte locale functions
3266dnl Find out if _Xsetlocale() is supported by libX11.
3267dnl Check if X_LOCALE should be defined.
3268
3269if test "$enable_multibyte" = "yes"; then
3270 cflags_save=$CFLAGS
3271 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003272 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003273 CFLAGS="$CFLAGS -I$x_includes"
3274 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3275 AC_MSG_CHECKING(whether X_LOCALE needed)
3276 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3277 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3278 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3279 AC_MSG_RESULT(no))
3280 fi
3281 CFLAGS=$cflags_save
3282 LDFLAGS=$ldflags_save
3283fi
3284
3285dnl Link with xpg4, it is said to make Korean locale working
3286AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3287
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003288dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003289dnl --version for Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003290dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003291dnl -t for typedefs (many ctags have this)
3292dnl -s for static functions (Elvis ctags only?)
3293dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3294dnl -i+m to test for older Exuberant ctags
3295AC_MSG_CHECKING(how to create tags)
3296test -f tags && mv tags tags.save
3297if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003298 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003299else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003300 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003301 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3302 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3303 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3304 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3305 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3306 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3307 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3308fi
3309test -f tags.save && mv tags.save tags
3310AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3311
3312dnl Check how we can run man with a section number
3313AC_MSG_CHECKING(how to run man with a section nr)
3314MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003315(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 +00003316AC_MSG_RESULT($MANDEF)
3317if test "$MANDEF" = "man -s"; then
3318 AC_DEFINE(USEMAN_S)
3319fi
3320
3321dnl Check if gettext() is working and if it needs -lintl
3322AC_MSG_CHECKING(--disable-nls argument)
3323AC_ARG_ENABLE(nls,
3324 [ --disable-nls Don't support NLS (gettext()).], ,
3325 [enable_nls="yes"])
3326
3327if test "$enable_nls" = "yes"; then
3328 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003329
3330 INSTALL_LANGS=install-languages
3331 AC_SUBST(INSTALL_LANGS)
3332 INSTALL_TOOL_LANGS=install-tool-languages
3333 AC_SUBST(INSTALL_TOOL_LANGS)
3334
Bram Moolenaar071d4272004-06-13 20:20:40 +00003335 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3336 AC_MSG_CHECKING([for NLS])
3337 if test -f po/Makefile; then
3338 have_gettext="no"
3339 if test -n "$MSGFMT"; then
3340 AC_TRY_LINK(
3341 [#include <libintl.h>],
3342 [gettext("Test");],
3343 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3344 olibs=$LIBS
3345 LIBS="$LIBS -lintl"
3346 AC_TRY_LINK(
3347 [#include <libintl.h>],
3348 [gettext("Test");],
3349 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3350 AC_MSG_RESULT([gettext() doesn't work]);
3351 LIBS=$olibs))
3352 else
3353 AC_MSG_RESULT([msgfmt not found - disabled]);
3354 fi
3355 if test $have_gettext = "yes"; then
3356 AC_DEFINE(HAVE_GETTEXT)
3357 MAKEMO=yes
3358 AC_SUBST(MAKEMO)
3359 dnl this was added in GNU gettext 0.10.36
3360 AC_CHECK_FUNCS(bind_textdomain_codeset)
3361 dnl _nl_msg_cat_cntr is required for GNU gettext
3362 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3363 AC_TRY_LINK(
3364 [#include <libintl.h>
3365 extern int _nl_msg_cat_cntr;],
3366 [++_nl_msg_cat_cntr;],
3367 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3368 AC_MSG_RESULT([no]))
3369 fi
3370 else
3371 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3372 fi
3373else
3374 AC_MSG_RESULT(yes)
3375fi
3376
3377dnl Check for dynamic linking loader
3378AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3379if test x${DLL} = xdlfcn.h; then
3380 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3381 AC_MSG_CHECKING([for dlopen()])
3382 AC_TRY_LINK(,[
3383 extern void* dlopen();
3384 dlopen();
3385 ],
3386 AC_MSG_RESULT(yes);
3387 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3388 AC_MSG_RESULT(no);
3389 AC_MSG_CHECKING([for dlopen() in -ldl])
3390 olibs=$LIBS
3391 LIBS="$LIBS -ldl"
3392 AC_TRY_LINK(,[
3393 extern void* dlopen();
3394 dlopen();
3395 ],
3396 AC_MSG_RESULT(yes);
3397 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3398 AC_MSG_RESULT(no);
3399 LIBS=$olibs))
3400 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3401 dnl ick :-)
3402 AC_MSG_CHECKING([for dlsym()])
3403 AC_TRY_LINK(,[
3404 extern void* dlsym();
3405 dlsym();
3406 ],
3407 AC_MSG_RESULT(yes);
3408 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3409 AC_MSG_RESULT(no);
3410 AC_MSG_CHECKING([for dlsym() in -ldl])
3411 olibs=$LIBS
3412 LIBS="$LIBS -ldl"
3413 AC_TRY_LINK(,[
3414 extern void* dlsym();
3415 dlsym();
3416 ],
3417 AC_MSG_RESULT(yes);
3418 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3419 AC_MSG_RESULT(no);
3420 LIBS=$olibs))
3421elif test x${DLL} = xdl.h; then
3422 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3423 AC_MSG_CHECKING([for shl_load()])
3424 AC_TRY_LINK(,[
3425 extern void* shl_load();
3426 shl_load();
3427 ],
3428 AC_MSG_RESULT(yes);
3429 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3430 AC_MSG_RESULT(no);
3431 AC_MSG_CHECKING([for shl_load() in -ldld])
3432 olibs=$LIBS
3433 LIBS="$LIBS -ldld"
3434 AC_TRY_LINK(,[
3435 extern void* shl_load();
3436 shl_load();
3437 ],
3438 AC_MSG_RESULT(yes);
3439 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3440 AC_MSG_RESULT(no);
3441 LIBS=$olibs))
3442fi
3443AC_CHECK_HEADERS(setjmp.h)
3444
3445if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3446 dnl -ldl must come after DynaLoader.a
3447 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3448 LIBS=`echo $LIBS | sed s/-ldl//`
3449 PERL_LIBS="$PERL_LIBS -ldl"
3450 fi
3451fi
3452
Bram Moolenaar164fca32010-07-14 13:58:07 +02003453if test "x$MACOSX" = "xyes"; then
3454 AC_MSG_CHECKING(whether we need -framework Cocoa)
3455 dnl Cocoa is needed with FEAT_CLIPBOARD or FEAT_MBYTE (the former is
3456 dnl disabled during tiny build)
3457 if test "x$features" != "xtiny" || test "x$enable_multibyte" = "xyes"; then
3458 LIBS=$"$LIBS -framework Cocoa"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003459 AC_MSG_RESULT(yes)
3460 else
3461 AC_MSG_RESULT(no)
3462 fi
3463fi
Bram Moolenaar164fca32010-07-14 13:58:07 +02003464if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003465 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003466fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003467
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003468dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3469dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3470dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003471dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3472dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003473DEPEND_CFLAGS_FILTER=
3474if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003475 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003476 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003477 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003478 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003479 AC_MSG_RESULT(yes)
3480 else
3481 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003482 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003483 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3484 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003485 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003486 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3487 if test "$gccmajor" -gt "3"; then
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003488 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 +00003489 AC_MSG_RESULT(yes)
3490 else
3491 AC_MSG_RESULT(no)
3492 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003493fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003494AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003495
3496dnl write output files
3497AC_OUTPUT(auto/config.mk:config.mk.in)
3498
3499dnl vim: set sw=2 tw=78 fo+=l: