1dnl configure.ac: 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_C99 dnl required by almost everything 15AC_PROG_CPP dnl required by header file checks 16AC_PROGRAM_EGREP dnl required by AC_EGREP_CPP 17AC_PROG_FGREP dnl finds working grep -F 18AC_ISC_POSIX dnl required by AC_C_CROSS 19AC_PROG_AWK dnl required for "make html" in ../doc 20 21dnl Don't strip if we don't have it 22AC_CHECK_PROG(STRIP, strip, strip, :) 23 24dnl Check for extension of executables 25AC_EXEEXT 26 27dnl Check for standard headers. We don't use this in Vim but other stuff 28dnl in autoconf needs it, where it uses STDC_HEADERS. 29AC_HEADER_STDC 30AC_HEADER_SYS_WAIT 31 32dnl Check that the C99 features that Vim uses are supported: 33if test x"$ac_cv_prog_cc_c99" != xno; then 34 dnl If the compiler doesn't explicitly support C99, then check 35 dnl for the specific features Vim uses 36 37 AC_TYPE_LONG_LONG_INT 38 if test "$ac_cv_type_long_long_int" = no; then 39 AC_MSG_FAILURE([Compiler does not support long long int]) 40 fi 41 42 AC_MSG_CHECKING([if the compiler supports trailing commas]) 43 trailing_commas=no 44 AC_TRY_COMPILE([], [ 45 enum { 46 one, 47 };], 48 [AC_MSG_RESULT(yes); trailing_commas=yes], 49 [AC_MSG_RESULT(no)]) 50 if test "$trailing_commas" = no; then 51 AC_MSG_FAILURE([Compiler does not support trailing comma in enum]) 52 fi 53 54 AC_MSG_CHECKING([if the compiler supports C++ comments]) 55 slash_comments=no 56 AC_TRY_COMPILE([], 57 [// C++ comments?], 58 [AC_MSG_RESULT(yes); slash_comments=yes], 59 [AC_MSG_RESULT(no)]) 60 if test "$slash_comments" = no; then 61 AC_MSG_FAILURE([Compiler does not support C++ comments]) 62 fi 63fi 64 65dnl Check for the flag that fails if stuff are missing. 66 67AC_MSG_CHECKING(--enable-fail-if-missing argument) 68AC_ARG_ENABLE(fail_if_missing, 69 [ --enable-fail-if-missing Fail if dependencies on additional features 70 specified on the command line are missing.], 71 [fail_if_missing="yes"], 72 [fail_if_missing="no"]) 73AC_MSG_RESULT($fail_if_missing) 74 75dnl Keep original value to check later. 76with_x_arg="$with_x" 77 78dnl Set default value for CFLAGS if none is defined or it's empty 79if test -z "$CFLAGS"; then 80 CFLAGS="-O" 81 test "$GCC" = yes && CFLAGS="-O2 -fno-strength-reduce -Wall" 82fi 83if test "$GCC" = yes; then 84 dnl method that should work for nearly all versions 85 gccversion=`$CC -dumpversion` 86 if test "x$gccversion" = "x"; then 87 dnl old method; fall-back for when -dumpversion doesn't work 88 gccversion=`$CC --version | sed -e '2,$d' -e 's/darwin.//' -e 's/^[[^0-9]]*\([[0-9]]\.[[0-9.]]*\).*$/\1/g'` 89 fi 90 dnl version 4.0.1 was reported to cause trouble on Macintosh by Marcin Dalecki 91 if test "$gccversion" = "3.0.1" -o "$gccversion" = "3.0.2" -o "$gccversion" = "4.0.1"; then 92 echo 'GCC [[34]].0.[[12]] has a bug in the optimizer, disabling "-O#"' 93 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-O/'` 94 else 95 if test "$gccversion" = "3.1" -o "$gccversion" = "3.2" -o "$gccversion" = "3.2.1" && `echo "$CFLAGS" | grep -v fno-strength-reduce >/dev/null`; then 96 echo 'GCC 3.1 and 3.2 have a bug in the optimizer, adding "-fno-strength-reduce"' 97 CFLAGS="$CFLAGS -fno-strength-reduce" 98 fi 99 fi 100fi 101 102dnl clang-500.2.75 or around has abandoned -f[no-]strength-reduce and issues a 103dnl warning when that flag is passed to. Accordingly, adjust CFLAGS based on 104dnl the version number of the clang in use. 105dnl Note that this does not work to get the version of clang 3.1 or 3.2. 106AC_MSG_CHECKING(for clang version) 107CLANG_VERSION_STRING=`$CC --version 2>/dev/null | sed -n -e 's/^.*clang[[^0-9]]*\([[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\).*$/\1/p'` 108if test x"$CLANG_VERSION_STRING" != x"" ; then 109 CLANG_MAJOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*/\1/p'` 110 CLANG_MINOR=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/p'` 111 CLANG_REVISION=`echo "$CLANG_VERSION_STRING" | sed -n -e 's/[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)/\1/p'` 112 CLANG_VERSION=`expr $CLANG_MAJOR '*' 1000000 '+' $CLANG_MINOR '*' 1000 '+' $CLANG_REVISION` 113 AC_MSG_RESULT($CLANG_VERSION) 114 dnl If you find the same issue with versions earlier than 500.2.75, 115 dnl change the constant 500002075 below appropriately. To get the 116 dnl integer corresponding to a version number, refer to the 117 dnl definition of CLANG_VERSION above. 118 AC_MSG_CHECKING(if clang supports -fno-strength-reduce) 119 if test "$CLANG_VERSION" -ge 500002075 ; then 120 AC_MSG_RESULT(no) 121 CFLAGS=`echo "$CFLAGS" | sed -e 's/-fno-strength-reduce/ /'` 122 else 123 AC_MSG_RESULT(yes) 124 fi 125else 126 AC_MSG_RESULT(N/A) 127fi 128 129dnl If configure thinks we are cross compiling, there might be something 130dnl wrong with the CC or CFLAGS settings, give a useful warning message 131CROSS_COMPILING= 132if test "$cross_compiling" = yes; then 133 AC_MSG_RESULT([cannot compile a simple program; if not cross compiling check CC and CFLAGS]) 134 CROSS_COMPILING=1 135fi 136AC_SUBST(CROSS_COMPILING) 137 138dnl gcc-cpp has the wonderful -MM option to produce nicer dependencies. 139dnl But gcc 3.1 changed the meaning! See near the end. 140test "$GCC" = yes && CPP_MM=M; AC_SUBST(CPP_MM) 141 142if test -f ./toolcheck; then 143 AC_CHECKING(for buggy tools) 144 sh ./toolcheck 1>&AC_FD_MSG 145fi 146 147OS_EXTRA_SRC=""; OS_EXTRA_OBJ="" 148 149dnl Check for BeOS, which needs an extra source file 150AC_MSG_CHECKING(for BeOS) 151case `uname` in 152 BeOS) OS_EXTRA_SRC=os_beos.c; OS_EXTRA_OBJ=objects/os_beos.o 153 BEOS=yes; AC_MSG_RESULT(yes);; 154 *) BEOS=no; AC_MSG_RESULT(no);; 155esac 156 157dnl If QNX is found, assume we don't want to use Xphoton 158dnl unless it was specifically asked for (--with-x) 159AC_MSG_CHECKING(for QNX) 160case `uname` in 161 QNX) OS_EXTRA_SRC=os_qnx.c; OS_EXTRA_OBJ=objects/os_qnx.o 162 test -z "$with_x" && with_x=no 163 QNX=yes; AC_MSG_RESULT(yes);; 164 *) QNX=no; AC_MSG_RESULT(no);; 165esac 166 167dnl Check for Darwin and MacOS X 168dnl We do a check for MacOS X in the very beginning because there 169dnl are a lot of other things we need to change besides GUI stuff 170AC_MSG_CHECKING([for Darwin (Mac OS X)]) 171if test "`(uname) 2>/dev/null`" = Darwin; then 172 AC_MSG_RESULT(yes) 173 MACOS_X=yes 174 CPPFLAGS="$CPPFLAGS -DMACOS_X" 175 176 AC_MSG_CHECKING(--disable-darwin argument) 177 AC_ARG_ENABLE(darwin, 178 [ --disable-darwin Disable Darwin (Mac OS X) support.], 179 , [enable_darwin="yes"]) 180 if test "$enable_darwin" = "yes"; then 181 AC_MSG_RESULT(no) 182 AC_MSG_CHECKING(if Darwin files are there) 183 if test -f os_macosx.m; then 184 AC_MSG_RESULT(yes) 185 else 186 AC_MSG_RESULT([no, Darwin support disabled]) 187 enable_darwin=no 188 fi 189 else 190 AC_MSG_RESULT([yes, Darwin support excluded]) 191 fi 192 193 AC_MSG_CHECKING(--with-mac-arch argument) 194 AC_ARG_WITH(mac-arch, [ --with-mac-arch=ARCH current, intel, ppc or both], 195 MACARCH="$withval"; AC_MSG_RESULT($MACARCH), 196 MACARCH="current"; AC_MSG_RESULT(defaulting to $MACARCH)) 197 198 AC_MSG_CHECKING(--with-developer-dir argument) 199 AC_ARG_WITH(developer-dir, [ --with-developer-dir=PATH use PATH as location for Xcode developer tools], 200 DEVELOPER_DIR="$withval"; AC_MSG_RESULT($DEVELOPER_DIR), 201 AC_MSG_RESULT(not present)) 202 203 if test "x$DEVELOPER_DIR" = "x"; then 204 AC_PATH_PROG(XCODE_SELECT, xcode-select) 205 if test "x$XCODE_SELECT" != "x"; then 206 AC_MSG_CHECKING(for developer dir using xcode-select) 207 DEVELOPER_DIR=`$XCODE_SELECT -print-path` 208 AC_MSG_RESULT([$DEVELOPER_DIR]) 209 else 210 DEVELOPER_DIR=/Developer 211 fi 212 fi 213 214 if test "x$MACARCH" = "xboth"; then 215 AC_MSG_CHECKING(for 10.4 universal SDK) 216 dnl There is a terrible inconsistency (but we appear to get away with it): 217 dnl $CFLAGS uses the 10.4u SDK library for the headers, while $CPPFLAGS 218 dnl doesn't, because "gcc -E" doesn't grok it. That means the configure 219 dnl tests using the preprocessor are actually done with the wrong header 220 dnl files. $LDFLAGS is set at the end, because configure uses it together 221 dnl with $CFLAGS and we can only have one -sysroot argument. 222 save_cppflags="$CPPFLAGS" 223 save_cflags="$CFLAGS" 224 save_ldflags="$LDFLAGS" 225 CFLAGS="$CFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" 226 AC_TRY_LINK([ ], [ ], 227 AC_MSG_RESULT(found, will make universal binary), 228 229 AC_MSG_RESULT(not found) 230 CFLAGS="$save_cflags" 231 AC_MSG_CHECKING(if Intel architecture is supported) 232 CPPFLAGS="$CPPFLAGS -arch i386" 233 LDFLAGS="$save_ldflags -arch i386" 234 AC_TRY_LINK([ ], [ ], 235 AC_MSG_RESULT(yes); MACARCH="intel", 236 AC_MSG_RESULT(no, using PowerPC) 237 MACARCH="ppc" 238 CPPFLAGS="$save_cppflags -arch ppc" 239 LDFLAGS="$save_ldflags -arch ppc")) 240 elif test "x$MACARCH" = "xintel"; then 241 CPPFLAGS="$CPPFLAGS -arch intel" 242 LDFLAGS="$LDFLAGS -arch intel" 243 elif test "x$MACARCH" = "xppc"; then 244 CPPFLAGS="$CPPFLAGS -arch ppc" 245 LDFLAGS="$LDFLAGS -arch ppc" 246 fi 247 248 if test "$enable_darwin" = "yes"; then 249 MACOS_X_DARWIN=yes 250 OS_EXTRA_SRC="os_macosx.m os_mac_conv.c"; 251 OS_EXTRA_OBJ="objects/os_macosx.o objects/os_mac_conv.o" 252 dnl TODO: use -arch i386 on Intel machines 253 dnl Removed -no-cpp-precomp, only for very old compilers. 254 CPPFLAGS="$CPPFLAGS -DMACOS_X_DARWIN" 255 256 dnl If Carbon is found, assume we don't want X11 257 dnl unless it was specifically asked for (--with-x) 258 dnl or Motif, Athena or GTK GUI is used. 259 AC_CHECK_HEADER(Carbon/Carbon.h, CARBON=yes) 260 if test "x$CARBON" = "xyes"; then 261 if test -z "$with_x" -a "X$enable_gui" != Xmotif -a "X$enable_gui" != Xathena -a "X$enable_gui" != Xgtk2 -a "X$enable_gui" != Xgtk3; then 262 with_x=no 263 fi 264 fi 265 fi 266 267 dnl Avoid a bug with -O2 with gcc 4.0.1. Symptom: malloc() reports double 268 dnl free. This happens in expand_filename(), because the optimizer swaps 269 dnl two blocks of code, both using "repl", that can't be swapped. 270 if test "$MACARCH" = "intel" -o "$MACARCH" = "both"; then 271 CFLAGS=`echo "$CFLAGS" | sed 's/-O[[23456789]]/-Oz/'` 272 fi 273 274else 275 AC_MSG_RESULT(no) 276fi 277 278dnl Mac OS X 10.9+ no longer include AvailabilityMacros.h in Carbon 279dnl so we need to include it to have access to version macros. 280AC_CHECK_HEADERS(AvailabilityMacros.h) 281 282AC_SUBST(OS_EXTRA_SRC) 283AC_SUBST(OS_EXTRA_OBJ) 284 285dnl Add /usr/local/lib to $LDFLAGS and /usr/local/include to CFLAGS. 286dnl Only when the directory exists and it wasn't there yet. 287dnl For gcc don't do this when it is already in the default search path. 288dnl Skip all of this when cross-compiling. 289if test "$cross_compiling" = no; then 290 AC_MSG_CHECKING(--with-local-dir argument) 291 have_local_include='' 292 have_local_lib='' 293 AC_ARG_WITH([local-dir], [ --with-local-dir=PATH search PATH instead of /usr/local for local libraries. 294 --without-local-dir do not search /usr/local for local libraries.], [ 295 local_dir="$withval" 296 case "$withval" in 297 */*) ;; 298 no) 299 # avoid adding local dir to LDFLAGS and CPPFLAGS 300 have_local_include=yes 301 have_local_lib=yes 302 ;; 303 *) AC_MSG_ERROR(must pass path argument to --with-local-dir) ;; 304 esac 305 AC_MSG_RESULT($local_dir) 306 ], [ 307 local_dir=/usr/local 308 AC_MSG_RESULT(Defaulting to $local_dir) 309 ]) 310 if test "$GCC" = yes -a "$local_dir" != no; then 311 echo 'void f(){}' > conftest.c 312 dnl Removed -no-cpp-precomp, only needed for OS X 10.2 (Ben Fowler) 313 have_local_include=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/include"` 314 have_local_lib=`${CC-cc} -c -v conftest.c 2>&1 | grep "${local_dir}/lib"` 315 rm -f conftest.c conftest.o 316 fi 317 if test -z "$have_local_lib" -a -d "${local_dir}/lib"; then 318 tt=`echo "$LDFLAGS" | sed -e "s+-L${local_dir}/lib ++g" -e "s+-L${local_dir}/lib$++g"` 319 if test "$tt" = "$LDFLAGS"; then 320 LDFLAGS="$LDFLAGS -L${local_dir}/lib" 321 fi 322 fi 323 if test -z "$have_local_include" -a -d "${local_dir}/include"; then 324 tt=`echo "$CPPFLAGS" | sed -e "s+-I${local_dir}/include ++g" -e "s+-I${local_dir}/include$++g"` 325 if test "$tt" = "$CPPFLAGS"; then 326 CPPFLAGS="$CPPFLAGS -I${local_dir}/include" 327 fi 328 fi 329fi 330 331AC_MSG_CHECKING(--with-vim-name argument) 332AC_ARG_WITH(vim-name, [ --with-vim-name=NAME what to call the Vim executable], 333 VIMNAME="$withval"; AC_MSG_RESULT($VIMNAME), 334 VIMNAME="vim"; AC_MSG_RESULT(Defaulting to $VIMNAME)) 335AC_SUBST(VIMNAME) 336AC_MSG_CHECKING(--with-ex-name argument) 337AC_ARG_WITH(ex-name, [ --with-ex-name=NAME what to call the Ex executable], 338 EXNAME="$withval"; AC_MSG_RESULT($EXNAME), 339 EXNAME="ex"; AC_MSG_RESULT(Defaulting to ex)) 340AC_SUBST(EXNAME) 341AC_MSG_CHECKING(--with-view-name argument) 342AC_ARG_WITH(view-name, [ --with-view-name=NAME what to call the View executable], 343 VIEWNAME="$withval"; AC_MSG_RESULT($VIEWNAME), 344 VIEWNAME="view"; AC_MSG_RESULT(Defaulting to view)) 345AC_SUBST(VIEWNAME) 346 347AC_MSG_CHECKING(--with-global-runtime argument) 348AC_ARG_WITH(global-runtime, [ --with-global-runtime=DIR global runtime directory in 'runtimepath', comma-separated for multiple directories], 349 RUNTIME_GLOBAL="$withval"; AC_MSG_RESULT($withval), 350 AC_MSG_RESULT(no)) 351 352if test "X$RUNTIME_GLOBAL" != "X"; then 353 RUNTIME_GLOBAL_AFTER=$(printf -- "$RUNTIME_GLOBAL\\n" | $AWK -F, 'BEGIN { comma=0 } { for (i = NF; i > 0; i--) { if (comma) { printf ",%s/after", $i } else { printf "%s/after", $i; comma=1 } } } END { printf "\n" }') 354 AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL, "$RUNTIME_GLOBAL") 355 AC_DEFINE_UNQUOTED(RUNTIME_GLOBAL_AFTER, "$RUNTIME_GLOBAL_AFTER") 356fi 357 358AC_MSG_CHECKING(--with-modified-by argument) 359AC_ARG_WITH(modified-by, [ --with-modified-by=NAME name of who modified a release version], 360 AC_MSG_RESULT($withval); AC_DEFINE_UNQUOTED(MODIFIED_BY, "$withval"), 361 AC_MSG_RESULT(no)) 362 363dnl Check for EBCDIC stolen from the LYNX port to z/OS Unix 364AC_MSG_CHECKING(if character set is EBCDIC) 365AC_TRY_COMPILE([ ], 366[ /* TryCompile function for CharSet. 367 Treat any failure as ASCII for compatibility with existing art. 368 Use compile-time rather than run-time tests for cross-compiler 369 tolerance. */ 370#if '0'!=240 371make an error "Character set is not EBCDIC" 372#endif ], 373[ # TryCompile action if true 374cf_cv_ebcdic=yes ], 375[ # TryCompile action if false 376cf_cv_ebcdic=no]) 377# end of TryCompile ]) 378# end of CacheVal CvEbcdic 379AC_MSG_RESULT($cf_cv_ebcdic) 380case "$cf_cv_ebcdic" in #(vi 381 yes) AC_DEFINE(EBCDIC) 382 line_break='"\\n"' 383 ;; 384 *) line_break='"\\012"';; 385esac 386AC_SUBST(line_break) 387 388if test "$cf_cv_ebcdic" = "yes"; then 389dnl If we have EBCDIC we most likely have z/OS Unix, let's test it! 390AC_MSG_CHECKING(for z/OS Unix) 391case `uname` in 392 OS/390) zOSUnix="yes"; 393 dnl If using cc the environment variable _CC_CCMODE must be 394 dnl set to "1", so that some compiler extensions are enabled. 395 dnl If using c89 the environment variable is named _CC_C89MODE. 396 dnl Note: compile with c89 never tested. 397 if test "$CC" = "cc"; then 398 ccm="$_CC_CCMODE" 399 ccn="CC" 400 else 401 if test "$CC" = "c89"; then 402 ccm="$_CC_C89MODE" 403 ccn="C89" 404 else 405 ccm=1 406 fi 407 fi 408 if test "$ccm" != "1"; then 409 echo "" 410 echo "------------------------------------------" 411 echo " On z/OS Unix, the environment variable" 412 echo " _CC_${ccn}MODE must be set to \"1\"!" 413 echo " Do:" 414 echo " export _CC_${ccn}MODE=1" 415 echo " and then call configure again." 416 echo "------------------------------------------" 417 exit 1 418 fi 419 # Set CFLAGS for configure process. 420 # This will be reset later for config.mk. 421 # Use haltonmsg to force error for missing H files. 422 CFLAGS="$CFLAGS -D_ALL_SOURCE -Wc,float(ieee),haltonmsg(3296)"; 423 LDFLAGS="$LDFLAGS -Wl,EDIT=NO" 424 AC_MSG_RESULT(yes) 425 ;; 426 *) zOSUnix="no"; 427 AC_MSG_RESULT(no) 428 ;; 429esac 430fi 431 432dnl Set QUOTESED. Needs additional backslashes on zOS 433if test "$zOSUnix" = "yes"; then 434 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\\\\\&/g' -e 's/\\\\\\\\\"/\"/' -e 's/\\\\\\\\\";\$\$/\";/'" 435else 436 QUOTESED="sed -e 's/[[\\\\\"]]/\\\\&/g' -e 's/\\\\\"/\"/' -e 's/\\\\\";\$\$/\";/'" 437fi 438AC_SUBST(QUOTESED) 439 440 441dnl Link with -lsmack for Smack stuff; if not found 442AC_MSG_CHECKING(--disable-smack argument) 443AC_ARG_ENABLE(smack, 444 [ --disable-smack Do not check for Smack support.], 445 , enable_smack="yes") 446if test "$enable_smack" = "yes"; then 447 AC_MSG_RESULT(no) 448 AC_CHECK_HEADER([linux/xattr.h], true, enable_smack="no") 449else 450 AC_MSG_RESULT(yes) 451fi 452if test "$enable_smack" = "yes"; then 453 AC_CHECK_HEADER([attr/xattr.h], true, enable_smack="no") 454fi 455if test "$enable_smack" = "yes"; then 456 AC_MSG_CHECKING(for XATTR_NAME_SMACKEXEC in linux/xattr.h) 457 AC_EGREP_CPP(XATTR_NAME_SMACKEXEC, [#include <linux/xattr.h>], 458 AC_MSG_RESULT(yes), 459 AC_MSG_RESULT(no); enable_smack="no") 460fi 461if test "$enable_smack" = "yes"; then 462 AC_CHECK_LIB(attr, setxattr, 463 [LIBS="$LIBS -lattr" 464 found_smack="yes" 465 AC_DEFINE(HAVE_SMACK)]) 466fi 467 468dnl When smack was found don't search for SELinux 469if test "x$found_smack" = "x"; then 470 dnl Link with -lselinux for SELinux stuff; if not found 471 AC_MSG_CHECKING(--disable-selinux argument) 472 AC_ARG_ENABLE(selinux, 473 [ --disable-selinux Do not check for SELinux support.], 474 , enable_selinux="yes") 475 if test "$enable_selinux" = "yes"; then 476 AC_MSG_RESULT(no) 477 AC_CHECK_LIB(selinux, is_selinux_enabled, 478 [AC_CHECK_HEADER(selinux/selinux.h, 479 [LIBS="$LIBS -lselinux" 480 AC_DEFINE(HAVE_SELINUX)])]) 481 else 482 AC_MSG_RESULT(yes) 483 fi 484fi 485 486dnl Check user requested features. 487 488AC_MSG_CHECKING(--with-features argument) 489AC_ARG_WITH(features, [ --with-features=TYPE tiny, small, normal, big or huge (default: huge)], 490 features="$withval"; AC_MSG_RESULT($features), 491 features="huge"; AC_MSG_RESULT(Defaulting to huge)) 492 493dovimdiff="" 494dogvimdiff="" 495case "$features" in 496 tiny) AC_DEFINE(FEAT_TINY) ;; 497 small) AC_DEFINE(FEAT_SMALL) ;; 498 normal) AC_DEFINE(FEAT_NORMAL) dovimdiff="installvimdiff"; 499 dogvimdiff="installgvimdiff" ;; 500 big) AC_DEFINE(FEAT_BIG) dovimdiff="installvimdiff"; 501 dogvimdiff="installgvimdiff" ;; 502 huge) AC_DEFINE(FEAT_HUGE) dovimdiff="installvimdiff"; 503 dogvimdiff="installgvimdiff" ;; 504 *) AC_MSG_RESULT([Sorry, $features is not supported]) ;; 505esac 506 507AC_SUBST(dovimdiff) 508AC_SUBST(dogvimdiff) 509 510AC_MSG_CHECKING(--with-compiledby argument) 511AC_ARG_WITH(compiledby, [ --with-compiledby=NAME name to show in :version message], 512 compiledby="$withval"; AC_MSG_RESULT($withval), 513 compiledby=""; AC_MSG_RESULT(no)) 514AC_SUBST(compiledby) 515 516AC_MSG_CHECKING(--disable-xsmp argument) 517AC_ARG_ENABLE(xsmp, 518 [ --disable-xsmp Disable XSMP session management], 519 , enable_xsmp="yes") 520 521if test "$enable_xsmp" = "yes"; then 522 AC_MSG_RESULT(no) 523 AC_MSG_CHECKING(--disable-xsmp-interact argument) 524 AC_ARG_ENABLE(xsmp-interact, 525 [ --disable-xsmp-interact Disable XSMP interaction], 526 , enable_xsmp_interact="yes") 527 if test "$enable_xsmp_interact" = "yes"; then 528 AC_MSG_RESULT(no) 529 AC_DEFINE(USE_XSMP_INTERACT) 530 else 531 AC_MSG_RESULT(yes) 532 fi 533else 534 AC_MSG_RESULT(yes) 535fi 536 537dnl Check for Lua feature. 538AC_MSG_CHECKING(--enable-luainterp argument) 539AC_ARG_ENABLE(luainterp, 540 [ --enable-luainterp[=OPTS] Include Lua interpreter. [default=no] [OPTS=no/yes/dynamic]], , 541 [enable_luainterp="no"]) 542AC_MSG_RESULT($enable_luainterp) 543 544if test "$enable_luainterp" = "yes" -o "$enable_luainterp" = "dynamic"; then 545 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then 546 AC_MSG_ERROR([cannot use Lua with tiny or small features]) 547 fi 548 549 dnl -- find the lua executable 550 AC_SUBST(vi_cv_path_lua) 551 552 AC_MSG_CHECKING(--with-lua-prefix argument) 553 AC_ARG_WITH(lua_prefix, 554 [ --with-lua-prefix=PFX Prefix where Lua is installed.], 555 with_lua_prefix="$withval"; AC_MSG_RESULT($with_lua_prefix), 556 with_lua_prefix="";AC_MSG_RESULT(no)) 557 558 if test "X$with_lua_prefix" != "X"; then 559 vi_cv_path_lua_pfx="$with_lua_prefix" 560 else 561 AC_MSG_CHECKING(LUA_PREFIX environment var) 562 if test "X$LUA_PREFIX" != "X"; then 563 AC_MSG_RESULT("$LUA_PREFIX") 564 vi_cv_path_lua_pfx="$LUA_PREFIX" 565 else 566 AC_MSG_RESULT([not set, default to /usr]) 567 vi_cv_path_lua_pfx="/usr" 568 fi 569 fi 570 571 AC_MSG_CHECKING(--with-luajit) 572 AC_ARG_WITH(luajit, 573 [ --with-luajit Link with LuaJIT instead of Lua.], 574 [vi_cv_with_luajit="$withval"], 575 [vi_cv_with_luajit="no"]) 576 AC_MSG_RESULT($vi_cv_with_luajit) 577 578 LUA_INC= 579 if test "X$vi_cv_path_lua_pfx" != "X"; then 580 if test "x$vi_cv_with_luajit" != "xno"; then 581 dnl -- try to find LuaJIT executable 582 AC_PATH_PROG(vi_cv_path_luajit, luajit) 583 if test "X$vi_cv_path_luajit" != "X"; then 584 dnl -- find LuaJIT version 585 AC_CACHE_CHECK(LuaJIT version, vi_cv_version_luajit, 586 [ vi_cv_version_luajit=`${vi_cv_path_luajit} -v 2>&1 | sed 's/LuaJIT \([[0-9.]]*\)\.[[0-9]]\(-[[a-z0-9]]*\)* .*/\1/'` ]) 587 AC_CACHE_CHECK(Lua version of LuaJIT, vi_cv_version_lua_luajit, 588 [ vi_cv_version_lua_luajit=`${vi_cv_path_luajit} -e "print(_VERSION)" | sed 's/.* //'` ]) 589 vi_cv_path_lua="$vi_cv_path_luajit" 590 vi_cv_version_lua="$vi_cv_version_lua_luajit" 591 fi 592 else 593 dnl -- try to find Lua executable 594 AC_PATH_PROG(vi_cv_path_plain_lua, lua) 595 if test "X$vi_cv_path_plain_lua" != "X"; then 596 dnl -- find Lua version 597 AC_CACHE_CHECK(Lua version, vi_cv_version_plain_lua, 598 [ vi_cv_version_plain_lua=`${vi_cv_path_plain_lua} -e "print(_VERSION)" | sed 's/.* //'` ]) 599 fi 600 vi_cv_path_lua="$vi_cv_path_plain_lua" 601 vi_cv_version_lua="$vi_cv_version_plain_lua" 602 fi 603 if test "x$vi_cv_with_luajit" != "xno" && test "X$vi_cv_version_luajit" != "X"; then 604 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit) 605 if test -f "$vi_cv_path_lua_pfx/include/luajit-$vi_cv_version_luajit/lua.h"; then 606 AC_MSG_RESULT(yes) 607 LUA_INC=/luajit-$vi_cv_version_luajit 608 fi 609 fi 610 if test "X$LUA_INC" = "X"; then 611 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include) 612 if test -f "$vi_cv_path_lua_pfx/include/lua.h"; then 613 AC_MSG_RESULT(yes) 614 else 615 AC_MSG_RESULT(no) 616 AC_MSG_CHECKING(if lua.h can be found in $vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua) 617 if test -f "$vi_cv_path_lua_pfx/include/lua$vi_cv_version_lua/lua.h"; then 618 AC_MSG_RESULT(yes) 619 LUA_INC=/lua$vi_cv_version_lua 620 else 621 AC_MSG_RESULT(no) 622 vi_cv_path_lua_pfx= 623 fi 624 fi 625 fi 626 fi 627 628 if test "X$vi_cv_path_lua_pfx" != "X"; then 629 if test "x$vi_cv_with_luajit" != "xno"; then 630 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null` 631 if test "X$multiarch" != "X"; then 632 lib_multiarch="lib/${multiarch}" 633 else 634 lib_multiarch="lib" 635 fi 636 if test "X$vi_cv_version_lua" = "X"; then 637 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit" 638 else 639 LUA_LIBS="-L${vi_cv_path_lua_pfx}/${lib_multiarch} -lluajit-$vi_cv_version_lua" 640 fi 641 else 642 if test "X$LUA_INC" != "X"; then 643 dnl Test alternate location using version 644 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua$vi_cv_version_lua" 645 else 646 LUA_LIBS="-L${vi_cv_path_lua_pfx}/lib -llua" 647 fi 648 fi 649 if test "$enable_luainterp" = "dynamic"; then 650 lua_ok="yes" 651 else 652 AC_MSG_CHECKING([if link with ${LUA_LIBS} is sane]) 653 libs_save=$LIBS 654 LIBS="$LIBS $LUA_LIBS" 655 AC_TRY_LINK(,[ ], 656 AC_MSG_RESULT(yes); lua_ok="yes", 657 AC_MSG_RESULT(no); lua_ok="no"; LUA_LIBS="") 658 LIBS=$libs_save 659 fi 660 if test "x$lua_ok" = "xyes"; then 661 LUA_CFLAGS="-I${vi_cv_path_lua_pfx}/include${LUA_INC}" 662 LUA_SRC="if_lua.c" 663 LUA_OBJ="objects/if_lua.o" 664 LUA_PRO="if_lua.pro" 665 AC_DEFINE(FEAT_LUA) 666 fi 667 if test "$enable_luainterp" = "dynamic"; then 668 if test "x$vi_cv_with_luajit" != "xno"; then 669 luajit="jit" 670 fi 671 if test -f "${vi_cv_path_lua_pfx}/bin/cyglua-${vi_cv_version_lua}.dll"; then 672 vi_cv_dll_name_lua="cyglua-${vi_cv_version_lua}.dll" 673 else 674 if test "x$MACOS_X" = "xyes"; then 675 ext="dylib" 676 indexes="" 677 else 678 ext="so" 679 indexes=".0 .1 .2 .3 .4 .5 .6 .7 .8 .9" 680 multiarch=`dpkg-architecture -qDEB_HOST_MULTIARCH 2> /dev/null` 681 if test "X$multiarch" != "X"; then 682 lib_multiarch="lib/${multiarch}" 683 fi 684 fi 685 dnl Determine the sover for the current version, but fallback to 686 dnl liblua${vi_cv_version_lua}.so if no sover-versioned file is found. 687 AC_MSG_CHECKING(if liblua${luajit}*.${ext}* can be found in $vi_cv_path_lua_pfx) 688 for subdir in "${lib_multiarch}" lib64 lib; do 689 if test -z "$subdir"; then 690 continue 691 fi 692 for sover in "${vi_cv_version_lua}.${ext}" "-${vi_cv_version_lua}.${ext}" \ 693 ".${vi_cv_version_lua}.${ext}" ".${ext}.${vi_cv_version_lua}"; do 694 for i in $indexes ""; do 695 if test -f "${vi_cv_path_lua_pfx}/${subdir}/liblua${luajit}${sover}$i"; then 696 sover2="$i" 697 break 3 698 fi 699 done 700 done 701 sover="" 702 done 703 if test "X$sover" = "X"; then 704 AC_MSG_RESULT(no) 705 lua_ok="no" 706 vi_cv_dll_name_lua="liblua${luajit}.${ext}" 707 else 708 AC_MSG_RESULT(yes) 709 lua_ok="yes" 710 vi_cv_dll_name_lua="liblua${luajit}${sover}$sover2" 711 fi 712 fi 713 AC_DEFINE(DYNAMIC_LUA) 714 LUA_LIBS="" 715 LUA_CFLAGS="-DDYNAMIC_LUA_DLL=\\\"${vi_cv_dll_name_lua}\\\" $LUA_CFLAGS" 716 fi 717 if test "X$LUA_CFLAGS$LUA_LIBS" != "X" && \ 718 test "x$MACOS_X" = "xyes" && test "x$vi_cv_with_luajit" != "xno" && \ 719 test "`(uname -m) 2>/dev/null`" = "x86_64"; then 720 dnl OSX/x64 requires these flags. See http://luajit.org/install.html 721 LUA_LIBS="-pagezero_size 10000 -image_base 100000000 $LUA_LIBS" 722 fi 723 fi 724 if test "$fail_if_missing" = "yes" -a "$lua_ok" != "yes"; then 725 AC_MSG_ERROR([could not configure lua]) 726 fi 727 AC_SUBST(LUA_SRC) 728 AC_SUBST(LUA_OBJ) 729 AC_SUBST(LUA_PRO) 730 AC_SUBST(LUA_LIBS) 731 AC_SUBST(LUA_CFLAGS) 732fi 733 734 735dnl Check for MzScheme feature. 736AC_MSG_CHECKING(--enable-mzschemeinterp argument) 737AC_ARG_ENABLE(mzschemeinterp, 738 [ --enable-mzschemeinterp Include MzScheme interpreter.], , 739 [enable_mzschemeinterp="no"]) 740AC_MSG_RESULT($enable_mzschemeinterp) 741 742if test "$enable_mzschemeinterp" = "yes"; then 743 dnl -- find the mzscheme executable 744 AC_SUBST(vi_cv_path_mzscheme) 745 746 AC_MSG_CHECKING(--with-plthome argument) 747 AC_ARG_WITH(plthome, 748 [ --with-plthome=PLTHOME Use PLTHOME.], 749 with_plthome="$withval"; AC_MSG_RESULT($with_plthome), 750 with_plthome="";AC_MSG_RESULT("no")) 751 752 if test "X$with_plthome" != "X"; then 753 vi_cv_path_mzscheme_pfx="$with_plthome" 754 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme" 755 else 756 AC_MSG_CHECKING(PLTHOME environment var) 757 if test "X$PLTHOME" != "X"; then 758 AC_MSG_RESULT("$PLTHOME") 759 vi_cv_path_mzscheme_pfx="$PLTHOME" 760 vi_cv_path_mzscheme="${vi_cv_path_mzscheme_pfx}/bin/mzscheme" 761 else 762 AC_MSG_RESULT(not set) 763 dnl -- try to find MzScheme executable 764 AC_PATH_PROG(vi_cv_path_mzscheme, mzscheme) 765 766 dnl resolve symbolic link, the executable is often elsewhere and there 767 dnl are no links for the include files. 768 if test "X$vi_cv_path_mzscheme" != "X"; then 769 lsout=`ls -l $vi_cv_path_mzscheme` 770 if echo "$lsout" | grep -e '->' >/dev/null 2>/dev/null; then 771 vi_cv_path_mzscheme=`echo "$lsout" | sed 's/.*-> \(.*\)/\1/'` 772 fi 773 fi 774 775 if test "X$vi_cv_path_mzscheme" != "X"; then 776 dnl -- find where MzScheme thinks it was installed 777 AC_CACHE_CHECK(MzScheme install prefix,vi_cv_path_mzscheme_pfx, 778 dnl different versions of MzScheme differ in command line processing 779 dnl use universal approach 780 echo "(display (simplify-path \ 781 (build-path (call-with-values \ 782 (lambda () (split-path (find-system-path (quote exec-file)))) \ 783 (lambda (base name must-be-dir?) base)) (quote up))))" > mzdirs.scm 784 dnl Remove a trailing slash 785 [ vi_cv_path_mzscheme_pfx=`${vi_cv_path_mzscheme} -r mzdirs.scm | \ 786 sed -e 's+/$++'` ]) 787 rm -f mzdirs.scm 788 fi 789 fi 790 fi 791 792 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then 793 AC_MSG_CHECKING(for racket include directory) 794 SCHEME_INC=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-include-dir))) (when (path? p) (display p)))'` 795 if test "X$SCHEME_INC" != "X"; then 796 AC_MSG_RESULT(${SCHEME_INC}) 797 else 798 AC_MSG_RESULT(not found) 799 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include) 800 if test -f "$vi_cv_path_mzscheme_pfx/include/scheme.h"; then 801 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include 802 AC_MSG_RESULT(yes) 803 else 804 AC_MSG_RESULT(no) 805 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/plt) 806 if test -f "$vi_cv_path_mzscheme_pfx/include/plt/scheme.h"; then 807 AC_MSG_RESULT(yes) 808 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/plt 809 else 810 AC_MSG_RESULT(no) 811 AC_MSG_CHECKING(if scheme.h can be found in $vi_cv_path_mzscheme_pfx/include/racket) 812 if test -f "$vi_cv_path_mzscheme_pfx/include/racket/scheme.h"; then 813 AC_MSG_RESULT(yes) 814 SCHEME_INC=${vi_cv_path_mzscheme_pfx}/include/racket 815 else 816 AC_MSG_RESULT(no) 817 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/plt/) 818 if test -f /usr/include/plt/scheme.h; then 819 AC_MSG_RESULT(yes) 820 SCHEME_INC=/usr/include/plt 821 else 822 AC_MSG_RESULT(no) 823 AC_MSG_CHECKING(if scheme.h can be found in /usr/include/racket/) 824 if test -f /usr/include/racket/scheme.h; then 825 AC_MSG_RESULT(yes) 826 SCHEME_INC=/usr/include/racket 827 else 828 AC_MSG_RESULT(no) 829 vi_cv_path_mzscheme_pfx= 830 fi 831 fi 832 fi 833 fi 834 fi 835 fi 836 fi 837 838 if test "X$vi_cv_path_mzscheme_pfx" != "X"; then 839 840 AC_MSG_CHECKING(for racket lib directory) 841 SCHEME_LIB=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-lib-dir))) (when (path? p) (display p)))'` 842 if test "X$SCHEME_LIB" != "X"; then 843 AC_MSG_RESULT(${SCHEME_LIB}) 844 else 845 AC_MSG_RESULT(not found) 846 fi 847 848 for path in "${vi_cv_path_mzscheme_pfx}/lib" "${SCHEME_LIB}"; do 849 if test "X$path" != "X"; then 850 if test "x$MACOS_X" = "xyes"; then 851 MZSCHEME_LIBS="-framework Racket" 852 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" 853 elif test -f "${path}/libmzscheme3m.a"; then 854 MZSCHEME_LIBS="${path}/libmzscheme3m.a" 855 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" 856 elif test -f "${path}/libracket3m.a"; then 857 MZSCHEME_LIBS="${path}/libracket3m.a" 858 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" 859 elif test -f "${path}/libracket.a"; then 860 MZSCHEME_LIBS="${path}/libracket.a ${path}/libmzgc.a" 861 elif test -f "${path}/libmzscheme.a"; then 862 MZSCHEME_LIBS="${path}/libmzscheme.a ${path}/libmzgc.a" 863 else 864 dnl Using shared objects 865 if test -f "${path}/libmzscheme3m.so"; then 866 MZSCHEME_LIBS="-L${path} -lmzscheme3m" 867 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" 868 elif test -f "${path}/libracket3m.so"; then 869 MZSCHEME_LIBS="-L${path} -lracket3m" 870 MZSCHEME_CFLAGS="-DMZ_PRECISE_GC" 871 elif test -f "${path}/libracket.so"; then 872 MZSCHEME_LIBS="-L${path} -lracket -lmzgc" 873 else 874 dnl try next until last 875 if test "$path" != "$SCHEME_LIB"; then 876 continue 877 fi 878 MZSCHEME_LIBS="-L${path} -lmzscheme -lmzgc" 879 fi 880 if test "$GCC" = yes; then 881 dnl Make Vim remember the path to the library. For when it's not in 882 dnl $LD_LIBRARY_PATH. 883 MZSCHEME_LIBS="${MZSCHEME_LIBS} -Wl,-rpath -Wl,${path}" 884 elif test "`(uname) 2>/dev/null`" = SunOS && 885 uname -r | grep '^5' >/dev/null; then 886 MZSCHEME_LIBS="${MZSCHEME_LIBS} -R ${path}" 887 fi 888 fi 889 fi 890 if test "X$MZSCHEME_LIBS" != "X"; then 891 break 892 fi 893 done 894 895 AC_MSG_CHECKING([if racket requires -pthread]) 896 if test "X$SCHEME_LIB" != "X" && $FGREP -e -pthread "$SCHEME_LIB/buildinfo" >/dev/null ; then 897 AC_MSG_RESULT(yes) 898 MZSCHEME_LIBS="${MZSCHEME_LIBS} -pthread" 899 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -pthread" 900 else 901 AC_MSG_RESULT(no) 902 fi 903 904 AC_MSG_CHECKING(for racket config directory) 905 SCHEME_CONFIGDIR=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-config-dir))) (when (path? p) (display p)))'` 906 if test "X$SCHEME_CONFIGDIR" != "X"; then 907 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DMZSCHEME_CONFIGDIR='\"${SCHEME_CONFIGDIR}\"'" 908 AC_MSG_RESULT(${SCHEME_CONFIGDIR}) 909 else 910 AC_MSG_RESULT(not found) 911 fi 912 913 AC_MSG_CHECKING(for racket collects directory) 914 SCHEME_COLLECTS=`${vi_cv_path_mzscheme} -e '(require setup/dirs)(let ((p (find-collects-dir))) (when (path? p) (let-values (((base _1 _2) (split-path p))) (display base))))'` 915 if test "X$SCHEME_COLLECTS" = "X"; then 916 if test -d "$vi_cv_path_mzscheme_pfx/lib/plt/collects"; then 917 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/plt/ 918 else 919 if test -d "$vi_cv_path_mzscheme_pfx/lib/racket/collects"; then 920 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/lib/racket/ 921 else 922 if test -d "$vi_cv_path_mzscheme_pfx/share/racket/collects"; then 923 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/ 924 else 925 if test -d "$vi_cv_path_mzscheme_pfx/collects"; then 926 SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/ 927 fi 928 fi 929 fi 930 fi 931 fi 932 if test "X$SCHEME_COLLECTS" != "X" ; then 933 AC_MSG_RESULT(${SCHEME_COLLECTS}) 934 else 935 AC_MSG_RESULT(not found) 936 fi 937 938 AC_MSG_CHECKING(for mzscheme_base.c) 939 if test -f "${SCHEME_COLLECTS}collects/scheme/base.ss" ; then 940 MZSCHEME_EXTRA="mzscheme_base.c" 941 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" 942 MZSCHEME_MOD="++lib scheme/base" 943 else 944 if test -f "${SCHEME_COLLECTS}collects/scheme/base.rkt" ; then 945 MZSCHEME_EXTRA="mzscheme_base.c" 946 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/mzc" 947 MZSCHEME_MOD="++lib scheme/base" 948 else 949 if test -f "${SCHEME_COLLECTS}collects/racket/base.rkt" ; then 950 MZSCHEME_EXTRA="mzscheme_base.c" 951 MZSCHEME_MZC="${vi_cv_path_mzscheme_pfx}/bin/raco ctool" 952 MZSCHEME_MOD="" 953 fi 954 fi 955 fi 956 if test "X$MZSCHEME_EXTRA" != "X" ; then 957 dnl need to generate bytecode for MzScheme base 958 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -DINCLUDE_MZSCHEME_BASE" 959 AC_MSG_RESULT(needed) 960 else 961 AC_MSG_RESULT(not needed) 962 fi 963 964 dnl On Ubuntu this fixes "undefined reference to symbol 'ffi_type_void'". 965 AC_CHECK_LIB(ffi, ffi_type_void, [MZSCHEME_LIBS="$MZSCHEME_LIBS -lffi"]) 966 967 MZSCHEME_CFLAGS="${MZSCHEME_CFLAGS} -I${SCHEME_INC} \ 968 -DMZSCHEME_COLLECTS='\"${SCHEME_COLLECTS}collects\"'" 969 970 dnl Test that we can compile a simple program with these CFLAGS and LIBS. 971 AC_MSG_CHECKING([if compile and link flags for MzScheme are sane]) 972 cflags_save=$CFLAGS 973 libs_save=$LIBS 974 CFLAGS="$CFLAGS $MZSCHEME_CFLAGS" 975 LIBS="$LIBS $MZSCHEME_LIBS" 976 AC_TRY_LINK(,[ ], 977 AC_MSG_RESULT(yes); mzs_ok=yes, 978 AC_MSG_RESULT(no: MZSCHEME DISABLED); mzs_ok=no) 979 CFLAGS=$cflags_save 980 LIBS=$libs_save 981 if test $mzs_ok = yes; then 982 MZSCHEME_SRC="if_mzsch.c" 983 MZSCHEME_OBJ="objects/if_mzsch.o" 984 MZSCHEME_PRO="if_mzsch.pro" 985 AC_DEFINE(FEAT_MZSCHEME) 986 else 987 MZSCHEME_CFLAGS= 988 MZSCHEME_LIBS= 989 MZSCHEME_EXTRA= 990 MZSCHEME_MZC= 991 fi 992 fi 993 AC_SUBST(MZSCHEME_SRC) 994 AC_SUBST(MZSCHEME_OBJ) 995 AC_SUBST(MZSCHEME_PRO) 996 AC_SUBST(MZSCHEME_LIBS) 997 AC_SUBST(MZSCHEME_CFLAGS) 998 AC_SUBST(MZSCHEME_EXTRA) 999 AC_SUBST(MZSCHEME_MZC) 1000fi 1001 1002 1003AC_MSG_CHECKING(--enable-perlinterp argument) 1004AC_ARG_ENABLE(perlinterp, 1005 [ --enable-perlinterp[=OPTS] Include Perl interpreter. [default=no] [OPTS=no/yes/dynamic]], , 1006 [enable_perlinterp="no"]) 1007AC_MSG_RESULT($enable_perlinterp) 1008if test "$enable_perlinterp" = "yes" -o "$enable_perlinterp" = "dynamic"; then 1009 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then 1010 AC_MSG_ERROR([cannot use Perl with tiny or small features]) 1011 fi 1012 AC_SUBST(vi_cv_path_perl) 1013 AC_PATH_PROG(vi_cv_path_perl, perl) 1014 if test "X$vi_cv_path_perl" != "X"; then 1015 AC_MSG_CHECKING(Perl version) 1016 if $vi_cv_path_perl -e 'require 5.003_01' >/dev/null 2>/dev/null; then 1017 eval `$vi_cv_path_perl -V:usethreads` 1018 eval `$vi_cv_path_perl -V:libperl` 1019 if test "X$usethreads" = "XUNKNOWN" -o "X$usethreads" = "Xundef"; then 1020 badthreads=no 1021 else 1022 if $vi_cv_path_perl -e 'require 5.6.0' >/dev/null 2>/dev/null; then 1023 eval `$vi_cv_path_perl -V:use5005threads` 1024 if test "X$use5005threads" = "XUNKNOWN" -o "X$use5005threads" = "Xundef"; then 1025 badthreads=no 1026 else 1027 badthreads=yes 1028 AC_MSG_RESULT(>>> Perl > 5.6 with 5.5 threads cannot be used <<<) 1029 fi 1030 else 1031 badthreads=yes 1032 AC_MSG_RESULT(>>> Perl 5.5 with threads cannot be used <<<) 1033 fi 1034 fi 1035 if test $badthreads = no; then 1036 AC_MSG_RESULT(OK) 1037 eval `$vi_cv_path_perl -V:shrpenv` 1038 if test "X$shrpenv" = "XUNKNOWN"; then # pre 5.003_04 1039 shrpenv="" 1040 fi 1041 vi_cv_perllib=`$vi_cv_path_perl -MConfig -e 'print $Config{privlibexp}'` 1042 AC_SUBST(vi_cv_perllib) 1043 vi_cv_perl_extutils=unknown_perl_extutils_path 1044 for extutils_rel_path in ExtUtils vendor_perl/ExtUtils; do 1045 xsubpp_path="$vi_cv_perllib/$extutils_rel_path/xsubpp" 1046 if test -f "$xsubpp_path"; then 1047 vi_cv_perl_xsubpp="$xsubpp_path" 1048 fi 1049 done 1050 AC_SUBST(vi_cv_perl_xsubpp) 1051 dnl Remove "-fno-something", it breaks using cproto. 1052 dnl Remove "-fdebug-prefix-map", it isn't supported by clang. 1053 dnl Remove "FORTIFY_SOURCE", it will be defined twice. 1054 dnl remove -pipe and -Wxxx, it confuses cproto 1055 perlcppflags=`$vi_cv_path_perl -Mlib=$srcdir -MExtUtils::Embed \ 1056 -e 'ccflags;perl_inc;print"\n"' | sed -e 's/-fno[[^ ]]*//' \ 1057 -e 's/-fdebug-prefix-map[[^ ]]*//g' \ 1058 -e 's/-pipe //' \ 1059 -e 's/-W[[^ ]]*//g' \ 1060 -e 's/-D_FORTIFY_SOURCE=.//g'` 1061 dnl Remove "-lc", it breaks on FreeBSD when using "-pthread". 1062 perllibs=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed -e 'ldopts' | \ 1063 sed -e '/Warning/d' -e '/Note (probably harmless)/d' \ 1064 -e 's/-bE:perl.exp//' -e 's/-lc //'` 1065 dnl Don't add perl lib to $LIBS: if it's not in LD_LIBRARY_PATH 1066 dnl a test in configure may fail because of that. 1067 perlldflags=`cd $srcdir; $vi_cv_path_perl -MExtUtils::Embed \ 1068 -e 'ccdlflags' | sed -e 's/-bE:perl.exp//'` 1069 1070 dnl check that compiling a simple program still works with the flags 1071 dnl added for Perl. 1072 AC_MSG_CHECKING([if compile and link flags for Perl are sane]) 1073 cflags_save=$CFLAGS 1074 libs_save=$LIBS 1075 ldflags_save=$LDFLAGS 1076 CFLAGS="$CFLAGS $perlcppflags" 1077 LIBS="$LIBS $perllibs" 1078 perlldflags=`echo "$perlldflags" | sed -e 's/^ *//g'` 1079 LDFLAGS="$perlldflags $LDFLAGS" 1080 AC_TRY_LINK(,[ ], 1081 AC_MSG_RESULT(yes); perl_ok=yes, 1082 AC_MSG_RESULT(no: PERL DISABLED); perl_ok=no) 1083 CFLAGS=$cflags_save 1084 LIBS=$libs_save 1085 LDFLAGS=$ldflags_save 1086 if test $perl_ok = yes; then 1087 if test "X$perlcppflags" != "X"; then 1088 PERL_CFLAGS=$perlcppflags 1089 fi 1090 if test "X$perlldflags" != "X"; then 1091 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$perlldflags\"`" = "X"; then 1092 LDFLAGS="$perlldflags $LDFLAGS" 1093 fi 1094 fi 1095 PERL_LIBS=$perllibs 1096 PERL_SRC="auto/if_perl.c if_perlsfio.c" 1097 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o" 1098 PERL_PRO="if_perl.pro if_perlsfio.pro" 1099 AC_DEFINE(FEAT_PERL) 1100 fi 1101 fi 1102 else 1103 AC_MSG_RESULT(>>> too old; need Perl version 5.003_01 or later <<<) 1104 fi 1105 fi 1106 1107 if test "x$MACOS_X" = "xyes"; then 1108 dnl Mac OS X 10.2 or later 1109 dir=/System/Library/Perl 1110 darwindir=$dir/darwin 1111 if test -d $darwindir; then 1112 PERL=/usr/bin/perl 1113 else 1114 dnl Mac OS X 10.3 1115 dir=/System/Library/Perl/5.8.1 1116 darwindir=$dir/darwin-thread-multi-2level 1117 if test -d $darwindir; then 1118 PERL=/usr/bin/perl 1119 fi 1120 fi 1121 if test -n "$PERL"; then 1122 PERL_DIR="$dir" 1123 PERL_CFLAGS="-DFEAT_PERL -I$darwindir/CORE" 1124 PERL_OBJ="objects/if_perl.o objects/if_perlsfio.o $darwindir/auto/DynaLoader/DynaLoader.a" 1125 PERL_LIBS="-L$darwindir/CORE -lperl" 1126 fi 1127 dnl Perl on Mac OS X 10.5 adds "-arch" flags but these should only 1128 dnl be included if requested by passing --with-mac-arch to 1129 dnl configure, so strip these flags first (if present) 1130 PERL_LIBS=`echo "$PERL_LIBS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` 1131 PERL_CFLAGS=`echo "$PERL_CFLAGS" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` 1132 fi 1133 if test "$enable_perlinterp" = "dynamic"; then 1134 if test "$perl_ok" = "yes" -a "X$libperl" != "X"; then 1135 AC_DEFINE(DYNAMIC_PERL) 1136 PERL_CFLAGS="-DDYNAMIC_PERL_DLL=\\\"$libperl\\\" $PERL_CFLAGS" 1137 fi 1138 fi 1139 1140 if test "$fail_if_missing" = "yes" -a "$perl_ok" != "yes"; then 1141 AC_MSG_ERROR([could not configure perl]) 1142 fi 1143fi 1144AC_SUBST(shrpenv) 1145AC_SUBST(PERL_SRC) 1146AC_SUBST(PERL_OBJ) 1147AC_SUBST(PERL_PRO) 1148AC_SUBST(PERL_CFLAGS) 1149AC_SUBST(PERL_LIBS) 1150 1151AC_MSG_CHECKING(--enable-pythoninterp argument) 1152AC_ARG_ENABLE(pythoninterp, 1153 [ --enable-pythoninterp[=OPTS] Include Python interpreter. [default=no] [OPTS=no/yes/dynamic]], , 1154 [enable_pythoninterp="no"]) 1155AC_MSG_RESULT($enable_pythoninterp) 1156if test "$enable_pythoninterp" = "yes" -o "$enable_pythoninterp" = "dynamic"; then 1157 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then 1158 AC_MSG_ERROR([cannot use Python with tiny or small features]) 1159 fi 1160 1161 dnl -- find the python executable 1162 AC_MSG_CHECKING(--with-python-command argument) 1163 AC_SUBST(vi_cv_path_python) 1164 AC_ARG_WITH(python-command, [ --with-python-command=NAME name of the Python 2 command (default: python2 or python)], 1165 vi_cv_path_python="$withval"; AC_MSG_RESULT($vi_cv_path_python), 1166 AC_MSG_RESULT(no)) 1167 1168 if test "X$vi_cv_path_python" = "X"; then 1169 AC_PATH_PROGS(vi_cv_path_python, python2 python) 1170 fi 1171 if test "X$vi_cv_path_python" != "X"; then 1172 1173 dnl -- get its version number 1174 AC_CACHE_CHECK(Python version,vi_cv_var_python_version, 1175 [[vi_cv_var_python_version=` 1176 ${vi_cv_path_python} -c 'import sys; print sys.version[:3]'` 1177 ]]) 1178 1179 dnl -- it must be at least version 2.3 1180 AC_MSG_CHECKING(Python is 2.3 or better) 1181 if ${vi_cv_path_python} -c \ 1182 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)" 1183 then 1184 AC_MSG_RESULT(yep) 1185 1186 dnl -- find where python thinks it was installed 1187 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python_pfx, 1188 [ vi_cv_path_python_pfx=` 1189 ${vi_cv_path_python} -c \ 1190 "import sys; print sys.prefix"` ]) 1191 1192 dnl -- and where it thinks it runs 1193 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python_epfx, 1194 [ vi_cv_path_python_epfx=` 1195 ${vi_cv_path_python} -c \ 1196 "import sys; print sys.exec_prefix"` ]) 1197 1198 dnl -- python's internal library path 1199 1200 AC_CACHE_VAL(vi_cv_path_pythonpath, 1201 [ vi_cv_path_pythonpath=` 1202 unset PYTHONPATH; 1203 ${vi_cv_path_python} -c \ 1204 "import sys, string; print string.join(sys.path,':')"` ]) 1205 1206 dnl -- where the Python implementation library archives are 1207 1208 AC_ARG_WITH(python-config-dir, 1209 [ --with-python-config-dir=PATH Python's config directory (deprecated)], 1210 [ vi_cv_path_python_conf="${withval}"; have_python_config_dir=1 ] ) 1211 1212 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python_conf, 1213 [ 1214 vi_cv_path_python_conf= 1215 d=`${vi_cv_path_python} -c "import distutils.sysconfig; print distutils.sysconfig.get_config_var('LIBPL')"` 1216 if test -d "$d" && test -f "$d/config.c"; then 1217 vi_cv_path_python_conf="$d" 1218 else 1219 for path in "${vi_cv_path_python_pfx}" "${vi_cv_path_python_epfx}"; do 1220 for subdir in lib64 lib share; do 1221 d="${path}/${subdir}/python${vi_cv_var_python_version}/config" 1222 if test -d "$d" && test -f "$d/config.c"; then 1223 vi_cv_path_python_conf="$d" 1224 fi 1225 done 1226 done 1227 fi 1228 ]) 1229 1230 PYTHON_CONFDIR="${vi_cv_path_python_conf}" 1231 1232 if test "X$PYTHON_CONFDIR" = "X"; then 1233 AC_MSG_RESULT([can't find it!]) 1234 else 1235 1236 dnl -- we need to examine Python's config/Makefile too 1237 dnl see what the interpreter is built from 1238 AC_CACHE_VAL(vi_cv_path_python_plibs, 1239 [ 1240 pwd=`pwd` 1241 tmp_mkf="$pwd/config-PyMake$$" 1242 cat -- "${PYTHON_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}" 1243__: 1244 @echo "python_BASEMODLIBS='$(BASEMODLIBS)'" 1245 @echo "python_LIBS='$(LIBS)'" 1246 @echo "python_SYSLIBS='$(SYSLIBS)'" 1247 @echo "python_LINKFORSHARED='$(LINKFORSHARED)'" 1248 @echo "python_DLLLIBRARY='$(DLLLIBRARY)'" 1249 @echo "python_INSTSONAME='$(INSTSONAME)'" 1250 @echo "python_PYTHONFRAMEWORK='$(PYTHONFRAMEWORK)'" 1251 @echo "python_PYTHONFRAMEWORKPREFIX='$(PYTHONFRAMEWORKPREFIX)'" 1252 @echo "python_PYTHONFRAMEWORKINSTALLDIR='$(PYTHONFRAMEWORKINSTALLDIR)'" 1253eof 1254 dnl -- delete the lines from make about Entering/Leaving directory 1255 eval "`cd ${PYTHON_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" 1256 rm -f -- "${tmp_mkf}" 1257 if test "x$MACOS_X" = "xyes" && test -n "${python_PYTHONFRAMEWORK}" && ${vi_cv_path_python} -c \ 1258 "import sys; sys.exit(${vi_cv_var_python_version} < 2.3)"; then 1259 vi_cv_path_python_plibs="-framework Python" 1260 if test "x${vi_cv_path_python}" != "x/usr/bin/python" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then 1261 vi_cv_path_python_plibs="-F${python_PYTHONFRAMEWORKPREFIX} -framework Python" 1262 fi 1263 else 1264 vi_cv_path_python_plibs="-L${PYTHON_CONFDIR} -lpython${vi_cv_var_python_version}" 1265 dnl -- Check if the path contained in python_LINKFORSHARED is 1266 dnl usable for vim build. If not, make and try other 1267 dnl candidates. 1268 if test -n "${python_LINKFORSHARED}" && test -n "${python_PYTHONFRAMEWORKPREFIX}"; then 1269 python_link_symbol=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]].*/\1/'` 1270 python_link_path=`echo ${python_LINKFORSHARED} | sed 's/\([[^ \t]][[^ \t]]*[[ \t]][[ \t]]*[[^ \t]][[^ \t]]*\)[[ \t]][[ \t]]*\(.*\)/\2/'` 1271 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then 1272 dnl -- The path looks relative. Guess the absolute one using 1273 dnl the prefix and try that. 1274 python_link_path="${python_PYTHONFRAMEWORKPREFIX}/${python_link_path}" 1275 if test -n "${python_link_path}" && ! test -x "${python_link_path}"; then 1276 dnl -- A last resort. 1277 python_link_path="${python_PYTHONFRAMEWORKINSTALLDIR}/Versions/${vi_cv_var_python_version}/${python_PYTHONFRAMEWORK}" 1278 dnl -- No check is done. The last word is left to the 1279 dnl "sanity" test on link flags that follows shortly. 1280 fi 1281 python_LINKFORSHARED="${python_link_symbol} ${python_link_path}" 1282 fi 1283 fi 1284 vi_cv_path_python_plibs="${vi_cv_path_python_plibs} ${python_BASEMODLIBS} ${python_LIBS} ${python_SYSLIBS} ${python_LINKFORSHARED}" 1285 dnl remove -ltermcap, it can conflict with an earlier -lncurses 1286 vi_cv_path_python_plibs=`echo $vi_cv_path_python_plibs | sed s/-ltermcap//` 1287 fi 1288 ]) 1289 AC_CACHE_CHECK(Python's dll name,vi_cv_dll_name_python, 1290 [ 1291 if test "X$python_DLLLIBRARY" != "X"; then 1292 vi_cv_dll_name_python="$python_DLLLIBRARY" 1293 else 1294 vi_cv_dll_name_python="$python_INSTSONAME" 1295 fi 1296 ]) 1297 1298 PYTHON_LIBS="${vi_cv_path_python_plibs}" 1299 if test "${vi_cv_path_python_pfx}" = "${vi_cv_path_python_epfx}"; then 1300 PYTHON_CFLAGS="-I${vi_cv_path_python_pfx}/include/python${vi_cv_var_python_version}" 1301 else 1302 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}" 1303 fi 1304 if test "X$have_python_config_dir" = "X1" -a "$enable_pythoninterp" = "dynamic"; then 1305 dnl Define PYTHON_HOME if --with-python-config-dir was used 1306 PYTHON_CFLAGS="${PYTHON_CFLAGS} -DPYTHON_HOME='\"${vi_cv_path_python_pfx}\"'" 1307 1308 fi 1309 PYTHON_SRC="if_python.c" 1310 PYTHON_OBJ="objects/if_python.o" 1311 1312 dnl On FreeBSD linking with "-pthread" is required to use threads. 1313 dnl _THREAD_SAFE must be used for compiling then. 1314 dnl The "-pthread" is added to $LIBS, so that the following check for 1315 dnl sigaltstack() will look in libc_r (it's there in libc!). 1316 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC 1317 dnl will then define target-specific defines, e.g., -D_REENTRANT. 1318 dnl Don't do this for Mac OSX, -pthread will generate a warning. 1319 AC_MSG_CHECKING([if -pthread should be used]) 1320 threadsafe_flag= 1321 thread_lib= 1322 dnl if test "x$MACOS_X" != "xyes"; then 1323 if test "`(uname) 2>/dev/null`" != Darwin; then 1324 test "$GCC" = yes && threadsafe_flag="-pthread" 1325 if test "`(uname) 2>/dev/null`" = FreeBSD; then 1326 threadsafe_flag="-D_THREAD_SAFE" 1327 thread_lib="-pthread" 1328 fi 1329 if test "`(uname) 2>/dev/null`" = SunOS; then 1330 threadsafe_flag="-pthreads" 1331 fi 1332 fi 1333 libs_save_old=$LIBS 1334 if test -n "$threadsafe_flag"; then 1335 cflags_save=$CFLAGS 1336 CFLAGS="$CFLAGS $threadsafe_flag" 1337 LIBS="$LIBS $thread_lib" 1338 AC_TRY_LINK(,[ ], 1339 AC_MSG_RESULT(yes); PYTHON_CFLAGS="$PYTHON_CFLAGS $threadsafe_flag", 1340 AC_MSG_RESULT(no); LIBS=$libs_save_old 1341 ) 1342 CFLAGS=$cflags_save 1343 else 1344 AC_MSG_RESULT(no) 1345 fi 1346 1347 dnl Check that compiling a simple program still works with the flags 1348 dnl added for Python. 1349 AC_MSG_CHECKING([if compile and link flags for Python are sane]) 1350 cflags_save=$CFLAGS 1351 libs_save=$LIBS 1352 CFLAGS="$CFLAGS $PYTHON_CFLAGS" 1353 LIBS="$LIBS $PYTHON_LIBS" 1354 AC_TRY_LINK(,[ ], 1355 AC_MSG_RESULT(yes); python_ok=yes, 1356 AC_MSG_RESULT(no: PYTHON DISABLED); python_ok=no) 1357 CFLAGS=$cflags_save 1358 LIBS=$libs_save 1359 if test $python_ok = yes; then 1360 AC_DEFINE(FEAT_PYTHON) 1361 else 1362 LIBS=$libs_save_old 1363 PYTHON_SRC= 1364 PYTHON_OBJ= 1365 PYTHON_LIBS= 1366 PYTHON_CFLAGS= 1367 fi 1368 fi 1369 else 1370 AC_MSG_RESULT(too old) 1371 fi 1372 fi 1373 1374 if test "$fail_if_missing" = "yes" -a "$python_ok" != "yes"; then 1375 AC_MSG_ERROR([could not configure python]) 1376 fi 1377fi 1378 1379AC_SUBST(PYTHON_LIBS) 1380AC_SUBST(PYTHON_CFLAGS) 1381AC_SUBST(PYTHON_SRC) 1382AC_SUBST(PYTHON_OBJ) 1383 1384 1385AC_MSG_CHECKING(--enable-python3interp argument) 1386AC_ARG_ENABLE(python3interp, 1387 [ --enable-python3interp[=OPTS] Include Python3 interpreter. [default=no] [OPTS=no/yes/dynamic]], , 1388 [enable_python3interp="no"]) 1389AC_MSG_RESULT($enable_python3interp) 1390if test "$enable_python3interp" = "yes" -o "$enable_python3interp" = "dynamic"; then 1391 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then 1392 AC_MSG_ERROR([cannot use Python with tiny or small features]) 1393 fi 1394 1395 dnl -- find the python3 executable 1396 AC_MSG_CHECKING(--with-python3-command argument) 1397 AC_SUBST(vi_cv_path_python3) 1398 AC_ARG_WITH(python3-command, [ --with-python3-command=NAME name of the Python 3 command (default: python3 or python)], 1399 vi_cv_path_python3="$withval"; AC_MSG_RESULT($vi_cv_path_python3), 1400 AC_MSG_RESULT(no)) 1401 1402 if test "X$vi_cv_path_python3" = "X"; then 1403 AC_PATH_PROGS(vi_cv_path_python3, python3 python) 1404 fi 1405 if test "X$vi_cv_path_python3" != "X"; then 1406 1407 dnl -- get its version number 1408 AC_CACHE_CHECK(Python version,vi_cv_var_python3_version, 1409 [[vi_cv_var_python3_version=` 1410 ${vi_cv_path_python3} -c 'import sys; print(sys.version[:3])'` 1411 ]]) 1412 1413 dnl -- it must be at least version 3 1414 AC_MSG_CHECKING(Python is 3.0 or better) 1415 if ${vi_cv_path_python3} -c \ 1416 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.0)" 1417 then 1418 AC_MSG_RESULT(yep) 1419 1420 dnl -- get abiflags for python 3.2 or higher (PEP 3149) 1421 AC_CACHE_CHECK(Python's abiflags,vi_cv_var_python3_abiflags, 1422 [ 1423 vi_cv_var_python3_abiflags= 1424 if ${vi_cv_path_python3} -c \ 1425 "import sys; sys.exit(${vi_cv_var_python3_version} < 3.2)" 1426 then 1427 vi_cv_var_python3_abiflags=`${vi_cv_path_python3} -c \ 1428 "import sys; print(sys.abiflags)"` 1429 fi ]) 1430 1431 dnl -- find where python3 thinks it was installed 1432 AC_CACHE_CHECK(Python's install prefix,vi_cv_path_python3_pfx, 1433 [ vi_cv_path_python3_pfx=` 1434 ${vi_cv_path_python3} -c \ 1435 "import sys; print(sys.prefix)"` ]) 1436 1437 dnl -- and where it thinks it runs 1438 AC_CACHE_CHECK(Python's execution prefix,vi_cv_path_python3_epfx, 1439 [ vi_cv_path_python3_epfx=` 1440 ${vi_cv_path_python3} -c \ 1441 "import sys; print(sys.exec_prefix)"` ]) 1442 1443 dnl -- python3's internal library path 1444 1445 AC_CACHE_VAL(vi_cv_path_python3path, 1446 [ vi_cv_path_python3path=` 1447 unset PYTHONPATH; 1448 ${vi_cv_path_python3} -c \ 1449 "import sys, string; print(':'.join(sys.path))"` ]) 1450 1451 dnl -- where the Python implementation library archives are 1452 1453 AC_ARG_WITH(python3-config-dir, 1454 [ --with-python3-config-dir=PATH Python's config directory (deprecated)], 1455 [ vi_cv_path_python3_conf="${withval}"; have_python3_config_dir=1 ] ) 1456 1457 AC_CACHE_CHECK(Python's configuration directory,vi_cv_path_python3_conf, 1458 [ 1459 vi_cv_path_python3_conf= 1460 config_dir="config-${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" 1461 d=`${vi_cv_path_python3} -c "import distutils.sysconfig; print(distutils.sysconfig.get_config_var('LIBPL'))"` 1462 if test -d "$d" && test -f "$d/config.c"; then 1463 vi_cv_path_python3_conf="$d" 1464 else 1465 for path in "${vi_cv_path_python3_pfx}" "${vi_cv_path_python3_epfx}"; do 1466 for subdir in lib64 lib share; do 1467 d="${path}/${subdir}/python${vi_cv_var_python3_version}/${config_dir}" 1468 if test -d "$d" && test -f "$d/config.c"; then 1469 vi_cv_path_python3_conf="$d" 1470 fi 1471 done 1472 done 1473 fi 1474 ]) 1475 1476 PYTHON3_CONFDIR="${vi_cv_path_python3_conf}" 1477 1478 if test "X$PYTHON3_CONFDIR" = "X"; then 1479 AC_MSG_RESULT([can't find it!]) 1480 else 1481 1482 dnl -- we need to examine Python's config/Makefile too 1483 dnl see what the interpreter is built from 1484 AC_CACHE_VAL(vi_cv_path_python3_plibs, 1485 [ 1486 pwd=`pwd` 1487 tmp_mkf="$pwd/config-PyMake$$" 1488 cat -- "${PYTHON3_CONFDIR}/Makefile" - <<'eof' >"${tmp_mkf}" 1489__: 1490 @echo "python3_BASEMODLIBS='$(BASEMODLIBS)'" 1491 @echo "python3_LIBS='$(LIBS)'" 1492 @echo "python3_SYSLIBS='$(SYSLIBS)'" 1493 @echo "python3_DLLLIBRARY='$(DLLLIBRARY)'" 1494 @echo "python3_INSTSONAME='$(INSTSONAME)'" 1495eof 1496 dnl -- delete the lines from make about Entering/Leaving directory 1497 eval "`cd ${PYTHON3_CONFDIR} && make -f "${tmp_mkf}" __ | sed '/ directory /d'`" 1498 rm -f -- "${tmp_mkf}" 1499 vi_cv_path_python3_plibs="-L${PYTHON3_CONFDIR} -lpython${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" 1500 vi_cv_path_python3_plibs="${vi_cv_path_python3_plibs} ${python3_BASEMODLIBS} ${python3_LIBS} ${python3_SYSLIBS}" 1501 dnl remove -ltermcap, it can conflict with an earlier -lncurses 1502 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-ltermcap//` 1503 vi_cv_path_python3_plibs=`echo $vi_cv_path_python3_plibs | sed s/-lffi//` 1504 ]) 1505 AC_CACHE_CHECK(Python3's dll name,vi_cv_dll_name_python3, 1506 [ 1507 if test "X$python3_DLLLIBRARY" != "X"; then 1508 vi_cv_dll_name_python3="$python3_DLLLIBRARY" 1509 else 1510 vi_cv_dll_name_python3="$python3_INSTSONAME" 1511 fi 1512 ]) 1513 1514 PYTHON3_LIBS="${vi_cv_path_python3_plibs}" 1515 if test "${vi_cv_path_python3_pfx}" = "${vi_cv_path_python3_epfx}"; then 1516 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" 1517 else 1518 PYTHON3_CFLAGS="-I${vi_cv_path_python3_pfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags} -I${vi_cv_path_python3_epfx}/include/python${vi_cv_var_python3_version}${vi_cv_var_python3_abiflags}" 1519 fi 1520 if test "X$have_python3_config_dir" = "X1" -a "$enable_python3interp" = "dynamic"; then 1521 dnl Define PYTHON3_HOME if --with-python-config-dir was used 1522 PYTHON3_CFLAGS="${PYTHON3_CFLAGS} -DPYTHON3_HOME='L\"${vi_cv_path_python3_pfx}\"'" 1523 fi 1524 PYTHON3_SRC="if_python3.c" 1525 PYTHON3_OBJ="objects/if_python3.o" 1526 1527 dnl On FreeBSD linking with "-pthread" is required to use threads. 1528 dnl _THREAD_SAFE must be used for compiling then. 1529 dnl The "-pthread" is added to $LIBS, so that the following check for 1530 dnl sigaltstack() will look in libc_r (it's there in libc!). 1531 dnl Otherwise, when using GCC, try adding -pthread to $CFLAGS. GCC 1532 dnl will then define target-specific defines, e.g., -D_REENTRANT. 1533 dnl Don't do this for Mac OSX, -pthread will generate a warning. 1534 AC_MSG_CHECKING([if -pthread should be used]) 1535 threadsafe_flag= 1536 thread_lib= 1537 dnl if test "x$MACOS_X" != "xyes"; then 1538 if test "`(uname) 2>/dev/null`" != Darwin; then 1539 test "$GCC" = yes && threadsafe_flag="-pthread" 1540 if test "`(uname) 2>/dev/null`" = FreeBSD; then 1541 threadsafe_flag="-D_THREAD_SAFE" 1542 thread_lib="-pthread" 1543 fi 1544 if test "`(uname) 2>/dev/null`" = SunOS; then 1545 threadsafe_flag="-pthreads" 1546 fi 1547 fi 1548 libs_save_old=$LIBS 1549 if test -n "$threadsafe_flag"; then 1550 cflags_save=$CFLAGS 1551 CFLAGS="$CFLAGS $threadsafe_flag" 1552 LIBS="$LIBS $thread_lib" 1553 AC_TRY_LINK(,[ ], 1554 AC_MSG_RESULT(yes); PYTHON3_CFLAGS="$PYTHON3_CFLAGS $threadsafe_flag", 1555 AC_MSG_RESULT(no); LIBS=$libs_save_old 1556 ) 1557 CFLAGS=$cflags_save 1558 else 1559 AC_MSG_RESULT(no) 1560 fi 1561 1562 dnl check that compiling a simple program still works with the flags 1563 dnl added for Python. 1564 AC_MSG_CHECKING([if compile and link flags for Python 3 are sane]) 1565 cflags_save=$CFLAGS 1566 libs_save=$LIBS 1567 CFLAGS="$CFLAGS $PYTHON3_CFLAGS" 1568 LIBS="$LIBS $PYTHON3_LIBS" 1569 AC_TRY_LINK(,[ ], 1570 AC_MSG_RESULT(yes); python3_ok=yes, 1571 AC_MSG_RESULT(no: PYTHON3 DISABLED); python3_ok=no) 1572 CFLAGS=$cflags_save 1573 LIBS=$libs_save 1574 if test "$python3_ok" = yes; then 1575 AC_DEFINE(FEAT_PYTHON3) 1576 else 1577 LIBS=$libs_save_old 1578 PYTHON3_SRC= 1579 PYTHON3_OBJ= 1580 PYTHON3_LIBS= 1581 PYTHON3_CFLAGS= 1582 fi 1583 fi 1584 else 1585 AC_MSG_RESULT(too old) 1586 fi 1587 fi 1588 if test "$fail_if_missing" = "yes" -a "$python3_ok" != "yes"; then 1589 AC_MSG_ERROR([could not configure python3]) 1590 fi 1591fi 1592 1593AC_SUBST(PYTHON3_LIBS) 1594AC_SUBST(PYTHON3_CFLAGS) 1595AC_SUBST(PYTHON3_SRC) 1596AC_SUBST(PYTHON3_OBJ) 1597 1598dnl if python2.x and python3.x are enabled one can only link in code 1599dnl with dlopen(), dlsym(), dlclose() 1600if test "$python_ok" = yes && test "$python3_ok" = yes; then 1601 AC_DEFINE(DYNAMIC_PYTHON) 1602 AC_DEFINE(DYNAMIC_PYTHON3) 1603 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python) 1604 cflags_save=$CFLAGS 1605 CFLAGS="$CFLAGS $PYTHON_CFLAGS" 1606 libs_save=$LIBS 1607 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) 1608 LIBS="-ldl $LIBS" 1609 AC_RUN_IFELSE([AC_LANG_SOURCE([ 1610 #include <dlfcn.h> 1611 /* If this program fails, then RTLD_GLOBAL is needed. 1612 * RTLD_GLOBAL will be used and then it is not possible to 1613 * have both python versions enabled in the same vim instance. 1614 * Only the first python version used will be switched on. 1615 */ 1616 1617 int no_rtl_global_needed_for(char *python_instsoname, char *prefix) 1618 { 1619 int needed = 0; 1620 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL); 1621 if (pylib != 0) 1622 { 1623 void (*pfx)(char *home) = dlsym(pylib, "Py_SetPythonHome"); 1624 void (*init)(void) = dlsym(pylib, "Py_Initialize"); 1625 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); 1626 void (*final)(void) = dlsym(pylib, "Py_Finalize"); 1627 (*pfx)(prefix); 1628 (*init)(); 1629 needed = (*simple)("import termios") == -1; 1630 (*final)(); 1631 dlclose(pylib); 1632 } 1633 return !needed; 1634 } 1635 1636 int main(int argc, char** argv) 1637 { 1638 int not_needed = 0; 1639 if (no_rtl_global_needed_for("${vi_cv_dll_name_python}", "${vi_cv_path_python_pfx}")) 1640 not_needed = 1; 1641 return !not_needed; 1642 }])], 1643 [AC_MSG_RESULT(yes);AC_DEFINE(PY_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) 1644 1645 CFLAGS=$cflags_save 1646 LIBS=$libs_save 1647 1648 AC_MSG_CHECKING(whether we can do without RTLD_GLOBAL for Python3) 1649 cflags_save=$CFLAGS 1650 CFLAGS="$CFLAGS $PYTHON3_CFLAGS" 1651 libs_save=$LIBS 1652 dnl -ldl must go first to make this work on Archlinux (Roland Puntaier) 1653 LIBS="-ldl $LIBS" 1654 AC_RUN_IFELSE([AC_LANG_SOURCE([ 1655 #include <dlfcn.h> 1656 #include <wchar.h> 1657 /* If this program fails, then RTLD_GLOBAL is needed. 1658 * RTLD_GLOBAL will be used and then it is not possible to 1659 * have both python versions enabled in the same vim instance. 1660 * Only the first python version used will be switched on. 1661 */ 1662 1663 int no_rtl_global_needed_for(char *python_instsoname, wchar_t *prefix) 1664 { 1665 int needed = 0; 1666 void* pylib = dlopen(python_instsoname, RTLD_LAZY|RTLD_LOCAL); 1667 if (pylib != 0) 1668 { 1669 void (*pfx)(wchar_t *home) = dlsym(pylib, "Py_SetPythonHome"); 1670 void (*init)(void) = dlsym(pylib, "Py_Initialize"); 1671 int (*simple)(char*) = dlsym(pylib, "PyRun_SimpleString"); 1672 void (*final)(void) = dlsym(pylib, "Py_Finalize"); 1673 (*pfx)(prefix); 1674 (*init)(); 1675 needed = (*simple)("import termios") == -1; 1676 (*final)(); 1677 dlclose(pylib); 1678 } 1679 return !needed; 1680 } 1681 1682 int main(int argc, char** argv) 1683 { 1684 int not_needed = 0; 1685 if (no_rtl_global_needed_for("${vi_cv_dll_name_python3}", L"${vi_cv_path_python3_pfx}")) 1686 not_needed = 1; 1687 return !not_needed; 1688 }])], 1689 [AC_MSG_RESULT(yes);AC_DEFINE(PY3_NO_RTLD_GLOBAL)], [AC_MSG_RESULT(no)]) 1690 1691 CFLAGS=$cflags_save 1692 LIBS=$libs_save 1693 1694 PYTHON_SRC="if_python.c" 1695 PYTHON_OBJ="objects/if_python.o" 1696 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\"" 1697 PYTHON_LIBS= 1698 PYTHON3_SRC="if_python3.c" 1699 PYTHON3_OBJ="objects/if_python3.o" 1700 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\"" 1701 PYTHON3_LIBS= 1702elif test "$python_ok" = yes && test "$enable_pythoninterp" = "dynamic"; then 1703 AC_DEFINE(DYNAMIC_PYTHON) 1704 PYTHON_SRC="if_python.c" 1705 PYTHON_OBJ="objects/if_python.o" 1706 PYTHON_CFLAGS="$PYTHON_CFLAGS -DDYNAMIC_PYTHON_DLL=\\\"${vi_cv_dll_name_python}\\\"" 1707 PYTHON_LIBS= 1708elif test "$python_ok" = yes; then 1709 dnl Check that adding -fPIE works. It may be needed when using a static 1710 dnl Python library. 1711 AC_MSG_CHECKING([if -fPIE can be added for Python]) 1712 cflags_save=$CFLAGS 1713 libs_save=$LIBS 1714 CFLAGS="$CFLAGS $PYTHON_CFLAGS -fPIE" 1715 LIBS="$LIBS $PYTHON_LIBS" 1716 AC_TRY_LINK(,[ ], 1717 AC_MSG_RESULT(yes); fpie_ok=yes, 1718 AC_MSG_RESULT(no); fpie_ok=no) 1719 CFLAGS=$cflags_save 1720 LIBS=$libs_save 1721 if test $fpie_ok = yes; then 1722 PYTHON_CFLAGS="$PYTHON_CFLAGS -fPIE" 1723 fi 1724elif test "$python3_ok" = yes && test "$enable_python3interp" = "dynamic"; then 1725 AC_DEFINE(DYNAMIC_PYTHON3) 1726 PYTHON3_SRC="if_python3.c" 1727 PYTHON3_OBJ="objects/if_python3.o" 1728 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -DDYNAMIC_PYTHON3_DLL=\\\"${vi_cv_dll_name_python3}\\\"" 1729 PYTHON3_LIBS= 1730elif test "$python3_ok" = yes; then 1731 dnl Check that adding -fPIE works. It may be needed when using a static 1732 dnl Python library. 1733 AC_MSG_CHECKING([if -fPIE can be added for Python3]) 1734 cflags_save=$CFLAGS 1735 libs_save=$LIBS 1736 CFLAGS="$CFLAGS $PYTHON3_CFLAGS -fPIE" 1737 LIBS="$LIBS $PYTHON3_LIBS" 1738 AC_TRY_LINK(,[ ], 1739 AC_MSG_RESULT(yes); fpie_ok=yes, 1740 AC_MSG_RESULT(no); fpie_ok=no) 1741 CFLAGS=$cflags_save 1742 LIBS=$libs_save 1743 if test $fpie_ok = yes; then 1744 PYTHON3_CFLAGS="$PYTHON3_CFLAGS -fPIE" 1745 fi 1746fi 1747 1748AC_MSG_CHECKING(--enable-tclinterp argument) 1749AC_ARG_ENABLE(tclinterp, 1750 [ --enable-tclinterp[=OPTS] Include Tcl interpreter. [default=no] [OPTS=no/yes/dynamic]], , 1751 [enable_tclinterp="no"]) 1752AC_MSG_RESULT($enable_tclinterp) 1753 1754if test "$enable_tclinterp" = "yes" -o "$enable_tclinterp" = "dynamic"; then 1755 1756 dnl on FreeBSD tclsh is a silly script, look for tclsh8.[5420] 1757 AC_MSG_CHECKING(--with-tclsh argument) 1758 AC_ARG_WITH(tclsh, [ --with-tclsh=PATH which tclsh to use (default: tclsh8.0)], 1759 tclsh_name="$withval"; AC_MSG_RESULT($tclsh_name), 1760 tclsh_name="tclsh8.5"; AC_MSG_RESULT(no)) 1761 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) 1762 AC_SUBST(vi_cv_path_tcl) 1763 1764 dnl when no specific version specified, also try 8.4, 8.2 and 8.0 1765 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.5"; then 1766 tclsh_name="tclsh8.4" 1767 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) 1768 fi 1769 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.4"; then 1770 tclsh_name="tclsh8.2" 1771 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) 1772 fi 1773 if test "X$vi_cv_path_tcl" = "X" -a $tclsh_name = "tclsh8.2"; then 1774 tclsh_name="tclsh8.0" 1775 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) 1776 fi 1777 dnl still didn't find it, try without version number 1778 if test "X$vi_cv_path_tcl" = "X"; then 1779 tclsh_name="tclsh" 1780 AC_PATH_PROG(vi_cv_path_tcl, $tclsh_name) 1781 fi 1782 if test "X$vi_cv_path_tcl" != "X"; then 1783 AC_MSG_CHECKING(Tcl version) 1784 if echo 'exit [[expr [info tclversion] < 8.0]]' | "$vi_cv_path_tcl" - ; then 1785 tclver=`echo 'puts [[info tclversion]]' | $vi_cv_path_tcl -` 1786 AC_MSG_RESULT($tclver - OK); 1787 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 -` 1788 tcldll=`echo 'puts libtcl[[info tclversion]][[info sharedlibextension]]' | $vi_cv_path_tcl -` 1789 1790 AC_MSG_CHECKING(for location of Tcl include) 1791 if test "x$MACOS_X" != "xyes"; then 1792 tclinc="$tclloc/include $tclloc/include/tcl $tclloc/include/tcl$tclver /usr/local/include /usr/local/include/tcl$tclver /usr/include /usr/include/tcl$tclver" 1793 else 1794 dnl For Mac OS X 10.3, use the OS-provided framework location 1795 tclinc="/System/Library/Frameworks/Tcl.framework/Headers" 1796 fi 1797 TCL_INC= 1798 for try in $tclinc; do 1799 if test -f "$try/tcl.h"; then 1800 AC_MSG_RESULT($try/tcl.h) 1801 TCL_INC=$try 1802 break 1803 fi 1804 done 1805 if test -z "$TCL_INC"; then 1806 AC_MSG_RESULT(<not found>) 1807 SKIP_TCL=YES 1808 fi 1809 if test -z "$SKIP_TCL"; then 1810 AC_MSG_CHECKING(for location of tclConfig.sh script) 1811 if test "x$MACOS_X" != "xyes"; then 1812 tclcnf=`echo $tclinc | sed s/include/lib/g` 1813 tclcnf="$tclcnf `echo $tclinc | sed s/include/lib64/g`" 1814 else 1815 dnl For Mac OS X 10.3, use the OS-provided framework location 1816 tclcnf="/System/Library/Frameworks/Tcl.framework" 1817 fi 1818 for try in $tclcnf; do 1819 if test -f "$try/tclConfig.sh"; then 1820 AC_MSG_RESULT($try/tclConfig.sh) 1821 . "$try/tclConfig.sh" 1822 dnl use eval, because tcl 8.2 includes ${TCL_DBGX} 1823 if test "$enable_tclinterp" = "dynamic"; then 1824 TCL_LIBS=`eval echo "$TCL_STUB_LIB_SPEC $TCL_LIBS"` 1825 else 1826 TCL_LIBS=`eval echo "$TCL_LIB_SPEC $TCL_LIBS"` 1827 fi 1828 dnl Use $TCL_DEFS for -D_THREAD_SAFE et al. But only use the 1829 dnl "-D_ABC" items. Watch out for -DFOO=long\ long. 1830 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'` 1831 break 1832 fi 1833 done 1834 if test -z "$TCL_LIBS"; then 1835 AC_MSG_RESULT(<not found>) 1836 AC_MSG_CHECKING(for Tcl library by myself) 1837 tcllib=`echo $tclinc | sed s/include/lib/g` 1838 tcllib="$tcllib `echo $tclinc | sed s/include/lib64/g`" 1839 for ext in .so .a ; do 1840 for ver in "" $tclver ; do 1841 for try in $tcllib ; do 1842 trylib=tcl$ver$ext 1843 if test -f "$try/lib$trylib" ; then 1844 AC_MSG_RESULT($try/lib$trylib) 1845 TCL_LIBS="-L\"$try\" -ltcl$ver -ldl -lm" 1846 if test "`(uname) 2>/dev/null`" = SunOS && 1847 uname -r | grep '^5' >/dev/null; then 1848 TCL_LIBS="$TCL_LIBS -R $try" 1849 fi 1850 break 3 1851 fi 1852 done 1853 done 1854 done 1855 if test -z "$TCL_LIBS"; then 1856 AC_MSG_RESULT(<not found>) 1857 SKIP_TCL=YES 1858 fi 1859 fi 1860 if test -z "$SKIP_TCL"; then 1861 AC_DEFINE(FEAT_TCL) 1862 TCL_SRC=if_tcl.c 1863 TCL_OBJ=objects/if_tcl.o 1864 TCL_PRO=if_tcl.pro 1865 TCL_CFLAGS="-I$TCL_INC $TCL_DEFS" 1866 fi 1867 fi 1868 else 1869 AC_MSG_RESULT(too old; need Tcl version 8.0 or later) 1870 fi 1871 fi 1872 if test "$enable_tclinterp" = "dynamic"; then 1873 if test "X$TCL_SRC" != "X" -a "X$tcldll" != "X"; then 1874 AC_DEFINE(DYNAMIC_TCL) 1875 TCL_CFLAGS="-DDYNAMIC_TCL_DLL=\\\"$tcldll\\\" -DDYNAMIC_TCL_VER=\\\"$tclver\\\" $TCL_CFLAGS" 1876 fi 1877 fi 1878 if test "$fail_if_missing" = "yes" -a -z "$TCL_SRC"; then 1879 AC_MSG_ERROR([could not configure Tcl]) 1880 fi 1881fi 1882AC_SUBST(TCL_SRC) 1883AC_SUBST(TCL_OBJ) 1884AC_SUBST(TCL_PRO) 1885AC_SUBST(TCL_CFLAGS) 1886AC_SUBST(TCL_LIBS) 1887 1888AC_MSG_CHECKING(--enable-rubyinterp argument) 1889AC_ARG_ENABLE(rubyinterp, 1890 [ --enable-rubyinterp[=OPTS] Include Ruby interpreter. [default=no] [OPTS=no/yes/dynamic]], , 1891 [enable_rubyinterp="no"]) 1892AC_MSG_RESULT($enable_rubyinterp) 1893if test "$enable_rubyinterp" = "yes" -o "$enable_rubyinterp" = "dynamic"; then 1894 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then 1895 AC_MSG_ERROR([cannot use Ruby with tiny or small features]) 1896 fi 1897 1898 AC_MSG_CHECKING(--with-ruby-command argument) 1899 AC_SUBST(vi_cv_path_ruby) 1900 AC_ARG_WITH(ruby-command, [ --with-ruby-command=RUBY name of the Ruby command (default: ruby)], 1901 RUBY_CMD="$withval"; vi_cv_path_ruby="$withval"; AC_MSG_RESULT($RUBY_CMD), 1902 RUBY_CMD="ruby"; AC_MSG_RESULT(defaulting to $RUBY_CMD)) 1903 AC_PATH_PROG(vi_cv_path_ruby, $RUBY_CMD) 1904 if test "X$vi_cv_path_ruby" != "X"; then 1905 AC_MSG_CHECKING(Ruby version) 1906 if $vi_cv_path_ruby -e '(VERSION rescue RUBY_VERSION) >= "1.6.0" or exit 1' >/dev/null 2>/dev/null; then 1907 AC_MSG_RESULT(OK) 1908 AC_MSG_CHECKING(Ruby rbconfig) 1909 ruby_rbconfig="RbConfig" 1910 if ! $vi_cv_path_ruby -r rbconfig -e 'RbConfig' >/dev/null 2>/dev/null; then 1911 ruby_rbconfig="Config" 1912 fi 1913 AC_MSG_RESULT($ruby_rbconfig) 1914 AC_MSG_CHECKING(Ruby header files) 1915 rubyhdrdir=`$vi_cv_path_ruby -r mkmf -e "print $ruby_rbconfig::CONFIG[['rubyhdrdir']] || $ruby_rbconfig::CONFIG[['archdir']] || \\$hdrdir" 2>/dev/null` 1916 if test "X$rubyhdrdir" != "X"; then 1917 AC_MSG_RESULT($rubyhdrdir) 1918 RUBY_CFLAGS="-I$rubyhdrdir" 1919 rubyarchdir=`$vi_cv_path_ruby -r rbconfig -e "print ($ruby_rbconfig::CONFIG.has_key? 'rubyarchhdrdir') ? $ruby_rbconfig::CONFIG[['rubyarchhdrdir']] : '$rubyhdrdir/'+$ruby_rbconfig::CONFIG[['arch']]"` 1920 if test -d "$rubyarchdir"; then 1921 RUBY_CFLAGS="$RUBY_CFLAGS -I$rubyarchdir" 1922 fi 1923 rubyversion=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['ruby_version']].gsub(/\./, '')[[0,2]]"` 1924 if test "X$rubyversion" = "X"; then 1925 rubyversion=`$vi_cv_path_ruby -e "print ((VERSION rescue RUBY_VERSION)).gsub(/\./, '')[[0,2]]"` 1926 fi 1927 RUBY_CFLAGS="$RUBY_CFLAGS -DRUBY_VERSION=$rubyversion" 1928 rubylibs=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LIBS']]"` 1929 if test "X$rubylibs" != "X"; then 1930 RUBY_LIBS="$rubylibs" 1931 fi 1932 librubyarg=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBYARG']])"` 1933 librubya=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['LIBRUBY_A']])"` 1934 rubylibdir=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig.expand($ruby_rbconfig::CONFIG[['libdir']])"` 1935 if test -f "$rubylibdir/$librubya"; then 1936 librubyarg="$librubyarg" 1937 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" 1938 elif test "$librubyarg" = "libruby.a"; then 1939 dnl required on Mac OS 10.3 where libruby.a doesn't exist 1940 librubyarg="-lruby" 1941 RUBY_LIBS="$RUBY_LIBS -L$rubylibdir" 1942 fi 1943 1944 if test "X$librubyarg" != "X"; then 1945 RUBY_LIBS="$librubyarg $RUBY_LIBS" 1946 fi 1947 rubyldflags=`$vi_cv_path_ruby -r rbconfig -e "print $ruby_rbconfig::CONFIG[['LDFLAGS']]"` 1948 if test "X$rubyldflags" != "X"; then 1949 dnl Ruby on Mac OS X 10.5 adds "-arch" flags but these should only 1950 dnl be included if requested by passing --with-mac-arch to 1951 dnl configure, so strip these flags first (if present) 1952 rubyldflags=`echo "$rubyldflags" | sed -e 's/-arch\ ppc//' -e 's/-arch\ i386//' -e 's/-arch\ x86_64//'` 1953 if test "X$rubyldflags" != "X"; then 1954 if test "X`echo \"$LDFLAGS\" | $FGREP -e \"$rubyldflags\"`" = "X"; then 1955 LDFLAGS="$rubyldflags $LDFLAGS" 1956 fi 1957 fi 1958 fi 1959 RUBY_SRC="if_ruby.c" 1960 RUBY_OBJ="objects/if_ruby.o" 1961 RUBY_PRO="if_ruby.pro" 1962 AC_DEFINE(FEAT_RUBY) 1963 if test "$enable_rubyinterp" = "dynamic"; then 1964 libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_ALIASES']].split[[0]]"` 1965 if test -z "$libruby_soname"; then 1966 libruby_soname=`$vi_cv_path_ruby -r rbconfig -e "puts $ruby_rbconfig::CONFIG[['LIBRUBY_SO']]"` 1967 fi 1968 AC_DEFINE(DYNAMIC_RUBY) 1969 RUBY_CFLAGS="-DDYNAMIC_RUBY_DLL=\\\"$libruby_soname\\\" -DDYNAMIC_RUBY_VER=$rubyversion $RUBY_CFLAGS" 1970 RUBY_LIBS= 1971 fi 1972 else 1973 AC_MSG_RESULT(not found; disabling Ruby) 1974 fi 1975 else 1976 AC_MSG_RESULT(too old; need Ruby version 1.6.0 or later) 1977 fi 1978 fi 1979 1980 if test "$fail_if_missing" = "yes" -a -z "$RUBY_OBJ"; then 1981 AC_MSG_ERROR([could not configure Ruby]) 1982 fi 1983fi 1984AC_SUBST(RUBY_SRC) 1985AC_SUBST(RUBY_OBJ) 1986AC_SUBST(RUBY_PRO) 1987AC_SUBST(RUBY_CFLAGS) 1988AC_SUBST(RUBY_LIBS) 1989 1990AC_MSG_CHECKING(--enable-cscope argument) 1991AC_ARG_ENABLE(cscope, 1992 [ --enable-cscope Include cscope interface.], , 1993 [enable_cscope="no"]) 1994AC_MSG_RESULT($enable_cscope) 1995if test "$enable_cscope" = "yes"; then 1996 AC_DEFINE(FEAT_CSCOPE) 1997fi 1998 1999AC_MSG_CHECKING(--disable-netbeans argument) 2000AC_ARG_ENABLE(netbeans, 2001 [ --disable-netbeans Disable NetBeans integration support.], 2002 , [enable_netbeans="yes"]) 2003if test "$enable_netbeans" = "yes"; then 2004 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then 2005 AC_MSG_RESULT([cannot use NetBeans with tiny or small features]) 2006 enable_netbeans="no" 2007 else 2008 AC_MSG_RESULT(no) 2009 fi 2010else 2011 AC_MSG_RESULT(yes) 2012fi 2013 2014AC_MSG_CHECKING(--disable-channel argument) 2015AC_ARG_ENABLE(channel, 2016 [ --disable-channel Disable process communication support.], 2017 , [enable_channel="yes"]) 2018if test "$enable_channel" = "yes"; then 2019 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then 2020 AC_MSG_RESULT([cannot use channels with tiny or small features]) 2021 enable_channel="no" 2022 else 2023 AC_MSG_RESULT(no) 2024 fi 2025else 2026 if test "$enable_netbeans" = "yes"; then 2027 AC_MSG_RESULT([yes, netbeans also disabled]) 2028 enable_netbeans="no" 2029 else 2030 AC_MSG_RESULT(yes) 2031 fi 2032fi 2033 2034if test "$enable_channel" = "yes"; then 2035 dnl On Solaris we need the socket and nsl library. 2036 AC_CHECK_LIB(socket, socket) 2037 AC_CHECK_LIB(nsl, gethostbyname) 2038 AC_MSG_CHECKING(whether compiling with process communication is possible) 2039 AC_TRY_LINK([ 2040#include <stdio.h> 2041#include <stdlib.h> 2042#include <stdarg.h> 2043#include <fcntl.h> 2044#include <netdb.h> 2045#include <netinet/in.h> 2046#include <errno.h> 2047#include <sys/types.h> 2048#include <sys/socket.h> 2049 /* Check bitfields */ 2050 struct nbbuf { 2051 unsigned int initDone:1; 2052 unsigned short signmaplen; 2053 }; 2054 ], [ 2055 /* Check creating a socket. */ 2056 struct sockaddr_in server; 2057 (void)socket(AF_INET, SOCK_STREAM, 0); 2058 (void)htons(100); 2059 (void)gethostbyname("microsoft.com"); 2060 if (errno == ECONNREFUSED) 2061 (void)connect(1, (struct sockaddr *)&server, sizeof(server)); 2062 ], 2063 AC_MSG_RESULT(yes), 2064 AC_MSG_RESULT(no); enable_netbeans="no"; enable_channel="no") 2065fi 2066if test "$enable_netbeans" = "yes"; then 2067 AC_DEFINE(FEAT_NETBEANS_INTG) 2068 NETBEANS_SRC="netbeans.c" 2069 AC_SUBST(NETBEANS_SRC) 2070 NETBEANS_OBJ="objects/netbeans.o" 2071 AC_SUBST(NETBEANS_OBJ) 2072fi 2073if test "$enable_channel" = "yes"; then 2074 AC_DEFINE(FEAT_JOB_CHANNEL) 2075 CHANNEL_SRC="channel.c" 2076 AC_SUBST(CHANNEL_SRC) 2077 CHANNEL_OBJ="objects/channel.o" 2078 AC_SUBST(CHANNEL_OBJ) 2079fi 2080 2081AC_MSG_CHECKING(--enable-terminal argument) 2082AC_ARG_ENABLE(terminal, 2083 [ --enable-terminal Enable terminal emulation support.], 2084 , [enable_terminal="auto"]) 2085if test "$enable_terminal" = "yes" || test "$enable_terminal" = "auto" -a "x$features" = "xhuge" ; then 2086 if test "x$features" = "xtiny" -o "x$features" = "xsmall"; then 2087 AC_MSG_RESULT([cannot use terminal emulator with tiny or small features]) 2088 enable_terminal="no" 2089 else 2090 if test "$enable_terminal" = "auto"; then 2091 enable_terminal="yes" 2092 AC_MSG_RESULT(defaulting to yes) 2093 else 2094 AC_MSG_RESULT(yes) 2095 fi 2096 fi 2097else 2098 if test "$enable_terminal" = "auto"; then 2099 enable_terminal="no" 2100 AC_MSG_RESULT(defaulting to no) 2101 else 2102 AC_MSG_RESULT(no) 2103 fi 2104fi 2105if test "$enable_terminal" = "yes" -a "$enable_channel" = "yes"; then 2106 AC_DEFINE(FEAT_TERMINAL) 2107 TERM_SRC="libvterm/src/encoding.c libvterm/src/keyboard.c libvterm/src/mouse.c libvterm/src/parser.c libvterm/src/pen.c libvterm/src/termscreen.c libvterm/src/state.c libvterm/src/unicode.c libvterm/src/vterm.c" 2108 AC_SUBST(TERM_SRC) 2109 TERM_OBJ="objects/encoding.o objects/keyboard.o objects/mouse.o objects/parser.o objects/pen.o objects/termscreen.o objects/state.o objects/unicode.o objects/vterm.o" 2110 AC_SUBST(TERM_OBJ) 2111fi 2112 2113AC_MSG_CHECKING(--enable-autoservername argument) 2114AC_ARG_ENABLE(autoservername, 2115 [ --enable-autoservername Automatically define servername at vim startup.], , 2116 [enable_autoservername="no"]) 2117AC_MSG_RESULT($enable_autoservername) 2118if test "$enable_autoservername" = "yes"; then 2119 AC_DEFINE(FEAT_AUTOSERVERNAME) 2120fi 2121 2122AC_MSG_CHECKING(--enable-multibyte argument) 2123AC_ARG_ENABLE(multibyte, 2124 [ --enable-multibyte Include multibyte editing support.], , 2125 [enable_multibyte="yes"]) 2126AC_MSG_RESULT($enable_multibyte) 2127if test "$enable_multibyte" != "yes"; then 2128 AC_MSG_ERROR([The multi-byte feature can no longer be disabled. If you have 2129 a problem with this, discuss on the Vim mailing list.]) 2130fi 2131 2132dnl Right-to-Left language support for Vim will be included with big features, 2133dnl unless ENABLE_RIGHTLEFT is undefined. 2134AC_MSG_CHECKING(--disable-rightleft argument) 2135AC_ARG_ENABLE(rightleft, 2136 [ --disable-rightleft Do not include Right-to-Left language support.], 2137 , [enable_rightleft="yes"]) 2138if test "$enable_rightleft" = "yes"; then 2139 AC_MSG_RESULT(no) 2140else 2141 AC_MSG_RESULT(yes) 2142 AC_DEFINE(DISABLE_RIGHTLEFT) 2143fi 2144 2145dnl Arabic language support for Vim will be included with big features, 2146dnl unless ENABLE_ARABIC is undefined. 2147AC_MSG_CHECKING(--disable-arabic argument) 2148AC_ARG_ENABLE(arabic, 2149 [ --disable-arabic Do not include Arabic language support.], 2150 , [enable_arabic="yes"]) 2151if test "$enable_arabic" = "yes"; then 2152 AC_MSG_RESULT(no) 2153else 2154 AC_MSG_RESULT(yes) 2155 AC_DEFINE(DISABLE_ARABIC) 2156fi 2157 2158dnl Farsi language support for vim will be included with big features, 2159dnl unless ENABLE_FARSI is undefined. 2160AC_MSG_CHECKING(--disable-farsi argument) 2161AC_ARG_ENABLE(farsi, 2162 [ --disable-farsi Do not include Farsi language support.], 2163 , [enable_farsi="yes"]) 2164if test "$enable_farsi" = "yes"; then 2165 AC_MSG_RESULT(no) 2166else 2167 AC_MSG_RESULT(yes) 2168 AC_DEFINE(DISABLE_FARSI) 2169fi 2170 2171AC_MSG_CHECKING(--enable-hangulinput argument) 2172AC_ARG_ENABLE(hangulinput, 2173 [ --enable-hangulinput Include Hangul input support.], , 2174 [enable_hangulinput="no"]) 2175AC_MSG_RESULT($enable_hangulinput) 2176 2177AC_MSG_CHECKING(--enable-xim argument) 2178AC_ARG_ENABLE(xim, 2179 [ --enable-xim Include XIM input support.], 2180 AC_MSG_RESULT($enable_xim), 2181 [enable_xim="auto"; AC_MSG_RESULT(defaulting to auto)]) 2182 2183AC_MSG_CHECKING(--enable-fontset argument) 2184AC_ARG_ENABLE(fontset, 2185 [ --enable-fontset Include X fontset output support.], , 2186 [enable_fontset="no"]) 2187AC_MSG_RESULT($enable_fontset) 2188dnl defining FEAT_XFONTSET is delayed, so that it can be disabled for no GUI 2189 2190test -z "$with_x" && with_x=yes 2191test "${enable_gui-yes}" != no -a "x$MACOS_X" != "xyes" -a "x$QNX" != "xyes" && with_x=yes 2192if test "$with_x" = no; then 2193 AC_MSG_RESULT(defaulting to: don't HAVE_X11) 2194else 2195 dnl Do this check early, so that its failure can override user requests. 2196 2197 AC_PATH_PROG(xmkmfpath, xmkmf) 2198 2199 AC_PATH_XTRA 2200 2201 dnl On z/OS Unix the X libraries are DLLs. To use them the code must 2202 dnl be compiled with a special option. 2203 dnl Also add SM, ICE and Xmu to X_EXTRA_LIBS. 2204 if test "$zOSUnix" = "yes"; then 2205 CFLAGS="$CFLAGS -W c,dll" 2206 LDFLAGS="$LDFLAGS -W l,dll" 2207 X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE -lXmu" 2208 fi 2209 2210 dnl On my HPUX system the X include dir is found, but the lib dir not. 2211 dnl This is a desparate try to fix this. 2212 2213 if test -d "$x_includes" && test ! -d "$x_libraries"; then 2214 x_libraries=`echo "$x_includes" | sed s/include/lib/` 2215 AC_MSG_RESULT(Corrected X libraries to $x_libraries) 2216 X_LIBS="$X_LIBS -L$x_libraries" 2217 if test "`(uname) 2>/dev/null`" = SunOS && 2218 uname -r | grep '^5' >/dev/null; then 2219 X_LIBS="$X_LIBS -R $x_libraries" 2220 fi 2221 fi 2222 2223 if test -d "$x_libraries" && test ! -d "$x_includes"; then 2224 x_includes=`echo "$x_libraries" | sed s/lib/include/` 2225 AC_MSG_RESULT(Corrected X includes to $x_includes) 2226 X_CFLAGS="$X_CFLAGS -I$x_includes" 2227 fi 2228 2229 dnl Remove "-I/usr/include " from X_CFLAGS, should not be needed. 2230 X_CFLAGS="`echo $X_CFLAGS\ | sed 's%-I/usr/include %%'`" 2231 dnl Remove "-L/usr/lib " from X_LIBS, should not be needed. 2232 X_LIBS="`echo $X_LIBS\ | sed 's%-L/usr/lib %%'`" 2233 dnl Same for "-R/usr/lib ". 2234 X_LIBS="`echo $X_LIBS\ | sed -e 's%-R/usr/lib %%' -e 's%-R /usr/lib %%'`" 2235 2236 2237 dnl Check if the X11 header files are correctly installed. On some systems 2238 dnl Xlib.h includes files that don't exist. On some systems X11/Intrinsic.h 2239 dnl is missing. 2240 AC_MSG_CHECKING(if X11 header files can be found) 2241 cflags_save=$CFLAGS 2242 CFLAGS="$CFLAGS $X_CFLAGS" 2243 AC_TRY_COMPILE([#include <X11/Xlib.h> 2244#include <X11/Intrinsic.h>], , 2245 AC_MSG_RESULT(yes), 2246 AC_MSG_RESULT(no); no_x=yes) 2247 CFLAGS=$cflags_save 2248 2249 if test "${no_x-no}" = yes; then 2250 with_x=no 2251 else 2252 AC_DEFINE(HAVE_X11) 2253 X_LIB="-lXt -lX11"; 2254 AC_SUBST(X_LIB) 2255 2256 ac_save_LDFLAGS="$LDFLAGS" 2257 LDFLAGS="-L$x_libraries $LDFLAGS" 2258 2259 dnl Check for -lXdmcp (needed on SunOS 4.1.4) 2260 dnl For HP-UX 10.20 it must be before -lSM -lICE 2261 AC_CHECK_LIB(Xdmcp, _XdmcpAuthDoIt, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lXdmcp"],, 2262 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS -lXdmcp]) 2263 2264 dnl Some systems need -lnsl -lsocket when testing for ICE. 2265 dnl The check above doesn't do this, try here (again). Also needed to get 2266 dnl them after Xdmcp. link.sh will remove them when not needed. 2267 dnl Check for other function than above to avoid the cached value 2268 AC_CHECK_LIB(ICE, IceOpenConnection, 2269 [X_EXTRA_LIBS="$X_EXTRA_LIBS -lSM -lICE"],, [$X_EXTRA_LIBS]) 2270 2271 dnl Check for -lXpm (needed for some versions of Motif) 2272 LDFLAGS="$X_LIBS $ac_save_LDFLAGS" 2273 AC_CHECK_LIB(Xpm, XpmCreatePixmapFromData, [X_PRE_LIBS="$X_PRE_LIBS -lXpm"],, 2274 [-lXt $X_PRE_LIBS -lXpm -lX11 $X_EXTRA_LIBS]) 2275 2276 dnl Check that the X11 header files don't use implicit declarations 2277 AC_MSG_CHECKING(if X11 header files implicitly declare return values) 2278 cflags_save=$CFLAGS 2279 dnl -Werror is GCC only, others like Solaris Studio might not like it 2280 if test "$GCC" = yes; then 2281 CFLAGS="$CFLAGS $X_CFLAGS -Werror" 2282 else 2283 CFLAGS="$CFLAGS $X_CFLAGS" 2284 fi 2285 AC_TRY_COMPILE([#include <X11/Xlib.h>], , 2286 AC_MSG_RESULT(no), 2287 CFLAGS="$CFLAGS -Wno-implicit-int" 2288 AC_TRY_COMPILE([#include <X11/Xlib.h>], , 2289 AC_MSG_RESULT(yes); cflags_save="$cflags_save -Wno-implicit-int", 2290 AC_MSG_RESULT(test failed) 2291 ) 2292 ) 2293 CFLAGS=$cflags_save 2294 2295 LDFLAGS="$ac_save_LDFLAGS" 2296 2297 AC_MSG_CHECKING(size of wchar_t is 2 bytes) 2298 AC_CACHE_VAL(ac_cv_small_wchar_t, 2299 [AC_TRY_RUN([ 2300#include <X11/Xlib.h> 2301#if STDC_HEADERS 2302# include <stdlib.h> 2303# include <stddef.h> 2304#endif 2305 main() 2306 { 2307 if (sizeof(wchar_t) <= 2) 2308 exit(1); 2309 exit(0); 2310 }], 2311 ac_cv_small_wchar_t="no", 2312 ac_cv_small_wchar_t="yes", 2313 AC_MSG_ERROR(failed to compile test program))]) 2314 AC_MSG_RESULT($ac_cv_small_wchar_t) 2315 if test "x$ac_cv_small_wchar_t" = "xyes" ; then 2316 AC_DEFINE(SMALL_WCHAR_T) 2317 fi 2318 2319 fi 2320fi 2321 2322dnl Check if --with-x was given but it doesn't work. 2323if test "x$with_x" = xno -a "x$with_x_arg" = xyes; then 2324 AC_MSG_ERROR([could not configure X]) 2325fi 2326 2327test "x$with_x" = xno -a "x$MACOS_X" != "xyes" -a "x$QNX" != "xyes" && enable_gui=no 2328 2329AC_MSG_CHECKING(--enable-gui argument) 2330AC_ARG_ENABLE(gui, 2331 [ --enable-gui[=OPTS] X11 GUI. [default=auto] [OPTS=auto/no/gtk2/gnome2/gtk3/motif/athena/neXtaw/photon/carbon]], , enable_gui="auto") 2332 2333dnl Canonicalize the --enable-gui= argument so that it can be easily compared. 2334dnl Do not use character classes for portability with old tools. 2335enable_gui_canon=`echo "_$enable_gui" | \ 2336 sed 's/[[ _+-]]//g;y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` 2337 2338dnl Skip everything by default. 2339SKIP_GTK2=YES 2340SKIP_GTK3=YES 2341SKIP_GNOME=YES 2342SKIP_MOTIF=YES 2343SKIP_ATHENA=YES 2344SKIP_NEXTAW=YES 2345SKIP_PHOTON=YES 2346SKIP_CARBON=YES 2347GUITYPE=NONE 2348 2349if test "x$QNX" = "xyes" -a "x$with_x" = "xno" ; then 2350 SKIP_PHOTON= 2351 case "$enable_gui_canon" in 2352 no) AC_MSG_RESULT(no GUI support) 2353 SKIP_PHOTON=YES ;; 2354 yes|""|auto) AC_MSG_RESULT(automatic GUI support) 2355 gui_auto=yes ;; 2356 photon) AC_MSG_RESULT(Photon GUI support) ;; 2357 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) 2358 SKIP_PHOTON=YES ;; 2359 esac 2360 2361elif test "x$MACOS_X" = "xyes" -a "x$with_x" = "xno" ; then 2362 SKIP_CARBON= 2363 case "$enable_gui_canon" in 2364 no) AC_MSG_RESULT(no GUI support) 2365 SKIP_CARBON=YES ;; 2366 yes|"") AC_MSG_RESULT(yes - automatic GUI support) 2367 gui_auto=yes ;; 2368 auto) AC_MSG_RESULT(auto - Carbon GUI is outdated - disable GUI support) 2369 SKIP_CARBON=YES ;; 2370 carbon) AC_MSG_RESULT(Carbon GUI support) ;; 2371 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) 2372 SKIP_CARBON=YES ;; 2373 esac 2374 2375else 2376 2377 case "$enable_gui_canon" in 2378 no|none) AC_MSG_RESULT(no GUI support) ;; 2379 yes|""|auto) AC_MSG_RESULT(yes/auto - automatic GUI support) 2380 gui_auto=yes 2381 SKIP_GTK2= 2382 SKIP_GNOME= 2383 SKIP_MOTIF= 2384 SKIP_ATHENA= 2385 SKIP_NEXTAW= 2386 SKIP_CARBON=;; 2387 gtk2) AC_MSG_RESULT(GTK+ 2.x GUI support) 2388 SKIP_GTK2=;; 2389 gnome2) AC_MSG_RESULT(GNOME 2.x GUI support) 2390 SKIP_GNOME= 2391 SKIP_GTK2=;; 2392 gtk3) AC_MSG_RESULT(GTK+ 3.x GUI support) 2393 SKIP_GTK3=;; 2394 motif) AC_MSG_RESULT(Motif GUI support) 2395 SKIP_MOTIF=;; 2396 athena) AC_MSG_RESULT(Athena GUI support) 2397 SKIP_ATHENA=;; 2398 nextaw) AC_MSG_RESULT(neXtaw GUI support) 2399 SKIP_NEXTAW=;; 2400 *) AC_MSG_RESULT([Sorry, $enable_gui GUI is not supported]) ;; 2401 esac 2402 2403fi 2404 2405if test "x$SKIP_GTK2" != "xYES" -a "$enable_gui_canon" != "gtk2" \ 2406 -a "$enable_gui_canon" != "gnome2"; then 2407 AC_MSG_CHECKING(whether or not to look for GTK+ 2) 2408 AC_ARG_ENABLE(gtk2-check, 2409 [ --enable-gtk2-check If auto-select GUI, check for GTK+ 2 [default=yes]], 2410 , enable_gtk2_check="yes") 2411 AC_MSG_RESULT($enable_gtk2_check) 2412 if test "x$enable_gtk2_check" = "xno"; then 2413 SKIP_GTK2=YES 2414 SKIP_GNOME=YES 2415 fi 2416fi 2417 2418if test "x$SKIP_GNOME" != "xYES" -a "$enable_gui_canon" != "gnome2"; then 2419 AC_MSG_CHECKING(whether or not to look for GNOME) 2420 AC_ARG_ENABLE(gnome-check, 2421 [ --enable-gnome-check If GTK GUI, check for GNOME [default=no]], 2422 , enable_gnome_check="no") 2423 AC_MSG_RESULT($enable_gnome_check) 2424 if test "x$enable_gnome_check" = "xno"; then 2425 SKIP_GNOME=YES 2426 fi 2427fi 2428 2429if test "x$SKIP_GTK3" != "xYES" -a "$enable_gui_canon" != "gtk3"; then 2430 AC_MSG_CHECKING(whether or not to look for GTK+ 3) 2431 AC_ARG_ENABLE(gtk3-check, 2432 [ --enable-gtk3-check If auto-select GUI, check for GTK+ 3 [default=yes]], 2433 , enable_gtk3_check="yes") 2434 AC_MSG_RESULT($enable_gtk3_check) 2435 if test "x$enable_gtk3_check" = "xno"; then 2436 SKIP_GTK3=YES 2437 fi 2438fi 2439 2440if test "x$SKIP_MOTIF" != "xYES" -a "$enable_gui_canon" != "motif"; then 2441 AC_MSG_CHECKING(whether or not to look for Motif) 2442 AC_ARG_ENABLE(motif-check, 2443 [ --enable-motif-check If auto-select GUI, check for Motif [default=yes]], 2444 , enable_motif_check="yes") 2445 AC_MSG_RESULT($enable_motif_check) 2446 if test "x$enable_motif_check" = "xno"; then 2447 SKIP_MOTIF=YES 2448 fi 2449fi 2450 2451if test "x$SKIP_ATHENA" != "xYES" -a "$enable_gui_canon" != "athena"; then 2452 AC_MSG_CHECKING(whether or not to look for Athena) 2453 AC_ARG_ENABLE(athena-check, 2454 [ --enable-athena-check If auto-select GUI, check for Athena [default=yes]], 2455 , enable_athena_check="yes") 2456 AC_MSG_RESULT($enable_athena_check) 2457 if test "x$enable_athena_check" = "xno"; then 2458 SKIP_ATHENA=YES 2459 fi 2460fi 2461 2462if test "x$SKIP_NEXTAW" != "xYES" -a "$enable_gui_canon" != "nextaw"; then 2463 AC_MSG_CHECKING(whether or not to look for neXtaw) 2464 AC_ARG_ENABLE(nextaw-check, 2465 [ --enable-nextaw-check If auto-select GUI, check for neXtaw [default=yes]], 2466 , enable_nextaw_check="yes") 2467 AC_MSG_RESULT($enable_nextaw_check); 2468 if test "x$enable_nextaw_check" = "xno"; then 2469 SKIP_NEXTAW=YES 2470 fi 2471fi 2472 2473if test "x$SKIP_CARBON" != "xYES" -a "$enable_gui_canon" != "carbon"; then 2474 AC_MSG_CHECKING(whether or not to look for Carbon) 2475 AC_ARG_ENABLE(carbon-check, 2476 [ --enable-carbon-check If auto-select GUI, check for Carbon [default=yes]], 2477 , enable_carbon_check="yes") 2478 AC_MSG_RESULT($enable_carbon_check); 2479 if test "x$enable_carbon_check" = "xno"; then 2480 SKIP_CARBON=YES 2481 fi 2482fi 2483 2484 2485if test "x$MACOS_X" = "xyes" -a -z "$SKIP_CARBON" -a "x$CARBON" = "xyes"; then 2486 AC_MSG_CHECKING(for Carbon GUI) 2487 dnl already did the check, just give the message 2488 AC_MSG_RESULT(yes); 2489 GUITYPE=CARBONGUI 2490 if test "$VIMNAME" = "vim"; then 2491 VIMNAME=Vim 2492 fi 2493 2494 if test "x$MACARCH" = "xboth"; then 2495 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon" 2496 else 2497 CPPFLAGS="$CPPFLAGS -I$DEVELOPER_DIR/Headers/FlatCarbon" 2498 fi 2499 2500 dnl Default install directory is not /usr/local 2501 if test x$prefix = xNONE; then 2502 prefix=/Applications 2503 fi 2504 2505 dnl Sorry for the hard coded default 2506 datadir='${prefix}/Vim.app/Contents/Resources' 2507 2508 dnl skip everything else 2509 SKIP_GTK2=YES; 2510 SKIP_GNOME=YES; 2511 SKIP_MOTIF=YES; 2512 SKIP_ATHENA=YES; 2513 SKIP_NEXTAW=YES; 2514 SKIP_PHOTON=YES; 2515 SKIP_CARBON=YES 2516fi 2517 2518dnl define an autoconf function to check for a specified version of GTK, and 2519dnl try to compile/link a GTK program. 2520dnl 2521dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) 2522dnl Test for GTK, and define GTK_CFLAGS, GTK_LIBDIR and GTK_LIBS 2523dnl 2524AC_DEFUN(AM_PATH_GTK, 2525[ 2526 if test "X$GTK_CONFIG" != "Xno" -o "X$PKG_CONFIG" != "Xno"; then 2527 { 2528 no_gtk="" 2529 if (test "X$SKIP_GTK2" != "XYES" -a "X$PKG_CONFIG" != "Xno") \ 2530 && $PKG_CONFIG --exists gtk+-2.0; then 2531 { 2532 min_gtk_version=ifelse([$1], ,2.2.0,$1) 2533 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) 2534 dnl We should be using PKG_CHECK_MODULES() instead of this hack. 2535 dnl But I guess the dependency on pkgconfig.m4 is not wanted or 2536 dnl something like that. 2537 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-2.0` 2538 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-2.0` 2539 GTK_LIBS=`$PKG_CONFIG --libs gtk+-2.0` 2540 gtk_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ 2541 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'` 2542 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ 2543 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'` 2544 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \ 2545 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'` 2546 } 2547 elif (test "X$SKIP_GTK3" != "XYES" -a "X$PKG_CONFIG" != "Xno") \ 2548 && $PKG_CONFIG --exists gtk+-3.0; then 2549 { 2550 min_gtk_version=ifelse([$1], ,3.0.0,$1) 2551 AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) 2552 2553 GTK_CFLAGS=`$PKG_CONFIG --cflags gtk+-3.0` 2554 GTK_LIBDIR=`$PKG_CONFIG --libs-only-L gtk+-3.0` 2555 GTK_LIBS=`$PKG_CONFIG --libs gtk+-3.0` 2556 gtk_major_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ 2557 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\1/'` 2558 gtk_minor_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ 2559 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\2/'` 2560 gtk_micro_version=`$PKG_CONFIG --modversion gtk+-3.0 | \ 2561 sed 's/\([[0-9]]*\)\.\([[0-9]]*\)\.\([[0-9]]*\)/\3/'` 2562 } 2563 else 2564 no_gtk=yes 2565 fi 2566 2567 if test "x$enable_gtktest" = "xyes" -a "x$no_gtk" = "x"; then 2568 { 2569 ac_save_CFLAGS="$CFLAGS" 2570 ac_save_LIBS="$LIBS" 2571 CFLAGS="$CFLAGS $GTK_CFLAGS" 2572 LIBS="$LIBS $GTK_LIBS" 2573 2574 dnl 2575 dnl Now check if the installed GTK is sufficiently new. 2576 dnl 2577 rm -f conf.gtktest 2578 AC_TRY_RUN([ 2579#include <gtk/gtk.h> 2580#include <stdio.h> 2581#if STDC_HEADERS 2582# include <stdlib.h> 2583# include <stddef.h> 2584#endif 2585 2586int 2587main () 2588{ 2589int major, minor, micro; 2590char *tmp_version; 2591 2592system ("touch conf.gtktest"); 2593 2594/* HP/UX 9 (%@#!) writes to sscanf strings */ 2595tmp_version = g_strdup("$min_gtk_version"); 2596if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { 2597 printf("%s, bad version string\n", "$min_gtk_version"); 2598 exit(1); 2599 } 2600 2601if ((gtk_major_version > major) || 2602 ((gtk_major_version == major) && (gtk_minor_version > minor)) || 2603 ((gtk_major_version == major) && (gtk_minor_version == minor) && 2604 (gtk_micro_version >= micro))) 2605{ 2606 return 0; 2607} 2608return 1; 2609} 2610],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) 2611 CFLAGS="$ac_save_CFLAGS" 2612 LIBS="$ac_save_LIBS" 2613 } 2614 fi 2615 if test "x$no_gtk" = x ; then 2616 if test "x$enable_gtktest" = "xyes"; then 2617 AC_MSG_RESULT(yes; found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version) 2618 else 2619 AC_MSG_RESULT(found version $gtk_major_version.$gtk_minor_version.$gtk_micro_version) 2620 fi 2621 ifelse([$2], , :, [$2]) 2622 else 2623 { 2624 AC_MSG_RESULT(no) 2625 GTK_CFLAGS="" 2626 GTK_LIBS="" 2627 ifelse([$3], , :, [$3]) 2628 if test "$fail_if_missing" = "yes" -a "X$gui_auto" != "Xyes"; then 2629 AC_MSG_ERROR([could not configure GTK]) 2630 fi 2631 } 2632 fi 2633 } 2634 else 2635 GTK_CFLAGS="" 2636 GTK_LIBS="" 2637 ifelse([$3], , :, [$3]) 2638 fi 2639 AC_SUBST(GTK_CFLAGS) 2640 AC_SUBST(GTK_LIBS) 2641 rm -f conf.gtktest 2642]) 2643 2644dnl --------------------------------------------------------------------------- 2645dnl gnome 2646dnl --------------------------------------------------------------------------- 2647AC_DEFUN([GNOME_INIT_HOOK], 2648[ 2649 AC_SUBST(GNOME_LIBS) 2650 AC_SUBST(GNOME_LIBDIR) 2651 AC_SUBST(GNOME_INCLUDEDIR) 2652 2653 AC_ARG_WITH(gnome-includes, 2654 [ --with-gnome-includes=DIR Specify location of GNOME headers], 2655 [CFLAGS="$CFLAGS -I$withval"] 2656 ) 2657 2658 AC_ARG_WITH(gnome-libs, 2659 [ --with-gnome-libs=DIR Specify location of GNOME libs], 2660 [LDFLAGS="$LDFLAGS -L$withval" gnome_prefix=$withval] 2661 ) 2662 2663 AC_ARG_WITH(gnome, 2664 [ --with-gnome Specify prefix for GNOME files], 2665 if test x$withval = xyes; then 2666 want_gnome=yes 2667 ifelse([$1], [], :, [$1]) 2668 else 2669 if test "x$withval" = xno; then 2670 want_gnome=no 2671 else 2672 want_gnome=yes 2673 LDFLAGS="$LDFLAGS -L$withval/lib" 2674 CFLAGS="$CFLAGS -I$withval/include" 2675 gnome_prefix=$withval/lib 2676 fi 2677 fi, 2678 want_gnome=yes) 2679 2680 if test "x$want_gnome" = xyes; then 2681 { 2682 AC_MSG_CHECKING(for libgnomeui-2.0) 2683 if $PKG_CONFIG --exists libgnomeui-2.0; then 2684 AC_MSG_RESULT(yes) 2685 GNOME_LIBS=`$PKG_CONFIG --libs-only-l libgnomeui-2.0` 2686 GNOME_LIBDIR=`$PKG_CONFIG --libs-only-L libgnomeui-2.0` 2687 GNOME_INCLUDEDIR=`$PKG_CONFIG --cflags libgnomeui-2.0` 2688 2689 dnl On FreeBSD we need -pthread but pkg-config doesn't include it. 2690 dnl This might not be the right way but it works for me... 2691 AC_MSG_CHECKING(for FreeBSD) 2692 if test "`(uname) 2>/dev/null`" = FreeBSD; then 2693 AC_MSG_RESULT(yes, adding -pthread) 2694 GNOME_INCLUDEDIR="$GNOME_INCLUDEDIR -D_THREAD_SAFE" 2695 GNOME_LIBS="$GNOME_LIBS -pthread" 2696 else 2697 AC_MSG_RESULT(no) 2698 fi 2699 $1 2700 else 2701 AC_MSG_RESULT(not found) 2702 if test "x$2" = xfail; then 2703 AC_MSG_ERROR(Could not find libgnomeui-2.0 via pkg-config) 2704 fi 2705 fi 2706 } 2707 fi 2708]) 2709 2710AC_DEFUN([GNOME_INIT],[ 2711 GNOME_INIT_HOOK([],fail) 2712]) 2713 2714 2715dnl --------------------------------------------------------------------------- 2716dnl Check for GTK2. If it fails, then continue on for Motif as before... 2717dnl --------------------------------------------------------------------------- 2718if test -z "$SKIP_GTK2"; then 2719 2720 AC_MSG_CHECKING(--disable-gtktest argument) 2721 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], 2722 , enable_gtktest=yes) 2723 if test "x$enable_gtktest" = "xyes" ; then 2724 AC_MSG_RESULT(gtk test enabled) 2725 else 2726 AC_MSG_RESULT(gtk test disabled) 2727 fi 2728 2729 if test "X$PKG_CONFIG" = "X"; then 2730 AC_PATH_TOOL(PKG_CONFIG, pkg-config, no) 2731 fi 2732 2733 if test "x$PKG_CONFIG" != "xno"; then 2734 dnl First try finding version 2.2.0 or later. The 2.0.x series has 2735 dnl problems (bold fonts, --remote doesn't work). 2736 AM_PATH_GTK(2.2.0, 2737 [GUI_LIB_LOC="$GTK_LIBDIR" 2738 GTK_LIBNAME="$GTK_LIBS" 2739 GUI_INC_LOC="$GTK_CFLAGS"], ) 2740 if test "x$GTK_CFLAGS" != "x"; then 2741 SKIP_GTK3=YES 2742 SKIP_ATHENA=YES 2743 SKIP_NEXTAW=YES 2744 SKIP_MOTIF=YES 2745 GUITYPE=GTK 2746 AC_SUBST(GTK_LIBNAME) 2747 fi 2748 fi 2749 if test "x$GUITYPE" = "xGTK"; then 2750 dnl 2751 dnl if GTK exists, then check for GNOME. 2752 dnl 2753 if test -z "$SKIP_GNOME"; then 2754 { 2755 GNOME_INIT_HOOK([have_gnome=yes]) 2756 if test "x$have_gnome" = xyes ; then 2757 AC_DEFINE(FEAT_GUI_GNOME) 2758 GUI_INC_LOC="$GUI_INC_LOC $GNOME_INCLUDEDIR" 2759 GTK_LIBNAME="$GTK_LIBNAME $GNOME_LIBDIR $GNOME_LIBS" 2760 fi 2761 } 2762 fi 2763 fi 2764fi 2765 2766 2767dnl --------------------------------------------------------------------------- 2768dnl Check for GTK3. 2769dnl --------------------------------------------------------------------------- 2770if test -z "$SKIP_GTK3"; then 2771 2772 AC_MSG_CHECKING(--disable-gtktest argument) 2773 AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], 2774 , enable_gtktest=yes) 2775 if test "x$enable_gtktest" = "xyes" ; then 2776 AC_MSG_RESULT(gtk test enabled) 2777 else 2778 AC_MSG_RESULT(gtk test disabled) 2779 fi 2780 2781 if test "X$PKG_CONFIG" = "X"; then 2782 AC_PATH_TOOL(PKG_CONFIG, pkg-config, no) 2783 fi 2784 2785 if test "x$PKG_CONFIG" != "xno"; then 2786 AM_PATH_GTK(3.0.0, 2787 [GUI_LIB_LOC="$GTK_LIBDIR" 2788 GTK_LIBNAME="$GTK_LIBS" 2789 GUI_INC_LOC="$GTK_CFLAGS"], ) 2790 if test "x$GTK_CFLAGS" != "x"; then 2791 SKIP_GTK2=YES 2792 SKIP_GNOME=YES 2793 SKIP_ATHENA=YES 2794 SKIP_NEXTAW=YES 2795 SKIP_MOTIF=YES 2796 GUITYPE=GTK 2797 AC_SUBST(GTK_LIBNAME) 2798 AC_DEFINE(USE_GTK3) 2799 fi 2800 fi 2801fi 2802 2803dnl Check the version of Gdk-Pixbuf. If the version is 2.31 or later and 2804dnl glib-compile-resources is found in PATH, use GResource. 2805if test "x$GUITYPE" = "xGTK"; then 2806 AC_MSG_CHECKING([version of Gdk-Pixbuf]) 2807 gdk_pixbuf_version=`$PKG_CONFIG --modversion gdk-pixbuf-2.0` 2808 if test "x$gdk_pixbuf_version" != x ; then 2809 gdk_pixbuf_version_minor=`echo $gdk_pixbuf_version | \ 2810 sed -e 's/[[0-9]][[0-9]]*\.\([[0-9]][[0-9]]*\)\.[[0-9]][[0-9]]*/\1/'` 2811 if test "x$gdk_pixbuf_version_minor" != x -a \ 2812 $gdk_pixbuf_version_minor -ge 31 ; then 2813 AC_MSG_RESULT([OK.]) 2814 AC_PATH_PROG(GLIB_COMPILE_RESOURCES,[glib-compile-resources],no) 2815 AC_MSG_CHECKING([glib-compile-resources]) 2816 if test "x$GLIB_COMPILE_RESOURCES" = xno ; then 2817 GLIB_COMPILE_RESOURCES="" 2818 AC_MSG_RESULT([cannot be found in PATH.]) 2819 else 2820 AC_MSG_RESULT([usable.]) 2821 AC_DEFINE(USE_GRESOURCE) 2822 GRESOURCE_SRC="auto/gui_gtk_gresources.c" 2823 GRESOURCE_OBJ="objects/gui_gtk_gresources.o" 2824 fi 2825 else 2826 AC_MSG_RESULT([not usable.]) 2827 fi 2828 else 2829 AC_MSG_RESULT([cannot obtain from pkg_config.]) 2830 fi 2831 2832 AC_MSG_CHECKING([--disable-icon-cache-update argument]) 2833 AC_ARG_ENABLE(icon_cache_update, 2834 [ --disable-icon-cache-update update disabled], 2835 [], 2836 [enable_icon_cache_update="yes"]) 2837 if test "$enable_icon_cache_update" = "yes"; then 2838 AC_MSG_RESULT([not set]) 2839 AC_PATH_PROG(GTK_UPDATE_ICON_CACHE,[gtk-update-icon-cache],no) 2840 if test "x$GTK_UPDATE_ICON_CACHE" = "xno" ; then 2841 AC_MSG_RESULT([not found in PATH.]) 2842 fi 2843 else 2844 AC_MSG_RESULT([update disabled]) 2845 fi 2846 2847 AC_MSG_CHECKING([--disable-desktop-database-update argument]) 2848 AC_ARG_ENABLE(desktop_database_update, 2849 [ --disable-desktop-database-update update disabled], 2850 [], 2851 [enable_desktop_database_update="yes"]) 2852 if test "$enable_desktop_database_update" = "yes"; then 2853 AC_MSG_RESULT([not set]) 2854 AC_PATH_PROG(UPDATE_DESKTOP_DATABASE,[update-desktop-database],no) 2855 if test "x$UPDATE_DESKTOP_DATABASE" = "xno" ; then 2856 AC_MSG_RESULT([not found in PATH.]) 2857 fi 2858 else 2859 AC_MSG_RESULT([update disabled]) 2860 fi 2861fi 2862AC_SUBST(GLIB_COMPILE_RESOURCES) 2863AC_SUBST(GRESOURCE_SRC) 2864AC_SUBST(GRESOURCE_OBJ) 2865AC_SUBST(GTK_UPDATE_ICON_CACHE) 2866AC_SUBST(UPDATE_DESKTOP_DATABASE) 2867 2868dnl Check for Motif include files location. 2869dnl The LAST one found is used, this makes the highest version to be used, 2870dnl e.g. when Motif1.2 and Motif2.0 are both present. 2871 2872if test -z "$SKIP_MOTIF"; then 2873 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" 2874 dnl Remove "-I" from before $GUI_INC_LOC if it's there 2875 GUI_INC_LOC="`echo $GUI_INC_LOC|sed 's%-I%%g'`" 2876 2877 AC_MSG_CHECKING(for location of Motif GUI includes) 2878 gui_includes="`echo $x_includes|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/include/g` $GUI_INC_LOC" 2879 GUI_INC_LOC= 2880 for try in $gui_includes; do 2881 if test -f "$try/Xm/Xm.h"; then 2882 GUI_INC_LOC=$try 2883 fi 2884 done 2885 if test -n "$GUI_INC_LOC"; then 2886 if test "$GUI_INC_LOC" = /usr/include; then 2887 GUI_INC_LOC= 2888 AC_MSG_RESULT(in default path) 2889 else 2890 AC_MSG_RESULT($GUI_INC_LOC) 2891 fi 2892 else 2893 AC_MSG_RESULT(<not found>) 2894 SKIP_MOTIF=YES 2895 fi 2896fi 2897 2898dnl Check for Motif library files location. In the same order as the include 2899dnl files, to avoid a mixup if several versions are present 2900 2901if test -z "$SKIP_MOTIF"; then 2902 AC_MSG_CHECKING(--with-motif-lib argument) 2903 AC_ARG_WITH(motif-lib, 2904 [ --with-motif-lib=STRING Library for Motif ], 2905 [ MOTIF_LIBNAME="${withval}" ] ) 2906 2907 if test -n "$MOTIF_LIBNAME"; then 2908 AC_MSG_RESULT($MOTIF_LIBNAME) 2909 GUI_LIB_LOC= 2910 else 2911 AC_MSG_RESULT(no) 2912 2913 dnl Remove "-L" from before $GUI_LIB_LOC if it's there 2914 GUI_LIB_LOC="`echo $GUI_LIB_LOC|sed 's%-L%%g'`" 2915 2916 dnl Ubuntu has libXm.so in /usr/lib/i386-linux-gnu and elsewhere. The 2917 dnl linker will figure out which one to use, we only check if one exists. 2918 AC_MSG_CHECKING(for location of Motif GUI libs) 2919 gui_libs="`echo $x_libraries|sed 's%/[^/][^/]*$%%'` `echo "$gui_XXX" | sed s/XXX/lib/g` /usr/lib/i386-linux-gnu /usr/lib/x86_64-linux-gnu `echo "$GUI_INC_LOC" | sed s/include/lib/` $GUI_LIB_LOC" 2920 GUI_LIB_LOC= 2921 for try in $gui_libs; do 2922 for libtry in "$try"/libXm.a "$try"/libXm.so* "$try"/libXm.sl "$try"/libXm.dylib; do 2923 if test -f "$libtry"; then 2924 GUI_LIB_LOC=$try 2925 fi 2926 done 2927 done 2928 if test -n "$GUI_LIB_LOC"; then 2929 dnl Remove /usr/lib, it causes trouble on some systems 2930 if test "$GUI_LIB_LOC" = /usr/lib \ 2931 -o "$GUI_LIB_LOC" = /usr/lib/i386-linux-gnu \ 2932 -o "$GUI_LIB_LOC" = /usr/lib/x86_64-linux-gnu; then 2933 GUI_LIB_LOC= 2934 AC_MSG_RESULT(in default path) 2935 else 2936 if test -n "$GUI_LIB_LOC"; then 2937 AC_MSG_RESULT($GUI_LIB_LOC) 2938 if test "`(uname) 2>/dev/null`" = SunOS && 2939 uname -r | grep '^5' >/dev/null; then 2940 GUI_LIB_LOC="$GUI_LIB_LOC -R $GUI_LIB_LOC" 2941 fi 2942 fi 2943 fi 2944 MOTIF_LIBNAME=-lXm 2945 else 2946 AC_MSG_RESULT(<not found>) 2947 SKIP_MOTIF=YES 2948 fi 2949 fi 2950fi 2951 2952if test -z "$SKIP_MOTIF"; then 2953 SKIP_ATHENA=YES 2954 SKIP_NEXTAW=YES 2955 GUITYPE=MOTIF 2956 AC_SUBST(MOTIF_LIBNAME) 2957fi 2958 2959dnl Check if the Athena files can be found 2960 2961GUI_X_LIBS= 2962 2963if test -z "$SKIP_ATHENA"; then 2964 AC_MSG_CHECKING(if Athena header files can be found) 2965 cflags_save=$CFLAGS 2966 CFLAGS="$CFLAGS $X_CFLAGS" 2967 AC_TRY_COMPILE([ 2968#include <X11/Intrinsic.h> 2969#include <X11/Xaw/Paned.h>], , 2970 AC_MSG_RESULT(yes), 2971 AC_MSG_RESULT(no); SKIP_ATHENA=YES ) 2972 CFLAGS=$cflags_save 2973fi 2974 2975if test -z "$SKIP_ATHENA"; then 2976 GUITYPE=ATHENA 2977fi 2978 2979if test -z "$SKIP_NEXTAW"; then 2980 AC_MSG_CHECKING(if neXtaw header files can be found) 2981 cflags_save=$CFLAGS 2982 CFLAGS="$CFLAGS $X_CFLAGS" 2983 AC_TRY_COMPILE([ 2984#include <X11/Intrinsic.h> 2985#include <X11/neXtaw/Paned.h>], , 2986 AC_MSG_RESULT(yes), 2987 AC_MSG_RESULT(no); SKIP_NEXTAW=YES ) 2988 CFLAGS=$cflags_save 2989fi 2990 2991if test -z "$SKIP_NEXTAW"; then 2992 GUITYPE=NEXTAW 2993fi 2994 2995if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then 2996 dnl Prepend -I and -L to $GUI_INC_LOC and $GUI_LIB_LOC if not empty 2997 dnl Avoid adding it when it twice 2998 if test -n "$GUI_INC_LOC"; then 2999 GUI_INC_LOC=-I"`echo $GUI_INC_LOC|sed 's%-I%%'`" 3000 fi 3001 if test -n "$GUI_LIB_LOC"; then 3002 GUI_LIB_LOC=-L"`echo $GUI_LIB_LOC|sed 's%-L%%'`" 3003 fi 3004 3005 dnl Check for -lXext and then for -lXmu 3006 ldflags_save=$LDFLAGS 3007 LDFLAGS="$X_LIBS $LDFLAGS" 3008 AC_CHECK_LIB(Xext, XShapeQueryExtension, [GUI_X_LIBS="-lXext"],, 3009 [-lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS]) 3010 dnl For Solaris we need -lw and -ldl before linking with -lXmu works. 3011 AC_CHECK_LIB(w, wslen, [X_EXTRA_LIBS="$X_EXTRA_LIBS -lw"],, 3012 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS]) 3013 AC_CHECK_LIB(dl, dlsym, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldl"],, 3014 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS]) 3015 AC_CHECK_LIB(Xmu, XmuCreateStippledPixmap, [GUI_X_LIBS="-lXmu $GUI_X_LIBS"],, 3016 [$GUI_X_LIBS -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS]) 3017 if test -z "$SKIP_MOTIF"; then 3018 AC_CHECK_LIB(Xp, XpEndJob, [GUI_X_LIBS="-lXp $GUI_X_LIBS"],, 3019 [$GUI_X_LIBS -lXm -lXt $X_PRE_LIBS -lX11 $X_EXTRA_LIBS]) 3020 fi 3021 LDFLAGS=$ldflags_save 3022 3023 dnl Execute xmkmf to figure out if -DNARROWPROTO is needed. 3024 AC_MSG_CHECKING(for extra X11 defines) 3025 NARROW_PROTO= 3026 rm -fr conftestdir 3027 if mkdir conftestdir; then 3028 cd conftestdir 3029 cat > Imakefile <<'EOF' 3030acfindx: 3031 @echo 'NARROW_PROTO="${PROTO_DEFINES}"' 3032EOF 3033 if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then 3034 eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` 3035 fi 3036 cd .. 3037 rm -fr conftestdir 3038 fi 3039 if test -z "$NARROW_PROTO"; then 3040 AC_MSG_RESULT(no) 3041 else 3042 AC_MSG_RESULT($NARROW_PROTO) 3043 fi 3044 AC_SUBST(NARROW_PROTO) 3045fi 3046 3047dnl Look for XSMP support - but don't necessarily restrict it to X11 GUIs 3048dnl use the X11 include path 3049if test "$enable_xsmp" = "yes"; then 3050 cppflags_save=$CPPFLAGS 3051 CPPFLAGS="$CPPFLAGS $X_CFLAGS" 3052 AC_CHECK_HEADERS(X11/SM/SMlib.h) 3053 CPPFLAGS=$cppflags_save 3054fi 3055 3056 3057if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF" -o -z "$SKIP_GTK2" -o -z "$SKIP_GTK3"; then 3058 dnl Check for X11/xpm.h and X11/Sunkeysym.h with the GUI include path 3059 cppflags_save=$CPPFLAGS 3060 CPPFLAGS="$CPPFLAGS $X_CFLAGS" 3061 AC_CHECK_HEADERS(X11/xpm.h X11/Sunkeysym.h) 3062 3063 dnl automatically disable XIM when XIMtext isn't in X11/Xlib.h 3064 if test ! "$enable_xim" = "no"; then 3065 AC_MSG_CHECKING(for XIMText in X11/Xlib.h) 3066 AC_EGREP_CPP(XIMText, [#include <X11/Xlib.h>], 3067 AC_MSG_RESULT(yes), 3068 AC_MSG_RESULT(no; xim has been disabled); enable_xim="no") 3069 fi 3070 CPPFLAGS=$cppflags_save 3071 3072 dnl automatically enable XIM when hangul input isn't enabled 3073 if test "$enable_xim" = "auto" -a "$enable_hangulinput" != "yes" \ 3074 -a "x$GUITYPE" != "xNONE" ; then 3075 AC_MSG_RESULT(X GUI selected; xim has been enabled) 3076 enable_xim="yes" 3077 fi 3078fi 3079 3080if test -z "$SKIP_ATHENA" -o -z "$SKIP_NEXTAW" -o -z "$SKIP_MOTIF"; then 3081 cppflags_save=$CPPFLAGS 3082 CPPFLAGS="$CPPFLAGS $X_CFLAGS" 3083dnl Xmu/Editres.h may exist but can only be used after including Intrinsic.h 3084 AC_MSG_CHECKING([for X11/Xmu/Editres.h]) 3085 AC_TRY_COMPILE([ 3086#include <X11/Intrinsic.h> 3087#include <X11/Xmu/Editres.h>], 3088 [int i; i = 0;], 3089 AC_MSG_RESULT(yes) 3090 AC_DEFINE(HAVE_X11_XMU_EDITRES_H), 3091 AC_MSG_RESULT(no)) 3092 CPPFLAGS=$cppflags_save 3093fi 3094 3095dnl Only use the Xm directory when compiling Motif, don't use it for Athena 3096if test -z "$SKIP_MOTIF"; then 3097 cppflags_save=$CPPFLAGS 3098 CPPFLAGS="$CPPFLAGS $X_CFLAGS" 3099 if test "$zOSUnix" = "yes"; then 3100 xmheader="Xm/Xm.h" 3101 else 3102 xmheader="Xm/Xm.h Xm/XpmP.h Xm/JoinSideT.h Xm/TraitP.h Xm/Manager.h 3103 Xm/UnhighlightT.h Xm/Notebook.h" 3104 fi 3105 AC_CHECK_HEADERS($xmheader) 3106 3107 if test "x$ac_cv_header_Xm_XpmP_h" = "xyes"; then 3108 dnl Solaris uses XpmAttributes_21, very annoying. 3109 AC_MSG_CHECKING([for XpmAttributes_21 in Xm/XpmP.h]) 3110 AC_TRY_COMPILE([#include <Xm/XpmP.h>], [XpmAttributes_21 attr;], 3111 AC_MSG_RESULT(yes); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes_21), 3112 AC_MSG_RESULT(no); AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes) 3113 ) 3114 else 3115 AC_DEFINE(XPMATTRIBUTES_TYPE, XpmAttributes) 3116 fi 3117 CPPFLAGS=$cppflags_save 3118fi 3119 3120if test "x$GUITYPE" = "xNONE" -a "$enable_xim" = "yes"; then 3121 AC_MSG_RESULT(no GUI selected; xim has been disabled) 3122 enable_xim="no" 3123fi 3124if test "x$GUITYPE" = "xNONE" -a "$enable_fontset" = "yes"; then 3125 AC_MSG_RESULT(no GUI selected; fontset has been disabled) 3126 enable_fontset="no" 3127fi 3128if test "x$GUITYPE:$enable_fontset" = "xGTK:yes"; then 3129 AC_MSG_RESULT(GTK+ 2 GUI selected; fontset has been disabled) 3130 enable_fontset="no" 3131fi 3132 3133if test -z "$SKIP_PHOTON"; then 3134 GUITYPE=PHOTONGUI 3135fi 3136 3137AC_SUBST(GUI_INC_LOC) 3138AC_SUBST(GUI_LIB_LOC) 3139AC_SUBST(GUITYPE) 3140AC_SUBST(GUI_X_LIBS) 3141 3142if test "$enable_workshop" = "yes" -a -n "$SKIP_MOTIF"; then 3143 AC_MSG_ERROR([cannot use workshop without Motif]) 3144fi 3145 3146dnl defining FEAT_XIM and FEAT_XFONTSET is delayed, so that they can be disabled 3147if test "$enable_xim" = "yes"; then 3148 AC_DEFINE(FEAT_XIM) 3149fi 3150if test "$enable_fontset" = "yes"; then 3151 AC_DEFINE(FEAT_XFONTSET) 3152fi 3153 3154 3155dnl --------------------------------------------------------------------------- 3156dnl end of GUI-checking 3157dnl --------------------------------------------------------------------------- 3158 3159AC_MSG_CHECKING([for /proc link to executable]) 3160if test -L "/proc/self/exe"; then 3161 dnl Linux 3162 AC_MSG_RESULT([/proc/self/exe]) 3163 AC_DEFINE(PROC_EXE_LINK, "/proc/self/exe") 3164elif test -L "/proc/self/path/a.out"; then 3165 dnl Solaris 3166 AC_MSG_RESULT([/proc/self/path/a.out]) 3167 AC_DEFINE(PROC_EXE_LINK, "/proc/self/path/a.out") 3168elif test -L "/proc/curproc/file"; then 3169 dnl FreeBSD 3170 AC_MSG_RESULT([/proc/curproc/file]) 3171 AC_DEFINE(PROC_EXE_LINK, "/proc/curproc/file") 3172else 3173 AC_MSG_RESULT(no) 3174fi 3175 3176dnl Check for Cygwin, which needs an extra source file if not using X11 3177AC_MSG_CHECKING(for CYGWIN or MSYS environment) 3178case `uname` in 3179 CYGWIN*|MSYS*) CYGWIN=yes; AC_MSG_RESULT(yes) 3180 AC_MSG_CHECKING(for CYGWIN clipboard support) 3181 if test "x$with_x" = "xno" ; then 3182 OS_EXTRA_SRC=winclip.c; OS_EXTRA_OBJ=objects/winclip.o 3183 AC_MSG_RESULT(yes) 3184 AC_DEFINE(FEAT_CYGWIN_WIN32_CLIPBOARD) 3185 else 3186 AC_MSG_RESULT(no - using X11) 3187 fi ;; 3188 3189 *) CYGWIN=no; AC_MSG_RESULT(no);; 3190esac 3191 3192dnl Only really enable hangul input when GUI and XFONTSET are available 3193if test "$enable_hangulinput" = "yes"; then 3194 if test "x$GUITYPE" = "xNONE"; then 3195 AC_MSG_RESULT(no GUI selected; hangul input has been disabled) 3196 enable_hangulinput=no 3197 else 3198 AC_DEFINE(FEAT_HANGULIN) 3199 HANGULIN_SRC=hangulin.c 3200 AC_SUBST(HANGULIN_SRC) 3201 HANGULIN_OBJ=objects/hangulin.o 3202 AC_SUBST(HANGULIN_OBJ) 3203 fi 3204fi 3205 3206dnl Checks for libraries and include files. 3207 3208AC_CACHE_CHECK([whether toupper is broken], [vim_cv_toupper_broken], 3209 [ 3210 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 3211#include "confdefs.h" 3212#include <ctype.h> 3213#if STDC_HEADERS 3214# include <stdlib.h> 3215# include <stddef.h> 3216#endif 3217main() { exit(toupper('A') == 'A' && tolower('z') == 'z'); } 3218 ]])],[ 3219 vim_cv_toupper_broken=yes 3220 ],[ 3221 vim_cv_toupper_broken=no 3222 ],[ 3223 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_toupper_broken') 3224 ])]) 3225 3226if test "x$vim_cv_toupper_broken" = "xyes" ; then 3227 AC_DEFINE(BROKEN_TOUPPER) 3228fi 3229 3230AC_MSG_CHECKING(whether __DATE__ and __TIME__ work) 3231AC_TRY_COMPILE([#include <stdio.h>], [printf("(" __DATE__ " " __TIME__ ")");], 3232 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_DATE_TIME), 3233 AC_MSG_RESULT(no)) 3234 3235AC_MSG_CHECKING(whether __attribute__((unused)) is allowed) 3236AC_TRY_COMPILE([#include <stdio.h>], [int x __attribute__((unused));], 3237 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ATTRIBUTE_UNUSED), 3238 AC_MSG_RESULT(no)) 3239 3240dnl Checks for header files. 3241AC_CHECK_HEADER(elf.h, HAS_ELF=1) 3242dnl AC_CHECK_HEADER(dwarf.h, SVR4=1) 3243if test "$HAS_ELF" = 1; then 3244 AC_CHECK_LIB(elf, main) 3245fi 3246 3247AC_HEADER_DIRENT 3248 3249dnl If sys/wait.h is not found it might still exist but not be POSIX 3250dnl compliant. In that case we define HAVE_UNION_WAIT (for NeXT) 3251if test $ac_cv_header_sys_wait_h = no; then 3252 AC_MSG_CHECKING([for sys/wait.h that defines union wait]) 3253 AC_TRY_COMPILE([#include <sys/wait.h>], 3254 [union wait xx, yy; xx = yy], 3255 AC_MSG_RESULT(yes) 3256 AC_DEFINE(HAVE_SYS_WAIT_H) 3257 AC_DEFINE(HAVE_UNION_WAIT), 3258 AC_MSG_RESULT(no)) 3259fi 3260 3261AC_CHECK_HEADERS(stdint.h stdlib.h string.h \ 3262 sys/select.h sys/utsname.h termcap.h fcntl.h \ 3263 sgtty.h sys/ioctl.h sys/time.h sys/types.h \ 3264 termio.h iconv.h inttypes.h langinfo.h math.h \ 3265 unistd.h stropts.h errno.h sys/resource.h \ 3266 sys/systeminfo.h locale.h sys/stream.h termios.h \ 3267 libc.h sys/statfs.h poll.h sys/poll.h pwd.h \ 3268 utime.h sys/param.h sys/ptms.h libintl.h libgen.h \ 3269 util/debug.h util/msg18n.h frame.h sys/acl.h \ 3270 sys/access.h sys/sysinfo.h wchar.h wctype.h) 3271 3272dnl sys/ptem.h depends on sys/stream.h on Solaris 3273AC_CHECK_HEADERS(sys/ptem.h, [], [], 3274[#if defined HAVE_SYS_STREAM_H 3275# include <sys/stream.h> 3276#endif]) 3277 3278dnl sys/sysctl.h depends on sys/param.h on OpenBSD 3279AC_CHECK_HEADERS(sys/sysctl.h, [], [], 3280[#if defined HAVE_SYS_PARAM_H 3281# include <sys/param.h> 3282#endif]) 3283 3284 3285dnl pthread_np.h may exist but can only be used after including pthread.h 3286AC_MSG_CHECKING([for pthread_np.h]) 3287AC_TRY_COMPILE([ 3288#include <pthread.h> 3289#include <pthread_np.h>], 3290 [int i; i = 0;], 3291 AC_MSG_RESULT(yes) 3292 AC_DEFINE(HAVE_PTHREAD_NP_H), 3293 AC_MSG_RESULT(no)) 3294 3295AC_CHECK_HEADERS(strings.h) 3296if test "x$MACOS_X" = "xyes"; then 3297 dnl The strings.h file on OS/X contains a warning and nothing useful. 3298 AC_DEFINE(NO_STRINGS_WITH_STRING_H) 3299else 3300 3301dnl Check if strings.h and string.h can both be included when defined. 3302AC_MSG_CHECKING([if strings.h can be included after string.h]) 3303cppflags_save=$CPPFLAGS 3304CPPFLAGS="$CPPFLAGS $X_CFLAGS" 3305AC_TRY_COMPILE([ 3306#if defined(_AIX) && !defined(_AIX51) && !defined(_NO_PROTO) 3307# define _NO_PROTO /* like in os_unix.h, causes conflict for AIX (Winn) */ 3308 /* but don't do it on AIX 5.1 (Uribarri) */ 3309#endif 3310#ifdef HAVE_XM_XM_H 3311# include <Xm/Xm.h> /* This breaks it for HP-UX 11 (Squassabia) */ 3312#endif 3313#ifdef HAVE_STRING_H 3314# include <string.h> 3315#endif 3316#if defined(HAVE_STRINGS_H) 3317# include <strings.h> 3318#endif 3319 ], [int i; i = 0;], 3320 AC_MSG_RESULT(yes), 3321 AC_DEFINE(NO_STRINGS_WITH_STRING_H) 3322 AC_MSG_RESULT(no)) 3323CPPFLAGS=$cppflags_save 3324fi 3325 3326dnl Checks for typedefs, structures, and compiler characteristics. 3327AC_PROG_GCC_TRADITIONAL 3328AC_C_CONST 3329AC_C_VOLATILE 3330AC_TYPE_MODE_T 3331AC_TYPE_OFF_T 3332AC_TYPE_PID_T 3333AC_TYPE_SIZE_T 3334AC_TYPE_UID_T 3335AC_TYPE_UINT32_T 3336 3337AC_HEADER_TIME 3338AC_CHECK_TYPE(ino_t, long) 3339AC_CHECK_TYPE(dev_t, unsigned) 3340AC_C_BIGENDIAN(,,,) 3341AC_C_INLINE 3342 3343AC_MSG_CHECKING(for rlim_t) 3344if eval "test \"`echo '$''{'ac_cv_type_rlim_t'+set}'`\" = set"; then 3345 AC_MSG_RESULT([(cached) $ac_cv_type_rlim_t]) 3346else 3347 AC_EGREP_CPP(dnl 3348changequote(<<,>>)dnl 3349<<(^|[^a-zA-Z_0-9])rlim_t[^a-zA-Z_0-9]>>dnl 3350changequote([,]), 3351 [ 3352#include <sys/types.h> 3353#if STDC_HEADERS 3354# include <stdlib.h> 3355# include <stddef.h> 3356#endif 3357#ifdef HAVE_SYS_RESOURCE_H 3358# include <sys/resource.h> 3359#endif 3360 ], ac_cv_type_rlim_t=yes, ac_cv_type_rlim_t=no) 3361 AC_MSG_RESULT($ac_cv_type_rlim_t) 3362fi 3363if test $ac_cv_type_rlim_t = no; then 3364 cat >> confdefs.h <<\EOF 3365#define rlim_t unsigned long 3366EOF 3367fi 3368 3369AC_MSG_CHECKING(for stack_t) 3370if eval "test \"`echo '$''{'ac_cv_type_stack_t'+set}'`\" = set"; then 3371 AC_MSG_RESULT([(cached) $ac_cv_type_stack_t]) 3372else 3373 AC_EGREP_CPP(stack_t, 3374 [ 3375#include <sys/types.h> 3376#if STDC_HEADERS 3377# include <stdlib.h> 3378# include <stddef.h> 3379#endif 3380#include <signal.h> 3381 ], ac_cv_type_stack_t=yes, ac_cv_type_stack_t=no) 3382 AC_MSG_RESULT($ac_cv_type_stack_t) 3383fi 3384if test $ac_cv_type_stack_t = no; then 3385 cat >> confdefs.h <<\EOF 3386#define stack_t struct sigaltstack 3387EOF 3388fi 3389 3390dnl BSDI uses ss_base while others use ss_sp for the stack pointer. 3391AC_MSG_CHECKING(whether stack_t has an ss_base field) 3392AC_TRY_COMPILE([ 3393#include <sys/types.h> 3394#if STDC_HEADERS 3395# include <stdlib.h> 3396# include <stddef.h> 3397#endif 3398#include <signal.h> 3399#include "confdefs.h" 3400 ], [stack_t sigstk; sigstk.ss_base = 0; ], 3401 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SS_BASE), 3402 AC_MSG_RESULT(no)) 3403 3404olibs="$LIBS" 3405AC_MSG_CHECKING(--with-tlib argument) 3406AC_ARG_WITH(tlib, [ --with-tlib=library terminal library to be used ],) 3407if test -n "$with_tlib"; then 3408 AC_MSG_RESULT($with_tlib) 3409 LIBS="$LIBS -l$with_tlib" 3410 AC_MSG_CHECKING(for linking with $with_tlib library) 3411 AC_TRY_LINK([], [], AC_MSG_RESULT(OK), AC_MSG_ERROR(FAILED)) 3412 dnl Need to check for tgetent() below. 3413 olibs="$LIBS" 3414else 3415 AC_MSG_RESULT([empty: automatic terminal library selection]) 3416 dnl On HP-UX 10.10 termcap or termlib should be used instead of 3417 dnl curses, because curses is much slower. 3418 dnl Newer versions of ncurses are preferred over anything, except 3419 dnl when tinfo has been split off, it contains all we need. 3420 dnl Older versions of ncurses have bugs, get a new one! 3421 dnl Digital Unix (OSF1) should use curses (Ronald Schild). 3422 dnl On SCO Openserver should prefer termlib (Roger Cornelius). 3423 case "`uname -s 2>/dev/null`" in 3424 OSF1|SCO_SV) tlibs="tinfo ncurses curses termlib termcap";; 3425 *) tlibs="tinfo ncurses termlib termcap curses";; 3426 esac 3427 for libname in $tlibs; do 3428 AC_CHECK_LIB(${libname}, tgetent,,) 3429 if test "x$olibs" != "x$LIBS"; then 3430 dnl It's possible that a library is found but it doesn't work 3431 dnl e.g., shared library that cannot be found 3432 dnl compile and run a test program to be sure 3433 AC_TRY_RUN([ 3434#ifdef HAVE_TERMCAP_H 3435# include <termcap.h> 3436#endif 3437#if STDC_HEADERS 3438# include <stdlib.h> 3439# include <stddef.h> 3440#endif 3441main() {char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(0); }], 3442 res="OK", res="FAIL", res="FAIL") 3443 if test "$res" = "OK"; then 3444 break 3445 fi 3446 AC_MSG_RESULT($libname library is not usable) 3447 LIBS="$olibs" 3448 fi 3449 done 3450 if test "x$olibs" = "x$LIBS"; then 3451 AC_MSG_RESULT(no terminal library found) 3452 fi 3453fi 3454 3455if test "x$olibs" = "x$LIBS"; then 3456 AC_MSG_CHECKING([for tgetent()]) 3457 AC_TRY_LINK([], 3458 [char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist");], 3459 AC_MSG_RESULT(yes), 3460 AC_MSG_ERROR([NOT FOUND! 3461 You need to install a terminal library; for example ncurses. 3462 Or specify the name of the library with --with-tlib.])) 3463fi 3464 3465AC_CACHE_CHECK([whether we talk terminfo], [vim_cv_terminfo], 3466 [ 3467 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 3468#include "confdefs.h" 3469#ifdef HAVE_TERMCAP_H 3470# include <termcap.h> 3471#endif 3472#ifdef HAVE_STRING_H 3473# include <string.h> 3474#endif 3475#if STDC_HEADERS 3476# include <stdlib.h> 3477# include <stddef.h> 3478#endif 3479main() 3480{char *s; s=(char *)tgoto("%p1%d", 0, 1); exit(!strcmp(s==0 ? "" : s, "1")); } 3481 ]])],[ 3482 vim_cv_terminfo=no 3483 ],[ 3484 vim_cv_terminfo=yes 3485 ],[ 3486 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_terminfo') 3487 ]) 3488 ]) 3489 3490if test "x$vim_cv_terminfo" = "xyes" ; then 3491 AC_DEFINE(TERMINFO) 3492fi 3493 3494AC_CACHE_CHECK([what tgetent() returns for an unknown terminal], [vim_cv_tgetent], 3495 [ 3496 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 3497#include "confdefs.h" 3498#ifdef HAVE_TERMCAP_H 3499# include <termcap.h> 3500#endif 3501#if STDC_HEADERS 3502# include <stdlib.h> 3503# include <stddef.h> 3504#endif 3505main() 3506{char s[10000]; int res = tgetent(s, "thisterminaldoesnotexist"); exit(res != 0); } 3507 ]])],[ 3508 vim_cv_tgetent=zero 3509 ],[ 3510 vim_cv_tgetent=non-zero 3511 ],[ 3512 AC_MSG_ERROR(failed to compile test program.) 3513 ]) 3514 ]) 3515 3516if test "x$vim_cv_tgetent" = "xzero" ; then 3517 AC_DEFINE(TGETENT_ZERO_ERR, 0) 3518fi 3519 3520AC_MSG_CHECKING(whether termcap.h contains ospeed) 3521AC_TRY_LINK([ 3522#ifdef HAVE_TERMCAP_H 3523# include <termcap.h> 3524#endif 3525 ], [ospeed = 20000], 3526 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OSPEED), 3527 [AC_MSG_RESULT(no) 3528 AC_MSG_CHECKING(whether ospeed can be extern) 3529 AC_TRY_LINK([ 3530#ifdef HAVE_TERMCAP_H 3531# include <termcap.h> 3532#endif 3533extern short ospeed; 3534 ], [ospeed = 20000], 3535 AC_MSG_RESULT(yes); AC_DEFINE(OSPEED_EXTERN), 3536 AC_MSG_RESULT(no))] 3537 ) 3538 3539AC_MSG_CHECKING([whether termcap.h contains UP, BC and PC]) 3540AC_TRY_LINK([ 3541#ifdef HAVE_TERMCAP_H 3542# include <termcap.h> 3543#endif 3544 ], [if (UP == 0 && BC == 0) PC = 1], 3545 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_UP_BC_PC), 3546 [AC_MSG_RESULT(no) 3547 AC_MSG_CHECKING([whether UP, BC and PC can be extern]) 3548 AC_TRY_LINK([ 3549#ifdef HAVE_TERMCAP_H 3550# include <termcap.h> 3551#endif 3552extern char *UP, *BC, PC; 3553 ], [if (UP == 0 && BC == 0) PC = 1], 3554 AC_MSG_RESULT(yes); AC_DEFINE(UP_BC_PC_EXTERN), 3555 AC_MSG_RESULT(no))] 3556 ) 3557 3558AC_MSG_CHECKING(whether tputs() uses outfuntype) 3559AC_TRY_COMPILE([ 3560#ifdef HAVE_TERMCAP_H 3561# include <termcap.h> 3562#endif 3563 ], [extern int xx(); tputs("test", 1, (outfuntype)xx)], 3564 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_OUTFUNTYPE), 3565 AC_MSG_RESULT(no)) 3566 3567dnl On some SCO machines sys/select redefines struct timeval 3568AC_MSG_CHECKING([whether sys/select.h and sys/time.h may both be included]) 3569AC_TRY_COMPILE([ 3570#include <sys/types.h> 3571#include <sys/time.h> 3572#include <sys/select.h>], , 3573 AC_MSG_RESULT(yes) 3574 AC_DEFINE(SYS_SELECT_WITH_SYS_TIME), 3575 AC_MSG_RESULT(no)) 3576 3577dnl AC_DECL_SYS_SIGLIST 3578 3579dnl Checks for pty.c (copied from screen) ========================== 3580AC_MSG_CHECKING(for /dev/ptc) 3581if test -r /dev/ptc; then 3582 AC_DEFINE(HAVE_DEV_PTC) 3583 AC_MSG_RESULT(yes) 3584else 3585 AC_MSG_RESULT(no) 3586fi 3587 3588AC_MSG_CHECKING(for SVR4 ptys) 3589if test -c /dev/ptmx ; then 3590 AC_TRY_LINK([], [ptsname(0);grantpt(0);unlockpt(0);], 3591 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SVR4_PTYS), 3592 AC_MSG_RESULT(no)) 3593else 3594 AC_MSG_RESULT(no) 3595fi 3596 3597AC_MSG_CHECKING(for ptyranges) 3598if test -d /dev/ptym ; then 3599 pdir='/dev/ptym' 3600else 3601 pdir='/dev' 3602fi 3603dnl SCO uses ptyp%d 3604AC_EGREP_CPP(yes, 3605[#ifdef M_UNIX 3606 yes; 3607#endif 3608 ], ptys=`echo /dev/ptyp??`, ptys=`echo $pdir/pty??`) 3609dnl if test -c /dev/ptyp19; then 3610dnl ptys=`echo /dev/ptyp??` 3611dnl else 3612dnl ptys=`echo $pdir/pty??` 3613dnl fi 3614if test "$ptys" != "$pdir/pty??" ; then 3615 p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'` 3616 p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'` 3617 AC_DEFINE_UNQUOTED(PTYRANGE0,"$p0") 3618 AC_DEFINE_UNQUOTED(PTYRANGE1,"$p1") 3619 AC_MSG_RESULT([$p0 / $p1]) 3620else 3621 AC_MSG_RESULT([don't know]) 3622fi 3623 3624dnl **** pty mode/group handling **** 3625dnl 3626dnl support provided by Luke Mewburn <[email protected]>, 931222 3627rm -f conftest_grp 3628AC_CACHE_CHECK([default tty permissions/group], [vim_cv_tty_group], 3629 [ 3630 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 3631#include "confdefs.h" 3632#include <sys/types.h> 3633#if STDC_HEADERS 3634# include <stdlib.h> 3635# include <stddef.h> 3636#endif 3637#ifdef HAVE_UNISTD_H 3638#include <unistd.h> 3639#endif 3640#include <sys/stat.h> 3641#include <stdio.h> 3642main() 3643{ 3644 struct stat sb; 3645 char *x,*ttyname(); 3646 int om, m; 3647 FILE *fp; 3648 3649 if (!(x = ttyname(0))) exit(1); 3650 if (stat(x, &sb)) exit(1); 3651 om = sb.st_mode; 3652 if (om & 002) exit(0); 3653 m = system("mesg y"); 3654 if (m == -1 || m == 127) exit(1); 3655 if (stat(x, &sb)) exit(1); 3656 m = sb.st_mode; 3657 if (chmod(x, om)) exit(1); 3658 if (m & 002) exit(0); 3659 if (sb.st_gid == getgid()) exit(1); 3660 if (!(fp=fopen("conftest_grp", "w"))) 3661 exit(1); 3662 fprintf(fp, "%d\n", sb.st_gid); 3663 fclose(fp); 3664 exit(0); 3665} 3666 ]])],[ 3667 if test -f conftest_grp; then 3668 vim_cv_tty_group=`cat conftest_grp` 3669 if test "x$vim_cv_tty_mode" = "x" ; then 3670 vim_cv_tty_mode=0620 3671 fi 3672 AC_MSG_RESULT([pty mode: $vim_cv_tty_mode, group: $vim_cv_tty_group]) 3673 else 3674 vim_cv_tty_group=world 3675 AC_MSG_RESULT([ptys are world accessible]) 3676 fi 3677 ],[ 3678 vim_cv_tty_group=world 3679 AC_MSG_RESULT([can't determine - assume ptys are world accessible]) 3680 ],[ 3681 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_tty_group' and 'vim_cv_tty_mode') 3682 ]) 3683 ]) 3684rm -f conftest_grp 3685 3686if test "x$vim_cv_tty_group" != "xworld" ; then 3687 AC_DEFINE_UNQUOTED(PTYGROUP,$vim_cv_tty_group) 3688 if test "x$vim_cv_tty_mode" = "x" ; then 3689 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 (probably 0620)]) 3690 else 3691 AC_DEFINE(PTYMODE, 0620) 3692 fi 3693fi 3694 3695dnl Checks for library functions. =================================== 3696 3697AC_TYPE_SIGNAL 3698 3699dnl find out what to use at the end of a signal function 3700if test $ac_cv_type_signal = void; then 3701 AC_DEFINE(SIGRETURN, [return]) 3702else 3703 AC_DEFINE(SIGRETURN, [return 0]) 3704fi 3705 3706dnl check if struct sigcontext is defined (used for SGI only) 3707AC_MSG_CHECKING(for struct sigcontext) 3708AC_TRY_COMPILE([ 3709#include <signal.h> 3710test_sig() 3711{ 3712 struct sigcontext *scont; 3713 scont = (struct sigcontext *)0; 3714 return 1; 3715} ], , 3716 AC_MSG_RESULT(yes) 3717 AC_DEFINE(HAVE_SIGCONTEXT), 3718 AC_MSG_RESULT(no)) 3719 3720dnl tricky stuff: try to find out if getcwd() is implemented with 3721dnl system("sh -c pwd") 3722AC_CACHE_CHECK([getcwd implementation is broken], [vim_cv_getcwd_broken], 3723 [ 3724 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 3725#include "confdefs.h" 3726#ifdef HAVE_UNISTD_H 3727#include <unistd.h> 3728#endif 3729char *dagger[] = { "IFS=pwd", 0 }; 3730main() 3731{ 3732 char buffer[500]; 3733 extern char **environ; 3734 environ = dagger; 3735 return getcwd(buffer, 500) ? 0 : 1; 3736} 3737 ]])],[ 3738 vim_cv_getcwd_broken=no 3739 ],[ 3740 vim_cv_getcwd_broken=yes 3741 ],[ 3742 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_getcwd_broken') 3743 ]) 3744 ]) 3745 3746if test "x$vim_cv_getcwd_broken" = "xyes" ; then 3747 AC_DEFINE(BAD_GETCWD) 3748fi 3749 3750dnl Check for functions in one big call, to reduce the size of configure. 3751dnl Can only be used for functions that do not require any include. 3752AC_CHECK_FUNCS(fchdir fchown fchmod fsync getcwd getpseudotty \ 3753 getpwent getpwnam getpwuid getrlimit gettimeofday getwd lstat \ 3754 memset mkdtemp nanosleep opendir putenv qsort readlink select setenv \ 3755 getpgid setpgid setsid sigaltstack sigstack sigset sigsetjmp sigaction \ 3756 sigprocmask sigvec strcasecmp strerror strftime stricmp strncasecmp \ 3757 strnicmp strpbrk strtol tgetent towlower towupper iswupper \ 3758 usleep utime utimes mblen ftruncate unsetenv) 3759AC_FUNC_SELECT_ARGTYPES 3760AC_FUNC_FSEEKO 3761 3762dnl define _LARGE_FILES, _FILE_OFFSET_BITS and _LARGEFILE_SOURCE when 3763dnl appropriate, so that off_t is 64 bits when needed. 3764AC_SYS_LARGEFILE 3765 3766dnl fstatfs() can take 2 to 4 arguments, try to use st_blksize if possible 3767AC_MSG_CHECKING(for st_blksize) 3768AC_TRY_COMPILE( 3769[#include <sys/types.h> 3770#include <sys/stat.h>], 3771[ struct stat st; 3772 int n; 3773 3774 stat("/", &st); 3775 n = (int)st.st_blksize;], 3776 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ST_BLKSIZE), 3777 AC_MSG_RESULT(no)) 3778 3779AC_CACHE_CHECK([whether stat() ignores a trailing slash], [vim_cv_stat_ignores_slash], 3780 [ 3781 AC_RUN_IFELSE([AC_LANG_SOURCE([[ 3782#include "confdefs.h" 3783#if STDC_HEADERS 3784# include <stdlib.h> 3785# include <stddef.h> 3786#endif 3787#include <sys/types.h> 3788#include <sys/stat.h> 3789main() {struct stat st; exit(stat("configure/", &st) != 0); } 3790 ]])],[ 3791 vim_cv_stat_ignores_slash=yes 3792 ],[ 3793 vim_cv_stat_ignores_slash=no 3794 ],[ 3795 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_stat_ignores_slash') 3796 ]) 3797 ]) 3798 3799if test "x$vim_cv_stat_ignores_slash" = "xyes" ; then 3800 AC_DEFINE(STAT_IGNORES_SLASH) 3801fi 3802 3803dnl Link with iconv for charset translation, if not found without library. 3804dnl check for iconv() requires including iconv.h 3805dnl Add "-liconv" when possible; Solaris has iconv but use GNU iconv when it 3806dnl has been installed. 3807AC_MSG_CHECKING(for iconv_open()) 3808save_LIBS="$LIBS" 3809LIBS="$LIBS -liconv" 3810AC_TRY_LINK([ 3811#ifdef HAVE_ICONV_H 3812# include <iconv.h> 3813#endif 3814 ], [iconv_open("fr", "to");], 3815 AC_MSG_RESULT(yes; with -liconv); AC_DEFINE(HAVE_ICONV), 3816 LIBS="$save_LIBS" 3817 AC_TRY_LINK([ 3818#ifdef HAVE_ICONV_H 3819# include <iconv.h> 3820#endif 3821 ], [iconv_open("fr", "to");], 3822 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ICONV), 3823 AC_MSG_RESULT(no))) 3824 3825 3826AC_MSG_CHECKING(for nl_langinfo(CODESET)) 3827AC_TRY_LINK([ 3828#ifdef HAVE_LANGINFO_H 3829# include <langinfo.h> 3830#endif 3831], [char *cs = nl_langinfo(CODESET);], 3832 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_NL_LANGINFO_CODESET), 3833 AC_MSG_RESULT(no)) 3834 3835dnl Need various functions for floating point support. Only enable 3836dnl floating point when they are all present. 3837AC_CHECK_LIB(m, strtod) 3838AC_MSG_CHECKING([for strtod() and other floating point functions]) 3839AC_TRY_LINK([ 3840#ifdef HAVE_MATH_H 3841# include <math.h> 3842#endif 3843#if STDC_HEADERS 3844# include <stdlib.h> 3845# include <stddef.h> 3846#endif 3847], [char *s; double d; 3848 d = strtod("1.1", &s); 3849 d = fabs(1.11); 3850 d = ceil(1.11); 3851 d = floor(1.11); 3852 d = log10(1.11); 3853 d = pow(1.11, 2.22); 3854 d = sqrt(1.11); 3855 d = sin(1.11); 3856 d = cos(1.11); 3857 d = atan(1.11); 3858 ], 3859 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FLOAT_FUNCS), 3860 AC_MSG_RESULT(no)) 3861 3862dnl isinf() and isnan() need to include header files and may need -lm. 3863AC_MSG_CHECKING([for isinf()]) 3864AC_TRY_LINK([ 3865#ifdef HAVE_MATH_H 3866# include <math.h> 3867#endif 3868#if STDC_HEADERS 3869# include <stdlib.h> 3870# include <stddef.h> 3871#endif 3872], [int r = isinf(1.11); ], 3873 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISINF), 3874 AC_MSG_RESULT(no)) 3875 3876AC_MSG_CHECKING([for isnan()]) 3877AC_TRY_LINK([ 3878#ifdef HAVE_MATH_H 3879# include <math.h> 3880#endif 3881#if STDC_HEADERS 3882# include <stdlib.h> 3883# include <stddef.h> 3884#endif 3885], [int r = isnan(1.11); ], 3886 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_ISNAN), 3887 AC_MSG_RESULT(no)) 3888 3889dnl Link with -lposix1e for ACL stuff; if not found, try -lacl for SGI 3890dnl when -lacl works, also try to use -lattr (required for Debian). 3891dnl On Solaris, use the acl_get/set functions in libsec, if present. 3892AC_MSG_CHECKING(--disable-acl argument) 3893AC_ARG_ENABLE(acl, 3894 [ --disable-acl No check for ACL support.], 3895 , [enable_acl="yes"]) 3896if test "$enable_acl" = "yes"; then 3897 AC_MSG_RESULT(no) 3898 AC_CHECK_LIB(posix1e, acl_get_file, [LIBS="$LIBS -lposix1e"], 3899 AC_CHECK_LIB(acl, acl_get_file, [LIBS="$LIBS -lacl" 3900 AC_CHECK_LIB(attr, fgetxattr, LIBS="$LIBS -lattr",,)],,),) 3901 3902 AC_MSG_CHECKING(for POSIX ACL support) 3903 AC_TRY_LINK([ 3904#include <sys/types.h> 3905#ifdef HAVE_SYS_ACL_H 3906# include <sys/acl.h> 3907#endif 3908acl_t acl;], [acl = acl_get_file("foo", ACL_TYPE_ACCESS); 3909 acl_set_file("foo", ACL_TYPE_ACCESS, acl); 3910 acl_free(acl);], 3911 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_POSIX_ACL), 3912 AC_MSG_RESULT(no)) 3913 3914 AC_CHECK_LIB(sec, acl_get, [LIBS="$LIBS -lsec"; AC_DEFINE(HAVE_SOLARIS_ZFS_ACL)], 3915 AC_MSG_CHECKING(for Solaris ACL support) 3916 AC_TRY_LINK([ 3917#ifdef HAVE_SYS_ACL_H 3918# include <sys/acl.h> 3919#endif], [acl("foo", GETACLCNT, 0, NULL); 3920 ], 3921 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SOLARIS_ACL), 3922 AC_MSG_RESULT(no))) 3923 3924 AC_MSG_CHECKING(for AIX ACL support) 3925 AC_TRY_LINK([ 3926#if STDC_HEADERS 3927# include <stdlib.h> 3928# include <stddef.h> 3929#endif 3930#ifdef HAVE_SYS_ACL_H 3931# include <sys/acl.h> 3932#endif 3933#ifdef HAVE_SYS_ACCESS_H 3934# include <sys/access.h> 3935#endif 3936#define _ALL_SOURCE 3937 3938#include <sys/stat.h> 3939 3940int aclsize; 3941struct acl *aclent;], [aclsize = sizeof(struct acl); 3942 aclent = (void *)malloc(aclsize); 3943 statacl("foo", STX_NORMAL, aclent, aclsize); 3944 ], 3945 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_AIX_ACL), 3946 AC_MSG_RESULT(no)) 3947else 3948 AC_MSG_RESULT(yes) 3949fi 3950 3951if test "x$GTK_CFLAGS" != "x"; then 3952 dnl pango_shape_full() is new, fall back to pango_shape(). 3953 AC_MSG_CHECKING(for pango_shape_full) 3954 ac_save_CFLAGS="$CFLAGS" 3955 ac_save_LIBS="$LIBS" 3956 CFLAGS="$CFLAGS $GTK_CFLAGS" 3957 LIBS="$LIBS $GTK_LIBS" 3958 AC_TRY_LINK( 3959 [#include <gtk/gtk.h>], 3960 [ pango_shape_full(NULL, 0, NULL, 0, NULL, NULL); ], 3961 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_PANGO_SHAPE_FULL), 3962 AC_MSG_RESULT(no)) 3963 CFLAGS="$ac_save_CFLAGS" 3964 LIBS="$ac_save_LIBS" 3965fi 3966 3967AC_MSG_CHECKING(--disable-gpm argument) 3968AC_ARG_ENABLE(gpm, 3969 [ --disable-gpm Don't use gpm (Linux mouse daemon).], , 3970 [enable_gpm="yes"]) 3971 3972if test "$enable_gpm" = "yes"; then 3973 AC_MSG_RESULT(no) 3974 dnl Checking if gpm support can be compiled 3975 AC_CACHE_CHECK([for gpm], vi_cv_have_gpm, 3976 [olibs="$LIBS" ; LIBS="-lgpm"] 3977 AC_TRY_LINK( 3978 [#include <gpm.h> 3979 #include <linux/keyboard.h>], 3980 [Gpm_GetLibVersion(NULL);], 3981 dnl Configure defines HAVE_GPM, if it is defined feature.h defines 3982 dnl FEAT_MOUSE_GPM if mouse support is included 3983 [vi_cv_have_gpm=yes], 3984 [vi_cv_have_gpm=no]) 3985 [LIBS="$olibs"] 3986 ) 3987 if test $vi_cv_have_gpm = yes; then 3988 LIBS="$LIBS -lgpm" 3989 AC_DEFINE(HAVE_GPM) 3990 fi 3991else 3992 AC_MSG_RESULT(yes) 3993fi 3994 3995AC_MSG_CHECKING(--disable-sysmouse argument) 3996AC_ARG_ENABLE(sysmouse, 3997 [ --disable-sysmouse Don't use sysmouse (mouse in *BSD console).], , 3998 [enable_sysmouse="yes"]) 3999 4000if test "$enable_sysmouse" = "yes"; then 4001 AC_MSG_RESULT(no) 4002 dnl Checking if sysmouse support can be compiled 4003 dnl Configure defines HAVE_SYSMOUSE, if it is defined feature.h 4004 dnl defines FEAT_SYSMOUSE if mouse support is included 4005 AC_CACHE_CHECK([for sysmouse], vi_cv_have_sysmouse, 4006 AC_TRY_LINK( 4007 [#include <sys/consio.h> 4008 #include <signal.h> 4009 #include <sys/fbio.h>], 4010 [struct mouse_info mouse; 4011 mouse.operation = MOUSE_MODE; 4012 mouse.operation = MOUSE_SHOW; 4013 mouse.u.mode.mode = 0; 4014 mouse.u.mode.signal = SIGUSR2;], 4015 [vi_cv_have_sysmouse=yes], 4016 [vi_cv_have_sysmouse=no]) 4017 ) 4018 if test $vi_cv_have_sysmouse = yes; then 4019 AC_DEFINE(HAVE_SYSMOUSE) 4020 fi 4021else 4022 AC_MSG_RESULT(yes) 4023fi 4024 4025dnl make sure the FD_CLOEXEC flag for fcntl()'s F_SETFD command is known 4026AC_MSG_CHECKING(for FD_CLOEXEC) 4027AC_TRY_COMPILE( 4028[#if HAVE_FCNTL_H 4029# include <fcntl.h> 4030#endif], 4031[ int flag = FD_CLOEXEC;], 4032 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FD_CLOEXEC), 4033 AC_MSG_RESULT(not usable)) 4034 4035dnl rename needs to be checked separately to work on Nextstep with cc 4036AC_MSG_CHECKING(for rename) 4037AC_TRY_LINK([#include <stdio.h>], [rename("this", "that")], 4038 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_RENAME), 4039 AC_MSG_RESULT(no)) 4040 4041dnl sysctl() may exist but not the arguments we use 4042AC_MSG_CHECKING(for sysctl) 4043AC_TRY_COMPILE( 4044[#include <sys/types.h> 4045#include <sys/sysctl.h>], 4046[ int mib[2], r; 4047 size_t len; 4048 4049 mib[0] = CTL_HW; 4050 mib[1] = HW_USERMEM; 4051 len = sizeof(r); 4052 (void)sysctl(mib, 2, &r, &len, (void *)0, (size_t)0); 4053 ], 4054 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCTL), 4055 AC_MSG_RESULT(not usable)) 4056 4057dnl sysinfo() may exist but not be Linux compatible 4058AC_MSG_CHECKING(for sysinfo) 4059AC_TRY_COMPILE( 4060[#include <sys/types.h> 4061#include <sys/sysinfo.h>], 4062[ struct sysinfo sinfo; 4063 int t; 4064 4065 (void)sysinfo(&sinfo); 4066 t = sinfo.totalram; 4067 ], 4068 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO), 4069 AC_MSG_RESULT(not usable)) 4070 4071dnl struct sysinfo may have the mem_unit field or not 4072AC_MSG_CHECKING(for sysinfo.mem_unit) 4073AC_TRY_COMPILE( 4074[#include <sys/types.h> 4075#include <sys/sysinfo.h>], 4076[ struct sysinfo sinfo; 4077 sinfo.mem_unit = 1; 4078 ], 4079 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSINFO_MEM_UNIT), 4080 AC_MSG_RESULT(no)) 4081 4082dnl sysconf() may exist but not support what we want to use 4083AC_MSG_CHECKING(for sysconf) 4084AC_TRY_COMPILE( 4085[#include <unistd.h>], 4086[ (void)sysconf(_SC_PAGESIZE); 4087 (void)sysconf(_SC_PHYS_PAGES); 4088 ], 4089 AC_MSG_RESULT(yes); AC_DEFINE(HAVE_SYSCONF), 4090 AC_MSG_RESULT(not usable)) 4091 4092AC_CHECK_SIZEOF([int]) 4093AC_CHECK_SIZEOF([long]) 4094AC_CHECK_SIZEOF([time_t]) 4095AC_CHECK_SIZEOF([off_t]) 4096 4097dnl Use different names to avoid clashing with other header files. 4098AC_DEFINE_UNQUOTED(VIM_SIZEOF_INT, [$ac_cv_sizeof_int]) 4099AC_DEFINE_UNQUOTED(VIM_SIZEOF_LONG, [$ac_cv_sizeof_long]) 4100 4101dnl Make sure that uint32_t is really 32 bits unsigned. 4102AC_MSG_CHECKING([uint32_t is 32 bits]) 4103AC_TRY_RUN([ 4104#ifdef HAVE_STDINT_H 4105# include <stdint.h> 4106#endif 4107#ifdef HAVE_INTTYPES_H 4108# include <inttypes.h> 4109#endif 4110main() { 4111 uint32_t nr1 = (uint32_t)-1; 4112 uint32_t nr2 = (uint32_t)0xffffffffUL; 4113 if (sizeof(uint32_t) != 4 || nr1 != 0xffffffffUL || nr2 + 1 != 0) exit(1); 4114 exit(0); 4115}], 4116AC_MSG_RESULT(ok), 4117AC_MSG_ERROR([WRONG! uint32_t not defined correctly.]), 4118AC_MSG_WARN([cannot check uint32_t when cross-compiling.])) 4119 4120dnl Check for memmove() before bcopy(), makes memmove() be used when both are 4121dnl present, fixes problem with incompatibility between Solaris 2.4 and 2.5. 4122 4123[bcopy_test_prog=' 4124#include "confdefs.h" 4125#ifdef HAVE_STRING_H 4126# include <string.h> 4127#endif 4128#if STDC_HEADERS 4129# include <stdlib.h> 4130# include <stddef.h> 4131#endif 4132main() { 4133 char buf[10]; 4134 strcpy(buf, "abcdefghi"); 4135 mch_memmove(buf, buf + 2, 3); 4136 if (strncmp(buf, "ababcf", 6)) 4137 exit(1); 4138 strcpy(buf, "abcdefghi"); 4139 mch_memmove(buf + 2, buf, 3); 4140 if (strncmp(buf, "cdedef", 6)) 4141 exit(1); 4142 exit(0); /* libc version works properly. */ 4143}'] 4144 4145AC_CACHE_CHECK([whether memmove handles overlaps],[vim_cv_memmove_handles_overlap], 4146 [ 4147 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memmove(s,d,l) memmove(d,s,l) $bcopy_test_prog]])], 4148 [ 4149 vim_cv_memmove_handles_overlap=yes 4150 ],[ 4151 vim_cv_memmove_handles_overlap=no 4152 ],[ 4153 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memmove_handles_overlap') 4154 ]) 4155 ]) 4156 4157if test "x$vim_cv_memmove_handles_overlap" = "xyes" ; then 4158 AC_DEFINE(USEMEMMOVE) 4159else 4160 AC_CACHE_CHECK([whether bcopy handles overlaps],[vim_cv_bcopy_handles_overlap], 4161 [ 4162 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_bcopy(s,d,l) bcopy(d,s,l) $bcopy_test_prog]])], 4163 [ 4164 vim_cv_bcopy_handles_overlap=yes 4165 ],[ 4166 vim_cv_bcopy_handles_overlap=no 4167 ],[ 4168 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_bcopy_handles_overlap') 4169 ]) 4170 ]) 4171 4172 if test "x$vim_cv_bcopy_handles_overlap" = "xyes" ; then 4173 AC_DEFINE(USEBCOPY) 4174 else 4175 AC_CACHE_CHECK([whether memcpy handles overlaps],[vim_cv_memcpy_handles_overlap], 4176 [ 4177 AC_RUN_IFELSE([AC_LANG_SOURCE([[#define mch_memcpy(s,d,l) memcpy(d,s,l) $bcopy_test_prog]])], 4178 [ 4179 vim_cv_memcpy_handles_overlap=yes 4180 ],[ 4181 vim_cv_memcpy_handles_overlap=no 4182 ],[ 4183 AC_MSG_ERROR(cross-compiling: please set 'vim_cv_memcpy_handles_overlap') 4184 ]) 4185 ]) 4186 4187 if test "x$vim_cv_memcpy_handles_overlap" = "xyes" ; then 4188 AC_DEFINE(USEMEMCPY) 4189 fi 4190 fi 4191fi 4192 4193 4194dnl Check for multibyte locale functions 4195dnl Find out if _Xsetlocale() is supported by libX11. 4196dnl Check if X_LOCALE should be defined. 4197if test "x$with_x" = "xyes"; then 4198 cflags_save=$CFLAGS 4199 libs_save=$LIBS 4200 LIBS="$LIBS $X_LIBS $GUI_LIB_LOC $GUI_X_LIBS $X_PRE_LIBS $X_LIB $X_EXTRA_LIBS" 4201 CFLAGS="$CFLAGS $X_CFLAGS" 4202 4203 AC_MSG_CHECKING(whether X_LOCALE needed) 4204 AC_TRY_COMPILE([#include <X11/Xlocale.h>],, 4205 AC_TRY_LINK_FUNC([_Xsetlocale], [AC_MSG_RESULT(yes) 4206 AC_DEFINE(X_LOCALE)], AC_MSG_RESULT(no)), 4207 AC_MSG_RESULT(no)) 4208 4209 AC_MSG_CHECKING(whether Xutf8SetWMProperties() can be used) 4210 AC_TRY_LINK_FUNC([Xutf8SetWMProperties], [AC_MSG_RESULT(yes) 4211 AC_DEFINE(HAVE_XUTF8SETWMPROPERTIES)], AC_MSG_RESULT(no)) 4212 4213 CFLAGS=$cflags_save 4214 LIBS=$libs_save 4215fi 4216 4217dnl Link with xpg4, it is said to make Korean locale working 4218AC_CHECK_LIB(xpg4, _xpg4_setrunelocale, [LIBS="$LIBS -lxpg4"],,) 4219 4220dnl Check how we can run ctags. Default to "ctags" when nothing works. 4221dnl Use --version to detect Exuberant ctags (preferred) 4222dnl Add --fields=+S to get function signatures for omni completion. 4223dnl -t for typedefs (many ctags have this) 4224dnl -s for static functions (Elvis ctags only?) 4225dnl -v for variables. Dangerous, most ctags take this for 'vgrind style'. 4226dnl -i+m to test for older Exuberant ctags 4227AC_MSG_CHECKING(how to create tags) 4228test -f tags && mv tags tags.save 4229if (eval ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then 4230 TAGPRG="ctags -I INIT+ --fields=+S" 4231elif (eval exctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then 4232 TAGPRG="exctags -I INIT+ --fields=+S" 4233elif (eval exuberant-ctags --version /dev/null | grep Exuberant) < /dev/null 1>&AC_FD_CC 2>&1; then 4234 TAGPRG="exuberant-ctags -I INIT+ --fields=+S" 4235else 4236 TAGPRG="ctags" 4237 (eval etags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags" 4238 (eval etags -c /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="etags -c" 4239 (eval ctags /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags" 4240 (eval ctags -t /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -t" 4241 (eval ctags -ts /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -ts" 4242 (eval ctags -tvs /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -tvs" 4243 (eval ctags -i+m /dev/null) < /dev/null 1>&AC_FD_CC 2>&1 && TAGPRG="ctags -i+m" 4244fi 4245test -f tags.save && mv tags.save tags 4246AC_MSG_RESULT($TAGPRG) AC_SUBST(TAGPRG) 4247 4248dnl Check how we can run man with a section number 4249AC_MSG_CHECKING(how to run man with a section nr) 4250MANDEF="man" 4251(eval MANPAGER=cat PAGER=cat man -s 2 read) < /dev/null > /dev/null 2>&AC_FD_CC && MANDEF="man -s" 4252AC_MSG_RESULT($MANDEF) 4253if test "$MANDEF" = "man -s"; then 4254 AC_DEFINE(USEMAN_S) 4255fi 4256 4257dnl Check if gettext() is working and if it needs -lintl 4258dnl We take care to base this on an empty LIBS: on some systems libelf would be 4259dnl in LIBS and implicitly take along libintl. The final LIBS would then not 4260dnl contain libintl, and the link step would fail due to -Wl,--as-needed. 4261AC_MSG_CHECKING(--disable-nls argument) 4262AC_ARG_ENABLE(nls, 4263 [ --disable-nls Don't support NLS (gettext()).], , 4264 [enable_nls="yes"]) 4265 4266if test "$enable_nls" = "yes"; then 4267 AC_MSG_RESULT(no) 4268 4269 INSTALL_LANGS=install-languages 4270 AC_SUBST(INSTALL_LANGS) 4271 INSTALL_TOOL_LANGS=install-tool-languages 4272 AC_SUBST(INSTALL_TOOL_LANGS) 4273 4274 AC_CHECK_PROG(MSGFMT, msgfmt, msgfmt, ) 4275 AC_MSG_CHECKING([for NLS]) 4276 if test -f po/Makefile; then 4277 have_gettext="no" 4278 if test -n "$MSGFMT"; then 4279 olibs=$LIBS 4280 LIBS="" 4281 AC_TRY_LINK( 4282 [#include <libintl.h>], 4283 [gettext("Test");], 4284 AC_MSG_RESULT([gettext() works]); have_gettext="yes"; LIBS=$olibs, 4285 LIBS="-lintl" 4286 AC_TRY_LINK( 4287 [#include <libintl.h>], 4288 [gettext("Test");], 4289 AC_MSG_RESULT([gettext() works with -lintl]); have_gettext="yes"; 4290 LIBS="$olibs -lintl", 4291 AC_MSG_RESULT([gettext() doesn't work]); 4292 LIBS=$olibs)) 4293 else 4294 AC_MSG_RESULT([msgfmt not found - disabled]); 4295 fi 4296 if test $have_gettext = "yes" -a "x$features" != "xtiny" -a "x$features" != "xsmall"; then 4297 AC_DEFINE(HAVE_GETTEXT) 4298 MAKEMO=yes 4299 AC_SUBST(MAKEMO) 4300 dnl this was added in GNU gettext 0.10.36 4301 AC_CHECK_FUNCS(bind_textdomain_codeset) 4302 dnl _nl_msg_cat_cntr is required for GNU gettext 4303 AC_MSG_CHECKING([for _nl_msg_cat_cntr]) 4304 AC_TRY_LINK( 4305 [#include <libintl.h> 4306 extern int _nl_msg_cat_cntr;], 4307 [++_nl_msg_cat_cntr;], 4308 AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_NL_MSG_CAT_CNTR), 4309 AC_MSG_RESULT([no])) 4310 fi 4311 else 4312 AC_MSG_RESULT([no "po/Makefile" - disabled]); 4313 fi 4314else 4315 AC_MSG_RESULT(yes) 4316fi 4317 4318dnl Check for dynamic linking loader 4319AC_CHECK_HEADER(dlfcn.h, DLL=dlfcn.h, [AC_CHECK_HEADER(dl.h, DLL=dl.h)]) 4320if test x${DLL} = xdlfcn.h; then 4321 AC_DEFINE(HAVE_DLFCN_H, 1, [ Define if we have dlfcn.h. ]) 4322 AC_MSG_CHECKING([for dlopen()]) 4323 AC_TRY_LINK(,[ 4324 extern void* dlopen(); 4325 dlopen(); 4326 ], 4327 AC_MSG_RESULT(yes); 4328 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]), 4329 AC_MSG_RESULT(no); 4330 AC_MSG_CHECKING([for dlopen() in -ldl]) 4331 olibs=$LIBS 4332 LIBS="$LIBS -ldl" 4333 AC_TRY_LINK(,[ 4334 extern void* dlopen(); 4335 dlopen(); 4336 ], 4337 AC_MSG_RESULT(yes); 4338 AC_DEFINE(HAVE_DLOPEN, 1, [ Define if we have dlopen() ]), 4339 AC_MSG_RESULT(no); 4340 LIBS=$olibs)) 4341 dnl ReliantUNIX has dlopen() in libc but everything else in libdl 4342 dnl ick :-) 4343 AC_MSG_CHECKING([for dlsym()]) 4344 AC_TRY_LINK(,[ 4345 extern void* dlsym(); 4346 dlsym(); 4347 ], 4348 AC_MSG_RESULT(yes); 4349 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]), 4350 AC_MSG_RESULT(no); 4351 AC_MSG_CHECKING([for dlsym() in -ldl]) 4352 olibs=$LIBS 4353 LIBS="$LIBS -ldl" 4354 AC_TRY_LINK(,[ 4355 extern void* dlsym(); 4356 dlsym(); 4357 ], 4358 AC_MSG_RESULT(yes); 4359 AC_DEFINE(HAVE_DLSYM, 1, [ Define if we have dlsym() ]), 4360 AC_MSG_RESULT(no); 4361 LIBS=$olibs)) 4362elif test x${DLL} = xdl.h; then 4363 AC_DEFINE(HAVE_DL_H, 1, [ Define if we have dl.h. ]) 4364 AC_MSG_CHECKING([for shl_load()]) 4365 AC_TRY_LINK(,[ 4366 extern void* shl_load(); 4367 shl_load(); 4368 ], 4369 AC_MSG_RESULT(yes); 4370 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]), 4371 AC_MSG_RESULT(no); 4372 AC_MSG_CHECKING([for shl_load() in -ldld]) 4373 olibs=$LIBS 4374 LIBS="$LIBS -ldld" 4375 AC_TRY_LINK(,[ 4376 extern void* shl_load(); 4377 shl_load(); 4378 ], 4379 AC_MSG_RESULT(yes); 4380 AC_DEFINE(HAVE_SHL_LOAD, 1, [ Define if we have shl_load() ]), 4381 AC_MSG_RESULT(no); 4382 LIBS=$olibs)) 4383fi 4384AC_CHECK_HEADERS(setjmp.h) 4385 4386if test "x$MACOS_X" = "xyes" -a -n "$PERL"; then 4387 dnl -ldl must come after DynaLoader.a 4388 if echo $LIBS | grep -e '-ldl' >/dev/null; then 4389 LIBS=`echo $LIBS | sed s/-ldl//` 4390 PERL_LIBS="$PERL_LIBS -ldl" 4391 fi 4392fi 4393 4394if test "$MACOS_X" = "yes"; then 4395 AC_MSG_CHECKING([whether we need macOS frameworks]) 4396 if test "$GUITYPE" = "CARBONGUI"; then 4397 AC_MSG_RESULT([yes, we need Carbon]) 4398 LIBS="$LIBS -framework Carbon" 4399 elif test "$MACOS_X_DARWIN" = "yes"; then 4400 if test "$features" = "tiny"; then 4401 dnl Since no FEAT_CLIPBOARD, no longer need for os_macosx.m. 4402 OS_EXTRA_SRC=`echo "$OS_EXTRA_SRC" | sed -e 's+os_macosx.m++'` 4403 OS_EXTRA_OBJ=`echo "$OS_EXTRA_OBJ" | sed -e 's+objects/os_macosx.o++'` 4404 AC_MSG_RESULT([yes, we need CoreServices]) 4405 LIBS="$LIBS -framework CoreServices" 4406 else 4407 AC_MSG_RESULT([yes, we need AppKit]) 4408 LIBS="$LIBS -framework AppKit" 4409 fi 4410 else 4411 AC_MSG_RESULT([no]) 4412 fi 4413fi 4414if test "x$MACARCH" = "xboth" && test "x$GUITYPE" = "xCARBONGUI"; then 4415 LDFLAGS="$LDFLAGS -isysroot $DEVELOPER_DIR/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" 4416fi 4417 4418dnl gcc 3.1 changed the meaning of -MM. The only solution appears to be to 4419dnl use "-isystem" instead of "-I" for all non-Vim include dirs. 4420dnl But only when making dependencies, cproto and lint don't take "-isystem". 4421dnl Mac gcc returns "powerpc-apple-darwin8-gcc-4.0.1 (GCC)...", need to allow 4422dnl the number before the version number. 4423DEPEND_CFLAGS_FILTER= 4424if test "$GCC" = yes; then 4425 AC_MSG_CHECKING(for GCC 3 or later) 4426 gccmajor=`echo "$gccversion" | sed -e 's/^\([[1-9]]\)\..*$/\1/g'` 4427 if test "$gccmajor" -gt "2"; then 4428 DEPEND_CFLAGS_FILTER="| sed 's+-I */+-isystem /+g'" 4429 AC_MSG_RESULT(yes) 4430 else 4431 AC_MSG_RESULT(no) 4432 fi 4433 dnl -D_FORTIFY_SOURCE=2 crashes Vim on strcpy(buf, "000") when buf is 4434 dnl declared as char x[1] but actually longer. Introduced in gcc 4.0. 4435 dnl Also remove duplicate _FORTIFY_SOURCE arguments. 4436 dnl And undefine it first to avoid a warning. 4437 AC_MSG_CHECKING(whether we need -D_FORTIFY_SOURCE=1) 4438 if test "$gccmajor" -gt "3"; then 4439 CFLAGS=`echo "$CFLAGS" | sed -e 's/ *-Wp,-D_FORTIFY_SOURCE=.//g' -e 's/ *-D_FORTIFY_SOURCE=.//g' -e 's/ *-U_FORTIFY_SOURCE//g' -e 's/$/ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1/'` 4440 AC_MSG_RESULT(yes) 4441 else 4442 AC_MSG_RESULT(no) 4443 fi 4444fi 4445AC_SUBST(DEPEND_CFLAGS_FILTER) 4446 4447dnl On some systems AC_SYS_LARGEFILE determines that -D_FILE_OFFSET_BITS=64 4448dnl isn't required, but the CFLAGS for some of the libraries we're using 4449dnl include the define. Since the define changes the size of some datatypes 4450dnl (e.g. ino_t and off_t), all of Vim's modules must be compiled with a 4451dnl consistent value. It's therefore safest to force the use of the define 4452dnl if it's present in any of the *_CFLAGS variables. 4453AC_MSG_CHECKING(whether we need to force -D_FILE_OFFSET_BITS=64) 4454if echo "$CFLAGS $LUA_CFLAGS $MZSCHEME_CFLAGS $PERL_CFLAGS $PYTHON_CFLAGS $PYTHON3_CFLAGS $TCL_CFLAGS $RUBY_CFLAGS $GTK_CFLAGS" | grep -q D_FILE_OFFSET_BITS 2>/dev/null; then 4455 AC_MSG_RESULT(yes) 4456 AC_DEFINE(_FILE_OFFSET_BITS, 64) 4457else 4458 AC_MSG_RESULT(no) 4459fi 4460 4461dnl link.sh tries to avoid overlinking in a hackish way. 4462dnl At least GNU ld supports --as-needed which provides the same functionality 4463dnl at linker level. Let's use it. 4464AC_MSG_CHECKING(linker --as-needed support) 4465LINK_AS_NEEDED= 4466# Check if linker supports --as-needed and --no-as-needed options 4467if $CC -Wl,--help 2>/dev/null | grep as-needed > /dev/null; then 4468 LDFLAGS=`echo "$LDFLAGS" | sed -e 's/ *-Wl,--as-needed//g' | sed -e 's/$/ -Wl,--as-needed/'` 4469 LINK_AS_NEEDED=yes 4470fi 4471if test "$LINK_AS_NEEDED" = yes; then 4472 AC_MSG_RESULT(yes) 4473else 4474 AC_MSG_RESULT(no) 4475fi 4476AC_SUBST(LINK_AS_NEEDED) 4477 4478# IBM z/OS reset CFLAGS for config.mk 4479if test "$zOSUnix" = "yes"; then 4480 CFLAGS="-D_ALL_SOURCE -Wc,float\(ieee\),dll" 4481fi 4482 4483dnl write output files 4484AC_OUTPUT(auto/config.mk:config.mk.in) 4485 4486dnl vim: set sw=2 tw=78 fo+=l: 4487