blob: 35ecde3b827af50473b04a7fa51d34a75d7a9de9 [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)
104 if test -f os_macosx.c; then
105 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 Moolenaar3a025402008-07-24 15:20:50 +0000171 OS_EXTRA_SRC="os_macosx.c 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"
175 if test "x$MACARCH" = "xboth"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100176 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000177 else
Bram Moolenaar595a7be2010-03-10 16:28:12 +0100178 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon"
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000179 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000180
181 dnl If Carbon is found, assume we don't want X11
182 dnl unless it was specifically asked for (--with-x)
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000183 dnl or Motif, Athena or GTK GUI is used.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000184 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes)
185 if test "x$CARBON" = "xyes"; then
Bram Moolenaarab79bcb2004-07-18 21:34:53 +0000186 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk -a "X$enable_gui" != Xgtk2; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000187 with_x=no
Bram Moolenaar071d4272004-06-13 20:20:40 +0000188 fi
189 fi
190 fi
Bram Moolenaara23ccb82006-02-27 00:08:02 +0000191
Bram Moolenaardb552d602006-03-23 22:59:57 +0000192 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double
Bram Moolenaarfd2ac762006-03-01 22:09:21 +0000193 dnl free. This happens in expand_filename(), because the optimizer swaps
Bram Moolenaardb552d602006-03-23 22:59:57 +0000194 dnl two blocks of code, both using "repl", that can't be swapped.
Bram Moolenaare224ffa2006-03-01 00:01:28 +0000195 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then
196 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'`
197 fi
198
Bram Moolenaar071d4272004-06-13 20:20:40 +0000199else
200 AC_MSG_RESULT(no)
201fi
202
203AC_SUBST(OS_EXTRA_SRC)
204AC_SUBST(OS_EXTRA_OBJ)
205
206dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS.
207dnl Only when the directory exists and it wasn't there yet.
208dnl For gcc don't do this when it is already in the default search path.
Bram Moolenaar446cb832008-06-24 21:56:24 +0000209dnl Skip all of this when cross-compiling.
210if test "$cross_compiling" = no; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000211 AC_MSG_CHECKING(--with-local-dir argument)
Bram Moolenaar446cb832008-06-24 21:56:24 +0000212 have_local_include=''
213 have_local_lib=''
Bram Moolenaarc236c162008-07-13 17:41:49 +0000214 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries.
215 --without-local-dir do not search /usr/local for local libraries.], [
216 local_dir="$withval"
217 case "$withval" in
218 */*) ;;
219 no)
220 # avoid adding local dir to LDFLAGS and CPPFLAGS
221 have_local_dir=yes
222 have_local_lib=yes
223 ;;
224 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;;
225 esac
226 AC_MSG_RESULT($local_dir)
227 ], [
228 local_dir=/usr/local
229 AC_MSG_RESULT(Defaulting to $local_dir)
230 ])
231 if test "$GCC" = yes -a "$local_dir" != no; then
Bram Moolenaar446cb832008-06-24 21:56:24 +0000232 echo 'void f(){}' > conftest.c
233 dnl -no-cpp-precomp is needed for OS X 10.2 (Ben Fowler)
Bram Moolenaarc236c162008-07-13 17:41:49 +0000234 have_local_include=`${CC-cc} -no-cpp-precomp -c -v conftest.c 2>&1 | grep "${local_dir}/include"`
235 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"`
Bram Moolenaar446cb832008-06-24 21:56:24 +0000236 rm -f conftest.c conftest.o
Bram Moolenaar071d4272004-06-13 20:20:40 +0000237 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000238 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then
239 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 +0000240 if test "$tt" = "$LDFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000241 LDFLAGS="$LDFLAGS -L${local_dir}/lib"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000242 fi
243 fi
Bram Moolenaarc236c162008-07-13 17:41:49 +0000244 if test -z "$have_local_include" -a -d "${local_dir}/include"; then
245 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 +0000246 if test "$tt" = "$CPPFLAGS"; then
Bram Moolenaarc236c162008-07-13 17:41:49 +0000247 CPPFLAGS="$CPPFLAGS -I${local_dir}/include"
Bram Moolenaar446cb832008-06-24 21:56:24 +0000248 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000249 fi
250fi
251
252AC_MSG_CHECKING(--with-vim-name argument)
253AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable],
254 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME),
Bram Moolenaare344bea2005-09-01 20:46:49 +0000255 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000256AC_SUBST(VIMNAME)
257AC_MSG_CHECKING(--with-ex-name argument)
258AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable],
259 EXNAME="$withval"; AC_MSG_RESULT($EXNAME),
260 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex))
261AC_SUBST(EXNAME)
262AC_MSG_CHECKING(--with-view-name argument)
263AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable],
264 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME),
265 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view))
266AC_SUBST(VIEWNAME)
267
268AC_MSG_CHECKING(--with-global-runtime argument)
269AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath'],
270 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$withval"),
271 AC_MSG_RESULT(no))
272
273AC_MSG_CHECKING(--with-modified-by argument)
274AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version],
275 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"),
276 AC_MSG_RESULT(no))
277
278dnl Check for EBCDIC stolen from the LYNX port to OS390 Unix
279AC_MSG_CHECKING(if character set is EBCDIC)
280AC_TRY_COMPILE([ ],
281[ /* TryCompile function for CharSet.
282 Treat any failure as ASCII for compatibility with existing art.
283 Use compile-time rather than run-time tests for cross-compiler
284 tolerance. */
285#if '0'!=240
286make an error "Character set is not EBCDIC"
287#endif ],
288[ # TryCompile action if true
289cf_cv_ebcdic=yes ],
290[ # TryCompile action if false
291cf_cv_ebcdic=no])
292# end of TryCompile ])
293# end of CacheVal CvEbcdic
294AC_MSG_RESULT($cf_cv_ebcdic)
295case "$cf_cv_ebcdic" in #(vi
296 yes) AC_DEFINE(EBCDIC)
297 line_break='"\\n"'
298 ;;
299 *) line_break='"\\012"';;
300esac
301AC_SUBST(line_break)
302
303if test "$cf_cv_ebcdic" = "yes"; then
304dnl If we have EBCDIC we most likley have OS390 Unix, let's test it!
305AC_MSG_CHECKING(for OS/390 Unix)
306case `uname` in
307 OS/390) OS390Unix="yes";
308 dnl If using cc the environment variable _CC_CCMODE must be
309 dnl set to "1", so that some compiler extensions are enabled.
310 dnl If using c89 the environment variable is named _CC_C89MODE.
311 dnl Note: compile with c89 never tested.
312 if test "$CC" = "cc"; then
313 ccm="$_CC_CCMODE"
314 ccn="CC"
315 else
316 if test "$CC" = "c89"; then
317 ccm="$_CC_C89MODE"
318 ccn="C89"
319 else
320 ccm=1
321 fi
322 fi
323 if test "$ccm" != "1"; then
324 echo ""
325 echo "------------------------------------------"
326 echo " On OS/390 Unix, the environment variable"
327 echo " __CC_${ccn}MODE must be set to \"1\"!"
328 echo " Do:"
329 echo " export _CC_${ccn}MODE=1"
330 echo " and then call configure again."
331 echo "------------------------------------------"
332 exit 1
333 fi
334 CFLAGS="$CFLAGS -D_ALL_SOURCE"; LDFLAGS="$LDFLAGS -Wl,EDIT=NO"
335 AC_MSG_RESULT(yes)
336 ;;
337 *) OS390Unix="no";
338 AC_MSG_RESULT(no)
339 ;;
340esac
341fi
342
Bram Moolenaar588ebeb2008-05-07 17:09:24 +0000343dnl Link with -lselinux for SELinux stuff; if not found
344AC_MSG_CHECKING(--disable-selinux argument)
345AC_ARG_ENABLE(selinux,
346 [ --disable-selinux Don't check for SELinux support.],
347 , enable_selinux="yes")
348if test "$enable_selinux" = "yes"; then
349 AC_MSG_RESULT(no)
350 AC_CHECK_LIB(selinux, is_selinux_enabled,
351 [LIBS="$LIBS -lselinux"
352 AC_DEFINE(HAVE_SELINUX)])
353else
354 AC_MSG_RESULT(yes)
355fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000356
357dnl Check user requested features.
358
359AC_MSG_CHECKING(--with-features argument)
360AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: normal)],
361 features="$withval"; AC_MSG_RESULT($features),
362 features="normal"; AC_MSG_RESULT(Defaulting to normal))
363
364dovimdiff=""
365dogvimdiff=""
366case "$features" in
367 tiny) AC_DEFINE(FEAT_TINY) ;;
368 small) AC_DEFINE(FEAT_SMALL) ;;
369 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff";
370 dogvimdiff="installgvimdiff" ;;
371 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff";
372 dogvimdiff="installgvimdiff" ;;
373 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff";
374 dogvimdiff="installgvimdiff" ;;
375 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;;
376esac
377
378AC_SUBST(dovimdiff)
379AC_SUBST(dogvimdiff)
380
381AC_MSG_CHECKING(--with-compiledby argument)
382AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message],
383 compiledby="$withval"; AC_MSG_RESULT($withval),
384 compiledby=""; AC_MSG_RESULT(no))
385AC_SUBST(compiledby)
386
387AC_MSG_CHECKING(--disable-xsmp argument)
388AC_ARG_ENABLE(xsmp,
389 [ --disable-xsmp Disable XSMP session management],
390 , enable_xsmp="yes")
391
392if test "$enable_xsmp" = "yes"; then
393 AC_MSG_RESULT(no)
394 AC_MSG_CHECKING(--disable-xsmp-interact argument)
395 AC_ARG_ENABLE(xsmp-interact,
396 [ --disable-xsmp-interact Disable XSMP interaction],
397 , enable_xsmp_interact="yes")
398 if test "$enable_xsmp_interact" = "yes"; then
399 AC_MSG_RESULT(no)
400 AC_DEFINE(USE_XSMP_INTERACT)
401 else
402 AC_MSG_RESULT(yes)
403 fi
404else
405 AC_MSG_RESULT(yes)
406fi
407
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000408dnl Check for MzScheme feature.
409AC_MSG_CHECKING(--enable-mzschemeinterp argument)
410AC_ARG_ENABLE(mzschemeinterp,
411 [ --enable-mzschemeinterp Include MzScheme interpreter.], ,
412 [enable_mzschemeinterp="no"])
413AC_MSG_RESULT($enable_mzschemeinterp)
414
415if test "$enable_mzschemeinterp" = "yes"; then
416 dnl -- find the mzscheme executable
417 AC_SUBST(vi_cv_path_mzscheme)
418
419 AC_MSG_CHECKING(--with-plthome argument)
420 AC_ARG_WITH(plthome,
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000421 [ --with-plthome=PLTHOME Use PLTHOME.],
422 with_plthome="$withval"; AC_MSG_RESULT($with_plthome),
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000423 with_plthome="";AC_MSG_RESULT("no"))
424
425 if test "X$with_plthome" != "X"; then
426 vi_cv_path_mzscheme_pfx="$with_plthome"
427 else
428 AC_MSG_CHECKING(PLTHOME environment var)
429 if test "X$PLTHOME" != "X"; then
430 AC_MSG_RESULT("$PLTHOME")
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000431 vi_cv_path_mzscheme_pfx="$PLTHOME"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000432 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000433 AC_MSG_RESULT(not set)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000434 dnl -- try to find MzScheme executable
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000435 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000436
437 dnl resolve symbolic link, the executable is often elsewhere and there
438 dnl are no links for the include files.
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000439 if test "X$vi_cv_path_mzscheme" != "X"; then
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000440 lsout=`ls -l $vi_cv_path_mzscheme`
441 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then
442 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'`
443 fi
444 fi
445
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000446 if test "X$vi_cv_path_mzscheme" != "X"; then
447 dnl -- find where MzScheme thinks it was installed
448 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx,
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000449 dnl different versions of MzScheme differ in command line processing
450 dnl use universal approach
451 echo "(display (simplify-path \
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000452 (build-path (call-with-values \
453 (lambda () (split-path (find-system-path (quote exec-file)))) \
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000454 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm
455 dnl Remove a trailing slash
456 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \
457 sed -e 's+/$++'` ])
458 rm -f mzdirs.scm
Bram Moolenaarc9b4b052006-04-30 18:54:39 +0000459 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000460 fi
461 fi
462
Bram Moolenaard7afed32007-05-06 13:26:41 +0000463 SCHEME_INC=
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000464 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
465 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include)
466 if test -f $vi_cv_path_mzscheme_pfx/include/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000467 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include
468 AC_MSG_RESULT(yes)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000469 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000470 AC_MSG_RESULT(no)
471 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt)
Bram Moolenaard7afed32007-05-06 13:26:41 +0000472 if test -f $vi_cv_path_mzscheme_pfx/include/plt/scheme.h; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000473 AC_MSG_RESULT(yes)
474 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt
Bram Moolenaard7afed32007-05-06 13:26:41 +0000475 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000476 AC_MSG_RESULT(no)
477 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/)
478 if test -f /usr/include/plt/scheme.h; then
479 AC_MSG_RESULT(yes)
480 SCHEME_INC=/usr/include/plt
481 else
482 AC_MSG_RESULT(no)
483 vi_cv_path_mzscheme_pfx=
484 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000485 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000486 fi
487 fi
488
489 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000490 if test "x$MACOSX" = "xyes"; then
491 MZSCHEME_LIBS="-framework PLT_MzScheme"
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000492 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then
493 MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"
494 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
Bram Moolenaarf15f9432007-06-28 11:07:21 +0000495 elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzgc.a"; then
Bram Moolenaar9048f942007-05-12 14:32:25 +0000496 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 +0000497 else
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000498 dnl Using shared objects
499 if test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.so"; then
500 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme3m"
501 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"
502 else
503 MZSCHEME_LIBS="-L${vi_cv_path_mzscheme_pfx}/lib -lmzscheme -lmzgc"
504 fi
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000505 if test "$GCC" = yes; then
506 dnl Make Vim remember the path to the library. For when it's not in
507 dnl $LD_LIBRARY_PATH.
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000508 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar21cf8232004-07-16 20:18:37 +0000509 elif test "`(uname) 2>/dev/null`" = SunOS &&
510 uname -r | grep '^5' >/dev/null; then
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000511 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${vi_cv_path_mzscheme_pfx}/lib"
Bram Moolenaar2df6dcc2004-07-12 15:53:54 +0000512 fi
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000513 fi
Bram Moolenaard7afed32007-05-06 13:26:41 +0000514 if test -d $vi_cv_path_mzscheme_pfx/lib/plt/collects; then
515 SCHEME_COLLECTS=lib/plt/
516 fi
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000517 if test -f "${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects/scheme/base.ss" ; then
518 dnl need to generate bytecode for MzScheme base
519 MZSCHEME_EXTRA="mzscheme_base.c"
520 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE"
521 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc"
522 fi
523 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \
Bram Moolenaard7afed32007-05-06 13:26:41 +0000524 -DMZSCHEME_COLLECTS='\"${vi_cv_path_mzscheme_pfx}/${SCHEME_COLLECTS}collects\"'"
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000525 MZSCHEME_SRC="if_mzsch.c"
526 MZSCHEME_OBJ="objects/if_mzsch.o"
527 MZSCHEME_PRO="if_mzsch.pro"
528 AC_DEFINE(FEAT_MZSCHEME)
529 fi
530 AC_SUBST(MZSCHEME_SRC)
531 AC_SUBST(MZSCHEME_OBJ)
532 AC_SUBST(MZSCHEME_PRO)
533 AC_SUBST(MZSCHEME_LIBS)
534 AC_SUBST(MZSCHEME_CFLAGS)
Bram Moolenaar9e70cf12009-05-26 20:59:55 +0000535 AC_SUBST(MZSCHEME_EXTRA)
536 AC_SUBST(MZSCHEME_MZC)
Bram Moolenaar325b7a22004-07-05 15:58:32 +0000537fi
538
539
Bram Moolenaar071d4272004-06-13 20:20:40 +0000540AC_MSG_CHECKING(--enable-perlinterp argument)
541AC_ARG_ENABLE(perlinterp,
542 [ --enable-perlinterp Include Perl interpreter.], ,
543 [enable_perlinterp="no"])
544AC_MSG_RESULT($enable_perlinterp)
545if test "$enable_perlinterp" = "yes"; then
546 AC_SUBST(vi_cv_path_perl)
547 AC_PATH_PROG(vi_cv_path_perl, perl)
548 if test "X$vi_cv_path_perl" != "X"; then
549 AC_MSG_CHECKING(Perl version)
550 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then
551 eval `$vi_cv_path_perl -V:usethreads`
552 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then
553 badthreads=no
554 else
555 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then
556 eval `$vi_cv_path_perl -V:use5005threads`
557 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then
558 badthreads=no
559 else
560 badthreads=yes
561 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<)
562 fi
563 else
564 badthreads=yes
565 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<)
566 fi
567 fi
568 if test $badthreads = no; then
569 AC_MSG_RESULT(OK)
570 eval `$vi_cv_path_perl -V:shrpenv`
571 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04
572 shrpenv=""
573 fi
574 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'`
575 AC_SUBST(vi_cv_perllib)
576 dnl Remove "-fno-something", it breaks using cproto.
577 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \
578 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//'`
579 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread".
580 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \
581 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \
582 -e 's/-bE:perl.exp//' -e 's/-lc //'`
583 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH
584 dnl a test in configure may fail because of that.
585 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \
586 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'`
587
588 dnl check that compiling a simple program still works with the flags
589 dnl added for Perl.
590 AC_MSG_CHECKING([if compile and link flags for Perl are sane])
591 cflags_save=$CFLAGS
592 libs_save=$LIBS
593 ldflags_save=$LDFLAGS
594 CFLAGS="$CFLAGS $perlcppflags"
595 LIBS="$LIBS $perllibs"
596 LDFLAGS="$perlldflags $LDFLAGS"
597 AC_TRY_LINK(,[ ],
598 AC_MSG_RESULT(yes); perl_ok=yes,
599 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no)
600 CFLAGS=$cflags_save
601 LIBS=$libs_save
602 LDFLAGS=$ldflags_save
603 if test $perl_ok = yes; then
604 if test "X$perlcppflags" != "X"; then
Bram Moolenaard7afed32007-05-06 13:26:41 +0000605 dnl remove -pipe and -Wxxx, it confuses cproto
606 PERL_CFLAGS=`echo "$perlcppflags" | sed -e 's/-pipe //' -e 's/-W[[^ ]]*//'`
Bram Moolenaar071d4272004-06-13 20:20:40 +0000607 fi
608 if test "X$perlldflags" != "X"; then
609 LDFLAGS="$perlldflags $LDFLAGS"
610 fi
611 PERL_LIBS=$perllibs
612 PERL_SRC="auto/if_perl.c if_perlsfio.c"
613 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o"
614 PERL_PRO="if_perl.pro if_perlsfio.pro"
615 AC_DEFINE(FEAT_PERL)
616 fi
617 fi
618 else
619 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<)
620 fi
621 fi
622
623 if test "x$MACOSX" = "xyes"; then
Bram Moolenaar9372a112005-12-06 19:59:18 +0000624 dnl Mac OS X 10.2 or later
Bram Moolenaar071d4272004-06-13 20:20:40 +0000625 dir=/System/Library/Perl
626 darwindir=$dir/darwin
627 if test -d $darwindir; then
628 PERL=/usr/bin/perl
629 else
630 dnl Mac OS X 10.3
631 dir=/System/Library/Perl/5.8.1
632 darwindir=$dir/darwin-thread-multi-2level
633 if test -d $darwindir; then
634 PERL=/usr/bin/perl
635 fi
636 fi
637 if test -n "$PERL"; then
638 PERL_DIR="$dir"
639 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE"
640 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a"
641 PERL_LIBS="-L$darwindir/CORE -lperl"
642 fi
643 fi
644fi
645AC_SUBST(shrpenv)
646AC_SUBST(PERL_SRC)
647AC_SUBST(PERL_OBJ)
648AC_SUBST(PERL_PRO)
649AC_SUBST(PERL_CFLAGS)
650AC_SUBST(PERL_LIBS)
651
652AC_MSG_CHECKING(--enable-pythoninterp argument)
653AC_ARG_ENABLE(pythoninterp,
654 [ --enable-pythoninterp Include Python interpreter.], ,
655 [enable_pythoninterp="no"])
656AC_MSG_RESULT($enable_pythoninterp)
657if test "$enable_pythoninterp" = "yes"; then
658 dnl -- find the python executable
659 AC_PATH_PROG(vi_cv_path_python, python)
660 if test "X$vi_cv_path_python" != "X"; then
661
662 dnl -- get its version number
663 AC_CACHE_CHECK(Python version,vi_cv_var_python_version,
664 [[vi_cv_var_python_version=`
665 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'`
666 ]])
667
668 dnl -- it must be at least version 1.4
669 AC_MSG_CHECKING(Python is 1.4 or better)
670 if ${vi_cv_path_python} -c \
671 "import sys; sys.exit(${vi_cv_var_python_version} < 1.4)"
672 then
673 AC_MSG_RESULT(yep)
674
675 dnl -- find where python thinks it was installed
676 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx,
677 [ vi_cv_path_python_pfx=`
678 ${vi_cv_path_python} -c \
679 "import sys; print sys.prefix"` ])
680
681 dnl -- and where it thinks it runs
682 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx,
683 [ vi_cv_path_python_epfx=`
684 ${vi_cv_path_python} -c \
685 "import sys; print sys.exec_prefix"` ])
686
687 dnl -- python's internal library path
688
689 AC_CACHE_VAL(vi_cv_path_pythonpath,
690 [ vi_cv_path_pythonpath=`
691 unset PYTHONPATH;
692 ${vi_cv_path_python} -c \
693 "import sys, string; print string.join(sys.path,':')"` ])
694
695 dnl -- where the Python implementation library archives are
696
697 AC_ARG_WITH(python-config-dir,
698 [ --with-python-config-dir=PATH Python's config directory],
699 [ vi_cv_path_python_conf="${withval}" ] )
700
701 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf,
702 [
703 vi_cv_path_python_conf=
704 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do
Bram Moolenaar72951072009-12-02 16:58:33 +0000705 for subdir in lib64 lib share; do
Bram Moolenaar071d4272004-06-13 20:20:40 +0000706 d="${path}/${subdir}/python${vi_cv_var_python_version}/config"
707 if test -d "$d" && test -f "$d/config.c"; then
708 vi_cv_path_python_conf="$d"
709 fi
710 done
711 done
712 ])
713
714 PYTHON_CONFDIR="${vi_cv_path_python_conf}"
715
716 if test "X$PYTHON_CONFDIR" = "X"; then
717 AC_MSG_RESULT([can't find it!])
718 else
719
720 dnl -- we need to examine Python's config/Makefile too
721 dnl see what the interpreter is built from
722 AC_CACHE_VAL(vi_cv_path_python_plibs,
723 [
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000724 pwd=`pwd`
725 tmp_mkf="$pwd/config-PyMake$$"
726 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000727__:
Bram Moolenaar218116c2010-05-20 21:46:00 +0200728 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000729 @echo "python_LIBS='$(LIBS)'"
730 @echo "python_SYSLIBS='$(SYSLIBS)'"
731 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'"
732eof
733 dnl -- delete the lines from make about Entering/Leaving directory
Bram Moolenaar01dd60c2008-07-24 14:24:48 +0000734 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`"
735 rm -f -- "${tmp_mkf}"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000736 if test "x$MACOSX" = "xyes" && ${vi_cv_path_python} -c \
737 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then
738 vi_cv_path_python_plibs="-framework Python"
739 else
740 if test "${vi_cv_var_python_version}" = "1.4"; then
741 vi_cv_path_python_plibs="${PYTHON_CONFDIR}/libModules.a ${PYTHON_CONFDIR}/libPython.a ${PYTHON_CONFDIR}/libObjects.a ${PYTHON_CONFDIR}/libParser.a"
742 else
743 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}"
744 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200745 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 +0000746 dnl remove -ltermcap, it can conflict with an earlier -lncurses
747 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//`
748 fi
749 ])
750
751 PYTHON_LIBS="${vi_cv_path_python_plibs}"
752 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then
753 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}"
754 else
755 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}"
756 fi
Bram Moolenaar218116c2010-05-20 21:46:00 +0200757 PYTHON_NOPROTO=
Bram Moolenaar071d4272004-06-13 20:20:40 +0000758 PYTHON_SRC="if_python.c"
759 dnl For Mac OSX 10.2 config.o is included in the Python library.
760 if test "x$MACOSX" = "xyes"; then
761 PYTHON_OBJ="objects/if_python.o"
762 else
763 PYTHON_OBJ="objects/if_python.o objects/py_config.o"
764 fi
765 if test "${vi_cv_var_python_version}" = "1.4"; then
766 PYTHON_OBJ="$PYTHON_OBJ objects/py_getpath.o"
767 fi
768 PYTHON_GETPATH_CFLAGS="-DPYTHONPATH='\"${vi_cv_path_pythonpath}\"' -DPREFIX='\"${vi_cv_path_python_pfx}\"' -DEXEC_PREFIX='\"${vi_cv_path_python_epfx}\"'"
769
770 dnl On FreeBSD linking with "-pthread" is required to use threads.
771 dnl _THREAD_SAFE must be used for compiling then.
772 dnl The "-pthread" is added to $LIBS, so that the following check for
773 dnl sigaltstack() will look in libc_r (it's there in libc!).
774 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC
775 dnl will then define target-specific defines, e.g., -D_REENTRANT.
776 dnl Don't do this for Mac OSX, -pthread will generate a warning.
Bram Moolenaar218116c2010-05-20 21:46:00 +0200777 dnl Need to put -pthread in PYTHON_NOPROTO, because it cannot be used
778 dnl for cproto.
Bram Moolenaar071d4272004-06-13 20:20:40 +0000779 AC_MSG_CHECKING([if -pthread should be used])
780 threadsafe_flag=
781 thread_lib=
Bram Moolenaara1b5aa52006-10-10 09:41:28 +0000782 dnl if test "x$MACOSX" != "xyes"; then
783 if test "`(uname) 2>/dev/null`" != Darwin; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000784 test "$GCC" = yes && threadsafe_flag="-pthread"
785 if test "`(uname) 2>/dev/null`" = FreeBSD; then
786 threadsafe_flag="-D_THREAD_SAFE"
787 thread_lib="-pthread"
788 fi
789 fi
790 libs_save_old=$LIBS
791 if test -n "$threadsafe_flag"; then
792 cflags_save=$CFLAGS
793 CFLAGS="$CFLAGS $threadsafe_flag"
794 LIBS="$LIBS $thread_lib"
795 AC_TRY_LINK(,[ ],
Bram Moolenaar218116c2010-05-20 21:46:00 +0200796 AC_MSG_RESULT(yes); PYTHON_NOPROTO="$threadsafe_flag",
Bram Moolenaar071d4272004-06-13 20:20:40 +0000797 AC_MSG_RESULT(no); LIBS=$libs_save_old
798 )
799 CFLAGS=$cflags_save
800 else
801 AC_MSG_RESULT(no)
802 fi
803
804 dnl check that compiling a simple program still works with the flags
805 dnl added for Python.
806 AC_MSG_CHECKING([if compile and link flags for Python are sane])
807 cflags_save=$CFLAGS
808 libs_save=$LIBS
Bram Moolenaar218116c2010-05-20 21:46:00 +0200809 CFLAGS="$CFLAGS $PYTHON_CFLAGS $PYTHON_NOPROTO"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000810 LIBS="$LIBS $PYTHON_LIBS"
811 AC_TRY_LINK(,[ ],
812 AC_MSG_RESULT(yes); python_ok=yes,
813 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no)
814 CFLAGS=$cflags_save
815 LIBS=$libs_save
816 if test $python_ok = yes; then
817 AC_DEFINE(FEAT_PYTHON)
818 else
819 LIBS=$libs_save_old
820 PYTHON_SRC=
821 PYTHON_OBJ=
822 PYTHON_LIBS=
823 PYTHON_CFLAGS=
Bram Moolenaar218116c2010-05-20 21:46:00 +0200824 PYTHON_NOPROTO=
Bram Moolenaar071d4272004-06-13 20:20:40 +0000825 fi
826
827 fi
828 else
829 AC_MSG_RESULT(too old)
830 fi
831 fi
832fi
833AC_SUBST(PYTHON_CONFDIR)
834AC_SUBST(PYTHON_LIBS)
835AC_SUBST(PYTHON_GETPATH_CFLAGS)
836AC_SUBST(PYTHON_CFLAGS)
Bram Moolenaar218116c2010-05-20 21:46:00 +0200837AC_SUBST(PYTHON_NOPROTO)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000838AC_SUBST(PYTHON_SRC)
839AC_SUBST(PYTHON_OBJ)
840
841AC_MSG_CHECKING(--enable-tclinterp argument)
842AC_ARG_ENABLE(tclinterp,
843 [ --enable-tclinterp Include Tcl interpreter.], ,
844 [enable_tclinterp="no"])
845AC_MSG_RESULT($enable_tclinterp)
846
847if test "$enable_tclinterp" = "yes"; then
848
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000849 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420]
Bram Moolenaar071d4272004-06-13 20:20:40 +0000850 AC_MSG_CHECKING(--with-tclsh argument)
851 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)],
852 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name),
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000853 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000854 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
855 AC_SUBST(vi_cv_path_tcl)
856
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000857 dnl when no specific version specified, also try 8.4, 8.2 and 8.0
858 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then
859 tclsh_name="tclsh8.4"
860 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
861 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000862 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then
Bram Moolenaar071d4272004-06-13 20:20:40 +0000863 tclsh_name="tclsh8.2"
864 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
865 fi
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000866 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then
867 tclsh_name="tclsh8.0"
868 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
869 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +0000870 dnl still didn't find it, try without version number
871 if test "X$vi_cv_path_tcl" = "X"; then
872 tclsh_name="tclsh"
873 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name)
874 fi
875 if test "X$vi_cv_path_tcl" != "X"; then
876 AC_MSG_CHECKING(Tcl version)
877 if echo 'exit [[expr [info tclversion] < 8.0]]' | $vi_cv_path_tcl - ; then
878 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -`
879 AC_MSG_RESULT($tclver - OK);
880 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 -`
881
882 AC_MSG_CHECKING(for location of Tcl include)
883 if test "x$MACOSX" != "xyes"; then
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000884 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 +0000885 else
886 dnl For Mac OS X 10.3, use the OS-provided framework location
887 tclinc="/System/Library/Frameworks/Tcl.framework/Headers"
888 fi
Bram Moolenaar0ff8f602008-02-20 11:44:03 +0000889 TCL_INC=
Bram Moolenaar071d4272004-06-13 20:20:40 +0000890 for try in $tclinc; do
891 if test -f "$try/tcl.h"; then
892 AC_MSG_RESULT($try/tcl.h)
893 TCL_INC=$try
894 break
895 fi
896 done
897 if test -z "$TCL_INC"; then
898 AC_MSG_RESULT(<not found>)
899 SKIP_TCL=YES
900 fi
901 if test -z "$SKIP_TCL"; then
902 AC_MSG_CHECKING(for location of tclConfig.sh script)
903 if test "x$MACOSX" != "xyes"; then
904 tclcnf=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000905 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000906 else
907 dnl For Mac OS X 10.3, use the OS-provided framework location
908 tclcnf="/System/Library/Frameworks/Tcl.framework"
909 fi
910 for try in $tclcnf; do
911 if test -f $try/tclConfig.sh; then
912 AC_MSG_RESULT($try/tclConfig.sh)
913 . $try/tclConfig.sh
914 dnl use eval, because tcl 8.2 includes ${TCL_DBGX}
915 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"`
916 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the
Bram Moolenaardf3267e2005-01-25 22:07:05 +0000917 dnl "-D_ABC" items. Watch out for -DFOO=long\ long.
Bram Moolenaar4394bff2008-07-24 11:21:31 +0000918 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 +0000919 break
920 fi
921 done
922 if test -z "$TCL_LIBS"; then
923 AC_MSG_RESULT(<not found>)
924 AC_MSG_CHECKING(for Tcl library by myself)
925 tcllib=`echo $tclinc | sed s/include/lib/g`
Bram Moolenaar9b5d4dd2008-01-01 15:26:45 +0000926 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000927 for ext in .so .a ; do
928 for ver in "" $tclver ; do
929 for try in $tcllib ; do
930 trylib=tcl$ver$ext
931 if test -f $try/lib$trylib ; then
932 AC_MSG_RESULT($try/lib$trylib)
933 TCL_LIBS="-L$try -ltcl$ver -ldl -lm"
934 if test "`(uname) 2>/dev/null`" = SunOS &&
935 uname -r | grep '^5' >/dev/null; then
936 TCL_LIBS="$TCL_LIBS -R $try"
937 fi
938 break 3
939 fi
940 done
941 done
942 done
943 if test -z "$TCL_LIBS"; then
944 AC_MSG_RESULT(<not found>)
945 SKIP_TCL=YES
946 fi
947 fi
948 if test -z "$SKIP_TCL"; then
949 AC_DEFINE(FEAT_TCL)
950 TCL_SRC=if_tcl.c
951 TCL_OBJ=objects/if_tcl.o
952 TCL_PRO=if_tcl.pro
953 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS"
954 fi
955 fi
956 else
957 AC_MSG_RESULT(too old; need Tcl version 8.0 or later)
958 fi
959 fi
960fi
961AC_SUBST(TCL_SRC)
962AC_SUBST(TCL_OBJ)
963AC_SUBST(TCL_PRO)
964AC_SUBST(TCL_CFLAGS)
965AC_SUBST(TCL_LIBS)
966
967AC_MSG_CHECKING(--enable-rubyinterp argument)
968AC_ARG_ENABLE(rubyinterp,
969 [ --enable-rubyinterp Include Ruby interpreter.], ,
970 [enable_rubyinterp="no"])
971AC_MSG_RESULT($enable_rubyinterp)
972if test "$enable_rubyinterp" = "yes"; then
Bram Moolenaar165641d2010-02-17 16:23:09 +0100973 AC_MSG_CHECKING(--with-ruby-command argument)
974 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)],
975 RUBY_CMD="$withval"; AC_MSG_RESULT($RUBY_CMD),
976 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD))
Bram Moolenaar071d4272004-06-13 20:20:40 +0000977 AC_SUBST(vi_cv_path_ruby)
Bram Moolenaar165641d2010-02-17 16:23:09 +0100978 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD)
Bram Moolenaar071d4272004-06-13 20:20:40 +0000979 if test "X$vi_cv_path_ruby" != "X"; then
980 AC_MSG_CHECKING(Ruby version)
Bram Moolenaare4efc3b2005-03-07 23:16:51 +0000981 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 +0000982 AC_MSG_RESULT(OK)
983 AC_MSG_CHECKING(Ruby header files)
Bram Moolenaar165641d2010-02-17 16:23:09 +0100984 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 +0000985 if test "X$rubyhdrdir" != "X"; then
986 AC_MSG_RESULT($rubyhdrdir)
987 RUBY_CFLAGS="-I$rubyhdrdir"
Bram Moolenaar165641d2010-02-17 16:23:09 +0100988 rubyarch=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["arch"]]'`
989 if test -d "$rubyhdrdir/$rubyarch"; then
990 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyhdrdir/$rubyarch"
991 fi
992 rubyversion=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["ruby_version"]].gsub(/\./, "")[[0,2]]'`
993 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion"
Bram Moolenaar071d4272004-06-13 20:20:40 +0000994 rubylibs=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LIBS"]]'`
995 if test "X$rubylibs" != "X"; then
996 RUBY_LIBS="$rubylibs"
997 fi
998 librubyarg=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["LIBRUBYARG"]])'`
999 if test -f "$rubyhdrdir/$librubyarg"; then
1000 librubyarg="$rubyhdrdir/$librubyarg"
1001 else
1002 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e 'print Config.expand(Config::CONFIG[["libdir"]])'`
1003 if test -f "$rubylibdir/$librubyarg"; then
1004 librubyarg="$rubylibdir/$librubyarg"
1005 elif test "$librubyarg" = "libruby.a"; then
1006 dnl required on Mac OS 10.3 where libruby.a doesn't exist
1007 librubyarg="-lruby"
1008 else
1009 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print '$librubyarg'.gsub(/-L\./, %'-L#{Config.expand(Config::CONFIG[\"libdir\"])}')"`
1010 fi
1011 fi
1012
1013 if test "X$librubyarg" != "X"; then
1014 RUBY_LIBS="$librubyarg $RUBY_LIBS"
1015 fi
1016 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e 'print Config::CONFIG[["LDFLAGS"]]'`
1017 if test "X$rubyldflags" != "X"; then
Bram Moolenaar996b6d82009-07-22 09:17:23 +00001018 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only
1019 dnl be included if requested by passing --with-mac-arch to
1020 dnl configure, so strip these flags first (if present)
1021 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//'`
1022 if test "X$rubyldflags" != "X"; then
1023 LDFLAGS="$rubyldflags $LDFLAGS"
1024 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001025 fi
1026 RUBY_SRC="if_ruby.c"
1027 RUBY_OBJ="objects/if_ruby.o"
1028 RUBY_PRO="if_ruby.pro"
1029 AC_DEFINE(FEAT_RUBY)
1030 else
Bram Moolenaar165641d2010-02-17 16:23:09 +01001031 AC_MSG_RESULT(not found; disabling Ruby)
Bram Moolenaar071d4272004-06-13 20:20:40 +00001032 fi
1033 else
1034 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later)
1035 fi
1036 fi
1037fi
1038AC_SUBST(RUBY_SRC)
1039AC_SUBST(RUBY_OBJ)
1040AC_SUBST(RUBY_PRO)
1041AC_SUBST(RUBY_CFLAGS)
1042AC_SUBST(RUBY_LIBS)
1043
1044AC_MSG_CHECKING(--enable-cscope argument)
1045AC_ARG_ENABLE(cscope,
1046 [ --enable-cscope Include cscope interface.], ,
1047 [enable_cscope="no"])
1048AC_MSG_RESULT($enable_cscope)
1049if test "$enable_cscope" = "yes"; then
1050 AC_DEFINE(FEAT_CSCOPE)
1051fi
1052
1053AC_MSG_CHECKING(--enable-workshop argument)
1054AC_ARG_ENABLE(workshop,
1055 [ --enable-workshop Include Sun Visual Workshop support.], ,
1056 [enable_workshop="no"])
1057AC_MSG_RESULT($enable_workshop)
1058if test "$enable_workshop" = "yes"; then
1059 AC_DEFINE(FEAT_SUN_WORKSHOP)
1060 WORKSHOP_SRC="workshop.c integration.c"
1061 AC_SUBST(WORKSHOP_SRC)
1062 WORKSHOP_OBJ="objects/workshop.o objects/integration.o"
1063 AC_SUBST(WORKSHOP_OBJ)
1064 if test "${enable_gui-xxx}" = xxx; then
1065 enable_gui=motif
1066 fi
1067fi
1068
1069AC_MSG_CHECKING(--disable-netbeans argument)
1070AC_ARG_ENABLE(netbeans,
1071 [ --disable-netbeans Disable NetBeans integration support.],
1072 , [enable_netbeans="yes"])
1073if test "$enable_netbeans" = "yes"; then
1074 AC_MSG_RESULT(no)
1075 dnl On Solaris we need the socket and nsl library.
1076 AC_CHECK_LIB(socket, socket)
1077 AC_CHECK_LIB(nsl, gethostbyname)
1078 AC_MSG_CHECKING(whether compiling netbeans integration is possible)
1079 AC_TRY_LINK([
1080#include <stdio.h>
1081#include <stdlib.h>
1082#include <stdarg.h>
1083#include <fcntl.h>
1084#include <netdb.h>
1085#include <netinet/in.h>
1086#include <errno.h>
1087#include <sys/types.h>
1088#include <sys/socket.h>
1089 /* Check bitfields */
1090 struct nbbuf {
1091 unsigned int initDone:1;
1092 ushort signmaplen;
1093 };
1094 ], [
1095 /* Check creating a socket. */
1096 struct sockaddr_in server;
1097 (void)socket(AF_INET, SOCK_STREAM, 0);
1098 (void)htons(100);
1099 (void)gethostbyname("microsoft.com");
1100 if (errno == ECONNREFUSED)
1101 (void)connect(1, (struct sockaddr *)&server, sizeof(server));
1102 ],
1103 AC_MSG_RESULT(yes),
1104 AC_MSG_RESULT(no); enable_netbeans="no")
1105else
1106 AC_MSG_RESULT(yes)
1107fi
1108if test "$enable_netbeans" = "yes"; then
1109 AC_DEFINE(FEAT_NETBEANS_INTG)
1110 NETBEANS_SRC="netbeans.c"
1111 AC_SUBST(NETBEANS_SRC)
1112 NETBEANS_OBJ="objects/netbeans.o"
1113 AC_SUBST(NETBEANS_OBJ)
1114fi
1115
1116AC_MSG_CHECKING(--enable-sniff argument)
1117AC_ARG_ENABLE(sniff,
1118 [ --enable-sniff Include Sniff interface.], ,
1119 [enable_sniff="no"])
1120AC_MSG_RESULT($enable_sniff)
1121if test "$enable_sniff" = "yes"; then
1122 AC_DEFINE(FEAT_SNIFF)
1123 SNIFF_SRC="if_sniff.c"
1124 AC_SUBST(SNIFF_SRC)
1125 SNIFF_OBJ="objects/if_sniff.o"
1126 AC_SUBST(SNIFF_OBJ)
1127fi
1128
1129AC_MSG_CHECKING(--enable-multibyte argument)
1130AC_ARG_ENABLE(multibyte,
1131 [ --enable-multibyte Include multibyte editing support.], ,
1132 [enable_multibyte="no"])
1133AC_MSG_RESULT($enable_multibyte)
1134if test "$enable_multibyte" = "yes"; then
1135 AC_DEFINE(FEAT_MBYTE)
1136fi
1137
1138AC_MSG_CHECKING(--enable-hangulinput argument)
1139AC_ARG_ENABLE(hangulinput,
1140 [ --enable-hangulinput Include Hangul input support.], ,
1141 [enable_hangulinput="no"])
1142AC_MSG_RESULT($enable_hangulinput)
1143
1144AC_MSG_CHECKING(--enable-xim argument)
1145AC_ARG_ENABLE(xim,
1146 [ --enable-xim Include XIM input support.],
1147 AC_MSG_RESULT($enable_xim),
1148 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)])
1149dnl defining FEAT_XIM is delayed, so that it can be disabled for older GTK
1150
1151AC_MSG_CHECKING(--enable-fontset argument)
1152AC_ARG_ENABLE(fontset,
1153 [ --enable-fontset Include X fontset output support.], ,
1154 [enable_fontset="no"])
1155AC_MSG_RESULT($enable_fontset)
1156dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI
1157
1158test -z "$with_x" && with_x=yes
1159test "${enable_gui-yes}" != no -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && with_x=yes
1160if test "$with_x" = no; then
1161 AC_MSG_RESULT(defaulting to: don't HAVE_X11)
1162else
1163 dnl Do this check early, so that its failure can override user requests.
1164
1165 AC_PATH_PROG(xmkmfpath, xmkmf)
1166
1167 AC_PATH_XTRA
1168
1169 dnl On OS390Unix the X libraries are DLLs. To use them the code must
1170 dnl be compiled with a special option.
1171 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS.
1172 if test "$OS390Unix" = "yes"; then
1173 CFLAGS="$CFLAGS -W c,dll"
1174 LDFLAGS="$LDFLAGS -W l,dll"
1175 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu"
1176 fi
1177
1178 dnl On my HPUX system the X include dir is found, but the lib dir not.
1179 dnl This is a desparate try to fix this.
1180
1181 if test -d "$x_includes" && test ! -d "$x_libraries"; then
1182 x_libraries=`echo "$x_includes" | sed s/include/lib/`
1183 AC_MSG_RESULT(Corrected X libraries to $x_libraries)
1184 X_LIBS="$X_LIBS -L$x_libraries"
1185 if test "`(uname) 2>/dev/null`" = SunOS &&
1186 uname -r | grep '^5' >/dev/null; then
1187 X_LIBS="$X_LIBS -R $x_libraries"
1188 fi
1189 fi
1190
1191 if test -d "$x_libraries" && test ! -d "$x_includes"; then
1192 x_includes=`echo "$x_libraries" | sed s/lib/include/`
1193 AC_MSG_RESULT(Corrected X includes to $x_includes)
1194 X_CFLAGS="$X_CFLAGS -I$x_includes"
1195 fi
1196
1197 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed.
1198 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`"
1199 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed.
1200 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`"
1201 dnl Same for "-R/usr/lib ".
1202 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`"
1203
1204
1205 dnl Check if the X11 header files are correctly installed. On some systems
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001206 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h
1207 dnl is missing.
Bram Moolenaar071d4272004-06-13 20:20:40 +00001208 AC_MSG_CHECKING(if X11 header files can be found)
1209 cflags_save=$CFLAGS
1210 CFLAGS="$CFLAGS $X_CFLAGS"
Bram Moolenaar00ca2842008-06-26 20:14:00 +00001211 AC_TRY_COMPILE([#include <X11/Xlib.h>
1212#include <X11/Intrinsic.h>], ,
Bram Moolenaar071d4272004-06-13 20:20:40 +00001213 AC_MSG_RESULT(yes),
1214 AC_MSG_RESULT(no); no_x=yes)
1215 CFLAGS=$cflags_save
1216
1217 if test "${no_x-no}" = yes; then
1218 with_x=no
1219 else
1220 AC_DEFINE(HAVE_X11)
1221 X_LIB="-lXt -lX11";
1222 AC_SUBST(X_LIB)
1223
1224 ac_save_LDFLAGS="$LDFLAGS"
1225 LDFLAGS="-L$x_libraries $LDFLAGS"
1226
1227 dnl Check for -lXdmcp (needed on SunOS 4.1.4)
1228 dnl For HP-UX 10.20 it must be before -lSM -lICE
1229 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],,
1230 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp])
1231
1232 dnl Some systems need -lnsl -lsocket when testing for ICE.
1233 dnl The check above doesn't do this, try here (again). Also needed to get
1234 dnl them after Xdmcp. link.sh will remove them when not needed.
1235 dnl Check for other function than above to avoid the cached value
1236 AC_CHECK_LIB(ICE, IceOpenConnection,
1237 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS])
1238
1239 dnl Check for -lXpm (needed for some versions of Motif)
1240 LDFLAGS="$X_LIBS $ac_save_LDFLAGS"
1241 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],,
1242 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS])
1243
1244 dnl Check that the X11 header files don't use implicit declarations
1245 AC_MSG_CHECKING(if X11 header files implicitly declare return values)
1246 cflags_save=$CFLAGS
1247 CFLAGS="$CFLAGS $X_CFLAGS -Werror"
1248 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1249 AC_MSG_RESULT(no),
1250 CFLAGS="$CFLAGS -Wno-implicit-int"
1251 AC_TRY_COMPILE([#include <X11/Xlib.h>], ,
1252 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int",
1253 AC_MSG_RESULT(test failed)
1254 )
1255 )
1256 CFLAGS=$cflags_save
1257
1258 LDFLAGS="$ac_save_LDFLAGS"
1259
Bram Moolenaar4bdbbf72009-05-21 21:27:43 +00001260 AC_MSG_CHECKING(size of wchar_t is 2 bytes)
1261 AC_CACHE_VAL(ac_cv_small_wchar_t,
1262 [AC_TRY_RUN([
1263#include <X11/Xlib.h>
1264#if STDC_HEADERS
1265# include <stdlib.h>
1266# include <stddef.h>
1267#endif
1268 main()
1269 {
1270 if (sizeof(wchar_t) <= 2)
1271 exit(1);
1272 exit(0);
1273 }],
1274 ac_cv_small_wchar_t="no",
1275 ac_cv_small_wchar_t="yes",
1276 AC_MSG_ERROR(failed to compile test program))])
1277 AC_MSG_RESULT($ac_cv_small_wchar_t)
1278 if test "x$ac_cv_small_wchar_t" = "xyes" ; then
1279 AC_DEFINE(SMALL_WCHAR_T)
1280 fi
1281
Bram Moolenaar071d4272004-06-13 20:20:40 +00001282 fi
1283fi
1284
Bram Moolenaara7fc0102005-05-18 22:17:12 +00001285test "x$with_x" = xno -a "x$MACOSX" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no
Bram Moolenaar071d4272004-06-13 20:20:40 +00001286
1287AC_MSG_CHECKING(--enable-gui argument)
1288AC_ARG_ENABLE(gui,
Bram Moolenaar9372a112005-12-06 19:59:18 +00001289 [ --enable-gui[=OPTS] X11 GUI [default=auto] [OPTS=auto/no/gtk/gtk2/gnome/gnome2/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto")
Bram Moolenaar071d4272004-06-13 20:20:40 +00001290
1291dnl Canonicalize the --enable-gui= argument so that it can be easily compared.
1292dnl Do not use character classes for portability with old tools.
1293enable_gui_canon=`echo "_$enable_gui" | \
1294 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
1295
1296dnl Skip everything by default.
1297SKIP_GTK=YES
1298SKIP_GTK2=YES
1299SKIP_GNOME=YES
1300SKIP_MOTIF=YES
1301SKIP_ATHENA=YES
1302SKIP_NEXTAW=YES
1303SKIP_PHOTON=YES
Bram Moolenaar071d4272004-06-13 20:20:40 +00001304SKIP_CARBON=YES
1305GUITYPE=NONE
1306
Bram Moolenaarb11160e2005-01-04 21:31:43 +00001307if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00001308 SKIP_PHOTON=
1309 case "$enable_gui_canon" in
1310 no) AC_MSG_RESULT(no GUI support)
1311 SKIP_PHOTON=YES ;;
1312 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1313 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1314 photon) AC_MSG_RESULT(Photon GUI support) ;;
1315 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1316 SKIP_PHOTON=YES ;;
1317 esac
1318
1319elif test "x$MACOSX" = "xyes" -a "x$with_x" = "xno" ; then
1320 SKIP_CARBON=
1321 case "$enable_gui_canon" in
1322 no) AC_MSG_RESULT(no GUI support)
1323 SKIP_CARBON=YES ;;
1324 yes|"") AC_MSG_RESULT(yes - automatic GUI support) ;;
1325 auto) AC_MSG_RESULT(auto - automatic GUI support) ;;
1326 carbon) AC_MSG_RESULT(Carbon GUI support) ;;
1327 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported])
1328 SKIP_CARBON=YES ;;
1329 esac
1330
1331else
1332
Bram Moolenaar071d4272004-06-13 20:20:40 +00001333 case "$enable_gui_canon" in
1334 no|none) AC_MSG_RESULT(no GUI support) ;;
1335 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support)
1336 SKIP_GTK=
1337 SKIP_GTK2=
1338 SKIP_GNOME=
1339 SKIP_MOTIF=
1340 SKIP_ATHENA=
1341 SKIP_NEXTAW=
1342 SKIP_CARBON=;;
1343 gtk) AC_MSG_RESULT(GTK+ 1.x GUI support)
1344 SKIP_GTK=;;
1345 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support)
1346 SKIP_GTK=
1347 SKIP_GTK2=;;
1348 gnome) AC_MSG_RESULT(GNOME 1.x GUI support)
1349 SKIP_GNOME=
1350 SKIP_GTK=;;
1351 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support)
1352 SKIP_GNOME=
1353 SKIP_GTK=
1354 SKIP_GTK2=;;
1355 motif) AC_MSG_RESULT(Motif GUI support)
1356 SKIP_MOTIF=;;
1357 athena) AC_MSG_RESULT(Athena GUI support)
1358 SKIP_ATHENA=;;
1359 nextaw) AC_MSG_RESULT(neXtaw GUI support)
1360 SKIP_NEXTAW=;;
1361 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;;
1362 esac
1363
1364fi
1365
1366if test "x$SKIP_GTK" != "xYES" -a "$enable_gui_canon" != "gtk" -a "$enable_gui_canon" != "gtk2"; then
1367 AC_MSG_CHECKING(whether or not to look for GTK)
1368 AC_ARG_ENABLE(gtk-check,
1369 [ --enable-gtk-check If auto-select GUI, check for GTK [default=yes]],
1370 , enable_gtk_check="yes")
1371 AC_MSG_RESULT($enable_gtk_check)
1372 if test "x$enable_gtk_check" = "xno"; then
1373 SKIP_GTK=YES
1374 SKIP_GNOME=YES
1375 fi
1376fi
1377
1378if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \
1379 -a "$enable_gui_canon" != "gnome2"; then
1380 AC_MSG_CHECKING(whether or not to look for GTK+ 2)
1381 AC_ARG_ENABLE(gtk2-check,
1382 [ --enable-gtk2-check If GTK GUI, check for GTK+ 2 [default=yes]],
1383 , enable_gtk2_check="yes")
1384 AC_MSG_RESULT($enable_gtk2_check)
1385 if test "x$enable_gtk2_check" = "xno"; then
1386 SKIP_GTK2=YES
1387 fi
1388fi
1389
1390if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome" \
1391 -a "$enable_gui_canon" != "gnome2"; then
1392 AC_MSG_CHECKING(whether or not to look for GNOME)
1393 AC_ARG_ENABLE(gnome-check,
1394 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]],
1395 , enable_gnome_check="no")
1396 AC_MSG_RESULT($enable_gnome_check)
1397 if test "x$enable_gnome_check" = "xno"; then
1398 SKIP_GNOME=YES
1399 fi
1400fi
1401
1402if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then
1403 AC_MSG_CHECKING(whether or not to look for Motif)
1404 AC_ARG_ENABLE(motif-check,
1405 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]],
1406 , enable_motif_check="yes")
1407 AC_MSG_RESULT($enable_motif_check)
1408 if test "x$enable_motif_check" = "xno"; then
1409 SKIP_MOTIF=YES
1410 fi
1411fi
1412
1413if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then
1414 AC_MSG_CHECKING(whether or not to look for Athena)
1415 AC_ARG_ENABLE(athena-check,
1416 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]],
1417 , enable_athena_check="yes")
1418 AC_MSG_RESULT($enable_athena_check)
1419 if test "x$enable_athena_check" = "xno"; then
1420 SKIP_ATHENA=YES
1421 fi
1422fi
1423
1424if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then
1425 AC_MSG_CHECKING(whether or not to look for neXtaw)
1426 AC_ARG_ENABLE(nextaw-check,
1427 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]],
1428 , enable_nextaw_check="yes")
1429 AC_MSG_RESULT($enable_nextaw_check);
1430 if test "x$enable_nextaw_check" = "xno"; then
1431 SKIP_NEXTAW=YES
1432 fi
1433fi
1434
1435if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then
1436 AC_MSG_CHECKING(whether or not to look for Carbon)
1437 AC_ARG_ENABLE(carbon-check,
1438 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]],
1439 , enable_carbon_check="yes")
1440 AC_MSG_RESULT($enable_carbon_check);
1441 if test "x$enable_carbon_check" = "xno"; then
1442 SKIP_CARBON=YES
1443 fi
1444fi
1445
Bram Moolenaar843ee412004-06-30 16:16:41 +00001446
Bram Moolenaar071d4272004-06-13 20:20:40 +00001447if test "x$MACOSX" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then
1448 AC_MSG_CHECKING(for Carbon GUI)
Bram Moolenaar14716812006-05-04 21:54:08 +00001449 dnl already did the check, just give the message
Bram Moolenaar071d4272004-06-13 20:20:40 +00001450 AC_MSG_RESULT(yes);
1451 GUITYPE=CARBONGUI
Bram Moolenaare344bea2005-09-01 20:46:49 +00001452 if test "$VIMNAME" = "vim"; then
1453 VIMNAME=Vim
1454 fi
Bram Moolenaar14716812006-05-04 21:54:08 +00001455
1456 dnl Default install directory is not /usr/local
1457 if test x$prefix = xNONE; then
1458 prefix=/Applications
1459 fi
1460
1461 dnl Sorry for the hard coded default
1462 datadir='${prefix}/Vim.app/Contents/Resources'
1463
Bram Moolenaar071d4272004-06-13 20:20:40 +00001464 dnl skip everything else
1465 SKIP_GTK=YES;
1466 SKIP_GTK2=YES;
1467 SKIP_GNOME=YES;
1468 SKIP_MOTIF=YES;
1469 SKIP_ATHENA=YES;
1470 SKIP_NEXTAW=YES;
1471 SKIP_PHOTON=YES;
Bram Moolenaar071d4272004-06-13 20:20:40 +00001472 SKIP_CARBON=YES
1473fi
1474
Bram Moolenaar071d4272004-06-13 20:20:40 +00001475dnl
1476dnl Get the cflags and libraries from the gtk-config script
1477dnl
1478
1479dnl define an autoconf function to check for a specified version of GTK, and
1480dnl try to compile/link a GTK program. this gets used once for GTK 1.1.16.
1481dnl
1482dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001483dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS
Bram Moolenaar071d4272004-06-13 20:20:40 +00001484dnl
1485AC_DEFUN(AM_PATH_GTK,
1486[
1487 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then
1488 {
1489 min_gtk_version=ifelse([$1], ,0.99.7,$1)
1490 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
1491 no_gtk=""
1492 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \
1493 && $PKG_CONFIG --exists gtk+-2.0; then
1494 {
1495 dnl We should be using PKG_CHECK_MODULES() instead of this hack.
1496 dnl But I guess the dependency on pkgconfig.m4 is not wanted or
1497 dnl something like that.
1498 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001499 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0`
Bram Moolenaar071d4272004-06-13 20:20:40 +00001500 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0`
1501 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1502 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1503 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1504 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1505 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
1506 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1507 }
1508 elif test "X$GTK_CONFIG" != "Xno"; then
1509 {
1510 GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags`
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001511 GTK_LIBDIR=
Bram Moolenaar071d4272004-06-13 20:20:40 +00001512 GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs`
1513 gtk_major_version=`$GTK_CONFIG $gtk_config_args --version | \
1514 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'`
1515 gtk_minor_version=`$GTK_CONFIG $gtk_config_args --version | \
1516 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'`
1517 gtk_micro_version=`$GTK_CONFIG $gtk_config_args --version | \
1518 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'`
1519 }
1520 else
1521 no_gtk=yes
1522 fi
1523
1524 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then
1525 {
1526 ac_save_CFLAGS="$CFLAGS"
1527 ac_save_LIBS="$LIBS"
1528 CFLAGS="$CFLAGS $GTK_CFLAGS"
1529 LIBS="$LIBS $GTK_LIBS"
1530
1531 dnl
1532 dnl Now check if the installed GTK is sufficiently new. (Also sanity
1533 dnl checks the results of gtk-config to some extent
1534 dnl
1535 rm -f conf.gtktest
1536 AC_TRY_RUN([
1537#include <gtk/gtk.h>
1538#include <stdio.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00001539#if STDC_HEADERS
1540# include <stdlib.h>
1541# include <stddef.h>
1542#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00001543
1544int
1545main ()
1546{
1547int major, minor, micro;
1548char *tmp_version;
1549
1550system ("touch conf.gtktest");
1551
1552/* HP/UX 9 (%@#!) writes to sscanf strings */
1553tmp_version = g_strdup("$min_gtk_version");
1554if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
1555 printf("%s, bad version string\n", "$min_gtk_version");
1556 exit(1);
1557 }
1558
1559if ((gtk_major_version > major) ||
1560 ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
1561 ((gtk_major_version == major) && (gtk_minor_version == minor) &&
1562 (gtk_micro_version >= micro)))
1563{
1564 return 0;
1565}
1566return 1;
1567}
1568],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
1569 CFLAGS="$ac_save_CFLAGS"
1570 LIBS="$ac_save_LIBS"
1571 }
1572 fi
1573 if test "x$no_gtk" = x ; then
1574 if test "x$enable_gtktest" = "xyes"; then
1575 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1576 else
1577 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version)
1578 fi
1579 ifelse([$2], , :, [$2])
1580 else
1581 {
1582 AC_MSG_RESULT(no)
1583 GTK_CFLAGS=""
1584 GTK_LIBS=""
1585 ifelse([$3], , :, [$3])
1586 }
1587 fi
1588 }
1589 else
1590 GTK_CFLAGS=""
1591 GTK_LIBS=""
1592 ifelse([$3], , :, [$3])
1593 fi
1594 AC_SUBST(GTK_CFLAGS)
1595 AC_SUBST(GTK_LIBS)
1596 rm -f conf.gtktest
1597])
1598
1599dnl ---------------------------------------------------------------------------
1600dnl gnome
1601dnl ---------------------------------------------------------------------------
1602AC_DEFUN([GNOME_INIT_HOOK],
1603[
1604 AC_SUBST(GNOME_LIBS)
1605 AC_SUBST(GNOME_LIBDIR)
1606 AC_SUBST(GNOME_INCLUDEDIR)
1607
1608 AC_ARG_WITH(gnome-includes,
1609 [ --with-gnome-includes=DIR Specify location of GNOME headers],
1610 [CFLAGS="$CFLAGS -I$withval"]
1611 )
1612
1613 AC_ARG_WITH(gnome-libs,
1614 [ --with-gnome-libs=DIR Specify location of GNOME libs],
1615 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval]
1616 )
1617
1618 AC_ARG_WITH(gnome,
1619 [ --with-gnome Specify prefix for GNOME files],
1620 if test x$withval = xyes; then
1621 want_gnome=yes
1622 ifelse([$1], [], :, [$1])
1623 else
1624 if test "x$withval" = xno; then
1625 want_gnome=no
1626 else
1627 want_gnome=yes
1628 LDFLAGS="$LDFLAGS -L$withval/lib"
1629 CFLAGS="$CFLAGS -I$withval/include"
1630 gnome_prefix=$withval/lib
1631 fi
1632 fi,
1633 want_gnome=yes)
1634
1635 if test "x$want_gnome" = xyes -a "0$gtk_major_version" -ge 2; then
1636 {
1637 AC_MSG_CHECKING(for libgnomeui-2.0)
1638 if $PKG_CONFIG --exists libgnomeui-2.0; then
1639 AC_MSG_RESULT(yes)
1640 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0`
1641 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0`
1642 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0`
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001643
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001644 dnl On FreeBSD we need -pthread but pkg-config doesn't include it.
1645 dnl This might not be the right way but it works for me...
1646 AC_MSG_CHECKING(for FreeBSD)
1647 if test "`(uname) 2>/dev/null`" = FreeBSD; then
1648 AC_MSG_RESULT(yes, adding -pthread)
Bram Moolenaarc9b4b052006-04-30 18:54:39 +00001649 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE"
Bram Moolenaar97b2ad32006-03-18 21:40:56 +00001650 GNOME_LIBS="$GNOME_LIBS -pthread"
1651 else
1652 AC_MSG_RESULT(no)
1653 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00001654 $1
1655 else
1656 AC_MSG_RESULT(not found)
1657 if test "x$2" = xfail; then
1658 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config)
1659 fi
1660 fi
1661 }
1662 elif test "x$want_gnome" = xyes; then
1663 {
1664 AC_PATH_PROG(GNOME_CONFIG,gnome-config,no)
1665 if test "$GNOME_CONFIG" = "no"; then
1666 no_gnome_config="yes"
1667 else
1668 AC_MSG_CHECKING(if $GNOME_CONFIG works)
1669 if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then
1670 AC_MSG_RESULT(yes)
1671 GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome gnomeui`"
1672 GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`"
1673 GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`"
1674 $1
1675 else
1676 AC_MSG_RESULT(no)
1677 no_gnome_config="yes"
1678 fi
1679 fi
1680
1681 if test x$exec_prefix = xNONE; then
1682 if test x$prefix = xNONE; then
1683 gnome_prefix=$ac_default_prefix/lib
1684 else
1685 gnome_prefix=$prefix/lib
1686 fi
1687 else
1688 gnome_prefix=`eval echo \`echo $libdir\``
1689 fi
1690
1691 if test "$no_gnome_config" = "yes"; then
1692 AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix)
1693 if test -f $gnome_prefix/gnomeConf.sh; then
1694 AC_MSG_RESULT(found)
1695 echo "loading gnome configuration from" \
1696 "$gnome_prefix/gnomeConf.sh"
1697 . $gnome_prefix/gnomeConf.sh
1698 $1
1699 else
1700 AC_MSG_RESULT(not found)
1701 if test x$2 = xfail; then
1702 AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install)
1703 fi
1704 fi
1705 fi
1706 }
1707 fi
1708])
1709
1710AC_DEFUN([GNOME_INIT],[
1711 GNOME_INIT_HOOK([],fail)
1712])
1713
1714
1715dnl ---------------------------------------------------------------------------
1716dnl Check for GTK. First checks for gtk-config, cause it needs that to get the
1717dnl correct compiler flags. Then checks for GTK 1.1.16. If that fails, then
1718dnl it checks for 1.0.6. If both fail, then continue on for Motif as before...
1719dnl ---------------------------------------------------------------------------
1720if test -z "$SKIP_GTK"; then
1721
1722 AC_MSG_CHECKING(--with-gtk-prefix argument)
1723 AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
1724 gtk_config_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1725 gtk_config_prefix=""; AC_MSG_RESULT(no))
1726
1727 AC_MSG_CHECKING(--with-gtk-exec-prefix argument)
1728 AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
1729 gtk_config_exec_prefix="$withval"; AC_MSG_RESULT($gtk_config_prefix),
1730 gtk_config_exec_prefix=""; AC_MSG_RESULT(no))
1731
1732 AC_MSG_CHECKING(--disable-gtktest argument)
1733 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
1734 , enable_gtktest=yes)
1735 if test "x$enable_gtktest" = "xyes" ; then
1736 AC_MSG_RESULT(gtk test enabled)
1737 else
1738 AC_MSG_RESULT(gtk test disabled)
1739 fi
1740
1741 if test "x$gtk_config_prefix" != "x" ; then
1742 gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
1743 GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
1744 fi
1745 if test "x$gtk_config_exec_prefix" != "x" ; then
1746 gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
1747 GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
1748 fi
1749 if test "X$GTK_CONFIG" = "X"; then
1750 AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
1751 if test "X$GTK_CONFIG" = "Xno"; then
1752 dnl Some distributions call it gtk12-config, annoying!
1753 AC_PATH_PROG(GTK12_CONFIG, gtk12-config, no)
1754 GTK_CONFIG="$GTK12_CONFIG"
1755 fi
1756 else
1757 AC_MSG_RESULT(Using GTK configuration program $GTK_CONFIG)
1758 fi
1759 if test "X$PKG_CONFIG" = "X"; then
1760 AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
1761 fi
1762
1763 if test "x$GTK_CONFIG:$PKG_CONFIG" != "xno:no"; then
1764 dnl First try finding version 2.2.0 or later. The 2.0.x series has
1765 dnl problems (bold fonts, --remote doesn't work).
1766 if test "X$SKIP_GTK2" != "XYES"; then
1767 AM_PATH_GTK(2.2.0,
Bram Moolenaar7b0294c2004-10-11 10:16:09 +00001768 [GUI_LIB_LOC="$GTK_LIBDIR"
1769 GTK_LIBNAME="$GTK_LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00001770 GUI_INC_LOC="$GTK_CFLAGS"], )
1771 if test "x$GTK_CFLAGS" != "x"; then
1772 SKIP_ATHENA=YES
1773 SKIP_NEXTAW=YES
1774 SKIP_MOTIF=YES
1775 GUITYPE=GTK
1776 AC_SUBST(GTK_LIBNAME)
1777 fi
1778 fi
1779
1780 dnl If there is no 2.2.0 or later try the 1.x.x series. We require at
1781 dnl least GTK 1.1.16. 1.0.6 doesn't work. 1.1.1 to 1.1.15
1782 dnl were test versions.
1783 if test "x$GUITYPE" != "xGTK"; then
1784 SKIP_GTK2=YES
1785 AM_PATH_GTK(1.1.16,
1786 [GTK_LIBNAME="$GTK_LIBS"
1787 GUI_INC_LOC="$GTK_CFLAGS"], )
1788 if test "x$GTK_CFLAGS" != "x"; then
1789 SKIP_ATHENA=YES
1790 SKIP_NEXTAW=YES
1791 SKIP_MOTIF=YES
1792 GUITYPE=GTK
1793 AC_SUBST(GTK_LIBNAME)
1794 fi
1795 fi
1796 fi
1797 dnl Give a warning if GTK is older than 1.2.3
1798 if test "x$GUITYPE" = "xGTK"; then
1799 if test "$gtk_major_version" = 1 -a "0$gtk_minor_version" -lt 2 \
1800 -o "$gtk_major_version" = 1 -a "$gtk_minor_version" = 2 -a "0$gtk_micro_version" -lt 3; then
1801 AC_MSG_RESULT(this GTK version is old; version 1.2.3 or later is recommended)
1802 else
1803 {
1804 if test "0$gtk_major_version" -ge 2; then
1805 AC_DEFINE(HAVE_GTK2)
1806 if test "$gtk_minor_version" = 1 -a "0$gtk_micro_version" -ge 1 \
1807 || test "0$gtk_minor_version" -ge 2 \
1808 || test "0$gtk_major_version" -gt 2; then
1809 AC_DEFINE(HAVE_GTK_MULTIHEAD)
1810 fi
1811 fi
1812 dnl
1813 dnl if GTK exists, and it's not the 1.0.x series, then check for GNOME.
1814 dnl
1815 if test -z "$SKIP_GNOME"; then
1816 {
1817 GNOME_INIT_HOOK([have_gnome=yes])
1818 if test x$have_gnome = xyes ; then
1819 AC_DEFINE(FEAT_GUI_GNOME)
1820 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR"
1821 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS"
1822 fi
1823 }
1824 fi
1825 }
1826 fi
1827 fi
1828fi
1829
1830dnl Check for Motif include files location.
1831dnl The LAST one found is used, this makes the highest version to be used,
1832dnl e.g. when Motif1.2 and Motif2.0 are both present.
1833
1834if test -z "$SKIP_MOTIF"; then
1835 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"
1836 dnl Remove "-I" from before $GUI_INC_LOC if it's there
1837 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`"
1838
1839 AC_MSG_CHECKING(for location of Motif GUI includes)
1840 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC"
1841 GUI_INC_LOC=
1842 for try in $gui_includes; do
1843 if test -f "$try/Xm/Xm.h"; then
1844 GUI_INC_LOC=$try
1845 fi
1846 done
1847 if test -n "$GUI_INC_LOC"; then
1848 if test "$GUI_INC_LOC" = /usr/include; then
1849 GUI_INC_LOC=
1850 AC_MSG_RESULT(in default path)
1851 else
1852 AC_MSG_RESULT($GUI_INC_LOC)
1853 fi
1854 else
1855 AC_MSG_RESULT(<not found>)
1856 SKIP_MOTIF=YES
1857 fi
1858fi
1859
1860dnl Check for Motif library files location. In the same order as the include
1861dnl files, to avoid a mixup if several versions are present
1862
1863if test -z "$SKIP_MOTIF"; then
1864 AC_MSG_CHECKING(--with-motif-lib argument)
1865 AC_ARG_WITH(motif-lib,
1866 [ --with-motif-lib=STRING Library for Motif ],
1867 [ MOTIF_LIBNAME="${withval}" ] )
1868
1869 if test -n "$MOTIF_LIBNAME"; then
1870 AC_MSG_RESULT($MOTIF_LIBNAME)
1871 GUI_LIB_LOC=
1872 else
1873 AC_MSG_RESULT(no)
1874
1875 dnl Remove "-L" from before $GUI_LIB_LOC if it's there
1876 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`"
1877
1878 AC_MSG_CHECKING(for location of Motif GUI libs)
1879 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"
1880 GUI_LIB_LOC=
1881 for try in $gui_libs; do
Bram Moolenaar325b7a22004-07-05 15:58:32 +00001882 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do
Bram Moolenaar071d4272004-06-13 20:20:40 +00001883 if test -f "$libtry"; then
1884 GUI_LIB_LOC=$try
1885 fi
1886 done
1887 done
1888 if test -n "$GUI_LIB_LOC"; then
1889 dnl Remove /usr/lib, it causes trouble on some systems
1890 if test "$GUI_LIB_LOC" = /usr/lib; then
1891 GUI_LIB_LOC=
1892 AC_MSG_RESULT(in default path)
1893 else
1894 if test -n "$GUI_LIB_LOC"; then
1895 AC_MSG_RESULT($GUI_LIB_LOC)
1896 if test "`(uname) 2>/dev/null`" = SunOS &&
1897 uname -r | grep '^5' >/dev/null; then
1898 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC"
1899 fi
1900 fi
1901 fi
1902 MOTIF_LIBNAME=-lXm
1903 else
1904 AC_MSG_RESULT(<not found>)
1905 SKIP_MOTIF=YES
1906 fi
1907 fi
1908fi
1909
1910if test -z "$SKIP_MOTIF"; then
1911 SKIP_ATHENA=YES
1912 SKIP_NEXTAW=YES
1913 GUITYPE=MOTIF
1914 AC_SUBST(MOTIF_LIBNAME)
1915fi
1916
1917dnl Check if the Athena files can be found
1918
1919GUI_X_LIBS=
1920
1921if test -z "$SKIP_ATHENA"; then
1922 AC_MSG_CHECKING(if Athena header files can be found)
1923 cflags_save=$CFLAGS
1924 CFLAGS="$CFLAGS $X_CFLAGS"
1925 AC_TRY_COMPILE([
1926#include <X11/Intrinsic.h>
1927#include <X11/Xaw/Paned.h>], ,
1928 AC_MSG_RESULT(yes),
1929 AC_MSG_RESULT(no); SKIP_ATHENA=YES )
1930 CFLAGS=$cflags_save
1931fi
1932
1933if test -z "$SKIP_ATHENA"; then
1934 GUITYPE=ATHENA
1935fi
1936
1937if test -z "$SKIP_NEXTAW"; then
1938 AC_MSG_CHECKING(if neXtaw header files can be found)
1939 cflags_save=$CFLAGS
1940 CFLAGS="$CFLAGS $X_CFLAGS"
1941 AC_TRY_COMPILE([
1942#include <X11/Intrinsic.h>
1943#include <X11/neXtaw/Paned.h>], ,
1944 AC_MSG_RESULT(yes),
1945 AC_MSG_RESULT(no); SKIP_NEXTAW=YES )
1946 CFLAGS=$cflags_save
1947fi
1948
1949if test -z "$SKIP_NEXTAW"; then
1950 GUITYPE=NEXTAW
1951fi
1952
1953if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
1954 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty
1955 dnl Avoid adding it when it twice
1956 if test -n "$GUI_INC_LOC"; then
1957 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`"
1958 fi
1959 if test -n "$GUI_LIB_LOC"; then
1960 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`"
1961 fi
1962
1963 dnl Check for -lXext and then for -lXmu
1964 ldflags_save=$LDFLAGS
1965 LDFLAGS="$X_LIBS $LDFLAGS"
1966 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],,
1967 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1968 dnl For Solaris we need -lw and -ldl before linking with -lXmu works.
1969 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],,
1970 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1971 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],,
1972 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1973 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],,
1974 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1975 if test -z "$SKIP_MOTIF"; then
1976 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],,
1977 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
1978 fi
1979 LDFLAGS=$ldflags_save
1980
1981 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed.
1982 AC_MSG_CHECKING(for extra X11 defines)
1983 NARROW_PROTO=
1984 rm -fr conftestdir
1985 if mkdir conftestdir; then
1986 cd conftestdir
1987 cat > Imakefile <<'EOF'
1988acfindx:
1989 @echo 'NARROW_PROTO="${PROTO_DEFINES}"'
1990EOF
1991 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then
1992 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make`
1993 fi
1994 cd ..
1995 rm -fr conftestdir
1996 fi
1997 if test -z "$NARROW_PROTO"; then
1998 AC_MSG_RESULT(no)
1999 else
2000 AC_MSG_RESULT($NARROW_PROTO)
2001 fi
2002 AC_SUBST(NARROW_PROTO)
2003fi
2004
2005dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs
2006dnl use the X11 include path
2007if test "$enable_xsmp" = "yes"; then
2008 cppflags_save=$CPPFLAGS
2009 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2010 AC_CHECK_HEADERS(X11/SM/SMlib.h)
2011 CPPFLAGS=$cppflags_save
2012fi
2013
2014
2015if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK"; then
2016 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path
2017 cppflags_save=$CPPFLAGS
2018 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2019 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h)
2020
2021 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h
2022 if test ! "$enable_xim" = "no"; then
2023 AC_MSG_CHECKING(for XIMText in X11/Xlib.h)
2024 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>],
2025 AC_MSG_RESULT(yes),
2026 AC_MSG_RESULT(no; xim has been disabled); enable_xim = "no")
2027 fi
2028 CPPFLAGS=$cppflags_save
2029
2030 dnl automatically enable XIM when hangul input isn't enabled
2031 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \
2032 -a "x$GUITYPE" != "xNONE" ; then
2033 AC_MSG_RESULT(X GUI selected; xim has been enabled)
2034 enable_xim="yes"
2035 fi
2036fi
2037
2038if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then
2039 cppflags_save=$CPPFLAGS
2040 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002041dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h
2042 AC_MSG_CHECKING([for X11/Xmu/Editres.h])
2043 AC_TRY_COMPILE([
2044#include <X11/Intrinsic.h>
2045#include <X11/Xmu/Editres.h>],
2046 [int i; i = 0;],
2047 AC_MSG_RESULT(yes)
2048 AC_DEFINE(HAVE_X11_XMU_EDITRES_H),
2049 AC_MSG_RESULT(no))
Bram Moolenaar071d4272004-06-13 20:20:40 +00002050 CPPFLAGS=$cppflags_save
2051fi
2052
2053dnl Only use the Xm directory when compiling Motif, don't use it for Athena
2054if test -z "$SKIP_MOTIF"; then
2055 cppflags_save=$CPPFLAGS
2056 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
Bram Moolenaar2ce06f62005-01-31 19:19:04 +00002057 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 +00002058 Xm/UnhighlightT.h Xm/Notebook.h)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002059
2060 if test $ac_cv_header_Xm_XpmP_h = yes; then
2061 dnl Solaris uses XpmAttributes_21, very annoying.
2062 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h])
2063 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;],
2064 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21),
2065 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
2066 )
2067 else
Bram Moolenaar57657d82006-04-21 22:12:41 +00002068 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes)
Bram Moolenaar910f66f2006-04-05 20:41:53 +00002069 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002070 CPPFLAGS=$cppflags_save
2071fi
2072
2073if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then
2074 AC_MSG_RESULT(no GUI selected; xim has been disabled)
2075 enable_xim="no"
2076fi
2077if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then
2078 AC_MSG_RESULT(no GUI selected; fontset has been disabled)
2079 enable_fontset="no"
2080fi
2081if test "x$GUITYPE:$enable_fontset" = "xGTK:yes" -a "0$gtk_major_version" -ge 2; then
2082 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled)
2083 enable_fontset="no"
2084fi
2085
Bram Moolenaar071d4272004-06-13 20:20:40 +00002086if test -z "$SKIP_PHOTON"; then
2087 GUITYPE=PHOTONGUI
2088fi
2089
2090AC_SUBST(GUI_INC_LOC)
2091AC_SUBST(GUI_LIB_LOC)
2092AC_SUBST(GUITYPE)
2093AC_SUBST(GUI_X_LIBS)
2094
2095if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then
2096 AC_MSG_ERROR([cannot use workshop without Motif])
2097fi
2098
2099dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled
2100if test "$enable_xim" = "yes"; then
2101 AC_DEFINE(FEAT_XIM)
2102fi
2103if test "$enable_fontset" = "yes"; then
2104 AC_DEFINE(FEAT_XFONTSET)
2105fi
2106
2107
2108dnl ---------------------------------------------------------------------------
2109dnl end of GUI-checking
2110dnl ---------------------------------------------------------------------------
2111
2112
2113dnl Only really enable hangul input when GUI and XFONTSET are available
2114if test "$enable_hangulinput" = "yes"; then
2115 if test "x$GUITYPE" = "xNONE"; then
2116 AC_MSG_RESULT(no GUI selected; hangul input has been disabled)
2117 enable_hangulinput=no
2118 else
2119 AC_DEFINE(FEAT_HANGULIN)
2120 HANGULIN_SRC=hangulin.c
2121 AC_SUBST(HANGULIN_SRC)
2122 HANGULIN_OBJ=objects/hangulin.o
2123 AC_SUBST(HANGULIN_OBJ)
2124 fi
2125fi
2126
2127dnl Checks for libraries and include files.
2128
Bram Moolenaar446cb832008-06-24 21:56:24 +00002129AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken],
2130 [
2131 AC_RUN_IFELSE([[
2132#include "confdefs.h"
2133#include <ctype.h>
2134#if STDC_HEADERS
2135# include <stdlib.h>
2136# include <stddef.h>
2137#endif
2138main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); }
2139 ]],[
2140 vim_cv_toupper_broken=yes
2141 ],[
2142 vim_cv_toupper_broken=no
2143 ],[
2144 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken')
2145 ])])
2146
2147if test "x$vim_cv_toupper_broken" = "xyes" ; then
2148 AC_DEFINE(BROKEN_TOUPPER)
2149fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002150
2151AC_MSG_CHECKING(whether __DATE__ and __TIME__ work)
Bram Moolenaar446cb832008-06-24 21:56:24 +00002152AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002153 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME),
2154 AC_MSG_RESULT(no))
2155
Bram Moolenaar0c094b92009-05-14 20:20:33 +00002156AC_MSG_CHECKING(whether __attribute__((unused)) is allowed)
2157AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));],
2158 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED),
2159 AC_MSG_RESULT(no))
2160
Bram Moolenaar071d4272004-06-13 20:20:40 +00002161dnl Checks for header files.
2162AC_CHECK_HEADER(elf.h, HAS_ELF=1)
2163dnl AC_CHECK_HEADER(dwarf.h, SVR4=1)
2164if test "$HAS_ELF" = 1; then
2165 AC_CHECK_LIB(elf, main)
2166fi
2167
2168AC_HEADER_DIRENT
2169
Bram Moolenaar071d4272004-06-13 20:20:40 +00002170dnl If sys/wait.h is not found it might still exist but not be POSIX
2171dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT)
2172if test $ac_cv_header_sys_wait_h = no; then
2173 AC_MSG_CHECKING([for sys/wait.h that defines union wait])
2174 AC_TRY_COMPILE([#include <sys/wait.h>],
2175 [union wait xx, yy; xx = yy],
2176 AC_MSG_RESULT(yes)
2177 AC_DEFINE(HAVE_SYS_WAIT_H)
2178 AC_DEFINE(HAVE_UNION_WAIT),
2179 AC_MSG_RESULT(no))
2180fi
2181
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002182AC_CHECK_HEADERS(stdarg.h stdint.h stdlib.h string.h \
2183 sys/select.h sys/utsname.h termcap.h fcntl.h \
2184 sgtty.h sys/ioctl.h sys/time.h sys/types.h \
2185 termio.h iconv.h inttypes.h langinfo.h math.h \
2186 unistd.h stropts.h errno.h sys/resource.h \
2187 sys/systeminfo.h locale.h sys/stream.h termios.h \
2188 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \
2189 utime.h sys/param.h libintl.h libgen.h \
2190 util/debug.h util/msg18n.h frame.h sys/acl.h \
2191 sys/access.h sys/sysinfo.h wchar.h wctype.h)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002192
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002193dnl sys/ptem.h depends on sys/stream.h on Solaris
2194AC_CHECK_HEADERS(sys/ptem.h, [], [],
2195[#if defined HAVE_SYS_STREAM_H
2196# include <sys/stream.h>
2197#endif])
2198
Bram Moolenaar32f31b12009-05-21 13:20:59 +00002199dnl sys/sysctl.h depends on sys/param.h on OpenBSD
2200AC_CHECK_HEADERS(sys/sysctl.h, [], [],
2201[#if defined HAVE_SYS_PARAM_H
2202# include <sys/param.h>
2203#endif])
2204
Bram Moolenaar00ca2842008-06-26 20:14:00 +00002205
Bram Moolenaardf3267e2005-01-25 22:07:05 +00002206dnl pthread_np.h may exist but can only be used after including pthread.h
2207AC_MSG_CHECKING([for pthread_np.h])
2208AC_TRY_COMPILE([
2209#include <pthread.h>
2210#include <pthread_np.h>],
2211 [int i; i = 0;],
2212 AC_MSG_RESULT(yes)
2213 AC_DEFINE(HAVE_PTHREAD_NP_H),
2214 AC_MSG_RESULT(no))
2215
Bram Moolenaare344bea2005-09-01 20:46:49 +00002216AC_CHECK_HEADERS(strings.h)
Bram Moolenaar9372a112005-12-06 19:59:18 +00002217if test "x$MACOSX" = "xyes"; then
2218 dnl The strings.h file on OS/X contains a warning and nothing useful.
2219 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2220else
Bram Moolenaar071d4272004-06-13 20:20:40 +00002221
2222dnl Check if strings.h and string.h can both be included when defined.
2223AC_MSG_CHECKING([if strings.h can be included after string.h])
2224cppflags_save=$CPPFLAGS
2225CPPFLAGS="$CPPFLAGS $X_CFLAGS"
2226AC_TRY_COMPILE([
2227#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO)
2228# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */
2229 /* but don't do it on AIX 5.1 (Uribarri) */
2230#endif
2231#ifdef HAVE_XM_XM_H
2232# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */
2233#endif
2234#ifdef HAVE_STRING_H
2235# include <string.h>
2236#endif
2237#if defined(HAVE_STRINGS_H)
2238# include <strings.h>
2239#endif
2240 ], [int i; i = 0;],
2241 AC_MSG_RESULT(yes),
2242 AC_DEFINE(NO_STRINGS_WITH_STRING_H)
2243 AC_MSG_RESULT(no))
2244CPPFLAGS=$cppflags_save
Bram Moolenaar9372a112005-12-06 19:59:18 +00002245fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002246
2247dnl Checks for typedefs, structures, and compiler characteristics.
2248AC_PROG_GCC_TRADITIONAL
2249AC_C_CONST
Bram Moolenaar76243bd2009-03-02 01:47:02 +00002250AC_C_VOLATILE
Bram Moolenaar071d4272004-06-13 20:20:40 +00002251AC_TYPE_MODE_T
2252AC_TYPE_OFF_T
2253AC_TYPE_PID_T
2254AC_TYPE_SIZE_T
2255AC_TYPE_UID_T
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002256AC_TYPE_UINT32_T
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002257
Bram Moolenaar071d4272004-06-13 20:20:40 +00002258AC_HEADER_TIME
2259AC_CHECK_TYPE(ino_t, long)
2260AC_CHECK_TYPE(dev_t, unsigned)
Bram Moolenaar0bbabe82010-05-17 20:32:55 +02002261AC_C_BIGENDIAN(,,,)
Bram Moolenaar071d4272004-06-13 20:20:40 +00002262
2263AC_MSG_CHECKING(for rlim_t)
2264if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then
2265 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t])
2266else
2267 AC_EGREP_CPP(dnl
2268changequote(<<,>>)dnl
2269<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl
2270changequote([,]),
2271 [
2272#include <sys/types.h>
2273#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002274# include <stdlib.h>
2275# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002276#endif
2277#ifdef HAVE_SYS_RESOURCE_H
Bram Moolenaar446cb832008-06-24 21:56:24 +00002278# include <sys/resource.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002279#endif
2280 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no)
2281 AC_MSG_RESULT($ac_cv_type_rlim_t)
2282fi
2283if test $ac_cv_type_rlim_t = no; then
2284 cat >> confdefs.h <<\EOF
2285#define rlim_t unsigned long
2286EOF
2287fi
2288
2289AC_MSG_CHECKING(for stack_t)
2290if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then
2291 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t])
2292else
2293 AC_EGREP_CPP(stack_t,
2294 [
2295#include <sys/types.h>
2296#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002297# include <stdlib.h>
2298# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002299#endif
2300#include <signal.h>
2301 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no)
2302 AC_MSG_RESULT($ac_cv_type_stack_t)
2303fi
2304if test $ac_cv_type_stack_t = no; then
2305 cat >> confdefs.h <<\EOF
2306#define stack_t struct sigaltstack
2307EOF
2308fi
2309
2310dnl BSDI uses ss_base while others use ss_sp for the stack pointer.
2311AC_MSG_CHECKING(whether stack_t has an ss_base field)
2312AC_TRY_COMPILE([
2313#include <sys/types.h>
2314#if STDC_HEADERS
Bram Moolenaar446cb832008-06-24 21:56:24 +00002315# include <stdlib.h>
2316# include <stddef.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002317#endif
2318#include <signal.h>
2319#include "confdefs.h"
2320 ], [stack_t sigstk; sigstk.ss_base = 0; ],
2321 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE),
2322 AC_MSG_RESULT(no))
2323
2324olibs="$LIBS"
2325AC_MSG_CHECKING(--with-tlib argument)
2326AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],)
2327if test -n "$with_tlib"; then
2328 AC_MSG_RESULT($with_tlib)
2329 LIBS="$LIBS -l$with_tlib"
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002330 AC_MSG_CHECKING(for linking with $with_tlib library)
2331 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED))
2332 dnl Need to check for tgetent() below.
2333 olibs="$LIBS"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002334else
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002335 AC_MSG_RESULT([empty: automatic terminal library selection])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002336 dnl On HP-UX 10.10 termcap or termlib should be used instead of
2337 dnl curses, because curses is much slower.
2338 dnl Newer versions of ncurses are preferred over anything.
2339 dnl Older versions of ncurses have bugs, get a new one!
2340 dnl Digital Unix (OSF1) should use curses (Ronald Schild).
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002341 dnl On SCO Openserver should prefer termlib (Roger Cornelius).
Bram Moolenaar071d4272004-06-13 20:20:40 +00002342 case "`uname -s 2>/dev/null`" in
Bram Moolenaara1b5aa52006-10-10 09:41:28 +00002343 OSF1|SCO_SV) tlibs="ncurses curses termlib termcap";;
Bram Moolenaar071d4272004-06-13 20:20:40 +00002344 *) tlibs="ncurses termlib termcap curses";;
2345 esac
2346 for libname in $tlibs; do
2347 AC_CHECK_LIB(${libname}, tgetent,,)
2348 if test "x$olibs" != "x$LIBS"; then
2349 dnl It's possible that a library is found but it doesn't work
2350 dnl e.g., shared library that cannot be found
2351 dnl compile and run a test program to be sure
2352 AC_TRY_RUN([
2353#ifdef HAVE_TERMCAP_H
2354# include <termcap.h>
2355#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002356#if STDC_HEADERS
2357# include <stdlib.h>
2358# include <stddef.h>
2359#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002360main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }],
2361 res="OK", res="FAIL", res="FAIL")
2362 if test "$res" = "OK"; then
2363 break
2364 fi
2365 AC_MSG_RESULT($libname library is not usable)
2366 LIBS="$olibs"
2367 fi
2368 done
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002369 if test "x$olibs" = "x$LIBS"; then
2370 AC_MSG_RESULT(no terminal library found)
2371 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002372fi
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002373
2374if test "x$olibs" = "x$LIBS"; then
2375 AC_MSG_CHECKING([for tgetent()])
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00002376 AC_TRY_LINK([],
Bram Moolenaar1cd871b2004-12-19 22:46:22 +00002377 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");],
2378 AC_MSG_RESULT(yes),
2379 AC_MSG_ERROR([NOT FOUND!
2380 You need to install a terminal library; for example ncurses.
2381 Or specify the name of the library with --with-tlib.]))
2382fi
2383
Bram Moolenaar446cb832008-06-24 21:56:24 +00002384AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo],
2385 [
2386 AC_RUN_IFELSE([[
2387#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002388#ifdef HAVE_TERMCAP_H
2389# include <termcap.h>
2390#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002391#ifdef HAVE_STRING_H
2392# include <string.h>
2393#endif
2394#if STDC_HEADERS
2395# include <stdlib.h>
2396# include <stddef.h>
2397#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002398main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002399{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); }
2400 ]],[
2401 vim_cv_terminfo=no
2402 ],[
2403 vim_cv_terminfo=yes
2404 ],[
2405 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo')
2406 ])
2407 ])
2408
2409if test "x$vim_cv_terminfo" = "xyes" ; then
2410 AC_DEFINE(TERMINFO)
2411fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002412
2413if test "x$olibs" != "x$LIBS"; then
Bram Moolenaar446cb832008-06-24 21:56:24 +00002414 AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgent],
2415 [
2416 AC_RUN_IFELSE([[
2417#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002418#ifdef HAVE_TERMCAP_H
2419# include <termcap.h>
2420#endif
Bram Moolenaar446cb832008-06-24 21:56:24 +00002421#if STDC_HEADERS
2422# include <stdlib.h>
2423# include <stddef.h>
2424#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002425main()
Bram Moolenaar446cb832008-06-24 21:56:24 +00002426{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); }
2427 ]],[
2428 vim_cv_tgent=zero
2429 ],[
2430 vim_cv_tgent=non-zero
2431 ],[
2432 AC_MSG_ERROR(failed to compile test program.)
2433 ])
2434 ])
2435
2436 if test "x$vim_cv_tgent" = "xzero" ; then
2437 AC_DEFINE(TGETENT_ZERO_ERR, 0)
2438 fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002439fi
2440
2441AC_MSG_CHECKING(whether termcap.h contains ospeed)
2442AC_TRY_LINK([
2443#ifdef HAVE_TERMCAP_H
2444# include <termcap.h>
2445#endif
2446 ], [ospeed = 20000],
2447 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED),
2448 [AC_MSG_RESULT(no)
2449 AC_MSG_CHECKING(whether ospeed can be extern)
2450 AC_TRY_LINK([
2451#ifdef HAVE_TERMCAP_H
2452# include <termcap.h>
2453#endif
2454extern short ospeed;
2455 ], [ospeed = 20000],
2456 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN),
2457 AC_MSG_RESULT(no))]
2458 )
2459
2460AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC])
2461AC_TRY_LINK([
2462#ifdef HAVE_TERMCAP_H
2463# include <termcap.h>
2464#endif
2465 ], [if (UP == 0 && BC == 0) PC = 1],
2466 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC),
2467 [AC_MSG_RESULT(no)
2468 AC_MSG_CHECKING([whether UP, BC and PC can be extern])
2469 AC_TRY_LINK([
2470#ifdef HAVE_TERMCAP_H
2471# include <termcap.h>
2472#endif
2473extern char *UP, *BC, PC;
2474 ], [if (UP == 0 && BC == 0) PC = 1],
2475 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN),
2476 AC_MSG_RESULT(no))]
2477 )
2478
2479AC_MSG_CHECKING(whether tputs() uses outfuntype)
2480AC_TRY_COMPILE([
2481#ifdef HAVE_TERMCAP_H
2482# include <termcap.h>
2483#endif
2484 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)],
2485 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE),
2486 AC_MSG_RESULT(no))
2487
2488dnl On some SCO machines sys/select redefines struct timeval
2489AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included])
2490AC_TRY_COMPILE([
2491#include <sys/types.h>
2492#include <sys/time.h>
2493#include <sys/select.h>], ,
2494 AC_MSG_RESULT(yes)
2495 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME),
2496 AC_MSG_RESULT(no))
2497
2498dnl AC_DECL_SYS_SIGLIST
2499
2500dnl Checks for pty.c (copied from screen) ==========================
2501AC_MSG_CHECKING(for /dev/ptc)
2502if test -r /dev/ptc; then
2503 AC_DEFINE(HAVE_DEV_PTC)
2504 AC_MSG_RESULT(yes)
2505else
2506 AC_MSG_RESULT(no)
2507fi
2508
2509AC_MSG_CHECKING(for SVR4 ptys)
2510if test -c /dev/ptmx ; then
2511 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);],
2512 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS),
2513 AC_MSG_RESULT(no))
2514else
2515 AC_MSG_RESULT(no)
2516fi
2517
2518AC_MSG_CHECKING(for ptyranges)
2519if test -d /dev/ptym ; then
2520 pdir='/dev/ptym'
2521else
2522 pdir='/dev'
2523fi
2524dnl SCO uses ptyp%d
2525AC_EGREP_CPP(yes,
2526[#ifdef M_UNIX
2527 yes;
2528#endif
2529 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`)
2530dnl if test -c /dev/ptyp19; then
2531dnl ptys=`echo /dev/ptyp??`
2532dnl else
2533dnl ptys=`echo $pdir/pty??`
2534dnl fi
2535if test "$ptys" != "$pdir/pty??" ; then
2536 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
2537 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
2538 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0")
2539 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1")
2540 AC_MSG_RESULT([$p0 / $p1])
2541else
2542 AC_MSG_RESULT([don't know])
2543fi
2544
2545dnl **** pty mode/group handling ****
2546dnl
2547dnl support provided by Luke Mewburn <lm@rmit.edu.au>, 931222
Bram Moolenaar071d4272004-06-13 20:20:40 +00002548rm -f conftest_grp
Bram Moolenaar446cb832008-06-24 21:56:24 +00002549AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group],
2550 [
2551 AC_RUN_IFELSE([[
2552#include "confdefs.h"
Bram Moolenaar071d4272004-06-13 20:20:40 +00002553#include <sys/types.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002554#if STDC_HEADERS
2555# include <stdlib.h>
2556# include <stddef.h>
2557#endif
2558#ifdef HAVE_UNISTD_H
2559#include <unistd.h>
2560#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002561#include <sys/stat.h>
2562#include <stdio.h>
2563main()
2564{
2565 struct stat sb;
2566 char *x,*ttyname();
2567 int om, m;
2568 FILE *fp;
2569
2570 if (!(x = ttyname(0))) exit(1);
2571 if (stat(x, &sb)) exit(1);
2572 om = sb.st_mode;
2573 if (om & 002) exit(0);
2574 m = system("mesg y");
2575 if (m == -1 || m == 127) exit(1);
2576 if (stat(x, &sb)) exit(1);
2577 m = sb.st_mode;
2578 if (chmod(x, om)) exit(1);
2579 if (m & 002) exit(0);
2580 if (sb.st_gid == getgid()) exit(1);
2581 if (!(fp=fopen("conftest_grp", "w")))
2582 exit(1);
2583 fprintf(fp, "%d\n", sb.st_gid);
2584 fclose(fp);
2585 exit(0);
2586}
Bram Moolenaar446cb832008-06-24 21:56:24 +00002587 ]],[
2588 if test -f conftest_grp; then
2589 vim_cv_tty_group=`cat conftest_grp`
2590 if test "x$vim_cv_tty_mode" = "x" ; then
2591 vim_cv_tty_mode=0620
2592 fi
2593 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group])
2594 else
2595 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002596 AC_MSG_RESULT([ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002597 fi
2598 ],[
2599 vim_cv_tty_group=world
Bram Moolenaar72951072009-12-02 16:58:33 +00002600 AC_MSG_RESULT([can't determine - assume ptys are world accessible])
Bram Moolenaar446cb832008-06-24 21:56:24 +00002601 ],[
2602 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode')
2603 ])
2604 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002605rm -f conftest_grp
2606
Bram Moolenaar446cb832008-06-24 21:56:24 +00002607if test "x$vim_cv_tty_group" != "xworld" ; then
2608 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group)
2609 if test "x$vim_cv_tty_mode" = "x" ; then
2610 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)])
2611 else
2612 AC_DEFINE(PTYMODE, 0620)
2613 fi
2614fi
2615
Bram Moolenaar071d4272004-06-13 20:20:40 +00002616dnl Checks for library functions. ===================================
2617
2618AC_TYPE_SIGNAL
2619
2620dnl find out what to use at the end of a signal function
2621if test $ac_cv_type_signal = void; then
2622 AC_DEFINE(SIGRETURN, [return])
2623else
2624 AC_DEFINE(SIGRETURN, [return 0])
2625fi
2626
2627dnl check if struct sigcontext is defined (used for SGI only)
2628AC_MSG_CHECKING(for struct sigcontext)
2629AC_TRY_COMPILE([
2630#include <signal.h>
2631test_sig()
2632{
2633 struct sigcontext *scont;
2634 scont = (struct sigcontext *)0;
2635 return 1;
2636} ], ,
2637 AC_MSG_RESULT(yes)
2638 AC_DEFINE(HAVE_SIGCONTEXT),
2639 AC_MSG_RESULT(no))
2640
2641dnl tricky stuff: try to find out if getcwd() is implemented with
2642dnl system("sh -c pwd")
Bram Moolenaar446cb832008-06-24 21:56:24 +00002643AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken],
2644 [
2645 AC_RUN_IFELSE([[
2646#include "confdefs.h"
2647#ifdef HAVE_UNISTD_H
2648#include <unistd.h>
2649#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002650char *dagger[] = { "IFS=pwd", 0 };
2651main()
2652{
2653 char buffer[500];
2654 extern char **environ;
2655 environ = dagger;
2656 return getcwd(buffer, 500) ? 0 : 1;
Bram Moolenaar446cb832008-06-24 21:56:24 +00002657}
2658 ]],[
2659 vim_cv_getcwd_broken=no
2660 ],[
2661 vim_cv_getcwd_broken=yes
2662 ],[
2663 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken')
2664 ])
2665 ])
2666
2667if test "x$vim_cv_getcwd_broken" = "xyes" ; then
2668 AC_DEFINE(BAD_GETCWD)
2669fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00002670
Bram Moolenaar25153e12010-02-24 14:47:08 +01002671dnl Check for functions in one big call, to reduce the size of configure.
2672dnl Can only be used for functions that do not require any include.
2673AC_CHECK_FUNCS(bcmp fchdir fchown fsync getcwd getpseudotty \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002674 getpwnam getpwuid getrlimit gettimeofday getwd lstat memcmp \
Bram Moolenaareaf03392009-11-17 11:08:52 +00002675 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \
Bram Moolenaar071d4272004-06-13 20:20:40 +00002676 setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \
Bram Moolenaar051b7822005-05-19 21:00:46 +00002677 sigvec strcasecmp strerror strftime stricmp strncasecmp \
Bram Moolenaar0cb032e2005-04-23 20:52:00 +00002678 strnicmp strpbrk strtol tgetent towlower towupper iswupper \
2679 usleep utime utimes)
Bram Moolenaar25153e12010-02-24 14:47:08 +01002680AC_FUNC_FSEEKO
Bram Moolenaar071d4272004-06-13 20:20:40 +00002681
Bram Moolenaar317fd3a2010-05-07 16:05:55 +02002682dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when
2683dnl appropriate, so that off_t is 64 bits when needed.
2684AC_SYS_LARGEFILE
2685
Bram Moolenaar071d4272004-06-13 20:20:40 +00002686dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible
2687AC_MSG_CHECKING(for st_blksize)
2688AC_TRY_COMPILE(
2689[#include <sys/types.h>
2690#include <sys/stat.h>],
2691[ struct stat st;
2692 int n;
2693
2694 stat("/", &st);
2695 n = (int)st.st_blksize;],
2696 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE),
2697 AC_MSG_RESULT(no))
2698
Bram Moolenaar446cb832008-06-24 21:56:24 +00002699AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash],
2700 [
2701 AC_RUN_IFELSE([[
2702#include "confdefs.h"
2703#if STDC_HEADERS
2704# include <stdlib.h>
2705# include <stddef.h>
2706#endif
2707#include <sys/types.h>
Bram Moolenaar071d4272004-06-13 20:20:40 +00002708#include <sys/stat.h>
Bram Moolenaar446cb832008-06-24 21:56:24 +00002709main() {struct stat st; exit(stat("configure/", &st) != 0); }
2710 ]],[
2711 vim_cv_stat_ignores_slash=yes
2712 ],[
2713 vim_cv_stat_ignores_slash=no
2714 ],[
2715 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash')
2716 ])
2717 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002718
Bram Moolenaar446cb832008-06-24 21:56:24 +00002719if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then
2720 AC_DEFINE(STAT_IGNORES_SLASH)
2721fi
2722
Bram Moolenaar071d4272004-06-13 20:20:40 +00002723dnl Link with iconv for charset translation, if not found without library.
2724dnl check for iconv() requires including iconv.h
2725dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it
2726dnl has been installed.
2727AC_MSG_CHECKING(for iconv_open())
2728save_LIBS="$LIBS"
2729LIBS="$LIBS -liconv"
2730AC_TRY_LINK([
2731#ifdef HAVE_ICONV_H
2732# include <iconv.h>
2733#endif
2734 ], [iconv_open("fr", "to");],
2735 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV),
2736 LIBS="$save_LIBS"
2737 AC_TRY_LINK([
2738#ifdef HAVE_ICONV_H
2739# include <iconv.h>
2740#endif
2741 ], [iconv_open("fr", "to");],
2742 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV),
2743 AC_MSG_RESULT(no)))
2744
2745
2746AC_MSG_CHECKING(for nl_langinfo(CODESET))
2747AC_TRY_LINK([
2748#ifdef HAVE_LANGINFO_H
2749# include <langinfo.h>
2750#endif
2751], [char *cs = nl_langinfo(CODESET);],
2752 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET),
2753 AC_MSG_RESULT(no))
2754
Bram Moolenaar446cb832008-06-24 21:56:24 +00002755dnl Need various functions for floating point support. Only enable
2756dnl floating point when they are all present.
2757AC_CHECK_LIB(m, strtod)
2758AC_MSG_CHECKING([for strtod() and other floating point functions])
2759AC_TRY_LINK([
2760#ifdef HAVE_MATH_H
2761# include <math.h>
2762#endif
2763#if STDC_HEADERS
2764# include <stdlib.h>
2765# include <stddef.h>
2766#endif
2767], [char *s; double d;
2768 d = strtod("1.1", &s);
2769 d = fabs(1.11);
2770 d = ceil(1.11);
2771 d = floor(1.11);
2772 d = log10(1.11);
2773 d = pow(1.11, 2.22);
2774 d = sqrt(1.11);
2775 d = sin(1.11);
2776 d = cos(1.11);
2777 d = atan(1.11);
2778 ],
2779 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS),
2780 AC_MSG_RESULT(no))
2781
Bram Moolenaar071d4272004-06-13 20:20:40 +00002782dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI
2783dnl when -lacl works, also try to use -lattr (required for Debian).
2784AC_MSG_CHECKING(--disable-acl argument)
2785AC_ARG_ENABLE(acl,
2786 [ --disable-acl Don't check for ACL support.],
2787 , [enable_acl="yes"])
2788if test "$enable_acl" = "yes"; then
2789AC_MSG_RESULT(no)
2790AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"],
2791 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl"
2792 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),)
2793
2794AC_MSG_CHECKING(for POSIX ACL support)
2795AC_TRY_LINK([
2796#include <sys/types.h>
2797#ifdef HAVE_SYS_ACL_H
2798# include <sys/acl.h>
2799#endif
2800acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS);
2801 acl_set_file("foo", ACL_TYPE_ACCESS, acl);
2802 acl_free(acl);],
2803 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL),
2804 AC_MSG_RESULT(no))
2805
2806AC_MSG_CHECKING(for Solaris ACL support)
2807AC_TRY_LINK([
2808#ifdef HAVE_SYS_ACL_H
2809# include <sys/acl.h>
2810#endif], [acl("foo", GETACLCNT, 0, NULL);
2811 ],
2812 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL),
2813 AC_MSG_RESULT(no))
2814
2815AC_MSG_CHECKING(for AIX ACL support)
2816AC_TRY_LINK([
Bram Moolenaar446cb832008-06-24 21:56:24 +00002817#if STDC_HEADERS
2818# include <stdlib.h>
2819# include <stddef.h>
2820#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00002821#ifdef HAVE_SYS_ACL_H
2822# include <sys/acl.h>
2823#endif
2824#ifdef HAVE_SYS_ACCESS_H
2825# include <sys/access.h>
2826#endif
2827#define _ALL_SOURCE
2828
2829#include <sys/stat.h>
2830
2831int aclsize;
2832struct acl *aclent;], [aclsize = sizeof(struct acl);
2833 aclent = (void *)malloc(aclsize);
2834 statacl("foo", STX_NORMAL, aclent, aclsize);
2835 ],
2836 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL),
2837 AC_MSG_RESULT(no))
2838else
2839 AC_MSG_RESULT(yes)
2840fi
2841
2842AC_MSG_CHECKING(--disable-gpm argument)
2843AC_ARG_ENABLE(gpm,
2844 [ --disable-gpm Don't use gpm (Linux mouse daemon).], ,
2845 [enable_gpm="yes"])
2846
2847if test "$enable_gpm" = "yes"; then
2848 AC_MSG_RESULT(no)
2849 dnl Checking if gpm support can be compiled
2850 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm,
2851 [olibs="$LIBS" ; LIBS="-lgpm"]
2852 AC_TRY_LINK(
2853 [#include <gpm.h>
2854 #include <linux/keyboard.h>],
2855 [Gpm_GetLibVersion(NULL);],
2856 dnl Configure defines HAVE_GPM, if it is defined feature.h defines
2857 dnl FEAT_MOUSE_GPM if mouse support is included
2858 [vi_cv_have_gpm=yes],
2859 [vi_cv_have_gpm=no])
2860 [LIBS="$olibs"]
2861 )
2862 if test $vi_cv_have_gpm = yes; then
2863 LIBS="$LIBS -lgpm"
2864 AC_DEFINE(HAVE_GPM)
2865 fi
2866else
2867 AC_MSG_RESULT(yes)
2868fi
2869
Bram Moolenaar446cb832008-06-24 21:56:24 +00002870AC_MSG_CHECKING(--disable-sysmouse argument)
2871AC_ARG_ENABLE(sysmouse,
2872 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], ,
2873 [enable_sysmouse="yes"])
2874
2875if test "$enable_sysmouse" = "yes"; then
2876 AC_MSG_RESULT(no)
2877 dnl Checking if sysmouse support can be compiled
2878 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h
2879 dnl defines FEAT_SYSMOUSE if mouse support is included
2880 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse,
2881 AC_TRY_LINK(
2882 [#include <sys/consio.h>
2883 #include <signal.h>
2884 #include <sys/fbio.h>],
2885 [struct mouse_info mouse;
2886 mouse.operation = MOUSE_MODE;
2887 mouse.operation = MOUSE_SHOW;
2888 mouse.u.mode.mode = 0;
2889 mouse.u.mode.signal = SIGUSR2;],
2890 [vi_cv_have_sysmouse=yes],
2891 [vi_cv_have_sysmouse=no])
2892 )
2893 if test $vi_cv_have_sysmouse = yes; then
2894 AC_DEFINE(HAVE_SYSMOUSE)
2895 fi
2896else
2897 AC_MSG_RESULT(yes)
2898fi
2899
Bram Moolenaarf05da212009-11-17 16:13:15 +00002900dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known
2901AC_MSG_CHECKING(for FD_CLOEXEC)
2902AC_TRY_COMPILE(
2903[#if HAVE_FCNTL_H
2904# include <fcntl.h>
2905#endif],
2906[ int flag = FD_CLOEXEC;],
2907 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC),
2908 AC_MSG_RESULT(not usable))
2909
Bram Moolenaar071d4272004-06-13 20:20:40 +00002910dnl rename needs to be checked separately to work on Nextstep with cc
2911AC_MSG_CHECKING(for rename)
2912AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")],
2913 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME),
2914 AC_MSG_RESULT(no))
2915
2916dnl sysctl() may exist but not the arguments we use
2917AC_MSG_CHECKING(for sysctl)
2918AC_TRY_COMPILE(
2919[#include <sys/types.h>
2920#include <sys/sysctl.h>],
2921[ int mib[2], r;
2922 size_t len;
2923
2924 mib[0] = CTL_HW;
2925 mib[1] = HW_USERMEM;
2926 len = sizeof(r);
2927 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0);
2928 ],
2929 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL),
2930 AC_MSG_RESULT(not usable))
2931
2932dnl sysinfo() may exist but not be Linux compatible
2933AC_MSG_CHECKING(for sysinfo)
2934AC_TRY_COMPILE(
2935[#include <sys/types.h>
2936#include <sys/sysinfo.h>],
2937[ struct sysinfo sinfo;
2938 int t;
2939
2940 (void)sysinfo(&sinfo);
2941 t = sinfo.totalram;
2942 ],
2943 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO),
2944 AC_MSG_RESULT(not usable))
2945
Bram Moolenaar914572a2007-05-01 11:37:47 +00002946dnl struct sysinfo may have the mem_unit field or not
2947AC_MSG_CHECKING(for sysinfo.mem_unit)
2948AC_TRY_COMPILE(
2949[#include <sys/types.h>
2950#include <sys/sysinfo.h>],
2951[ struct sysinfo sinfo;
2952 sinfo.mem_unit = 1;
2953 ],
2954 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT),
2955 AC_MSG_RESULT(no))
2956
Bram Moolenaar071d4272004-06-13 20:20:40 +00002957dnl sysconf() may exist but not support what we want to use
2958AC_MSG_CHECKING(for sysconf)
2959AC_TRY_COMPILE(
2960[#include <unistd.h>],
2961[ (void)sysconf(_SC_PAGESIZE);
2962 (void)sysconf(_SC_PHYS_PAGES);
2963 ],
2964 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF),
2965 AC_MSG_RESULT(not usable))
2966
2967dnl Our own version of AC_CHECK_SIZEOF(int); fixes a bug when sizeof() can't
2968dnl be printed with "%d", and avoids a warning for cross-compiling.
2969
2970AC_MSG_CHECKING(size of int)
2971AC_CACHE_VAL(ac_cv_sizeof_int,
Bram Moolenaar446cb832008-06-24 21:56:24 +00002972 [AC_TRY_RUN([
2973#include <stdio.h>
2974#if STDC_HEADERS
2975# include <stdlib.h>
2976# include <stddef.h>
2977#endif
2978main()
2979{
2980 FILE *f=fopen("conftestval", "w");
2981 if (!f) exit(1);
2982 fprintf(f, "%d\n", (int)sizeof(int));
2983 exit(0);
2984}],
Bram Moolenaar071d4272004-06-13 20:20:40 +00002985 ac_cv_sizeof_int=`cat conftestval`,
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02002986 AC_MSG_ERROR([failed to determine sizeof(int)]),
2987 AC_MSG_ERROR([failed to compile test program]))])
Bram Moolenaar071d4272004-06-13 20:20:40 +00002988AC_MSG_RESULT($ac_cv_sizeof_int)
2989AC_DEFINE_UNQUOTED(SIZEOF_INT, $ac_cv_sizeof_int)
2990
Bram Moolenaar644fdff2010-05-30 13:26:21 +02002991dnl Figure out sizeof(time_t) so that it can be used in #ifdef.
2992AC_MSG_CHECKING(size of time_t)
2993AC_CACHE_VAL(ac_cv_sizeof_time_t,
2994 [AC_TRY_RUN([
2995#include <stdio.h>
2996#if STDC_HEADERS
2997# include <stdlib.h>
2998# include <stddef.h>
2999#endif
3000#include <time.h>
3001main()
3002{
3003 FILE *f=fopen("conftestval", "w");
3004 if (!f) exit(1);
3005 fprintf(f, "%d\n", (int)sizeof(time_t));
3006 exit(0);
3007}],
3008 ac_cv_sizeof_time_t=`cat conftestval`,
3009 AC_MSG_ERROR([failed to determine sizeof(time_t)]),
3010 AC_MSG_ERROR([failed to compile test program]))])
3011AC_MSG_RESULT($ac_cv_sizeof_time_t)
3012AC_DEFINE_UNQUOTED(SIZEOF_TIME_T, $ac_cv_sizeof_time_t)
3013
Bram Moolenaarfa7584c2010-05-19 21:57:45 +02003014dnl Make sure that uint32_t is really 32 bits unsigned.
3015AC_MSG_CHECKING([uint32_t is 32 bits])
3016AC_TRY_RUN([
3017#ifdef HAVE_STDINT_H
3018# include <stdint.h>
3019#endif
3020#ifdef HAVE_INTTYPES_H
3021# include <inttypes.h>
3022#endif
3023main() {
3024 uint32_t nr1 = (uint32_t)-1;
3025 uint32_t nr2 = (uint32_t)0xffffffffUL;
3026 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1);
3027 exit(0);
3028}],
3029AC_MSG_RESULT(ok),
3030AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]),
3031AC_MSG_ERROR([could not compile program using uint32_t.]))
3032
Bram Moolenaar446cb832008-06-24 21:56:24 +00003033dnl Check for memmove() before bcopy(), makes memmove() be used when both are
3034dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5.
3035
Bram Moolenaar071d4272004-06-13 20:20:40 +00003036[bcopy_test_prog='
Bram Moolenaar446cb832008-06-24 21:56:24 +00003037#include "confdefs.h"
3038#ifdef HAVE_STRING_H
3039# include <string.h>
3040#endif
3041#if STDC_HEADERS
3042# include <stdlib.h>
3043# include <stddef.h>
3044#endif
Bram Moolenaar071d4272004-06-13 20:20:40 +00003045main() {
3046 char buf[10];
3047 strcpy(buf, "abcdefghi");
3048 mch_memmove(buf, buf + 2, 3);
3049 if (strncmp(buf, "ababcf", 6))
3050 exit(1);
3051 strcpy(buf, "abcdefghi");
3052 mch_memmove(buf + 2, buf, 3);
3053 if (strncmp(buf, "cdedef", 6))
3054 exit(1);
3055 exit(0); /* libc version works properly. */
3056}']
3057
Bram Moolenaar446cb832008-06-24 21:56:24 +00003058AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap],
3059 [
3060 AC_RUN_IFELSE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]],
3061 [
3062 vim_cv_memmove_handles_overlap=yes
3063 ],[
3064 vim_cv_memmove_handles_overlap=no
3065 ],[
3066 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap')
3067 ])
3068 ])
Bram Moolenaar071d4272004-06-13 20:20:40 +00003069
Bram Moolenaar446cb832008-06-24 21:56:24 +00003070if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then
3071 AC_DEFINE(USEMEMMOVE)
3072else
3073 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap],
3074 [
3075 AC_RUN_IFELSE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]],
3076 [
3077 vim_cv_bcopy_handles_overlap=yes
3078 ],[
3079 vim_cv_bcopy_handles_overlap=no
3080 ],[
3081 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap')
3082 ])
3083 ])
3084
3085 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then
3086 AC_DEFINE(USEBCOPY)
3087 else
3088 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap],
3089 [
3090 AC_RUN_IFELSE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]],
3091 [
3092 vim_cv_memcpy_handles_overlap=yes
3093 ],[
3094 vim_cv_memcpy_handles_overlap=no
3095 ],[
3096 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap')
3097 ])
3098 ])
3099
3100 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then
3101 AC_DEFINE(USEMEMCPY)
3102 fi
3103 fi
3104fi
3105
Bram Moolenaar071d4272004-06-13 20:20:40 +00003106
3107dnl Check for multibyte locale functions
3108dnl Find out if _Xsetlocale() is supported by libX11.
3109dnl Check if X_LOCALE should be defined.
3110
3111if test "$enable_multibyte" = "yes"; then
3112 cflags_save=$CFLAGS
3113 ldflags_save=$LDFLAGS
Bram Moolenaar94ba1ce2009-04-22 15:53:09 +00003114 if test "x$x_includes" != "xNONE" ; then
Bram Moolenaar071d4272004-06-13 20:20:40 +00003115 CFLAGS="$CFLAGS -I$x_includes"
3116 LDFLAGS="$X_LIBS $LDFLAGS -lX11"
3117 AC_MSG_CHECKING(whether X_LOCALE needed)
3118 AC_TRY_COMPILE([#include <X11/Xlocale.h>],,
3119 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes)
3120 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)),
3121 AC_MSG_RESULT(no))
3122 fi
3123 CFLAGS=$cflags_save
3124 LDFLAGS=$ldflags_save
3125fi
3126
3127dnl Link with xpg4, it is said to make Korean locale working
3128AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,)
3129
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003130dnl Check how we can run ctags. Default to "ctags" when nothing works.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003131dnl --version for Exuberant ctags (preferred)
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003132dnl Add --fields=+S to get function signatures for omni completion.
Bram Moolenaar071d4272004-06-13 20:20:40 +00003133dnl -t for typedefs (many ctags have this)
3134dnl -s for static functions (Elvis ctags only?)
3135dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'.
3136dnl -i+m to test for older Exuberant ctags
3137AC_MSG_CHECKING(how to create tags)
3138test -f tags && mv tags tags.save
3139if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then
Bram Moolenaarb21e5842006-04-16 18:30:08 +00003140 TAGPRG="ctags -I INIT+ --fields=+S"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003141else
Bram Moolenaar0c7ce772009-05-13 12:49:39 +00003142 TAGPRG="ctags"
Bram Moolenaar071d4272004-06-13 20:20:40 +00003143 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags"
3144 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c"
3145 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags"
3146 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t"
3147 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts"
3148 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs"
3149 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m"
3150fi
3151test -f tags.save && mv tags.save tags
3152AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG)
3153
3154dnl Check how we can run man with a section number
3155AC_MSG_CHECKING(how to run man with a section nr)
3156MANDEF="man"
Bram Moolenaar8b131502008-02-13 09:28:19 +00003157(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 +00003158AC_MSG_RESULT($MANDEF)
3159if test "$MANDEF" = "man -s"; then
3160 AC_DEFINE(USEMAN_S)
3161fi
3162
3163dnl Check if gettext() is working and if it needs -lintl
3164AC_MSG_CHECKING(--disable-nls argument)
3165AC_ARG_ENABLE(nls,
3166 [ --disable-nls Don't support NLS (gettext()).], ,
3167 [enable_nls="yes"])
3168
3169if test "$enable_nls" = "yes"; then
3170 AC_MSG_RESULT(no)
Bram Moolenaar2389c3c2005-05-22 22:07:59 +00003171
3172 INSTALL_LANGS=install-languages
3173 AC_SUBST(INSTALL_LANGS)
3174 INSTALL_TOOL_LANGS=install-tool-languages
3175 AC_SUBST(INSTALL_TOOL_LANGS)
3176
Bram Moolenaar071d4272004-06-13 20:20:40 +00003177 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, )
3178 AC_MSG_CHECKING([for NLS])
3179 if test -f po/Makefile; then
3180 have_gettext="no"
3181 if test -n "$MSGFMT"; then
3182 AC_TRY_LINK(
3183 [#include <libintl.h>],
3184 [gettext("Test");],
3185 AC_MSG_RESULT([gettext() works]); have_gettext="yes",
3186 olibs=$LIBS
3187 LIBS="$LIBS -lintl"
3188 AC_TRY_LINK(
3189 [#include <libintl.h>],
3190 [gettext("Test");],
3191 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes",
3192 AC_MSG_RESULT([gettext() doesn't work]);
3193 LIBS=$olibs))
3194 else
3195 AC_MSG_RESULT([msgfmt not found - disabled]);
3196 fi
3197 if test $have_gettext = "yes"; then
3198 AC_DEFINE(HAVE_GETTEXT)
3199 MAKEMO=yes
3200 AC_SUBST(MAKEMO)
3201 dnl this was added in GNU gettext 0.10.36
3202 AC_CHECK_FUNCS(bind_textdomain_codeset)
3203 dnl _nl_msg_cat_cntr is required for GNU gettext
3204 AC_MSG_CHECKING([for _nl_msg_cat_cntr])
3205 AC_TRY_LINK(
3206 [#include <libintl.h>
3207 extern int _nl_msg_cat_cntr;],
3208 [++_nl_msg_cat_cntr;],
3209 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR),
3210 AC_MSG_RESULT([no]))
3211 fi
3212 else
3213 AC_MSG_RESULT([no "po/Makefile" - disabled]);
3214 fi
3215else
3216 AC_MSG_RESULT(yes)
3217fi
3218
3219dnl Check for dynamic linking loader
3220AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)])
3221if test x${DLL} = xdlfcn.h; then
3222 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ])
3223 AC_MSG_CHECKING([for dlopen()])
3224 AC_TRY_LINK(,[
3225 extern void* dlopen();
3226 dlopen();
3227 ],
3228 AC_MSG_RESULT(yes);
3229 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3230 AC_MSG_RESULT(no);
3231 AC_MSG_CHECKING([for dlopen() in -ldl])
3232 olibs=$LIBS
3233 LIBS="$LIBS -ldl"
3234 AC_TRY_LINK(,[
3235 extern void* dlopen();
3236 dlopen();
3237 ],
3238 AC_MSG_RESULT(yes);
3239 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]),
3240 AC_MSG_RESULT(no);
3241 LIBS=$olibs))
3242 dnl ReliantUNIX has dlopen() in libc but everything else in libdl
3243 dnl ick :-)
3244 AC_MSG_CHECKING([for dlsym()])
3245 AC_TRY_LINK(,[
3246 extern void* dlsym();
3247 dlsym();
3248 ],
3249 AC_MSG_RESULT(yes);
3250 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3251 AC_MSG_RESULT(no);
3252 AC_MSG_CHECKING([for dlsym() in -ldl])
3253 olibs=$LIBS
3254 LIBS="$LIBS -ldl"
3255 AC_TRY_LINK(,[
3256 extern void* dlsym();
3257 dlsym();
3258 ],
3259 AC_MSG_RESULT(yes);
3260 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]),
3261 AC_MSG_RESULT(no);
3262 LIBS=$olibs))
3263elif test x${DLL} = xdl.h; then
3264 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ])
3265 AC_MSG_CHECKING([for shl_load()])
3266 AC_TRY_LINK(,[
3267 extern void* shl_load();
3268 shl_load();
3269 ],
3270 AC_MSG_RESULT(yes);
3271 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3272 AC_MSG_RESULT(no);
3273 AC_MSG_CHECKING([for shl_load() in -ldld])
3274 olibs=$LIBS
3275 LIBS="$LIBS -ldld"
3276 AC_TRY_LINK(,[
3277 extern void* shl_load();
3278 shl_load();
3279 ],
3280 AC_MSG_RESULT(yes);
3281 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]),
3282 AC_MSG_RESULT(no);
3283 LIBS=$olibs))
3284fi
3285AC_CHECK_HEADERS(setjmp.h)
3286
3287if test "x$MACOSX" = "xyes" -a -n "$PERL"; then
3288 dnl -ldl must come after DynaLoader.a
3289 if echo $LIBS | grep -e '-ldl' >/dev/null; then
3290 LIBS=`echo $LIBS | sed s/-ldl//`
3291 PERL_LIBS="$PERL_LIBS -ldl"
3292 fi
3293fi
3294
3295if test "x$MACOSX" = "xyes" && test "x$CARBON" = "xyes" \
3296 && test "x$GUITYPE" != "xCARBONGUI"; then
3297 AC_MSG_CHECKING(whether we need -framework Carbon)
3298 dnl check for MACOSX without Carbon GUI, but with FEAT_MBYTE
Bram Moolenaarb90daee2006-10-17 09:49:09 +00003299 if test "x$enable_multibyte" = "xyes" || test "x$features" = "xbig" \
Bram Moolenaar071d4272004-06-13 20:20:40 +00003300 || test "x$features" = "xhuge"; then
3301 LIBS="$LIBS -framework Carbon"
3302 AC_MSG_RESULT(yes)
3303 else
3304 AC_MSG_RESULT(no)
3305 fi
3306fi
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003307if test "x$MACARCH" = "xboth"; then
Bram Moolenaar595a7be2010-03-10 16:28:12 +01003308 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc"
Bram Moolenaare224ffa2006-03-01 00:01:28 +00003309fi
Bram Moolenaar071d4272004-06-13 20:20:40 +00003310
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003311dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to
3312dnl use "-isystem" instead of "-I" for all non-Vim include dirs.
3313dnl But only when making dependencies, cproto and lint don't take "-isystem".
Bram Moolenaar32466aa2006-02-24 23:53:04 +00003314dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow
3315dnl the number before the version number.
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003316DEPEND_CFLAGS_FILTER=
3317if test "$GCC" = yes; then
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003318 AC_MSG_CHECKING(for GCC 3 or later)
Bram Moolenaar2217cae2006-03-25 21:55:52 +00003319 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'`
Bram Moolenaarf740b292006-02-16 22:11:02 +00003320 if test "$gccmajor" -gt "2"; then
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003321 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'"
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003322 AC_MSG_RESULT(yes)
3323 else
3324 AC_MSG_RESULT(no)
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003325 fi
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003326 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is
3327 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0.
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003328 dnl Also remove duplicate _FORTIFY_SOURCE arguments.
Bram Moolenaar0cd49302008-11-20 09:37:01 +00003329 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1)
3330 if test "$gccmajor" -gt "3"; then
Bram Moolenaar56d1db32009-12-16 16:14:51 +00003331 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 +00003332 AC_MSG_RESULT(yes)
3333 else
3334 AC_MSG_RESULT(no)
3335 fi
Bram Moolenaara5792f52005-11-23 21:25:05 +00003336fi
Bram Moolenaard5cdbeb2005-10-10 20:59:28 +00003337AC_SUBST(DEPEND_CFLAGS_FILTER)
Bram Moolenaar071d4272004-06-13 20:20:40 +00003338
3339dnl write output files
3340AC_OUTPUT(auto/config.mk:config.mk.in)
3341
3342dnl vim: set sw=2 tw=78 fo+=l: