diff options
Diffstat (limited to 'aclocal.m4')
-rw-r--r-- | aclocal.m4 | 4249 |
1 files changed, 4249 insertions, 0 deletions
diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..ae4d21e --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,4249 @@ +dnl $XTermId: aclocal.m4,v 1.342 2012/06/26 09:57:45 tom Exp $ +dnl +dnl --------------------------------------------------------------------------- +dnl +dnl Copyright 1997-2011,2012 by Thomas E. Dickey +dnl +dnl All Rights Reserved +dnl +dnl Permission is hereby granted, free of charge, to any person obtaining a +dnl copy of this software and associated documentation files (the +dnl "Software"), to deal in the Software without restriction, including +dnl without limitation the rights to use, copy, modify, merge, publish, +dnl distribute, sublicense, and/or sell copies of the Software, and to +dnl permit persons to whom the Software is furnished to do so, subject to +dnl the following conditions: +dnl +dnl The above copyright notice and this permission notice shall be included +dnl in all copies or substantial portions of the Software. +dnl +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +dnl IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY +dnl CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +dnl TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +dnl SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +dnl +dnl Except as contained in this notice, the name(s) of the above copyright +dnl holders shall not be used in advertising or otherwise to promote the +dnl sale, use or other dealings in this Software without prior written +dnl authorization. +dnl +dnl --------------------------------------------------------------------------- +dnl See +dnl http://invisible-island.net/autoconf/autoconf.html +dnl --------------------------------------------------------------------------- +dnl --------------------------------------------------------------------------- +dnl AM_LANGINFO_CODESET version: 3 updated: 2002/10/27 23:21:42 +dnl ------------------- +dnl Inserted as requested by gettext 0.10.40 +dnl File from /usr/share/aclocal +dnl codeset.m4 +dnl ==================== +dnl serial AM1 +dnl +dnl From Bruno Haible. +AC_DEFUN([AM_LANGINFO_CODESET], +[ + AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include <langinfo.h>], + [char* cs = nl_langinfo(CODESET);], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test $am_cv_langinfo_codeset = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) + fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_CHECK version: 2 updated: 2011/05/08 11:22:03 +dnl ------------------ +dnl Conditionally generate script according to whether we're using a given autoconf. +dnl +dnl $1 = version to compare against +dnl $2 = code to use if AC_ACVERSION is at least as high as $1. +dnl $3 = code to use if AC_ACVERSION is older than $1. +define(CF_ACVERSION_CHECK, +[ +ifdef([m4_version_compare], +[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])], +[CF_ACVERSION_COMPARE( +AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), +AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_COMPARE version: 2 updated: 2011/04/14 20:56:50 +dnl -------------------- +dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1, +dnl MAJOR2, MINOR2, TERNARY2, +dnl PRINTABLE2, not FOUND, FOUND) +define(CF_ACVERSION_COMPARE, +[ifelse(builtin([eval], [$2 < $5]), 1, +[ifelse([$8], , ,[$8])], +[ifelse([$9], , ,[$9])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_CFLAGS version: 10 updated: 2010/05/26 05:38:42 +dnl ------------- +dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS +dnl The second parameter if given makes this macro verbose. +dnl +dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, +dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily +dnl confused by the quotes (which require backslashes to keep them usable). +AC_DEFUN([CF_ADD_CFLAGS], +[ +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $1 +do +case $cf_fix_cppflags in +no) + case $cf_add_cflags in #(vi + -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi + case $cf_add_cflags in + -D*) + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'` + + test "${cf_add_cflags}" != "${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=yes + + if test $cf_fix_cppflags = yes ; then + cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" + continue + fi + ;; + esac + case "$CPPFLAGS" in + *$cf_add_cflags) #(vi + ;; + *) #(vi + case $cf_add_cflags in #(vi + -D*) + cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) + ;; + esac + cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" + ;; + esac + ;; + *) + cf_new_cflags="$cf_new_cflags $cf_add_cflags" + ;; + esac + ;; +yes) + cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" + + cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'` + + test "${cf_add_cflags}" != "${cf_tst_cflags}" \ + && test -z "${cf_tst_cflags}" \ + && cf_fix_cppflags=no + ;; +esac +done + +if test -n "$cf_new_cflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) + CFLAGS="$CFLAGS $cf_new_cflags" +fi + +if test -n "$cf_new_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) + CPPFLAGS="$CPPFLAGS $cf_new_cppflags" +fi + +if test -n "$cf_new_extra_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) + EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" +fi + +AC_SUBST(EXTRA_CPPFLAGS) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 +dnl ---------- +dnl Add a library, used to enforce consistency. +dnl +dnl $1 = library to add, without the "-l" +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIBS version: 1 updated: 2010/06/02 05:03:05 +dnl ----------- +dnl Add one or more libraries, used to enforce consistency. +dnl +dnl $1 = libraries to add, with the "-l", etc. +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIBS],[ifelse($2,,LIBS,[$2])="$1 [$]ifelse($2,,LIBS,[$2])"])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIB_AFTER version: 2 updated: 2010/11/08 20:33:46 +dnl ---------------- +dnl Add a given library after another, e.g., following the one it satisfies a +dnl dependency for. +dnl +dnl $1 = the first library +dnl $2 = its dependency +AC_DEFUN([CF_ADD_LIB_AFTER],[ +CF_VERBOSE(...before $LIBS) +LIBS=`echo "$LIBS" | sed -e "s/[[ ]][[ ]]*/ /g" -e "s,$1 ,$1 $2 ," -e 's/ / /g'` +CF_VERBOSE(...after $LIBS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ANSI_CC_CHECK version: 11 updated: 2011/07/01 19:47:45 +dnl ---------------- +dnl This was originally adapted from the macros 'fp_PROG_CC_STDC' and +dnl 'fp_C_PROTOTYPES' in the sharutils 4.2 distribution. +AC_DEFUN([CF_ANSI_CC_CHECK], +[ +# This should have been defined by AC_PROG_CC +: ${CC:=cc} + +# Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content +# into CC. This will not help with broken scripts that wrap the compiler with +# options, but eliminates a more common category of user confusion. +AC_MSG_CHECKING(\$CC variable) +case "$CC" in #(vi +*[[\ \ ]]-[[IUD]]*) + AC_MSG_RESULT(broken) + AC_MSG_WARN(your environment misuses the CC variable to hold CFLAGS/CPPFLAGS options) + # humor him... + cf_flags=`echo "$CC" | sed -e 's/^[[^ ]]*[[ ]]//'` + CC=`echo "$CC" | sed -e 's/[[ ]].*//'` + CF_ADD_CFLAGS($cf_flags) + ;; +*) + AC_MSG_RESULT(ok) + ;; +esac + +AC_CACHE_CHECK(for ${CC:-cc} option to accept ANSI C, cf_cv_ansi_cc,[ +cf_cv_ansi_cc=no +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX -Aa -D_HPUX_SOURCE +# SVR4 -Xc +# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes) +for cf_arg in "-DCC_HAS_PROTOS" \ + "" \ + -qlanglvl=ansi \ + -std1 \ + -Ae \ + "-Aa -D_HPUX_SOURCE" \ + -Xc +do + CF_ADD_CFLAGS($cf_arg) + AC_TRY_COMPILE( +[ +#ifndef CC_HAS_PROTOS +#if !defined(__STDC__) || (__STDC__ != 1) +choke me +#endif +#endif +],[ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);};], + [cf_cv_ansi_cc="$cf_arg"; break]) +done +CFLAGS="$cf_save_CFLAGS" +CPPFLAGS="$cf_save_CPPFLAGS" +]) + +if test "$cf_cv_ansi_cc" != "no"; then +if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then + CF_ADD_CFLAGS($cf_cv_ansi_cc) +else + AC_DEFINE(CC_HAS_PROTOS) +fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 +dnl -------------- +dnl Allow user to disable a normally-on option. +AC_DEFUN([CF_ARG_DISABLE], +[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31 +dnl ------------- +dnl Allow user to enable a normally-off option. +AC_DEFUN([CF_ARG_ENABLE], +[CF_ARG_OPTION($1,[$2],[$3],[$4],no)])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_OPTION version: 4 updated: 2010/05/26 05:38:42 +dnl ------------- +dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus +dnl values. +dnl +dnl Parameters: +dnl $1 = option name +dnl $2 = help-string +dnl $3 = action to perform if option is not default +dnl $4 = action if perform if option is default +dnl $5 = default option value (either 'yes' or 'no') +AC_DEFUN([CF_ARG_OPTION], +[AC_ARG_ENABLE([$1],[$2],[test "$enableval" != ifelse([$5],no,yes,no) && enableval=ifelse([$5],no,no,yes) + if test "$enableval" != "$5" ; then +ifelse([$3],,[ :]dnl +,[ $3]) ifelse([$4],,,[ + else + $4]) + fi],[enableval=$5 ifelse([$4],,,[ + $4 +])dnl + ])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CACHE version: 11 updated: 2008/03/23 14:45:59 +dnl -------------- +dnl Check if we're accidentally using a cache from a different machine. +dnl Derive the system name, as a check for reusing the autoconf cache. +dnl +dnl If we've packaged config.guess and config.sub, run that (since it does a +dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow +dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM +dnl which is useful in cross-compiles. +dnl +dnl Note: we would use $ac_config_sub, but that is one of the places where +dnl autoconf 2.5x broke compatibility with autoconf 2.13 +AC_DEFUN([CF_CHECK_CACHE], +[ +if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then + ifelse([$1],,[AC_CANONICAL_HOST],[$1]) + system_name="$host_os" +else + system_name="`(uname -s -r) 2>/dev/null`" + if test -z "$system_name" ; then + system_name="`(hostname) 2>/dev/null`" + fi +fi +test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name") +AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) + +test -z "$system_name" && system_name="$cf_cv_system_name" +test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) + +if test ".$system_name" != ".$cf_cv_system_name" ; then + AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) + AC_MSG_ERROR("Please remove config.cache and try again.") +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CFLAGS version: 2 updated: 2001/12/30 19:09:58 +dnl --------------- +dnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from +dnl a build-configuration such as imake. These have the pitfall that they +dnl often contain compiler-specific options which we cannot use, mixed with +dnl preprocessor options that we usually can. +AC_DEFUN([CF_CHECK_CFLAGS], +[ +CF_VERBOSE(checking additions to CFLAGS) +cf_check_cflags="$CFLAGS" +cf_check_cppflags="$CPPFLAGS" +CF_ADD_CFLAGS($1,yes) +if test "$cf_check_cflags" != "$CFLAGS" ; then +AC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],, + [CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS) + if test "$cf_check_cppflags" != "$CPPFLAGS" ; then + CF_VERBOSE(but keeping change to \$CPPFLAGS) + fi + CFLAGS="$cf_check_flags"]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_ERRNO version: 11 updated: 2010/05/26 05:38:42 +dnl -------------- +dnl Check for data that is usually declared in <stdio.h> or <errno.h>, e.g., +dnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it +dnl ourselves. +dnl +dnl $1 = the name to check +dnl $2 = the assumed type +AC_DEFUN([CF_CHECK_ERRNO], +[ +AC_CACHE_CHECK(if external $1 is declared, cf_cv_dcl_$1,[ + AC_TRY_COMPILE([ +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#include <stdio.h> +#include <sys/types.h> +#include <errno.h> ], + ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1, + [cf_cv_dcl_$1=yes], + [cf_cv_dcl_$1=no]) +]) + +if test "$cf_cv_dcl_$1" = no ; then + CF_UPPER(cf_result,decl_$1) + AC_DEFINE_UNQUOTED($cf_result) +fi + +# It's possible (for near-UNIX clones) that the data doesn't exist +CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2])) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_EXTERN_DATA version: 3 updated: 2001/12/30 18:03:23 +dnl -------------------- +dnl Check for existence of external data in the current set of libraries. If +dnl we can modify it, it's real enough. +dnl $1 = the name to check +dnl $2 = its type +AC_DEFUN([CF_CHECK_EXTERN_DATA], +[ +AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[ + AC_TRY_LINK([ +#undef $1 +extern $2 $1; +], + [$1 = 2], + [cf_cv_have_$1=yes], + [cf_cv_have_$1=no]) +]) + +if test "$cf_cv_have_$1" = yes ; then + CF_UPPER(cf_result,have_$1) + AC_DEFINE_UNQUOTED($cf_result) +fi + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CLANG_COMPILER version: 1 updated: 2012/06/16 14:55:39 +dnl ----------------- +dnl Check if the given compiler is really clang. clang's C driver defines +dnl __GNUC__ (fooling the configure script into setting $GCC to yes) but does +dnl not ignore some gcc options. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_CLANG_COMPILER],[ +ifelse([$2],,CLANG_COMPILER,[$2])=no + +if test "$ifelse([$1],,[$1],GCC)" = yes ; then + AC_MSG_CHECKING(if this is really Clang ifelse([$1],GXX,C++,C) compiler) + cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" + ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -Qunused-arguments" + AC_TRY_COMPILE([],[ +#ifdef __clang__ +#else +make an error +#endif +],[ifelse([$2],,CLANG_COMPILER,[$2])=yes +cf_save_CFLAGS="$cf_save_CFLAGS -Qunused-arguments" +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_DESKTOP version: 2 updated: 2011/04/22 05:17:37 +dnl ------------------ +dnl Handle a configure option "--disable-desktop", which sets a shell +dnl variable $desktop_utils to a "#" if the feature is not wanted, or to an +dnl empty string if enabled. The variable is used to substitute in front of +dnl corresponding makefile-rules. +dnl +dnl It also tells the configure script to substitute the environment variable +dnl $DESKTOP_FLAGS, which can be used by external scripts to customize the +dnl invocation of desktop-file-util. +dnl +dnl $1 = program name +AC_DEFUN([CF_DISABLE_DESKTOP],[ +# Comment-out the install-desktop rule if the desktop-utils are not found. +AC_MSG_CHECKING(if you want to install desktop files) +CF_ARG_OPTION(desktop, + [ --disable-desktop disable install of $1 desktop files], + [enable_desktop=$enableval], + [enable_desktop=$enableval],yes) +AC_MSG_RESULT($enable_desktop) + +desktop_utils= +if test "$enable_desktop" = yes ; then +AC_CHECK_PROG(desktop_utils,desktop-file-install,yes,no) +fi + +test "$desktop_utils" = yes && desktop_utils= || desktop_utils="#" +AC_SUBST(DESKTOP_FLAGS) +]) +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_ECHO version: 11 updated: 2009/12/13 13:16:57 +dnl --------------- +dnl You can always use "make -n" to see the actual options, but it's hard to +dnl pick out/analyze warning messages when the compile-line is long. +dnl +dnl Sets: +dnl ECHO_LT - symbol to control if libtool is verbose +dnl ECHO_LD - symbol to prefix "cc -o" lines +dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) +dnl SHOW_CC - symbol to put before explicit "cc -c" lines +dnl ECHO_CC - symbol to put before any "cc" line +dnl +AC_DEFUN([CF_DISABLE_ECHO],[ +AC_MSG_CHECKING(if you want to see long compiling messages) +CF_ARG_DISABLE(echo, + [ --disable-echo display "compiling" commands], + [ + ECHO_LT='--silent' + ECHO_LD='@echo linking [$]@;' + RULE_CC='@echo compiling [$]<' + SHOW_CC='@echo compiling [$]@' + ECHO_CC='@' +],[ + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' +]) +AC_MSG_RESULT($enableval) +AC_SUBST(ECHO_LT) +AC_SUBST(ECHO_LD) +AC_SUBST(RULE_CC) +AC_SUBST(SHOW_CC) +AC_SUBST(ECHO_CC) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_RPATH_HACK version: 2 updated: 2011/02/13 13:31:33 +dnl --------------------- +dnl The rpath-hack makes it simpler to build programs, particularly with the +dnl *BSD ports which may have essential libraries in unusual places. But it +dnl can interfere with building an executable for the base system. Use this +dnl option in that case. +AC_DEFUN([CF_DISABLE_RPATH_HACK], +[ +AC_MSG_CHECKING(if rpath-hack should be disabled) +CF_ARG_DISABLE(rpath-hack, + [ --disable-rpath-hack don't add rpath options for additional libraries], + [cf_disable_rpath_hack=yes], + [cf_disable_rpath_hack=no]) +AC_MSG_RESULT($cf_disable_rpath_hack) +if test "$cf_disable_rpath_hack" = no ; then + CF_RPATH_HACK +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_NARROWPROTO version: 3 updated: 2006/02/12 17:46:00 +dnl --------------------- +dnl If this is not set properly, Xaw's scrollbars will not work. +dnl The so-called "modular" configuration for X.org omits most of the +dnl configure checks that would be needed to provide compatibility with +dnl older X builds. This one breaks things noticeably. +AC_DEFUN([CF_ENABLE_NARROWPROTO], +[ +AC_MSG_CHECKING(if you want narrow prototypes for X libraries) + +case `$ac_config_guess` in #(vi +*cygwin*|*freebsd*|*gnu*|*irix5*|*irix6*|*linux-gnu*|*netbsd*|*openbsd*|*qnx*|*sco*|*sgi*) #(vi + cf_default_narrowproto=yes + ;; +*) + cf_default_narrowproto=no + ;; +esac + +CF_ARG_OPTION(narrowproto, + [ --enable-narrowproto enable narrow prototypes for X libraries], + [enable_narrowproto=$enableval], + [enable_narrowproto=$cf_default_narrowproto], + [$cf_default_narrowproto]) +AC_MSG_RESULT($enable_narrowproto) +]) +dnl --------------------------------------------------------------------------- +dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39 +dnl -------- +dnl Check if 'errno' is declared in <errno.h> +AC_DEFUN([CF_ERRNO], +[ +CF_CHECK_ERRNO(errno) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_GRANTPT version: 8 updated: 2012/06/11 17:37:05 +dnl --------------- +dnl Check for grantpt versus openpty, as well as functions that "should" be +dnl available if grantpt is available. +AC_DEFUN([CF_FUNC_GRANTPT],[ + +AC_CHECK_HEADERS( \ +stropts.h \ +) + +cf_func_grantpt="grantpt ptsname" +case $host_os in #(vi +darwin[[0-9]].*) #(vi + ;; +*) + cf_func_grantpt="$cf_func_grantpt posix_openpt" + ;; +esac + +AC_CHECK_FUNCS($cf_func_grantpt) + +cf_grantpt_opts= +if test "x$ac_cv_func_grantpt" = "xyes" ; then + AC_MSG_CHECKING(if grantpt really works) + AC_TRY_LINK(CF__GRANTPT_HEAD,CF__GRANTPT_BODY,[ + AC_TRY_RUN(CF__GRANTPT_HEAD +int main(void) +{ +CF__GRANTPT_BODY +} +, +,ac_cv_func_grantpt=no +,ac_cv_func_grantpt=maybe) + ],ac_cv_func_grantpt=no) + AC_MSG_RESULT($ac_cv_func_grantpt) + + if test "x$ac_cv_func_grantpt" != "xno" ; then + + if test "x$ac_cv_func_grantpt" = "xyes" ; then + AC_MSG_CHECKING(for pty features) +dnl if we have no stropts.h, skip the checks for streams modules + if test "x$ac_cv_header_stropts_h" = xyes + then + cf_pty_this=0 + else + cf_pty_this=3 + fi + + cf_pty_defines= + while test $cf_pty_this != 6 + do + + cf_pty_feature= + cf_pty_next=`expr $cf_pty_this + 1` + CF_MSG_LOG(pty feature test $cf_pty_next:5) + AC_TRY_RUN(#define CONFTEST $cf_pty_this +$cf_pty_defines +CF__GRANTPT_HEAD +int main(void) +{ +CF__GRANTPT_BODY +} +, +[ + case $cf_pty_next in #(vi + 1) #(vi - streams + cf_pty_feature=ptem + ;; + 2) #(vi - streams + cf_pty_feature=ldterm + ;; + 3) #(vi - streams + cf_pty_feature=ttcompat + ;; + 4) #(vi + cf_pty_feature=pty_isatty + ;; + 5) #(vi + cf_pty_feature=pty_tcsetattr + ;; + 6) #(vi + cf_pty_feature=tty_tcsetattr + ;; + esac +],[ + case $cf_pty_next in #(vi + 1|2|3) + CF_MSG_LOG(skipping remaining streams features $cf_pty_this..2) + cf_pty_next=3 + ;; + esac +]) + if test -n "$cf_pty_feature" + then + cf_pty_defines="$cf_pty_defines +#define CONFTEST_$cf_pty_feature 1 +" + cf_grantpt_opts="$cf_grantpt_opts $cf_pty_feature" + fi + + cf_pty_this=$cf_pty_next + done + AC_MSG_RESULT($cf_grantpt_opts) + cf_grantpt_opts=`echo "$cf_grantpt_opts" | sed -e 's/ isatty//'` + fi + fi +fi + +dnl If we found grantpt, but no features, e.g., for streams or if we are not +dnl able to use tcsetattr, then give openpty a try. In particular, Darwin 10.7 +dnl has a more functional openpty than posix_openpt. +dnl +dnl There is no configure run-test for openpty, since its implementations do +dnl not always run properly as a non-root user. +if test "x$ac_cv_func_grantpt" != "xyes" || test -z "$cf_grantpt_opts" ; then + AC_CHECK_LIB(util, openpty, [cf_have_openpty=yes],[cf_have_openpty=no]) + if test "$cf_have_openpty" = yes ; then + ac_cv_func_grantpt=no + LIBS="-lutil $LIBS" + AC_DEFINE(HAVE_OPENPTY) + AC_CHECK_HEADERS( \ + util.h \ + libutil.h \ + pty.h \ + ) + fi +fi + +dnl If we did not settle on using openpty, fill in the definitions for grantpt. +if test "x$ac_cv_func_grantpt" != xno +then + AC_DEFINE(HAVE_WORKING_GRANTPT) + for cf_feature in $cf_grantpt_opts + do + cf_feature=`echo "$cf_feature" | sed -e 's/ //g'` + CF_UPPER(cf_FEATURE,$cf_feature) + AC_DEFINE_UNQUOTED(HAVE_GRANTPT_$cf_FEATURE) + done +elif test "x$cf_have_openpty" = xno +then + CF_VERBOSE(will rely upon BSD-pseudoterminals) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_MEMMOVE version: 7 updated: 2006/12/16 12:33:30 +dnl --------------- +dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither +dnl is found, add our own version of memmove to the list of objects. +AC_DEFUN([CF_FUNC_MEMMOVE], +[ +AC_CHECK_FUNC(memmove,,[ +AC_CHECK_FUNC(bcopy,[ + AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[ + AC_TRY_RUN([ +int main() { + static char data[] = "abcdefghijklmnopqrstuwwxyz"; + char temp[40]; + bcopy(data, temp, sizeof(data)); + bcopy(temp+10, temp, 15); + bcopy(temp+5, temp+15, 10); + ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz")); +} + ], + [cf_cv_good_bcopy=yes], + [cf_cv_good_bcopy=no], + [cf_cv_good_bcopy=unknown]) + ]) + ],[cf_cv_good_bcopy=no]) + if test "$cf_cv_good_bcopy" = yes ; then + AC_DEFINE(USE_OK_BCOPY) + else + AC_DEFINE(USE_MY_MEMMOVE) + fi +])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_TGETENT version: 18 updated: 2011/08/09 21:06:37 +dnl --------------- +dnl Check for tgetent function in termcap library. If we cannot find this, +dnl we'll use the $LINES and $COLUMNS environment variables to pass screen +dnl size information to subprocesses. (We cannot use terminfo's compatibility +dnl function, since it cannot provide the termcap-format data). +dnl +dnl If the --disable-full-tgetent option is given, we'll settle for the first +dnl tgetent function we find. Since the search list in that case does not +dnl include the termcap library, that allows us to default to terminfo. +AC_DEFUN([CF_FUNC_TGETENT], +[ +# compute a reasonable value for $TERM to give tgetent(), since we may be +# running in 'screen', which sets $TERMCAP to a specific entry that is not +# necessarily in /etc/termcap - unsetenv is not portable, so we cannot simply +# discard $TERMCAP. +cf_TERMVAR=vt100 +if test -n "$TERMCAP" +then + cf_TERMCAP=`echo "$TERMCAP" | tr '\n' ' ' | sed -e 's/^..|//' -e 's/|.*//'` + case "$cf_TERMCAP" in #(vi + screen*.*) #(vi + ;; + *) + cf_TERMVAR="$cf_TERMCAP" + ;; + esac +fi +test -z "$cf_TERMVAR" && cf_TERMVAR=vt100 + +AC_MSG_CHECKING(if we want full tgetent function) +CF_ARG_DISABLE(full-tgetent, + [ --disable-full-tgetent disable check for full tgetent function], + cf_full_tgetent=no, + cf_full_tgetent=yes,yes) +AC_MSG_RESULT($cf_full_tgetent) + +if test "$cf_full_tgetent" = yes ; then + cf_test_message="full tgetent" +else + cf_test_message="tgetent" +fi + +AC_CACHE_CHECK(for $cf_test_message function,cf_cv_lib_tgetent,[ +cf_save_LIBS="$LIBS" +cf_cv_lib_tgetent=no +if test "$cf_full_tgetent" = yes ; then + cf_TERMLIB="otermcap termcap termlib ncurses curses" + cf_TERMTST="buffer[[0]] == 0" +else + cf_TERMLIB="termlib ncurses curses" + cf_TERMTST="0" +fi +for cf_termlib in '' $cf_TERMLIB ; do + LIBS="$cf_save_LIBS" + test -n "$cf_termlib" && CF_ADD_LIB($cf_termlib) + AC_TRY_RUN([ +/* terminfo implementations ignore the buffer argument, making it useless for + * the xterm application, which uses this information to make a new TERMCAP + * environment variable. + */ +int main() +{ + char buffer[1024]; + buffer[0] = 0; + tgetent(buffer, "$cf_TERMVAR"); + ${cf_cv_main_return:-return} ($cf_TERMTST); }], + [echo "yes, there is a termcap/tgetent in $cf_termlib" 1>&AC_FD_CC + if test -n "$cf_termlib" ; then + cf_cv_lib_tgetent="-l$cf_termlib" + else + cf_cv_lib_tgetent=yes + fi + break], + [echo "no, there is no termcap/tgetent in $cf_termlib" 1>&AC_FD_CC], + [echo "cross-compiling, cannot verify if a termcap/tgetent is present in $cf_termlib" 1>&AC_FD_CC]) +done +LIBS="$cf_save_LIBS" +]) + +# If we found a working tgetent(), set LIBS and check for termcap.h. +# (LIBS cannot be set inside AC_CACHE_CHECK; the commands there should +# not have side effects other than setting the cache variable, because +# they are not executed when a cached value exists.) +if test "x$cf_cv_lib_tgetent" != xno ; then + test "x$cf_cv_lib_tgetent" != xyes && CF_ADD_LIBS($cf_cv_lib_tgetent) + AC_DEFINE(USE_TERMCAP) + if test "$cf_full_tgetent" = no ; then + AC_TRY_COMPILE([ +#include <termcap.h>],[ +#ifdef NCURSES_VERSION +make an error +#endif],[AC_DEFINE(HAVE_TERMCAP_H)]) + else + AC_CHECK_HEADERS(termcap.h) + fi +else + # If we didn't find a tgetent() that supports the buffer + # argument, look again to see whether we can find even + # a crippled one. A crippled tgetent() is still useful to + # validate values for the TERM environment variable given to + # child processes. + AC_CACHE_CHECK(for partial tgetent function,cf_cv_lib_part_tgetent,[ + cf_cv_lib_part_tgetent=no + for cf_termlib in $cf_TERMLIB ; do + LIBS="$cf_save_LIBS -l$cf_termlib" + AC_TRY_LINK([],[tgetent(0, "$cf_TERMVAR")], + [echo "there is a terminfo/tgetent in $cf_termlib" 1>&AC_FD_CC + cf_cv_lib_part_tgetent="-l$cf_termlib" + break]) + done + LIBS="$cf_save_LIBS" + ]) + + if test "$cf_cv_lib_part_tgetent" != no ; then + CF_ADD_LIBS($cf_cv_lib_part_tgetent) + AC_CHECK_HEADERS(termcap.h) + + # If this is linking against ncurses, we'll trigger the + # ifdef in resize.c that turns the termcap stuff back off. + AC_DEFINE(USE_TERMINFO) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_ATTRIBUTES version: 14 updated: 2010/10/23 15:52:32 +dnl ----------------- +dnl Test for availability of useful gcc __attribute__ directives to quiet +dnl compiler warnings. Though useful, not all are supported -- and contrary +dnl to documentation, unrecognized directives cause older compilers to barf. +AC_DEFUN([CF_GCC_ATTRIBUTES], +[ +if test "$GCC" = yes +then +cat > conftest.i <<EOF +#ifndef GCC_PRINTF +#define GCC_PRINTF 0 +#endif +#ifndef GCC_SCANF +#define GCC_SCANF 0 +#endif +#ifndef GCC_NORETURN +#define GCC_NORETURN /* nothing */ +#endif +#ifndef GCC_UNUSED +#define GCC_UNUSED /* nothing */ +#endif +EOF +if test "$GCC" = yes +then + AC_CHECKING([for $CC __attribute__ directives]) +cat > conftest.$ac_ext <<EOF +#line __oline__ "${as_me:-configure}" +#include "confdefs.h" +#include "conftest.h" +#include "conftest.i" +#if GCC_PRINTF +#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) +#else +#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ +#endif +#if GCC_SCANF +#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) +#else +#define GCC_SCANFLIKE(fmt,var) /*nothing*/ +#endif +extern void wow(char *,...) GCC_SCANFLIKE(1,2); +extern void oops(char *,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN; +extern void foo(void) GCC_NORETURN; +int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { return 0; } +EOF + cf_printf_attribute=no + cf_scanf_attribute=no + for cf_attribute in scanf printf unused noreturn + do + CF_UPPER(cf_ATTRIBUTE,$cf_attribute) + cf_directive="__attribute__(($cf_attribute))" + echo "checking for $CC $cf_directive" 1>&AC_FD_CC + + case $cf_attribute in #(vi + printf) #(vi + cf_printf_attribute=yes + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE 1 +EOF + ;; + scanf) #(vi + cf_scanf_attribute=yes + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE 1 +EOF + ;; + *) #(vi + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE $cf_directive +EOF + ;; + esac + + if AC_TRY_EVAL(ac_compile); then + test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute) + cat conftest.h >>confdefs.h + case $cf_attribute in #(vi + printf) #(vi + if test "$cf_printf_attribute" = no ; then + cat >>confdefs.h <<EOF +#define GCC_PRINTFLIKE(fmt,var) /* nothing */ +EOF + else + cat >>confdefs.h <<EOF +#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) +EOF + fi + ;; + scanf) #(vi + if test "$cf_scanf_attribute" = no ; then + cat >>confdefs.h <<EOF +#define GCC_SCANFLIKE(fmt,var) /* nothing */ +EOF + else + cat >>confdefs.h <<EOF +#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) +EOF + fi + ;; + esac + fi + done +else + fgrep define conftest.i >>confdefs.h +fi +rm -rf conftest* +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_VERSION version: 5 updated: 2010/04/24 11:02:31 +dnl -------------- +dnl Find version of gcc +AC_DEFUN([CF_GCC_VERSION],[ +AC_REQUIRE([AC_PROG_CC]) +GCC_VERSION=none +if test "$GCC" = yes ; then + AC_MSG_CHECKING(version of $CC) + GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + AC_MSG_RESULT($GCC_VERSION) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_WARNINGS version: 29 updated: 2012/06/16 14:55:39 +dnl --------------- +dnl Check if the compiler supports useful warning options. There's a few that +dnl we don't use, simply because they're too noisy: +dnl +dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) +dnl -Wredundant-decls (system headers make this too noisy) +dnl -Wtraditional (combines too many unrelated messages, only a few useful) +dnl -Wwrite-strings (too noisy, but should review occasionally). This +dnl is enabled for ncurses using "--enable-const". +dnl -pedantic +dnl +dnl Parameter: +dnl $1 is an optional list of gcc warning flags that a particular +dnl application might want to use, e.g., "no-unused" for +dnl -Wno-unused +dnl Special: +dnl If $with_ext_const is "yes", add a check for -Wwrite-strings +dnl +AC_DEFUN([CF_GCC_WARNINGS], +[ +AC_REQUIRE([CF_GCC_VERSION]) +CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) +CF_CLANG_COMPILER(GCC,CLANG_COMPILER,CFLAGS) + +cat > conftest.$ac_ext <<EOF +#line __oline__ "${as_me:-configure}" +int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; } +EOF + +if test "$INTEL_COMPILER" = yes +then +# The "-wdXXX" options suppress warnings: +# remark #1419: external declaration in primary source file +# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem) +# remark #1684: conversion from pointer to same-sized integral type (potential portability problem) +# remark #193: zero used for undefined preprocessing identifier +# remark #593: variable "curs_sb_left_arrow" was set but never used +# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits +# remark #869: parameter "tw" was never referenced +# remark #981: operands are evaluated in unspecified order +# warning #279: controlling expression is constant + + AC_CHECKING([for $CC warning options]) + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS="-Wall" + for cf_opt in \ + wd1419 \ + wd1683 \ + wd1684 \ + wd193 \ + wd593 \ + wd279 \ + wd810 \ + wd869 \ + wd981 + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if AC_TRY_EVAL(ac_compile); then + test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" + +elif test "$GCC" = yes +then + AC_CHECKING([for $CC warning options]) + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS= + cf_warn_CONST="" + test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + for cf_opt in W Wall \ + Wbad-function-cast \ + Wcast-align \ + Wcast-qual \ + Winline \ + Wmissing-declarations \ + Wmissing-prototypes \ + Wnested-externs \ + Wpointer-arith \ + Wshadow \ + Wstrict-prototypes \ + Wundef $cf_warn_CONST $1 + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if AC_TRY_EVAL(ac_compile); then + test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) + case $cf_opt in #(vi + Wcast-qual) #(vi + CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES" + ;; + Winline) #(vi + case $GCC_VERSION in + [[34]].*) + CF_VERBOSE(feature is broken in gcc $GCC_VERSION) + continue;; + esac + ;; + Wpointer-arith) #(vi + case $GCC_VERSION in + [[12]].*) + CF_VERBOSE(feature is broken in gcc $GCC_VERSION) + continue;; + esac + ;; + esac + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +fi +rm -rf conftest* + +AC_SUBST(EXTRA_CFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07 +dnl ------------- +dnl Check if we must define _GNU_SOURCE to get a reasonable value for +dnl _XOPEN_SOURCE, upon which many POSIX definitions depend. This is a defect +dnl (or misfeature) of glibc2, which breaks portability of many applications, +dnl since it is interwoven with GNU extensions. +dnl +dnl Well, yes we could work around it... +AC_DEFUN([CF_GNU_SOURCE], +[ +AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ +AC_TRY_COMPILE([#include <sys/types.h>],[ +#ifndef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_gnu_source=no], + [cf_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" + AC_TRY_COMPILE([#include <sys/types.h>],[ +#ifdef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_gnu_source=no], + [cf_cv_gnu_source=yes]) + CPPFLAGS="$cf_save" + ]) +]) +test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23 +dnl --------------- +dnl Insert text into the help-message, for readability, from AC_ARG_WITH. +AC_DEFUN([CF_HELP_MESSAGE], +[AC_DIVERT_HELP([$1])dnl +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_IMAKE_CFLAGS version: 31 updated: 2010/05/26 05:38:42 +dnl --------------- +dnl Use imake to obtain compiler flags. We could, in principle, write tests to +dnl get these, but if imake is properly configured there is no point in doing +dnl this. +dnl +dnl Parameters (used in constructing a sample Imakefile): +dnl $1 = optional value to append to $IMAKE_CFLAGS +dnl $2 = optional value to append to $IMAKE_LOADFLAGS +AC_DEFUN([CF_IMAKE_CFLAGS], +[ +AC_PATH_PROGS(IMAKE,xmkmf imake) + +if test -n "$IMAKE" ; then + +case $IMAKE in # (vi +*/imake) + cf_imake_opts="-DUseInstalled=YES" # (vi + ;; +*/util/xmkmf) + # A single parameter tells xmkmf where the config-files are: + cf_imake_opts="`echo $IMAKE|sed -e s,/config/util/xmkmf,,`" # (vi + ;; +*) + cf_imake_opts= + ;; +esac + +# If it's installed properly, imake (or its wrapper, xmkmf) will point to the +# config directory. +if mkdir conftestdir; then + CDPATH=; export CDPATH + cf_makefile=`cd $srcdir;pwd`/Imakefile + cd conftestdir + + cat >fix_cflags.sed <<'CF_EOF' +s/\\//g +s/[[ ]][[ ]]*/ /g +s/"//g +:pack +s/\(=[[^ ]][[^ ]]*\) \([[^-]]\)/\1 \2/g +t pack +s/\(-D[[a-zA-Z0-9_]][[a-zA-Z0-9_]]*\)=\([[^\'0-9 ]][[^ ]]*\)/\1='\\"\2\\"'/g +s/^IMAKE[[ ]]/IMAKE_CFLAGS="/ +s/ / /g +s/$/"/ +CF_EOF + + cat >fix_lflags.sed <<'CF_EOF' +s/^IMAKE[[ ]]*/IMAKE_LOADFLAGS="/ +s/$/"/ +CF_EOF + + echo >./Imakefile + test -f $cf_makefile && cat $cf_makefile >>./Imakefile + + cat >> ./Imakefile <<'CF_EOF' +findstddefs: + @echo IMAKE ${ALLDEFINES}ifelse([$1],,,[ $1]) | sed -f fix_cflags.sed + @echo IMAKE ${EXTRA_LOAD_FLAGS}ifelse([$2],,,[ $2]) | sed -f fix_lflags.sed +CF_EOF + + if ( $IMAKE $cf_imake_opts 1>/dev/null 2>&AC_FD_CC && test -f Makefile) + then + CF_VERBOSE(Using $IMAKE $cf_imake_opts) + else + # sometimes imake doesn't have the config path compiled in. Find it. + cf_config= + for cf_libpath in $X_LIBS $LIBS ; do + case $cf_libpath in # (vi + -L*) + cf_libpath=`echo .$cf_libpath | sed -e 's/^...//'` + cf_libpath=$cf_libpath/X11/config + if test -d $cf_libpath ; then + cf_config=$cf_libpath + break + fi + ;; + esac + done + if test -z "$cf_config" ; then + AC_MSG_WARN(Could not find imake config-directory) + else + cf_imake_opts="$cf_imake_opts -I$cf_config" + if ( $IMAKE -v $cf_imake_opts 2>&AC_FD_CC) + then + CF_VERBOSE(Using $IMAKE $cf_config) + else + AC_MSG_WARN(Cannot run $IMAKE) + fi + fi + fi + + # GNU make sometimes prints "make[1]: Entering...", which + # would confuse us. + eval `make findstddefs 2>/dev/null | grep -v make` + + cd .. + rm -rf conftestdir + + # We use ${ALLDEFINES} rather than ${STD_DEFINES} because the former + # declares XTFUNCPROTO there. However, some vendors (e.g., SGI) have + # modified it to support site.cf, adding a kludge for the /usr/include + # directory. Try to filter that out, otherwise gcc won't find its + # headers. + if test -n "$GCC" ; then + if test -n "$IMAKE_CFLAGS" ; then + cf_nostdinc="" + cf_std_incl="" + cf_cpp_opts="" + for cf_opt in $IMAKE_CFLAGS + do + case "$cf_opt" in + -nostdinc) #(vi + cf_nostdinc="$cf_opt" + ;; + -I/usr/include) #(vi + cf_std_incl="$cf_opt" + ;; + *) #(vi + cf_cpp_opts="$cf_cpp_opts $cf_opt" + ;; + esac + done + if test -z "$cf_nostdinc" ; then + IMAKE_CFLAGS="$cf_cpp_opts $cf_std_incl" + elif test -z "$cf_std_incl" ; then + IMAKE_CFLAGS="$cf_cpp_opts $cf_nostdinc" + else + CF_VERBOSE(suppressed \"$cf_nostdinc\" and \"$cf_std_incl\") + IMAKE_CFLAGS="$cf_cpp_opts" + fi + fi + fi +fi + +# Some imake configurations define PROJECTROOT with an empty value. Remove +# the empty definition. +case $IMAKE_CFLAGS in +*-DPROJECTROOT=/*) + ;; +*) + IMAKE_CFLAGS=`echo "$IMAKE_CFLAGS" |sed -e "s,-DPROJECTROOT=[[ ]], ,"` + ;; +esac + +fi + +CF_VERBOSE(IMAKE_CFLAGS $IMAKE_CFLAGS) +CF_VERBOSE(IMAKE_LOADFLAGS $IMAKE_LOADFLAGS) + +AC_SUBST(IMAKE_CFLAGS) +AC_SUBST(IMAKE_LOADFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INPUT_METHOD version: 3 updated: 2000/04/11 23:46:57 +dnl --------------- +dnl Check if the X libraries support input-method +AC_DEFUN([CF_INPUT_METHOD], +[ +AC_CACHE_CHECK([if X libraries support input-method],cf_cv_input_method,[ +AC_TRY_LINK([ +#include <X11/IntrinsicP.h> +#include <X11/Xatom.h> +#include <X11/Xutil.h> +#include <X11/Xmu/Atoms.h> +#include <X11/Xmu/Converters.h> +#include <X11/Xaw/XawImP.h> +],[ +{ + XIM xim; + XIMStyles *xim_styles = 0; + XIMStyle input_style; + Widget w = 0; + + XSetLocaleModifiers("@im=none"); + xim = XOpenIM(XtDisplay(w), NULL, NULL, NULL); + XGetIMValues(xim, XNQueryInputStyle, &xim_styles, NULL); + XCloseIM(xim); + input_style = (XIMPreeditNothing | XIMStatusNothing); +} +], +[cf_cv_input_method=yes], +[cf_cv_input_method=no])]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INTEL_COMPILER version: 4 updated: 2010/05/26 05:38:42 +dnl ----------------- +dnl Check if the given compiler is really the Intel compiler for Linux. It +dnl tries to imitate gcc, but does not return an error when it finds a mismatch +dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_INTEL_COMPILER],[ +ifelse([$2],,INTEL_COMPILER,[$2])=no + +if test "$ifelse([$1],,[$1],GCC)" = yes ; then + case $host_os in + linux*|gnu*) + AC_MSG_CHECKING(if this is really Intel ifelse([$1],GXX,C++,C) compiler) + cf_save_CFLAGS="$ifelse([$3],,CFLAGS,[$3])" + ifelse([$3],,CFLAGS,[$3])="$ifelse([$3],,CFLAGS,[$3]) -no-gcc" + AC_TRY_COMPILE([],[ +#ifdef __INTEL_COMPILER +#else +make an error +#endif +],[ifelse([$2],,INTEL_COMPILER,[$2])=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc" +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LASTLOG version: 4 updated: 2002/10/27 23:21:42 +dnl ---------- +dnl Check for header defining _PATH_LASTLOG, or failing that, see if the lastlog +dnl file exists. +AC_DEFUN([CF_LASTLOG], +[ +AC_CHECK_HEADERS(lastlog.h paths.h) +AC_CACHE_CHECK(for lastlog path,cf_cv_path_lastlog,[ +AC_TRY_COMPILE([ +#include <sys/types.h> +#ifdef HAVE_LASTLOG_H +#include <lastlog.h> +#else +#ifdef HAVE_PATHS_H +#include <paths.h> +#endif +#endif],[char *path = _PATH_LASTLOG], + [cf_cv_path_lastlog="_PATH_LASTLOG"], + [if test -f /usr/adm/lastlog ; then + cf_cv_path_lastlog=/usr/adm/lastlog + else + cf_cv_path_lastlog=no + fi]) +]) +test $cf_cv_path_lastlog != no && AC_DEFINE(USE_LASTLOG) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LD_RPATH_OPT version: 5 updated: 2011/07/17 14:48:41 +dnl --------------- +dnl For the given system and compiler, find the compiler flags to pass to the +dnl loader to use the "rpath" feature. +AC_DEFUN([CF_LD_RPATH_OPT], +[ +AC_REQUIRE([CF_CHECK_CACHE]) + +LD_RPATH_OPT= +AC_MSG_CHECKING(for an rpath option) +case $cf_cv_system_name in #(vi +irix*) #(vi + if test "$GCC" = yes; then + LD_RPATH_OPT="-Wl,-rpath," + else + LD_RPATH_OPT="-rpath " + fi + ;; +linux*|gnu*|k*bsd*-gnu) #(vi + LD_RPATH_OPT="-Wl,-rpath," + ;; +openbsd[[2-9]].*|mirbsd*) #(vi + LD_RPATH_OPT="-Wl,-rpath," + ;; +dragonfly*|freebsd*) #(vi + LD_RPATH_OPT="-rpath " + ;; +netbsd*) #(vi + LD_RPATH_OPT="-Wl,-rpath," + ;; +osf*|mls+*) #(vi + LD_RPATH_OPT="-rpath " + ;; +solaris2*) #(vi + LD_RPATH_OPT="-R" + ;; +*) + ;; +esac +AC_MSG_RESULT($LD_RPATH_OPT) + +case "x$LD_RPATH_OPT" in #(vi +x-R*) + AC_MSG_CHECKING(if we need a space after rpath option) + cf_save_LIBS="$LIBS" + CF_ADD_LIBS(${LD_RPATH_OPT}$libdir) + AC_TRY_LINK(, , cf_rpath_space=no, cf_rpath_space=yes) + LIBS="$cf_save_LIBS" + AC_MSG_RESULT($cf_rpath_space) + test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 +dnl ------------ +dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have +dnl a monocase filesystem. +AC_DEFUN([CF_MAKE_TAGS],[ +AC_REQUIRE([CF_MIXEDCASE_FILENAMES]) + +AC_CHECK_PROGS(CTAGS, exctags ctags) +AC_CHECK_PROGS(ETAGS, exetags etags) + +AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) + +if test "$cf_cv_mixedcase" = yes ; then + AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) +else + MAKE_UPPER_TAGS=no +fi + +if test "$MAKE_UPPER_TAGS" = yes ; then + MAKE_UPPER_TAGS= +else + MAKE_UPPER_TAGS="#" +fi + +if test "$MAKE_LOWER_TAGS" = yes ; then + MAKE_LOWER_TAGS= +else + MAKE_LOWER_TAGS="#" +fi + +AC_SUBST(CTAGS) +AC_SUBST(ETAGS) + +AC_SUBST(MAKE_UPPER_TAGS) +AC_SUBST(MAKE_LOWER_TAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55 +dnl ---------------------- +dnl Check if the file-system supports mixed-case filenames. If we're able to +dnl create a lowercase name and see it as uppercase, it doesn't support that. +AC_DEFUN([CF_MIXEDCASE_FILENAMES], +[ +AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ +if test "$cross_compiling" = yes ; then + case $target_alias in #(vi + *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi + cf_cv_mixedcase=no + ;; + *) + cf_cv_mixedcase=yes + ;; + esac +else + rm -f conftest CONFTEST + echo test >conftest + if test -f CONFTEST ; then + cf_cv_mixedcase=no + else + cf_cv_mixedcase=yes + fi + rm -f conftest CONFTEST +fi +]) +test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 +dnl ---------- +dnl Write a debug message to config.log, along with the line number in the +dnl configure script. +AC_DEFUN([CF_MSG_LOG],[ +echo "${as_me:-configure}:__oline__: testing $* ..." 1>&AC_FD_CC +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATHSEP version: 5 updated: 2010/05/26 05:38:42 +dnl ---------- +dnl Provide a value for the $PATH and similar separator +AC_DEFUN([CF_PATHSEP], +[ + case $cf_cv_system_name in + os2*) PATH_SEPARATOR=';' ;; + *) PATH_SEPARATOR=':' ;; + esac +ifelse([$1],,,[$1=$PATH_SEPARATOR]) + AC_SUBST(PATH_SEPARATOR) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATH_PROG version: 8 updated: 2010/10/23 16:12:25 +dnl ------------ +dnl Check for a given program, defining corresponding symbol. +dnl $1 = environment variable, which is suffixed by "_PATH" in the #define. +dnl $2 = program name to find. +dnl $3 = optional list of additional program names to test. +dnl +dnl If there is more than one token in the result, #define the remaining tokens +dnl to $1_ARGS. We need this for 'install' in particular. +dnl +dnl FIXME: we should allow this to be overridden by environment variables +dnl +AC_DEFUN([CF_PATH_PROG],[ +AC_REQUIRE([CF_PATHSEP]) +test -z "[$]$1" && $1=$2 +AC_PATH_PROGS($1,[$]$1 $2 $3,[$]$1) + +cf_path_prog="" +cf_path_args="" +IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR" +for cf_temp in $ac_cv_path_$1 +do + if test -z "$cf_path_prog" ; then + if test "$with_full_paths" = yes ; then + CF_PATH_SYNTAX(cf_temp,break) + cf_path_prog="$cf_temp" + else + cf_path_prog="`basename $cf_temp`" + fi + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +if test -n "$cf_path_prog" ; then + CF_MSG_LOG(defining path for ${cf_path_prog}) + AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog") + test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args") +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATH_SYNTAX version: 14 updated: 2012/06/19 20:58:54 +dnl -------------- +dnl Check the argument to see that it looks like a pathname. Rewrite it if it +dnl begins with one of the prefix/exec_prefix variables, and then again if the +dnl result begins with 'NONE'. This is necessary to work around autoconf's +dnl delayed evaluation of those symbols. +AC_DEFUN([CF_PATH_SYNTAX],[ +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".[$]$1" in #(vi +.\[$]\(*\)*|.\'*\'*) #(vi + ;; +..|./*|.\\*) #(vi + ;; +.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX + ;; +.\[$]{*prefix}*|.\[$]{*dir}*) #(vi + eval $1="[$]$1" + case ".[$]$1" in #(vi + .NONE/*) + $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; #(vi +.no|.NONE/*) + $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` + ;; +*) + ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PKG_CONFIG version: 7 updated: 2011/04/29 04:53:22 +dnl ------------- +dnl Check for the package-config program, unless disabled by command-line. +AC_DEFUN([CF_PKG_CONFIG], +[ +AC_MSG_CHECKING(if you want to use pkg-config) +AC_ARG_WITH(pkg-config, + [ --with-pkg-config{=path} enable/disable use of pkg-config], + [cf_pkg_config=$withval], + [cf_pkg_config=yes]) +AC_MSG_RESULT($cf_pkg_config) + +case $cf_pkg_config in #(vi +no) #(vi + PKG_CONFIG=none + ;; +yes) #(vi + CF_ACVERSION_CHECK(2.52, + [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)], + [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)]) + ;; +*) + PKG_CONFIG=$withval + ;; +esac + +test -z "$PKG_CONFIG" && PKG_CONFIG=none +if test "$PKG_CONFIG" != none ; then + CF_PATH_SYNTAX(PKG_CONFIG) +fi + +AC_SUBST(PKG_CONFIG) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42 +dnl ----------------- +dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. +dnl +dnl POSIX.1-1990 _POSIX_SOURCE +dnl POSIX.1-1990 and _POSIX_SOURCE and +dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 +dnl Bindings Option +dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L +dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L +dnl X/Open 2000 _POSIX_C_SOURCE=200112L +dnl +dnl Parameters: +dnl $1 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_POSIX_C_SOURCE], +[ +cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) +CF_REMOVE_DEFINE(cf_trim_CPPFLAGS,$cf_save_CPPFLAGS,_POSIX_C_SOURCE) + +AC_CACHE_CHECK(if we should define _POSIX_C_SOURCE,cf_cv_posix_c_source,[ + CF_MSG_LOG(if the symbol is already defined go no further) + AC_TRY_COMPILE([#include <sys/types.h>],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif], + [cf_cv_posix_c_source=no], + [cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in #(vi + .[[12]]??*) #(vi + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + .2) #(vi + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + .*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + AC_TRY_COMPILE([#include <sys/types.h>],[ +#ifdef _POSIX_SOURCE +make an error +#endif],[], + cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE") + fi + CF_MSG_LOG(ifdef from value $cf_POSIX_C_SOURCE) + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source" + CF_MSG_LOG(if the second compile does not leave our definition intact error) + AC_TRY_COMPILE([#include <sys/types.h>],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif],, + [cf_cv_posix_c_source=no]) + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + ]) +]) + +if test "$cf_cv_posix_c_source" != no ; then + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + CF_ADD_CFLAGS($cf_cv_posix_c_source) +fi + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_SAVED_IDS version: 7 updated: 2007/03/14 16:43:53 +dnl ------------------ +dnl +dnl Check first if saved-ids are always supported. Some systems +dnl may require runtime checks. +AC_DEFUN([CF_POSIX_SAVED_IDS], +[ +AC_CHECK_HEADERS( \ +sys/param.h \ +) + +AC_CACHE_CHECK(if POSIX saved-ids are supported,cf_cv_posix_saved_ids,[ +AC_TRY_LINK( +[ +#include <unistd.h> +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> /* this may define "BSD" */ +#endif +],[ +#if defined(_POSIX_SAVED_IDS) && (_POSIX_SAVED_IDS > 0) + void *p = (void *) seteuid; + int x = seteuid(geteuid()); +#elif defined(BSD) && (BSD >= 199103) +/* The BSD's may implement the runtime check - and it fails. + * However, saved-ids work almost like POSIX (close enough for most uses). + */ +#else +make an error +#endif +],[cf_cv_posix_saved_ids=yes +],[ +AC_TRY_RUN([ +#ifdef HAVE_STDLIB_H +#include <stdlib.h> +#endif +#include <unistd.h> +int main() +{ + void *p = (void *) seteuid; + long code = sysconf(_SC_SAVED_IDS); + ${cf_cv_main_return:-return} ((code > 0) ? 0 : 1); +}], + cf_cv_posix_saved_ids=yes, + cf_cv_posix_saved_ids=no, + cf_cv_posix_saved_ids=unknown) +]) +]) + +test "$cf_cv_posix_saved_ids" = yes && AC_DEFINE(HAVE_POSIX_SAVED_IDS) +]) +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_WAIT version: 2 updated: 2000/05/29 16:16:04 +dnl ------------- +dnl Check for POSIX wait support +AC_DEFUN([CF_POSIX_WAIT], +[ +AC_REQUIRE([AC_HEADER_SYS_WAIT]) +AC_CACHE_CHECK(for POSIX wait functions,cf_cv_posix_wait,[ +AC_TRY_LINK([ +#include <stdlib.h> +#include <stdio.h> +#include <sys/types.h> +#ifdef HAVE_SYS_WAIT_H +#include <sys/wait.h> +#endif +],[ + int stat_loc; + pid_t pid = waitpid(-1, &stat_loc, WNOHANG|WUNTRACED); + pid_t pid2 = wait(&stat_loc); +], +[cf_cv_posix_wait=yes], +[cf_cv_posix_wait=no]) +]) +test "$cf_cv_posix_wait" = yes && AC_DEFINE(USE_POSIX_WAIT) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROCFS_CWD version: 2 updated: 2007/03/12 20:39:04 +dnl ------------- +dnl Find /proc tree (may be in a different place) which implements the "cwd" +dnl link. +AC_DEFUN([CF_PROCFS_CWD],[ +AC_CACHE_CHECK(for proc tree with cwd-support,cf_cv_procfs_cwd,[ +cf_cv_procfs_cwd=no +for cf_path in /proc /compat/linux/proc /usr/compat/linux/proc +do + if test -d $cf_path && \ + test -d $cf_path/$$ && \ + ( test -d $cf_path/$$/cwd || \ + test -L $cf_path/$$/cwd ); then + cf_cv_procfs_cwd=$cf_path + break + fi +done +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_CC_U_D version: 1 updated: 2005/07/14 16:59:30 +dnl -------------- +dnl Check if C (preprocessor) -U and -D options are processed in the order +dnl given rather than by type of option. Some compilers insist on apply all +dnl of the -U options after all of the -D options. Others allow mixing them, +dnl and may predefine symbols that conflict with those we define. +AC_DEFUN([CF_PROG_CC_U_D], +[ +AC_CACHE_CHECK(if $CC -U and -D options work together,cf_cv_cc_u_d_options,[ + cf_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="-UU_D_OPTIONS -DU_D_OPTIONS -DD_U_OPTIONS -UD_U_OPTIONS" + AC_TRY_COMPILE([],[ +#ifndef U_D_OPTIONS +make an undefined-error +#endif +#ifdef D_U_OPTIONS +make a defined-error +#endif + ],[ + cf_cv_cc_u_d_options=yes],[ + cf_cv_cc_u_d_options=no]) + CPPFLAGS="$cf_save_CPPFLAGS" +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_EXT version: 10 updated: 2004/01/03 19:28:18 +dnl ----------- +dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX. +AC_DEFUN([CF_PROG_EXT], +[ +AC_REQUIRE([CF_CHECK_CACHE]) +case $cf_cv_system_name in +os2*) + CFLAGS="$CFLAGS -Zmt" + CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__" + CXXFLAGS="$CXXFLAGS -Zmt" + # autoconf's macro sets -Zexe and suffix both, which conflict:w + LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" + ac_cv_exeext=.exe + ;; +esac + +AC_EXEEXT +AC_OBJEXT + +PROG_EXT="$EXEEXT" +AC_SUBST(PROG_EXT) +test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT") +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REGEX version: 9 updated: 2012/01/07 15:08:24 +dnl -------- +dnl Attempt to determine if we've got one of the flavors of regular-expression +dnl code that we can support. +AC_DEFUN([CF_REGEX], +[ + +cf_regex_func=no + +cf_regex_libs="regex re" +case $host_os in #(vi +mingw*) + cf_regex_libs="gnurx $cf_regex_libs" + ;; +esac + +AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[ + for cf_regex_lib in $cf_regex_libs + do + AC_CHECK_LIB($cf_regex_lib,regcomp,[ + CF_ADD_LIB($cf_regex_lib) + cf_regex_func=regcomp + break]) + done +]) + +if test "$cf_regex_func" = no ; then + AC_CHECK_FUNC(compile,[cf_regex_func=compile],[ + AC_CHECK_LIB(gen,compile,[ + CF_ADD_LIB(gen) + cf_regex_func=compile])]) +fi + +if test "$cf_regex_func" = no ; then + AC_MSG_WARN(cannot find regular expression library) +fi + +AC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[ + +cf_cv_regex_hdrs=no +case $cf_regex_func in #(vi +compile) #(vi + for cf_regex_hdr in regexp.h regexpr.h + do + AC_TRY_LINK([#include <$cf_regex_hdr>],[ + char *p = compile("", "", "", 0); + int x = step("", ""); + ],[ + cf_cv_regex_hdrs=$cf_regex_hdr + break + ]) + done + ;; +*) + for cf_regex_hdr in regex.h + do + AC_TRY_LINK([#include <sys/types.h> +#include <$cf_regex_hdr>],[ + regex_t *p; + int x = regcomp(p, "", 0); + int y = regexec(p, "", 0, 0, 0); + regfree(p); + ],[ + cf_cv_regex_hdrs=$cf_regex_hdr + break + ]) + done + ;; +esac + +]) + +case $cf_cv_regex_hdrs in #(vi + no) AC_MSG_WARN(no regular expression header found) ;; #(vi + regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS) ;; #(vi + regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS) ;; #(vi + regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS) ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 +dnl ---------------- +dnl Remove all -U and -D options that refer to the given symbol from a list +dnl of C compiler options. This works around the problem that not all +dnl compilers process -U and -D options from left-to-right, so a -U option +dnl cannot be used to cancel the effect of a preceding -D option. +dnl +dnl $1 = target (which could be the same as the source variable) +dnl $2 = source (including '$') +dnl $3 = symbol to remove +define([CF_REMOVE_DEFINE], +[ +$1=`echo "$2" | \ + sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ + -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_RPATH_HACK version: 9 updated: 2011/02/13 13:31:33 +dnl ------------- +AC_DEFUN([CF_RPATH_HACK], +[ +AC_REQUIRE([CF_LD_RPATH_OPT]) +AC_MSG_CHECKING(for updated LDFLAGS) +if test -n "$LD_RPATH_OPT" ; then + AC_MSG_RESULT(maybe) + + AC_CHECK_PROGS(cf_ldd_prog,ldd,no) + cf_rpath_list="/usr/lib /lib" + if test "$cf_ldd_prog" != no + then + cf_rpath_oops= + +AC_TRY_LINK([#include <stdio.h>], + [printf("Hello");], + [cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort -u` + cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort -u`]) + + # If we passed the link-test, but get a "not found" on a given library, + # this could be due to inept reconfiguration of gcc to make it only + # partly honor /usr/local/lib (or whatever). Sometimes this behavior + # is intentional, e.g., installing gcc in /usr/bin and suppressing the + # /usr/local libraries. + if test -n "$cf_rpath_oops" + then + for cf_rpath_src in $cf_rpath_oops + do + for cf_rpath_dir in \ + /usr/local \ + /usr/pkg \ + /opt/sfw + do + if test -f $cf_rpath_dir/lib/$cf_rpath_src + then + CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src) + LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" + break + fi + done + done + fi + fi + + CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS) + + CF_RPATH_HACK_2(LDFLAGS) + CF_RPATH_HACK_2(LIBS) + + CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS) +fi +AC_SUBST(EXTRA_LDFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_RPATH_HACK_2 version: 6 updated: 2010/04/17 16:31:24 +dnl --------------- +dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to +dnl EXTRA_LDFLAGS for each -L option found. +dnl +dnl $cf_rpath_list contains a list of directories to ignore. +dnl +dnl $1 = variable name to update. The LDFLAGS variable should be the only one, +dnl but LIBS often has misplaced -L options. +AC_DEFUN([CF_RPATH_HACK_2], +[ +CF_VERBOSE(...checking $1 [$]$1) + +cf_rpath_dst= +for cf_rpath_src in [$]$1 +do + case $cf_rpath_src in #(vi + -L*) #(vi + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp) + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +$1=$cf_rpath_dst + +CF_VERBOSE(...checked $1 [$]$1) +AC_SUBST(EXTRA_LDFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SIGWINCH version: 1 updated: 2006/04/02 16:41:09 +dnl ----------- +dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all +dnl programs need this test). +dnl +dnl This is really a MacOS X 10.4.3 workaround. Defining _POSIX_C_SOURCE +dnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct +dnl winsize declaration is left alone - we may revisit this if Apple choose to +dnl break that part of the interface as well. +AC_DEFUN([CF_SIGWINCH], +[ +AC_CACHE_CHECK(if SIGWINCH is defined,cf_cv_define_sigwinch,[ + AC_TRY_COMPILE([ +#include <sys/types.h> +#include <sys/signal.h> +],[int x = SIGWINCH], + [cf_cv_define_sigwinch=yes], + [AC_TRY_COMPILE([ +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include <sys/types.h> +#include <sys/signal.h> +],[int x = SIGWINCH], + [cf_cv_define_sigwinch=maybe], + [cf_cv_define_sigwinch=no]) +]) +]) + +if test "$cf_cv_define_sigwinch" = maybe ; then +AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[ +cf_cv_fixup_sigwinch=unknown +cf_sigwinch=32 +while test $cf_sigwinch != 1 +do + AC_TRY_COMPILE([ +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include <sys/types.h> +#include <sys/signal.h> +],[ +#if SIGWINCH != $cf_sigwinch +make an error +#endif +int x = SIGWINCH], + [cf_cv_fixup_sigwinch=$cf_sigwinch + break]) + +cf_sigwinch=`expr $cf_sigwinch - 1` +done +]) + + if test "$cf_cv_fixup_sigwinch" != unknown ; then + CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SIG_ATOMIC_T version: 2 updated: 2005/09/18 17:27:12 +dnl --------------- +dnl signal handler, but there are some gcc depedencies in that recommendation. +dnl Try anyway. +AC_DEFUN([CF_SIG_ATOMIC_T], +[ +AC_MSG_CHECKING(for signal global datatype) +AC_CACHE_VAL(cf_cv_sig_atomic_t,[ + for cf_type in \ + "volatile sig_atomic_t" \ + "sig_atomic_t" \ + "int" + do + AC_TRY_COMPILE([ +#include <sys/types.h> +#include <signal.h> +#include <stdio.h> + +extern $cf_type x; +$cf_type x; +static void handler(int sig) +{ + x = 5; +}], + [signal(SIGINT, handler); + x = 1], + [cf_cv_sig_atomic_t=$cf_type], + [cf_cv_sig_atomic_t=no]) + test "$cf_cv_sig_atomic_t" != no && break + done + ]) +AC_MSG_RESULT($cf_cv_sig_atomic_t) +test "$cf_cv_sig_atomic_t" != no && AC_DEFINE_UNQUOTED(SIG_ATOMIC_T, $cf_cv_sig_atomic_t) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SIZE_T version: 4 updated: 2000/01/22 00:19:54 +dnl --------- +dnl On both Ultrix and CLIX, I find size_t defined in <stdio.h> +AC_DEFUN([CF_SIZE_T], +[ +AC_MSG_CHECKING(for size_t in <sys/types.h> or <stdio.h>) +AC_CACHE_VAL(cf_cv_type_size_t,[ + AC_TRY_COMPILE([ +#include <sys/types.h> +#ifdef STDC_HEADERS +#include <stdlib.h> +#include <stddef.h> +#endif +#include <stdio.h>], + [size_t x], + [cf_cv_type_size_t=yes], + [cf_cv_type_size_t=no]) + ]) +AC_MSG_RESULT($cf_cv_type_size_t) +test $cf_cv_type_size_t = no && AC_DEFINE(size_t, unsigned) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_STRUCT_LASTLOG version: 1 updated: 2006/03/12 17:46:43 +dnl ----------------- +dnl Check for header defining struct lastlog, ensure that its .ll_time member +dnl is compatible with time(). +AC_DEFUN([CF_STRUCT_LASTLOG], +[ +AC_CHECK_HEADERS(lastlog.h) +AC_CACHE_CHECK(for struct lastlog,cf_cv_struct_lastlog,[ +AC_TRY_RUN([ +#include <sys/types.h> +#include <time.h> +#include <lastlog.h> + +int main() +{ + struct lastlog data; + return (sizeof(data.ll_time) != sizeof(time_t)); +}],[ +cf_cv_struct_lastlog=yes],[ +cf_cv_struct_lastlog=no],[ +cf_cv_struct_lastlog=unknown])]) + +test $cf_cv_struct_lastlog != no && AC_DEFINE(USE_STRUCT_LASTLOG) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SVR4 version: 4 updated: 2011/09/04 17:17:53 +dnl ------- +dnl Check if this is an SVR4 system. We need the definition for xterm +AC_DEFUN([CF_SVR4], +[ +AC_CHECK_LIB(elf, elf_begin,[ +AC_CACHE_CHECK(if this is an SVR4 system, cf_cv_svr4,[ +AC_TRY_COMPILE([ +#if defined(__CYGWIN__) +make an error +#endif +#include <elf.h> +#include <sys/termio.h> +],[ +static struct termio d_tio; + d_tio.c_cc[VINTR] = 0; + d_tio.c_cc[VQUIT] = 0; + d_tio.c_cc[VERASE] = 0; + d_tio.c_cc[VKILL] = 0; + d_tio.c_cc[VEOF] = 0; + d_tio.c_cc[VEOL] = 0; + d_tio.c_cc[VMIN] = 0; + d_tio.c_cc[VTIME] = 0; + d_tio.c_cc[VLNEXT] = 0; +], +[cf_cv_svr4=yes], +[cf_cv_svr4=no]) +]) +]) +test "$cf_cv_svr4" = yes && AC_DEFINE(SVR4) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SYSV version: 14 updated: 2012/06/11 17:37:05 +dnl ------- +dnl Check if this is a SYSV platform, e.g., as used in <X11/Xos.h>, and whether +dnl defining it will be helpful. The following features are used to check: +dnl +dnl a) bona-fide SVSV doesn't use const for sys_errlist[]. Since this is a +dnl legacy (pre-ANSI) feature, const should not apply. Modern systems only +dnl declare strerror(). Xos.h declares the legacy form of str_errlist[], and +dnl a compile-time error will result from trying to assign to a const array. +dnl +dnl b) compile with headers that exist on SYSV hosts. +dnl +dnl c) compile with type definitions that differ on SYSV hosts from standard C. +AC_DEFUN([CF_SYSV], +[ +AC_CHECK_HEADERS( \ +termios.h \ +stdlib.h \ +X11/Intrinsic.h \ +) + +AC_REQUIRE([CF_SYS_ERRLIST]) + +AC_CACHE_CHECK(if we should define SYSV,cf_cv_sysv,[ +AC_TRY_COMPILE([ +#undef SYSV +#define SYSV 1 /* get Xos.h to declare sys_errlist[] */ +#ifdef HAVE_STDLIB_H +#include <stdlib.h> /* look for wchar_t */ +#endif +#ifdef HAVE_X11_INTRINSIC_H +#include <X11/Intrinsic.h> /* Intrinsic.h has other traps... */ +#endif +#ifdef HAVE_TERMIOS_H /* needed for HPUX 10.20 */ +#include <termios.h> +#define STRUCT_TERMIOS struct termios +#else +#define STRUCT_TERMIOS struct termio +#endif +#include <curses.h> +#include <term.h> /* eliminate most BSD hacks */ +#include <errno.h> /* declare sys_errlist on older systems */ +#include <sys/termio.h> /* eliminate most of the remaining ones */ +],[ +static STRUCT_TERMIOS d_tio; + d_tio.c_cc[VINTR] = 0; + d_tio.c_cc[VQUIT] = 0; + d_tio.c_cc[VERASE] = 0; + d_tio.c_cc[VKILL] = 0; + d_tio.c_cc[VEOF] = 0; + d_tio.c_cc[VEOL] = 0; + d_tio.c_cc[VMIN] = 0; + d_tio.c_cc[VTIME] = 0; +#if defined(HAVE_SYS_ERRLIST) && !defined(DECL_SYS_ERRLIST) +sys_errlist[0] = ""; /* Cygwin mis-declares this */ +#endif +], +[cf_cv_sysv=yes], +[cf_cv_sysv=no]) +]) +test "$cf_cv_sysv" = yes && AC_DEFINE(SYSV) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SYSV_UTMP version: 5 updated: 2001/12/27 12:55:07 +dnl ------------ +dnl Check if this is a SYSV flavor of UTMP +AC_DEFUN([CF_SYSV_UTMP], +[ +AC_CACHE_CHECK(if $cf_cv_have_utmp is SYSV flavor,cf_cv_sysv_utmp,[ +test "$cf_cv_have_utmp" = "utmp" && cf_prefix="ut" || cf_prefix="utx" +AC_TRY_LINK([ +#include <sys/types.h> +#include <${cf_cv_have_utmp}.h>],[ +struct $cf_cv_have_utmp x; + set${cf_prefix}ent (); + get${cf_prefix}id(&x); + put${cf_prefix}line(&x); + end${cf_prefix}ent();], + [cf_cv_sysv_utmp=yes], + [cf_cv_sysv_utmp=no]) +]) +test $cf_cv_sysv_utmp = yes && AC_DEFINE(USE_SYSV_UTMP) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SYS_ERRLIST version: 6 updated: 2001/12/30 13:03:23 +dnl -------------- +dnl Check for declaration of sys_nerr and sys_errlist in one of stdio.h and +dnl errno.h. Declaration of sys_errlist on BSD4.4 interferes with our +dnl declaration. Reported by Keith Bostic. +AC_DEFUN([CF_SYS_ERRLIST], +[ + CF_CHECK_ERRNO(sys_nerr) + CF_CHECK_ERRNO(sys_errlist) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TERMIO_C_ISPEED version: 2 updated: 2000/05/29 16:16:04 +dnl ------------------ +dnl Check for SGI's broken redefinition of baud rates introduced in IRIX 6.5 +dnl (there doesn't appear to be a useful predefined symbol). +AC_DEFUN([CF_TERMIO_C_ISPEED], +[ +AC_CACHE_CHECK(for IRIX 6.5 baud-rate redefinitions,cf_cv_termio_c_ispeed,[ +AC_TRY_COMPILE([ +#include <sys/types.h> +#include <sys/termio.h>],[ +struct termio foo; +foo.c_ispeed = B38400; +foo.c_ospeed = B9600; +],[cf_cv_termio_c_ispeed=yes +],[cf_cv_termio_c_ispeed=no]) +]) +test "$cf_cv_termio_c_ispeed" = yes && AC_DEFINE(HAVE_TERMIO_C_ISPEED) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TRY_PKG_CONFIG version: 4 updated: 2010/06/14 17:42:30 +dnl ----------------- +dnl This is a simple wrapper to use for pkg-config, for libraries which may be +dnl available in that form. +dnl +dnl $1 = package name +dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS +dnl $3 = logic to use if pkg-config does not have the package +AC_DEFUN([CF_TRY_PKG_CONFIG],[ +AC_REQUIRE([CF_PKG_CONFIG]) + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $1; then + CF_VERBOSE(found package $1) + cf_pkgconfig_incs="`$PKG_CONFIG --cflags $1 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs $1 2>/dev/null`" + CF_VERBOSE(package $1 CFLAGS: $cf_pkgconfig_incs) + CF_VERBOSE(package $1 LIBS: $cf_pkgconfig_libs) + CF_ADD_CFLAGS($cf_pkgconfig_incs) + CF_ADD_LIBS($cf_pkgconfig_libs) + ifelse([$2],,:,[$2]) +else + ifelse([$3],,:,[$3]) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_TRY_XOPEN_SOURCE version: 1 updated: 2011/10/30 17:09:50 +dnl ------------------- +dnl If _XOPEN_SOURCE is not defined in the compile environment, check if we +dnl can define it successfully. +AC_DEFUN([CF_TRY_XOPEN_SOURCE],[ +AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ + AC_TRY_COMPILE([ +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +],[ +#ifndef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + AC_TRY_COMPILE([ +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +],[ +#ifdef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) + CPPFLAGS="$cf_save" + ]) +]) + +if test "$cf_cv_xopen_source" != no ; then + CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + CF_ADD_CFLAGS($cf_temp_xopen_source) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_TTY_GROUP version: 7 updated: 2007/03/14 16:43:59 +dnl ------------ +dnl Check if the system has a tty-group defined. This is used in xterm when +dnl setting pty ownership. +AC_DEFUN([CF_TTY_GROUP], +[ +AC_MSG_CHECKING(for explicit tty group name) +AC_ARG_WITH(tty-group, + [ --with-tty-group=XXX use XXX for the tty-group], + [cf_tty_group=$withval], + [cf_tty_group=auto...]) +test -z "$cf_tty_group" && cf_tty_group=auto... +test "$cf_tty_group" = yes && cf_tty_group=auto... +AC_MSG_RESULT($cf_tty_group) + +if test "$cf_tty_group" = "auto..." ; then +AC_CACHE_CHECK(for tty group name,cf_cv_tty_group_name,[ + +# If we are configuring as root, it is hard to get a clue about the tty group. +# But we'll guess based on how our connection is set up - assuming it is done +# properly. + +cf_uid=`id | sed -e 's/^[^=]*=//' -e 's/(.*$//'` +# )vi +if test "$cf_uid" != 0 ; then +cf_cv_tty_group_name= +cf_tty_name=`tty` +test "$cf_tty_name" = "not a tty" && cf_tty_name=/dev/tty +test -z "$cf_tty_name" && cf_tty_name=/dev/tty +if test -c "$cf_tty_name" +then + cf_option="-l -L" + + # Expect listing to have fields like this: + #-rwxrwxrwx 1 user group 34293 Jul 18 16:29 pathname + ls $cf_option $cf_tty_name >conftest.out + read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out + if test -z "$cf_rest" ; then + cf_option="$cf_option -g" + ls $cf_option $cf_tty_name >conftest.out + read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest.out + fi + rm -f conftest.out + cf_cv_tty_group_name=$cf_grp +fi +fi + +# If we cannot deduce the tty group, fall back on hardcoded cases + +if test -z "$cf_cv_tty_group_name" +then +case $host_os in #(vi +osf*) #(vi + cf_cv_tty_group_name="terminal" + ;; +*) + cf_cv_tty_group_name="unknown" + if ( egrep '^tty:' /etc/group 2>/dev/null 1>/dev/null ) then + cf_cv_tty_group_name="tty" + fi + ;; +esac +fi +]) +cf_tty_group="$cf_cv_tty_group_name" +else + # if configure option, always do this + AC_DEFINE(USE_TTY_GROUP) +fi + +AC_DEFINE_UNQUOTED(TTY_GROUP_NAME,"$cf_tty_group") + +# This is only a double-check that the group-name we obtained above really +# does apply to the device. We cannot perform this test if we are in batch +# mode, or if we are cross-compiling. + +AC_CACHE_CHECK(if we may use the $cf_tty_group group,cf_cv_tty_group,[ +cf_tty_name=`tty` +if test "$cf_tty_name" != "not a tty" +then +AC_TRY_RUN([ +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <grp.h> +int main() +{ + struct stat sb; + struct group *ttygrp = getgrnam(TTY_GROUP_NAME); + char *name = ttyname(0); + + endgrent(); + if (ttygrp != 0 + && name != 0 + && stat(name, &sb) == 0 + && sb.st_gid != getgid() + && sb.st_gid == ttygrp->gr_gid) { + ${cf_cv_main_return:-return} (0); + } + ${cf_cv_main_return:-return} (1); +} + ], + [cf_cv_tty_group=yes], + [cf_cv_tty_group=no], + [cf_cv_tty_group=unknown]) +elif test "$cross_compiling" = yes; then + cf_cv_tty_group=unknown +else + cf_cv_tty_group=yes +fi +]) + +if test $cf_cv_tty_group = no ; then + AC_MSG_WARN(Cannot use $cf_tty_group group) +else + AC_DEFINE(USE_TTY_GROUP) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TYPE_CC_T version: 1 updated: 2011/12/12 20:54:48 +dnl ------------ +dnl Check for cc_t type, used in termio. +AC_DEFUN([CF_TYPE_CC_T], +[ +AC_MSG_CHECKING(for cc_t in <termios.h> or <termio.h>) +AC_CACHE_VAL(cf_cv_type_cc_t,[ + AC_TRY_COMPILE([ +#include <sys/types.h> +#if defined(HAVE_TERMIOS_H) +#include <termios.h> +#else +#include <termio.h> +#include <sys/ioctl.h> +#endif +], + [cc_t x], + [cf_cv_type_cc_t=yes], + [cf_cv_type_cc_t=no]) + ]) +AC_MSG_RESULT($cf_cv_type_cc_t) +test $cf_cv_type_cc_t = no && AC_DEFINE(cc_t, unsigned char) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TYPE_FD_MASK version: 2 updated: 2008/03/25 20:59:57 +dnl --------------- +dnl Check for the declaration of fd_mask, which is like fd_set, associated +dnl with select(). The check for fd_set should have pulled in this as well, +dnl but there is a special case for Mac OS X, possibly other BSD-derived +dnl platforms. +AC_DEFUN([CF_TYPE_FD_MASK], +[ +AC_REQUIRE([CF_TYPE_FD_SET]) + +AC_CACHE_CHECK(for declaration of fd_mask,cf_cv_type_fd_mask,[ + if test x$cf_cv_type_fd_set = xX11/Xpoll.h ; then + AC_TRY_COMPILE([ +#include <X11/Xpoll.h>],[fd_mask x],, + [CF_MSG_LOG(if we must define CSRG_BASED) +# Xosdefs.h on Mac OS X may not define this (but it should). + AC_TRY_COMPILE([ +#define CSRG_BASED +#include <X11/Xpoll.h>],[fd_mask x], + cf_cv_type_fd_mask=CSRG_BASED)]) + else + cf_cv_type_fd_mask=$cf_cv_type_fd_set + fi +]) +if test x$cf_cv_type_fd_mask = xCSRG_BASED ; then + AC_DEFINE(CSRG_BASED) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TYPE_FD_SET version: 4 updated: 2008/03/25 20:56:03 +dnl -------------- +dnl Check for the declaration of fd_set. Some platforms declare it in +dnl <sys/types.h>, and some in <sys/select.h>, which requires <sys/types.h>. +dnl Finally, if we are using this for an X application, Xpoll.h may include +dnl <sys/select.h>, so we don't want to do it twice. +AC_DEFUN([CF_TYPE_FD_SET], +[ +AC_CHECK_HEADERS(X11/Xpoll.h) + +AC_CACHE_CHECK(for declaration of fd_set,cf_cv_type_fd_set, + [CF_MSG_LOG(sys/types alone) +AC_TRY_COMPILE([ +#include <sys/types.h>], + [fd_set x], + [cf_cv_type_fd_set=sys/types.h], + [CF_MSG_LOG(X11/Xpoll.h) +AC_TRY_COMPILE([ +#ifdef HAVE_X11_XPOLL_H +#include <X11/Xpoll.h> +#endif], + [fd_set x], + [cf_cv_type_fd_set=X11/Xpoll.h], + [CF_MSG_LOG(sys/select.h) +AC_TRY_COMPILE([ +#include <sys/types.h> +#include <sys/select.h>], + [fd_set x], + [cf_cv_type_fd_set=sys/select.h], + [cf_cv_type_fd_set=unknown])])])]) +if test $cf_cv_type_fd_set = sys/select.h ; then + AC_DEFINE(USE_SYS_SELECT_H) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_UNDO_CFLAGS version: 1 updated: 2011/07/02 09:27:51 +dnl -------------- +dnl Remove flags from $CFLAGS or similar shell variable using sed. +dnl $1 = variable +dnl $2 = message +dnl $3 = pattern to remove +AC_DEFUN([CF_UNDO_CFLAGS], +[ + CF_VERBOSE(removing $2 flags from $1) + $1=`echo "[$]$1" | sed -e 's/$3//'` + CF_VERBOSE(...result [$]$1) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 +dnl -------- +dnl Make an uppercase version of a variable +dnl $1=uppercase($2) +AC_DEFUN([CF_UPPER], +[ +$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTEMPTER version: 3 updated: 2010/06/02 05:03:05 +dnl ----------- +dnl Try to link with utempter library +AC_DEFUN([CF_UTEMPTER], +[ +AC_CACHE_CHECK(if we can link with utempter library,cf_cv_have_utempter,[ +cf_save_LIBS="$LIBS" +CF_ADD_LIB(utempter) +AC_TRY_LINK([ +#include <utempter.h> +],[ + addToUtmp("/dev/tty", 0, 1); + removeFromUtmp(); +],[ + cf_cv_have_utempter=yes],[ + cf_cv_have_utempter=no]) +LIBS="$cf_save_LIBS" +]) +if test "$cf_cv_have_utempter" = yes ; then + AC_DEFINE(USE_UTEMPTER) + CF_ADD_LIB(utempter) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTMP version: 9 updated: 2008/01/25 17:18:00 +dnl ------- +dnl Check for UTMP/UTMPX headers +AC_DEFUN([CF_UTMP], +[ +AC_REQUIRE([CF_LASTLOG]) + +AC_CACHE_CHECK(for utmp implementation,cf_cv_have_utmp,[ + cf_cv_have_utmp=no +for cf_header in utmpx utmp ; do +cf_utmp_includes=" +#include <sys/types.h> +#include <${cf_header}.h> +#define getutent getutxent +#ifdef USE_LASTLOG +#include <lastlog.h> /* may conflict with utmpx.h on Linux */ +#endif +" + AC_TRY_COMPILE([$cf_utmp_includes], + [struct $cf_header x; + char *name = x.ut_name; /* utmp.h and compatible definitions */ + ], + [cf_cv_have_utmp=$cf_header + break], + [ + AC_TRY_COMPILE([$cf_utmp_includes], + [struct $cf_header x; + char *name = x.ut_user; /* utmpx.h must declare this */ + ], + [cf_cv_have_utmp=$cf_header + break + ])]) +done +]) + +if test $cf_cv_have_utmp != no ; then + AC_DEFINE(HAVE_UTMP) + test $cf_cv_have_utmp = utmpx && AC_DEFINE(UTMPX_FOR_UTMP) + CF_UTMP_UT_HOST + CF_UTMP_UT_SYSLEN + CF_UTMP_UT_NAME + CF_UTMP_UT_XSTATUS + CF_UTMP_UT_XTIME + CF_UTMP_UT_SESSION + CF_SYSV_UTMP +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTMP_GROUP version: 1 updated: 2005/10/06 20:29:29 +dnl ------------- +dnl Find the utmp/utmpx file and determine its group to allow setgid programs +dnl to manipulate it, e.g., when there is no intermediary. +AC_DEFUN([CF_UTMP_GROUP],[ +AC_REQUIRE([CF_UTMP]) +if test $cf_cv_have_utmp != no ; then +AC_CACHE_CHECK(for utmp/utmpx group,cf_cv_utmp_group,[ +for cf_utmp_path in /var/adm /var/run +do + for cf_utmp_file in utmpx utmp + do + if test -f $cf_utmp_path/$cf_utmp_file + then + cf_cv_utmp_group=root + + cf_option="-l -L" + + # Expect listing to have fields like this: + #-r--r--r-- 1 user group 34293 Jul 18 16:29 pathname + ls $cf_option $cf_utmp_path/$cf_utmp_file >conftest + read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest + if test -z "$cf_rest" ; then + cf_option="$cf_option -g" + ls $cf_option $cf_utmp_path/$cf_utmp_file >conftest + read cf_mode cf_links cf_usr cf_grp cf_size cf_date1 cf_date2 cf_date3 cf_rest <conftest + fi + rm -f conftest + + # If we have a pathname, and the date fields look right, assume we've + # captured the group as well. + if test -n "$cf_rest" ; then + cf_test=`echo "${cf_date2}${cf_date3}" | sed -e 's/[[0-9:]]//g'` + if test -z "$cf_test" ; then + cf_cv_utmp_group=$cf_grp; + fi + fi + break + fi + done + test -n "$cf_cv_utmp_group" && break +done +]) +else + AC_MSG_ERROR(cannot find utmp group) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTMP_UT_HOST version: 7 updated: 2007/03/13 19:17:11 +dnl --------------- +dnl Check if UTMP/UTMPX struct defines ut_host member +AC_DEFUN([CF_UTMP_UT_HOST], +[ +if test $cf_cv_have_utmp != no ; then +AC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_host is declared) +AC_CACHE_VAL(cf_cv_have_utmp_ut_host,[ + AC_TRY_COMPILE([ +#include <sys/types.h> +#include <${cf_cv_have_utmp}.h>], + [struct $cf_cv_have_utmp x; char *y = &x.ut_host[0]], + [cf_cv_have_utmp_ut_host=yes], + [cf_cv_have_utmp_ut_host=no]) + ]) +AC_MSG_RESULT($cf_cv_have_utmp_ut_host) +test $cf_cv_have_utmp_ut_host != no && AC_DEFINE(HAVE_UTMP_UT_HOST) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTMP_UT_NAME version: 4 updated: 2007/03/13 19:17:11 +dnl --------------- +dnl Check if UTMP/UTMPX struct defines ut_name member +AC_DEFUN([CF_UTMP_UT_NAME], +[ +if test $cf_cv_have_utmp != no ; then +AC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_name is declared,cf_cv_have_utmp_ut_name,[ + cf_cv_have_utmp_ut_name=no +cf_utmp_includes=" +#include <sys/types.h> +#include <${cf_cv_have_utmp}.h> +#define getutent getutxent +#ifdef USE_LASTLOG +#include <lastlog.h> /* may conflict with utmpx.h on Linux */ +#endif +" +for cf_header in ut_name ut_user ; do + AC_TRY_COMPILE([$cf_utmp_includes], + [struct $cf_cv_have_utmp x; + char *name = x.$cf_header; + ], + [cf_cv_have_utmp_ut_name=$cf_header + break]) +done +]) + +case $cf_cv_have_utmp_ut_name in #(vi +no) #(vi + AC_MSG_ERROR(Cannot find declaration for ut.ut_name) + ;; +ut_user) + AC_DEFINE(ut_name,ut_user) + ;; +esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTMP_UT_SESSION version: 5 updated: 2007/03/13 19:17:11 +dnl ------------------ +dnl Check if UTMP/UTMPX struct defines ut_session member +AC_DEFUN([CF_UTMP_UT_SESSION], +[ +if test $cf_cv_have_utmp != no ; then +AC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_session is declared, cf_cv_have_utmp_ut_session,[ + AC_TRY_COMPILE([ +#include <sys/types.h> +#include <${cf_cv_have_utmp}.h>], + [struct $cf_cv_have_utmp x; long y = x.ut_session], + [cf_cv_have_utmp_ut_session=yes], + [cf_cv_have_utmp_ut_session=no]) +]) +if test $cf_cv_have_utmp_ut_session != no ; then + AC_DEFINE(HAVE_UTMP_UT_SESSION) +fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTMP_UT_SYSLEN version: 1 updated: 2008/01/25 17:18:00 +dnl ----------------- +dnl Check if UTMP/UTMPX struct defines ut_syslen member +AC_DEFUN([CF_UTMP_UT_SYSLEN], +[ +if test $cf_cv_have_utmp != no ; then +AC_MSG_CHECKING(if ${cf_cv_have_utmp}.ut_syslen is declared) +AC_CACHE_VAL(cf_cv_have_utmp_ut_syslen,[ + AC_TRY_COMPILE([ +#include <sys/types.h> +#include <${cf_cv_have_utmp}.h>], + [struct $cf_cv_have_utmp x; int y = x.ut_syslen], + [cf_cv_have_utmp_ut_syslen=yes], + [cf_cv_have_utmp_ut_syslen=no]) + ]) +AC_MSG_RESULT($cf_cv_have_utmp_ut_syslen) +test $cf_cv_have_utmp_ut_syslen != no && AC_DEFINE(HAVE_UTMP_UT_SYSLEN) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTMP_UT_XSTATUS version: 3 updated: 2001/12/27 12:55:07 +dnl ------------------ +dnl Check for known variants on the UTMP/UTMPX struct's exit-status as reported +dnl by various people: +dnl +dnl ut_exit.__e_exit (HPUX 11 - David Ellement, also in glibc2) +dnl ut_exit.e_exit (SVR4) +dnl ut_exit.ut_e_exit (os390 - Greg Smith) +dnl ut_exit.ut_exit (Tru64 4.0f - Jeremie Petit, 4.0e - Tomas Vanhala) +dnl +dnl Note: utmp_xstatus is not a conventional compatibility definition in the +dnl system header files. +AC_DEFUN([CF_UTMP_UT_XSTATUS], +[ +if test $cf_cv_have_utmp != no ; then +AC_CACHE_CHECK(for exit-status in $cf_cv_have_utmp,cf_cv_have_utmp_ut_xstatus,[ +for cf_result in \ + ut_exit.__e_exit \ + ut_exit.e_exit \ + ut_exit.ut_e_exit \ + ut_exit.ut_exit +do +AC_TRY_COMPILE([ +#include <sys/types.h> +#include <${cf_cv_have_utmp}.h>], + [struct $cf_cv_have_utmp x; long y = x.$cf_result = 0], + [cf_cv_have_utmp_ut_xstatus=$cf_result + break], + [cf_cv_have_utmp_ut_xstatus=no]) +done +]) +if test $cf_cv_have_utmp_ut_xstatus != no ; then + AC_DEFINE(HAVE_UTMP_UT_XSTATUS) + AC_DEFINE_UNQUOTED(ut_xstatus,$cf_cv_have_utmp_ut_xstatus) +fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTMP_UT_XTIME version: 7 updated: 2007/03/13 19:17:11 +dnl ---------------- +dnl Check if UTMP/UTMPX struct defines ut_xtime member +AC_DEFUN([CF_UTMP_UT_XTIME], +[ +if test $cf_cv_have_utmp != no ; then +AC_CACHE_CHECK(if ${cf_cv_have_utmp}.ut_xtime is declared, cf_cv_have_utmp_ut_xtime,[ + AC_TRY_COMPILE([ +#include <sys/types.h> +#include <${cf_cv_have_utmp}.h>], + [struct $cf_cv_have_utmp x; long y = x.ut_xtime = 0], + [cf_cv_have_utmp_ut_xtime=yes], + [AC_TRY_COMPILE([ +#include <sys/types.h> +#include <${cf_cv_have_utmp}.h>], + [struct $cf_cv_have_utmp x; long y = x.ut_tv.tv_sec], + [cf_cv_have_utmp_ut_xtime=define], + [cf_cv_have_utmp_ut_xtime=no]) + ]) +]) +if test $cf_cv_have_utmp_ut_xtime != no ; then + AC_DEFINE(HAVE_UTMP_UT_XTIME) + if test $cf_cv_have_utmp_ut_xtime = define ; then + AC_DEFINE(ut_xtime,ut_tv.tv_sec) + fi +fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 +dnl ---------- +dnl Use AC_VERBOSE w/o the warnings +AC_DEFUN([CF_VERBOSE], +[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG +CF_MSG_LOG([$1]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_APP_CLASS version: 1 updated: 2011/07/08 04:54:40 +dnl ----------------- +dnl Handle configure option "--with-app-class", setting the $APP_CLASS +dnl variable, used for X resources. +dnl +dnl $1 = default value. +AC_DEFUN(CF_WITH_APP_CLASS,[ +AC_MSG_CHECKING(for X applications class) +AC_ARG_WITH(app-class, + [ --with-app-class=XXX override X applications class (default $1)], + [APP_CLASS=$withval], + [APP_CLASS=$1]) + +case x$APP_CLASS in #(vi +*[[/@,%]]*) #(vi + AC_MSG_WARN(X applications class cannot contain punctuation) + APP_CLASS=$1 + ;; +x[[A-Z]]*) #(vi + ;; +*) + AC_MSG_WARN([X applications class must start with capital, ignoring $APP_CLASS]) + APP_CLASS=$1 + ;; +esac + +AC_MSG_RESULT($APP_CLASS) + +AC_SUBST(APP_CLASS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_APP_DEFAULTS version: 3 updated: 2012/06/19 20:58:54 +dnl -------------------- +dnl Handle configure option "--with-app-defaults", setting these shell +dnl variables: +dnl +dnl $APPSDIR is the option value, used for installing app-defaults files. +dnl $no_appsdir is a "#" (comment) if "--without-app-defaults" is given. +dnl +dnl Most Linux's use this: +dnl /usr/share/X11/app-defaults +dnl Debian uses this: +dnl /etc/X11/app-defaults +dnl DragonFlyBSD ports uses this: +dnl /usr/pkg/lib/X11/app-defaults +dnl FreeBSD ports use these: +dnl /usr/local/lib/X11/app-defaults +dnl /usr/local/share/X11/app-defaults +dnl Mandriva has these: +dnl /usr/lib/X11/app-defaults +dnl /usr/lib64/X11/app-defaults +dnl NetBSD has these +dnl /usr/X11R7/lib/X11/app-defaults +dnl OpenSolaris uses +dnl 32-bit: +dnl /usr/X11/etc/X11/app-defaults +dnl /usr/X11/share/X11/app-defaults +dnl /usr/X11/lib/X11/app-defaults +dnl 64-bit: +dnl /usr/X11/etc/X11/app-defaults +dnl /usr/X11/share/X11/app-defaults (I mkdir'd this) +dnl /usr/X11/lib/amd64/X11/app-defaults +dnl Solaris10 uses (in this order): +dnl /usr/openwin/lib/X11/app-defaults +dnl /usr/X11/lib/X11/app-defaults +AC_DEFUN(CF_WITH_APP_DEFAULTS,[ +AC_MSG_CHECKING(for directory to install resource files) +AC_ARG_WITH(app-defaults, + [ --with-app-defaults=DIR directory in which to install resource files (EPREFIX/lib/X11/app-defaults)], + [APPSDIR=$withval], + [APPSDIR='${exec_prefix}/lib/X11/app-defaults']) + +if test "x[$]APPSDIR" = xauto +then + APPSDIR='${exec_prefix}/lib/X11/app-defaults' + for cf_path in \ + /usr/share/X11/app-defaults \ + /usr/X11/share/X11/app-defaults \ + /usr/X11/lib/X11/app-defaults \ + /usr/lib/X11/app-defaults \ + /etc/X11/app-defaults \ + /usr/pkg/lib/X11/app-defaults \ + /usr/X11R7/lib/X11/app-defaults \ + /usr/X11R6/lib/X11/app-defaults \ + /usr/X11R5/lib/X11/app-defaults \ + /usr/X11R4/lib/X11/app-defaults \ + /usr/local/lib/X11/app-defaults \ + /usr/local/share/X11/app-defaults \ + /usr/lib64/X11/app-defaults + do + if test -d "$cf_path" ; then + APPSDIR="$cf_path" + break + fi + done +else + cf_path=$APPSDIR + CF_PATH_SYNTAX(cf_path) +fi + +AC_MSG_RESULT($APPSDIR) +AC_SUBST(APPSDIR) + +no_appsdir= +test "$APPSDIR" = no && no_appsdir="#" +AC_SUBST(no_appsdir) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_DESKTOP_CATEGORY version: 2 updated: 2011/07/02 10:22:07 +dnl ------------------------ +dnl Taking into account the absence of standardization of desktop categories +dnl take a look to see whether other applications on the current system are +dnl assigned any/all of a set of suggested categories. +dnl +dnl $1 = program name +dnl $2 = case-pattern to match comparable desktop files to obtain category +dnl This pattern may contain wildcards. +dnl $3 = suggested categories, also a case-pattern but without wildcards, +dnl since it doubles as a default value. +dnl +dnl The macro tells the configure script to substitute the $DESKTOP_CATEGORY +dnl value. +AC_DEFUN([CF_WITH_DESKTOP_CATEGORY],[ +AC_REQUIRE([CF_DISABLE_DESKTOP]) + +if test -z "$desktop_utils" +then + AC_MSG_CHECKING(for requested desktop-category) + AC_ARG_WITH(desktop-category, + [ --with-desktop-category=XXX one or more desktop catgories or auto], + [cf_desktop_want=$withval], + [cf_desktop_want=auto]) + AC_MSG_RESULT($cf_desktop_want) + + if test "$cf_desktop_want" = auto + then + rm -rf conftest* + cf_desktop_also= + for cf_desktop_dir in \ + /usr/share/app-install \ + /usr/share/applications + do + if test -d $cf_desktop_dir + then + find $cf_desktop_dir -name '*.desktop' | \ + while true + do + read cf_desktop_path + test -z "$cf_desktop_path" && break + cf_desktop_name=`basename $cf_desktop_path .desktop` + case $cf_desktop_name in #(vi + $1|*-$1|$2) + CF_VERBOSE(inspect $cf_desktop_path) + egrep '^Categories=' $cf_desktop_path | \ + tr ';' '\n' | \ + sed -e 's%^.*=%%' -e '/^$/d' >>conftest.1 + ;; + esac + done + fi + done + if test -s conftest.1 + then + cf_desktop_last= + sort conftest.1 | \ + while true + do + read cf_desktop_this + test -z "$cf_desktop_this" && break + case $cf_desktop_this in #(vi + Qt*|GTK*|KDE*|GNOME*|*XFCE*|*Xfce*) #(vi + ;; + $3) + test "x$cf_desktop_last" != "x$cf_desktop_this" && echo $cf_desktop_this >>conftest.2 + ;; + esac + cf_desktop_last=$cf_desktop_this + done + cf_desktop_want=`cat conftest.2 | tr '\n' ';'` + fi + fi + DESKTOP_CATEGORY=`echo "$cf_desktop_want" | sed -e 's/[[ ,]]/;/g'` + CF_VERBOSE(resulting category=$DESKTOP_CATEGORY) + AC_SUBST(DESKTOP_CATEGORY) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ICONDIR version: 4 updated: 2012/06/21 21:03:13 +dnl --------------- +dnl Handle configure option "--with-icondir", setting these shell variables: +dnl +dnl $ICONDIR is the option value, used for installing icon files. +dnl $no_icondir is a "#" (comment) if "--without-icondir" is given. +AC_DEFUN([CF_WITH_ICONDIR],[ +AC_MSG_CHECKING(for directory to install icons) +AC_ARG_WITH(icondir, + [ --with-icondir=DIR directory in which to install icons for desktop], + [ICONDIR=$withval], + [test -z "$ICONDIR" && ICONDIR=no]) + +if test "x[$]ICONDIR" = xauto +then + ICONDIR='${datadir}/icons' + for cf_path in \ + /usr/share/icons \ + /usr/X11R6/share/icons + do + if test -d "$cf_path" ; then + ICONDIR="$cf_path" + break + fi + done +else + cf_path=$ICONDIR + CF_PATH_SYNTAX(cf_path) +fi +AC_MSG_RESULT($ICONDIR) +AC_SUBST(ICONDIR) + +no_icondir= +test "$ICONDIR" = no && no_icondir="#" +AC_SUBST(no_icondir) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ICON_THEME version: 5 updated: 2012/06/26 05:55:35 +dnl ------------------ +dnl If asked, check for prerequisites and setup symbols to permit installing +dnl one or more application icons in the Red Hat icon-theme directory +dnl hierarchy. +dnl +dnl If the prerequisites are missing, give a warning and revert to the long- +dnl standing pixmaps directory. +dnl +dnl Parameters: +dnl +dnl $1 = application icon. This can be a list, and is not optional. +dnl $2 = default theme (defaults to hicolor) +dnl $3 = formats (defaults to list [.svg .png .xpm]) +dnl $4 = alternate icon if no theme is used (defaults to $1). +dnl +dnl Result: +dnl ICON_NAME = basename of first item in $1 +dnl ICON_LIST = reprocessed $1 +dnl ICON_THEME = reprocessed $2 +dnl ICON_FORMAT = reprocessed $3 +AC_DEFUN([CF_WITH_ICON_THEME], +[ +ifelse([$1],,[ + AC_MSG_ERROR([macro [CF_WITH_ICON_THEME] requires application-icon name]) +],[ + +CF_WITH_PIXMAPDIR +CF_WITH_ICONDIR + +AC_MSG_CHECKING(if icon theme should be used) +AC_ARG_WITH(icon-theme, + [ --with-icon-theme=XXX install icons into desktop theme (hicolor)], + [ICON_THEME=$withval], + [ICON_THEME=no]) + +case "x$ICON_THEME" in #(vi +xno) #(vi + ;; +x|xyes) + ICON_THEME=ifelse([$2],,hicolor,$2) + ;; +esac +AC_MSG_RESULT($ICON_THEME) + +if test "x$ICON_THEME" = xno +then + if test "x$ICONDIR" != xno + then + AC_MSG_WARN(ignoring icondir without theme) + no_icondir="#" + fi +else + if test "x$ICONDIR" = xno + then + AC_MSG_ERROR(icondir must be set for icon theme) + fi +fi + +: ${ICON_FORMAT:=ifelse([$3],,[.svg .png .xpm],[$3])} + +ICON_NAME= +ICON_LIST= + +ifelse([$4],,[cf_icon_list=$1],[ +if test "x$ICON_THEME" != xno +then + cf_icon_list=$1 +else + cf_icon_list=$4 +fi +]) + +AC_MSG_CHECKING([for icon(s) to install]) +for cf_name in $cf_icon_list +do + for cf_suffix in $ICON_FORMAT + do + cf_icon="${cf_name}${cf_suffix}" + cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` + if test ! -f "${cf_left}" + then + if test "x$srcdir" != "x." + then + cf_icon="${srcdir}/${cf_left}" + cf_left=`echo "$cf_icon" | sed -e 's/:.*//'` + if test ! -f "${cf_left}" + then + continue + fi + else + continue + fi + fi + if test "x$ICON_THEME" != xno + then + cf_base=`basename $cf_left` + case "x${cf_icon}" in #(vi + *:*) #(vi + # user-defined mapping + ;; + *_[[0-9]][[0-9]]*x[[0-9]][[0-9]]*.*) #(vi + cf_size=`echo "$cf_left"|sed -e 's/^.*_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\..*$/\1/'` + cf_left=`echo "$cf_left"|sed -e 's/^\(.*\)_\([[0-9]][[0-9]]*x[[0-9]][[0-9]]*\)\(\..*\)$/\1\3/'` + cf_icon="${cf_icon}:$cf_size/apps/$cf_base" + ;; + *.png) #(vi + cf_size=`file "$cf_left"|sed -e 's/^[[^:]]*://' -e 's/^.*[[^0-9]]\([[0-9]][[0-9]]* x [[0-9]][[0-9]]*\)[[^0-9]].*$/\1/' -e 's/ //g'` + if test -z "$cf_size" + then + AC_MSG_WARN(cannot determine size of $cf_left) + continue + fi + cf_icon="${cf_icon}:$cf_size/apps/$cf_base" + ;; + *.svg) #(vi + cf_icon="${cf_icon}:scalable/apps/`basename $cf_icon`" + ;; + *.xpm) + AC_MSG_WARN(ignored XPM file in icon theme) + continue + ;; + esac + fi + test -n "$ICON_LIST" && ICON_LIST="$ICON_LIST " + ICON_LIST="$ICON_LIST${cf_icon}" + if test -z "$ICON_NAME" + then + ICON_NAME=`basename $cf_icon | sed -e 's/[[.:]].*//'` + fi + done +done +AC_MSG_RESULT($ICON_LIST) +if test -z "$ICON_LIST" +then + AC_MSG_ERROR(no icons found) +fi +]) + +AC_MSG_CHECKING(for icon name) +AC_MSG_RESULT($ICON_NAME) + +AC_SUBST(ICON_FORMAT) +AC_SUBST(ICON_THEME) +AC_SUBST(ICON_LIST) +AC_SUBST(ICON_NAME) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_IMAKE_CFLAGS version: 9 updated: 2010/05/26 05:38:42 +dnl -------------------- +dnl xterm and similar programs build more readily when propped up with imake's +dnl hand-tuned definitions. If we do not use imake, provide fallbacks for the +dnl most common definitions that we're not likely to do by autoconf tests. +AC_DEFUN([CF_WITH_IMAKE_CFLAGS],[ +AC_REQUIRE([CF_ENABLE_NARROWPROTO]) + +AC_MSG_CHECKING(if we should use imake to help) +CF_ARG_DISABLE(imake, + [ --disable-imake disable use of imake for definitions], + [enable_imake=no], + [enable_imake=yes]) +AC_MSG_RESULT($enable_imake) + +if test "$enable_imake" = yes ; then + CF_IMAKE_CFLAGS(ifelse([$1],,,[$1])) +fi + +if test -n "$IMAKE" && test -n "$IMAKE_CFLAGS" ; then + CF_ADD_CFLAGS($IMAKE_CFLAGS) +else + IMAKE_CFLAGS= + IMAKE_LOADFLAGS= + CF_VERBOSE(make fallback definitions) + + # We prefer config.guess' values when we can get them, to avoid + # inconsistent results with uname (AIX for instance). However, + # config.guess is not always consistent either. + case $host_os in + *[[0-9]].[[0-9]]*) + UNAME_RELEASE="$host_os" + ;; + *) + UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown + ;; + esac + + case .$UNAME_RELEASE in + *[[0-9]].[[0-9]]*) + OSMAJORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/\..*//'` + OSMINORVERSION=`echo "$UNAME_RELEASE" |sed -e 's/^[[^0-9]]*//' -e 's/^[[^.]]*\.//' -e 's/\..*//' -e 's/[[^0-9]].*//' ` + test -z "$OSMAJORVERSION" && OSMAJORVERSION=1 + test -z "$OSMINORVERSION" && OSMINORVERSION=0 + IMAKE_CFLAGS="-DOSMAJORVERSION=$OSMAJORVERSION -DOSMINORVERSION=$OSMINORVERSION $IMAKE_CFLAGS" + ;; + esac + + # FUNCPROTO is standard with X11R6, but XFree86 drops it, leaving some + # fallback/fragments for NeedPrototypes, etc. + IMAKE_CFLAGS="-DFUNCPROTO=15 $IMAKE_CFLAGS" + + # If this is not set properly, Xaw's scrollbars will not work + if test "$enable_narrowproto" = yes ; then + IMAKE_CFLAGS="-DNARROWPROTO=1 $IMAKE_CFLAGS" + fi + + # Other special definitions: + case $host_os in + aix*) + # imake on AIX 5.1 defines AIXV3. really. + IMAKE_CFLAGS="-DAIXV3 -DAIXV4 $IMAKE_CFLAGS" + ;; + irix[[56]].*) #(vi + # these are needed to make SIGWINCH work in xterm + IMAKE_CFLAGS="-DSYSV -DSVR4 $IMAKE_CFLAGS" + ;; + esac + + CF_ADD_CFLAGS($IMAKE_CFLAGS) + + AC_SUBST(IMAKE_CFLAGS) + AC_SUBST(IMAKE_LOADFLAGS) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PATH version: 10 updated: 2010/10/23 15:44:18 +dnl ------------ +dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just +dnl defaulting to yes/no. +dnl +dnl $1 = option name +dnl $2 = help-text +dnl $3 = environment variable to set +dnl $4 = default value, shown in the help-message, must be a constant +dnl $5 = default value, if it's an expression & cannot be in the help-message +dnl +AC_DEFUN([CF_WITH_PATH], +[AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),, +ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl +if ifelse([$5],,true,[test -n "$5"]) ; then +CF_PATH_SYNTAX(withval) +fi +$3="$withval" +AC_SUBST($3)dnl +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PCRE version: 8 updated: 2010/06/05 11:30:21 +dnl ------------ +dnl Add PCRE (Perl-compatible regular expressions) to the build if it is +dnl available and the user requests it. Assume the application will otherwise +dnl use the POSIX interface. +dnl +dnl TODO allow $withval to specify package location +AC_DEFUN([CF_WITH_PCRE], +[ +AC_REQUIRE([CF_PKG_CONFIG]) + +AC_MSG_CHECKING(if you want to use PCRE for regular-expressions) +AC_ARG_WITH(pcre, + [ --with-pcre use PCRE for regular-expressions]) +test -z "$with_pcre" && with_pcre=no +AC_MSG_RESULT($with_pcre) + +if test "$with_pcre" != no ; then + CF_TRY_PKG_CONFIG(libpcre,,[ + AC_CHECK_LIB(pcre,pcre_compile,, + AC_MSG_ERROR(Cannot find PCRE library))]) + + AC_DEFINE(HAVE_LIB_PCRE) + + case $LIBS in #(vi + *pcreposix*) #(vi + ;; + *) + AC_CHECK_LIB(pcreposix,pcreposix_regcomp, + [AC_DEFINE(HAVE_PCREPOSIX_H) + CF_ADD_LIB(pcreposix)], + [AC_CHECK_LIB(pcreposix,regcomp,[ + AC_DEFINE(HAVE_PCREPOSIX_H) + CF_ADD_LIB(pcreposix)], + AC_MSG_ERROR(Cannot find PCRE POSIX library)])) + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PIXMAPDIR version: 2 updated: 2012/06/21 21:03:13 +dnl ----------------- +dnl Handle configure option "--with-pixmapdir", setting these shell variables: +dnl +dnl $PIXMAPDIR is the option value, used for installing pixmap files. +dnl $no_pixmapdir is a "#" (comment) if "--without-pixmapdir" is given. +AC_DEFUN([CF_WITH_PIXMAPDIR],[ +AC_MSG_CHECKING(for directory to install pixmaps) +AC_ARG_WITH(pixmapdir, + [ --with-pixmapdir=DIR directory in which to install pixmaps (DATADIR/pixmaps)], + [PIXMAPDIR=$withval], + [test -z "$PIXMAPDIR" && PIXMAPDIR='${datadir}/pixmaps']) + +if test "x[$]PIXMAPDIR" = xauto +then + PIXMAPDIR='${datadir}/pixmaps' + for cf_path in \ + /usr/share/pixmaps \ + /usr/X11R6/share/pixmaps + do + if test -d "$cf_path" ; then + PIXMAPDIR="$cf_path" + break + fi + done +else + cf_path=$PIXMAPDIR + CF_PATH_SYNTAX(cf_path) +fi +AC_MSG_RESULT($PIXMAPDIR) +AC_SUBST(PIXMAPDIR) + +no_pixmapdir= +test "$PIXMAPDIR" = no && no_pixmapdir="#" +AC_SUBST(no_pixmapdir) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_XBOOL_RESULT version: 1 updated: 2012/06/04 20:23:25 +dnl --------------- +dnl Translate an autoconf boolean yes/no into X11's booleans, e.g., True/False. +dnl Allow for more than two values, e.g., "maybe", still using the same leading +dnl capital convention. +dnl +dnl $1 = symbol to define +dnl $2 = symbol holding value +define([CF_XBOOL_RESULT],[ +AC_MSG_RESULT([$]$2) +case [$]$2 in #(vi +yes) #(vi + $2=true + ;; +no) #(vi + $2=false + ;; +esac +cf_xbool1=`echo "[$]$2"|sed -e 's/^\(.\).*/\1/'` +CF_UPPER(cf_xbool1,$cf_xbool1) +cf_xbool2=`echo "[$]$2"|sed -e 's/^.//'` +$2=${cf_xbool1}${cf_xbool2} +AC_DEFINE_UNQUOTED($1,[$]$2) +AC_SUBST($2) +]) +dnl --------------------------------------------------------------------------- +dnl CF_XKB_BELL_EXT version: 3 updated: 2009/02/13 16:00:39 +dnl --------------- +dnl Check for XKB bell extension +AC_DEFUN([CF_XKB_BELL_EXT],[ +AC_CACHE_CHECK(for XKB Bell extension, cf_cv_xkb_bell_ext,[ +AC_TRY_LINK([ +#include <X11/Intrinsic.h> +#include <X11/XKBlib.h> /* has the prototype */ +#include <X11/extensions/XKBbells.h> /* has the XkbBI_xxx definitions */ +],[ + int x = (XkbBI_Info |XkbBI_MinorError |XkbBI_MajorError |XkbBI_TerminalBell |XkbBI_MarginBell); + Atom y; + XkbBell((Display *)0, (Widget)0, 0, y); +],[cf_cv_xkb_bell_ext=yes],[cf_cv_xkb_bell_ext=no]) +]) +test "$cf_cv_xkb_bell_ext" = yes && AC_DEFINE(HAVE_XKB_BELL_EXT) +]) +dnl --------------------------------------------------------------------------- +dnl CF_XOPEN_SOURCE version: 42 updated: 2012/01/07 08:26:49 +dnl --------------- +dnl Try to get _XOPEN_SOURCE defined properly that we can use POSIX functions, +dnl or adapt to the vendor's definitions to get equivalent functionality, +dnl without losing the common non-POSIX features. +dnl +dnl Parameters: +dnl $1 is the nominal value for _XOPEN_SOURCE +dnl $2 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_XOPEN_SOURCE],[ + +cf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) +cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) +cf_xopen_source= + +case $host_os in #(vi +aix[[4-7]]*) #(vi + cf_xopen_source="-D_ALL_SOURCE" + ;; +cygwin) #(vi + cf_XOPEN_SOURCE=600 + ;; +darwin[[0-8]].*) #(vi + cf_xopen_source="-D_APPLE_C_SOURCE" + ;; +darwin*) #(vi + cf_xopen_source="-D_DARWIN_C_SOURCE" + cf_XOPEN_SOURCE= + ;; +freebsd*|dragonfly*) #(vi + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + ;; +hpux11*) #(vi + cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" + ;; +hpux*) #(vi + cf_xopen_source="-D_HPUX_SOURCE" + ;; +irix[[56]].*) #(vi + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +linux*|gnu*|mint*|k*bsd*-gnu) #(vi + CF_GNU_SOURCE + ;; +mirbsd*) #(vi + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types + cf_XOPEN_SOURCE= + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +netbsd*) #(vi + cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +openbsd[[4-9]]*) #(vi + # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=600 + ;; +openbsd*) #(vi + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +osf[[45]]*) #(vi + cf_xopen_source="-D_OSF_SOURCE" + ;; +nto-qnx*) #(vi + cf_xopen_source="-D_QNX_SOURCE" + ;; +sco*) #(vi + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +solaris2.*) #(vi + cf_xopen_source="-D__EXTENSIONS__" + ;; +*) + CF_TRY_XOPEN_SOURCE + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +esac + +if test -n "$cf_xopen_source" ; then + CF_ADD_CFLAGS($cf_xopen_source) +fi + +dnl In anything but the default case, we may have system-specific setting +dnl which is still not guaranteed to provide all of the entrypoints that +dnl _XOPEN_SOURCE would yield. +if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then + AC_MSG_CHECKING(if _XOPEN_SOURCE really is set) + AC_TRY_COMPILE([#include <stdlib.h>],[ +#ifndef _XOPEN_SOURCE +make an error +#endif], + [cf_XOPEN_SOURCE_set=yes], + [cf_XOPEN_SOURCE_set=no]) + AC_MSG_RESULT($cf_XOPEN_SOURCE_set) + if test $cf_XOPEN_SOURCE_set = yes + then + AC_TRY_COMPILE([#include <stdlib.h>],[ +#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE +make an error +#endif], + [cf_XOPEN_SOURCE_set_ok=yes], + [cf_XOPEN_SOURCE_set_ok=no]) + if test $cf_XOPEN_SOURCE_set_ok = no + then + AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) + fi + else + CF_TRY_XOPEN_SOURCE + fi +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_ATHENA version: 20 updated: 2010/11/09 05:18:02 +dnl ----------- +dnl Check for Xaw (Athena) libraries +dnl +dnl Sets $cf_x_athena according to the flavor of Xaw which is used. +AC_DEFUN([CF_X_ATHENA], +[ +cf_x_athena=${cf_x_athena:-Xaw} + +AC_MSG_CHECKING(if you want to link with Xaw 3d library) +withval= +AC_ARG_WITH(Xaw3d, + [ --with-Xaw3d link with Xaw 3d library]) +if test "$withval" = yes ; then + cf_x_athena=Xaw3d + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(if you want to link with neXT Athena library) +withval= +AC_ARG_WITH(neXtaw, + [ --with-neXtaw link with neXT Athena library]) +if test "$withval" = yes ; then + cf_x_athena=neXtaw + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(if you want to link with Athena-Plus library) +withval= +AC_ARG_WITH(XawPlus, + [ --with-XawPlus link with Athena-Plus library]) +if test "$withval" = yes ; then + cf_x_athena=XawPlus + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +cf_x_athena_lib="" + +if test "$PKG_CONFIG" != none ; then + cf_athena_list= + test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" + for cf_athena_pkg in \ + $cf_athena_list \ + ${cf_x_athena} \ + ${cf_x_athena}-devel \ + lib${cf_x_athena} \ + lib${cf_x_athena}-devel + do + CF_TRY_PKG_CONFIG($cf_athena_pkg,[ + cf_x_athena_lib="$cf_pkgconfig_libs" + CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) + AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) + +AC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[ +AC_TRY_LINK([ +#include <X11/Xmu/CharSet.h> +],[ +int check = XmuCompareISOLatin1("big", "small") +],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])]) + + if test "$cf_cv_xaw_compat" = no + then + # workaround for broken ".pc" files... + case "$cf_x_athena_lib" in #(vi + *-lXmu*) #(vi + ;; + *) + CF_VERBOSE(work around broken package) + CF_TRY_PKG_CONFIG(xmu,,[CF_ADD_LIB_AFTER(-lXt,-lXmu)]) + ;; + esac + fi + + break]) + done +fi + +if test -z "$cf_x_athena_lib" ; then + CF_X_EXT + CF_X_TOOLKIT + CF_X_ATHENA_CPPFLAGS($cf_x_athena) + CF_X_ATHENA_LIBS($cf_x_athena) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_X_ATHENA_CPPFLAGS version: 5 updated: 2010/05/26 17:35:30 +dnl -------------------- +dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of +dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. +AC_DEFUN([CF_X_ATHENA_CPPFLAGS], +[ +cf_x_athena_root=ifelse([$1],,Xaw,[$1]) +cf_x_athena_inc="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + if test -z "$cf_x_athena_inc" ; then + cf_save="$CPPFLAGS" + cf_test=X11/$cf_x_athena_root/SimpleMenu.h + if test $cf_path != default ; then + CPPFLAGS="$cf_save -I$cf_path/include" + AC_MSG_CHECKING(for $cf_test in $cf_path) + else + AC_MSG_CHECKING(for $cf_test) + fi + AC_TRY_COMPILE([ +#include <X11/Intrinsic.h> +#include <$cf_test>],[], + [cf_result=yes], + [cf_result=no]) + AC_MSG_RESULT($cf_result) + if test "$cf_result" = yes ; then + cf_x_athena_inc=$cf_path + break + else + CPPFLAGS="$cf_save" + fi + fi +done + +if test -z "$cf_x_athena_inc" ; then + AC_MSG_WARN( +[Unable to successfully find Athena header files with test program]) +elif test "$cf_x_athena_inc" != default ; then + CPPFLAGS="$CPPFLAGS -I$cf_x_athena_inc" +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_ATHENA_LIBS version: 12 updated: 2011/07/17 19:55:02 +dnl ---------------- +dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of +dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. +AC_DEFUN([CF_X_ATHENA_LIBS], +[AC_REQUIRE([CF_X_TOOLKIT]) +cf_x_athena_root=ifelse([$1],,Xaw,[$1]) +cf_x_athena_lib="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + for cf_lib in \ + ${cf_x_athena_root} \ + ${cf_x_athena_root}7 \ + ${cf_x_athena_root}6 + do + for cf_libs in \ + "-l$cf_lib -lXmu" \ + "-l$cf_lib -lXpm -lXmu" \ + "-l${cf_lib}_s -lXmu_s" + do + if test -z "$cf_x_athena_lib" ; then + cf_save="$LIBS" + cf_test=XawSimpleMenuAddGlobalActions + if test $cf_path != default ; then + CF_ADD_LIBS(-L$cf_path/lib $cf_libs) + AC_MSG_CHECKING(for $cf_libs in $cf_path) + else + CF_ADD_LIBS($cf_libs) + AC_MSG_CHECKING(for $cf_test in $cf_libs) + fi + AC_TRY_LINK([ +#include <X11/Intrinsic.h> +#include <X11/$cf_x_athena_root/SimpleMenu.h> +],[ +$cf_test((XtAppContext) 0)], + [cf_result=yes], + [cf_result=no]) + AC_MSG_RESULT($cf_result) + if test "$cf_result" = yes ; then + cf_x_athena_lib="$cf_libs" + break + fi + LIBS="$cf_save" + fi + done # cf_libs + test -n "$cf_x_athena_lib" && break + done # cf_lib +done + +if test -z "$cf_x_athena_lib" ; then + AC_MSG_ERROR( +[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program]) +fi + +CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) +AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05 +dnl -------- +AC_DEFUN([CF_X_EXT],[ +CF_TRY_PKG_CONFIG(Xext,,[ + AC_CHECK_LIB(Xext,XextCreateExtension, + [CF_ADD_LIB(Xext)])]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_X_FONTCONFIG version: 4 updated: 2011/07/04 10:01:31 +dnl --------------- +dnl Check for fontconfig library, a dependency of the X FreeType library. +AC_DEFUN([CF_X_FONTCONFIG], +[ +AC_REQUIRE([CF_X_FREETYPE]) + +if test "$cf_cv_found_freetype" = yes ; then +AC_CACHE_CHECK(for usable Xft/fontconfig package,cf_cv_xft_compat,[ +AC_TRY_LINK([ +#include <X11/Xft/Xft.h> +],[ + XftPattern *pat; + XftPatternBuild(pat, + XFT_FAMILY, XftTypeString, "mono", + (void *) 0); +],[cf_cv_xft_compat=yes],[cf_cv_xft_compat=no]) +]) + +if test "$cf_cv_xft_compat" = no +then + # workaround for broken ".pc" files used for Xft. + case "$cf_cv_x_freetype_libs" in #(vi + *-lfontconfig*) #(vi + ;; + *) + CF_VERBOSE(work around broken package) + CF_TRY_PKG_CONFIG(fontconfig,,[CF_ADD_LIB_AFTER(-lXft,-lfontconfig)]) + ;; + esac +fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_X_FREETYPE version: 25 updated: 2012/06/11 17:37:05 +dnl ------------- +dnl Check for X FreeType headers and libraries (XFree86 4.x, etc). +dnl +dnl First check for the appropriate config program, since the developers for +dnl these libraries change their configuration (and config program) more or +dnl less randomly. If we cannot find the config program, do not bother trying +dnl to guess the latest variation of include/lib directories. +dnl +dnl If either or both of these configure-script options are not given, rely on +dnl the output of the config program to provide the cflags/libs options: +dnl --with-freetype-cflags +dnl --with-freetype-libs +AC_DEFUN([CF_X_FREETYPE], +[ +AC_REQUIRE([CF_PKG_CONFIG]) + +cf_cv_x_freetype_incs=no +cf_cv_x_freetype_libs=no +cf_extra_freetype_libs= +FREETYPE_CONFIG=none +FREETYPE_PARAMS= + +AC_MSG_CHECKING(for FreeType configuration script) +AC_ARG_WITH(freetype-config, + [ --with-freetype-config configure script to use for FreeType], + [cf_cv_x_freetype_cfgs="$withval"], + [cf_cv_x_freetype_cfgs=auto]) +test -z $cf_cv_x_freetype_cfgs && cf_cv_x_freetype_cfgs=auto +test $cf_cv_x_freetype_cfgs = no && cf_cv_x_freetype_cfgs=none +AC_MSG_RESULT($cf_cv_x_freetype_cfgs) + +case $cf_cv_x_freetype_cfgs in +none) #(vi + AC_MSG_CHECKING(if you specified -D/-I options for FreeType) + AC_ARG_WITH(freetype-cflags, + [ --with-freetype-cflags -D/-I options for compiling with FreeType], + [cf_cv_x_freetype_incs="$with_freetype_cflags"], + [cf_cv_x_freetype_incs=no]) + AC_MSG_RESULT($cf_cv_x_freetype_incs) + + AC_MSG_CHECKING(if you specified -L/-l options for FreeType) + AC_ARG_WITH(freetype-libs, + [ --with-freetype-libs -L/-l options to link FreeType], + [cf_cv_x_freetype_libs="$with_freetype_libs"], + [cf_cv_x_freetype_libs=no]) + AC_MSG_RESULT($cf_cv_x_freetype_libs) + ;; +auto) #(vi + if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then + FREETYPE_CONFIG=$PKG_CONFIG + FREETYPE_PARAMS=xft + else + AC_PATH_PROG(FREETYPE_CONFIG, freetype-config, none) + if test "$FREETYPE_CONFIG" != none; then + FREETYPE_CONFIG=$FREETYPE_CONFIG + cf_extra_freetype_libs="-lXft" + else + AC_PATH_PROG(FREETYPE_OLD_CONFIG, xft-config, none) + if test "$FREETYPE_OLD_CONFIG" != none; then + FREETYPE_CONFIG=$FREETYPE_OLD_CONFIG + fi + fi + fi + ;; +pkg*) #(vi + if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xft; then + FREETYPE_CONFIG=$cf_cv_x_freetype_cfgs + FREETYPE_PARAMS=xft + else + AC_MSG_WARN(cannot find pkg-config for Xft) + fi + ;; +*) #(vi + AC_PATH_PROG(FREETYPE_XFT_CONFIG, $cf_cv_x_freetype_cfgs, none) + if test "$FREETYPE_XFT_CONFIG" != none; then + FREETYPE_CONFIG=$FREETYPE_XFT_CONFIG + else + AC_MSG_WARN(cannot find config script for Xft) + fi + ;; +esac + +if test "$FREETYPE_CONFIG" != none ; then + AC_MSG_CHECKING(for FreeType config) + AC_MSG_RESULT($FREETYPE_CONFIG $FREETYPE_PARAMS) + + if test "$cf_cv_x_freetype_incs" = no ; then + AC_MSG_CHECKING(for $FREETYPE_CONFIG cflags) + cf_cv_x_freetype_incs="`$FREETYPE_CONFIG $FREETYPE_PARAMS --cflags 2>/dev/null`" + AC_MSG_RESULT($cf_cv_x_freetype_incs) + fi + + if test "$cf_cv_x_freetype_libs" = no ; then + AC_MSG_CHECKING(for $FREETYPE_CONFIG libs) + cf_cv_x_freetype_libs="$cf_extra_freetype_libs `$FREETYPE_CONFIG $FREETYPE_PARAMS --libs 2>/dev/null`" + AC_MSG_RESULT($cf_cv_x_freetype_libs) + fi +fi + +if test "$cf_cv_x_freetype_incs" = no ; then + cf_cv_x_freetype_incs= +fi + +if test "$cf_cv_x_freetype_libs" = no ; then + cf_cv_x_freetype_libs=-lXft +fi + +AC_MSG_CHECKING(if we can link with FreeType libraries) + +cf_save_LIBS="$LIBS" +cf_save_INCS="$CPPFLAGS" + +CF_ADD_LIBS($cf_cv_x_freetype_libs) +CPPFLAGS="$CPPFLAGS $cf_cv_x_freetype_incs" + +AC_TRY_LINK([ +#include <X11/Xlib.h> +#include <X11/extensions/Xrender.h> +#include <X11/Xft/Xft.h>],[ + XftPattern *pat = XftNameParse ("name");], + [cf_cv_found_freetype=yes], + [cf_cv_found_freetype=no]) +AC_MSG_RESULT($cf_cv_found_freetype) + +LIBS="$cf_save_LIBS" +CPPFLAGS="$cf_save_INCS" + +if test "$cf_cv_found_freetype" = yes ; then + CF_ADD_LIBS($cf_cv_x_freetype_libs) + CF_ADD_CFLAGS($cf_cv_x_freetype_incs) + AC_DEFINE(XRENDERFONT) + +AC_CHECK_FUNCS( \ + XftDrawCharSpec \ + XftDrawSetClip \ + XftDrawSetClipRectangles \ +) + +else + AC_MSG_WARN(No libraries found for FreeType) + CPPFLAGS=`echo "$CPPFLAGS" | sed -e s/-DXRENDERFONT//` +fi + +# FIXME: revisit this if needed +AC_SUBST(HAVE_TYPE_FCCHAR32) +AC_SUBST(HAVE_TYPE_XFTCHARSPEC) +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_TOOLKIT version: 20 updated: 2010/11/19 05:43:04 +dnl ------------ +dnl Check for X Toolkit libraries +dnl +AC_DEFUN([CF_X_TOOLKIT], +[ +AC_REQUIRE([AC_PATH_XTRA]) +AC_REQUIRE([CF_CHECK_CACHE]) + +cf_have_X_LIBS=no + +CF_TRY_PKG_CONFIG(xt,[ + + case "x$LIBS" in #(vi + *-lX11*) #(vi + ;; + *) +# we have an "xt" package, but it may omit Xt's dependency on X11 +AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[ +AC_TRY_LINK([ +#include <X11/Xlib.h> +],[ + int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); + int rc2 = XClearWindow((Display*) 0, (Window) 0); + int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); + int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); +],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])]) + if test "$cf_cv_xt_x11_compat" = no + then + CF_VERBOSE(work around broken X11 dependency) + # 2010/11/19 - good enough until a working Xt on Xcb is delivered. + CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)]) + fi + ;; + esac + +AC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[ +AC_TRY_LINK([ +#include <X11/Shell.h> +],[int num = IceConnectionNumber(0) +],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])]) + + if test "$cf_cv_xt_ice_compat" = no + then + # workaround for broken ".pc" files used for X Toolkit. + case "x$X_PRE_LIBS" in #(vi + *-lICE*) + case "x$LIBS" in #(vi + *-lICE*) #(vi + ;; + *) + CF_VERBOSE(work around broken ICE dependency) + CF_TRY_PKG_CONFIG(ice, + [CF_TRY_PKG_CONFIG(sm)], + [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)]) + ;; + esac + ;; + esac + fi + + cf_have_X_LIBS=yes +],[ + + LDFLAGS="$X_LIBS $LDFLAGS" + CF_CHECK_CFLAGS($X_CFLAGS) + + AC_CHECK_FUNC(XOpenDisplay,,[ + AC_CHECK_LIB(X11,XOpenDisplay, + [CF_ADD_LIB(X11)],, + [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])]) + + AC_CHECK_FUNC(XtAppInitialize,,[ + AC_CHECK_LIB(Xt, XtAppInitialize, + [AC_DEFINE(HAVE_LIBXT) + cf_have_X_LIBS=Xt + LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS"],, + [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])]) +]) + +if test $cf_have_X_LIBS = no ; then + AC_MSG_WARN( +[Unable to successfully link X Toolkit library (-lXt) with +test program. You will have to check and add the proper libraries by hand +to makefile.]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF__GRANTPT_BODY version: 4 updated: 2012/05/07 19:39:45 +dnl ---------------- +dnl Body for workability check of grantpt. +define([CF__GRANTPT_BODY],[ + int code = 0; + int rc; + int pty; + int tty; + char *slave; + struct termios tio; + + signal(SIGALRM, my_timeout); + + if (alarm(2) == 9) + failed(9); + else if ((pty = posix_openpt(O_RDWR)) < 0) + failed(1); + else if ((rc = grantpt(pty)) < 0) + failed(2); + else if ((rc = unlockpt(pty)) < 0) + failed(3); + else if ((slave = ptsname(pty)) == 0) + failed(4); +#if (CONFTEST == 3) || defined(CONFTEST_isatty) + else if (!isatty(pty)) + failed(4); +#endif +#if CONFTEST >= 4 + else if ((rc = tcgetattr(pty, &tio)) < 0) + failed(20); + else if ((rc = tcsetattr(pty, TCSAFLUSH, &tio)) < 0) + failed(21); +#endif + /* BSD posix_openpt does not treat pty as a terminal until slave is opened. + * Linux does treat it that way. + */ + else if ((tty = open(slave, O_RDWR)) < 0) + failed(5); +#ifdef CONFTEST +#ifdef I_PUSH +#if (CONFTEST == 0) || defined(CONFTEST_ptem) + else if ((rc = ioctl(tty, I_PUSH, "ptem")) < 0) + failed(10); +#endif +#if (CONFTEST == 1) || defined(CONFTEST_ldterm) + else if ((rc = ioctl(tty, I_PUSH, "ldterm")) < 0) + failed(11); +#endif +#if (CONFTEST == 2) || defined(CONFTEST_ttcompat) + else if ((rc = ioctl(tty, I_PUSH, "ttcompat")) < 0) + failed(12); +#endif +#endif /* I_PUSH */ +#if CONFTEST >= 5 + else if ((rc = tcgetattr(tty, &tio)) < 0) + failed(30); + else if ((rc = tcsetattr(tty, TCSAFLUSH, &tio)) < 0) + failed(31); +#endif +#endif /* CONFTEST */ + + ${cf_cv_main_return:-return}(code); +]) +dnl --------------------------------------------------------------------------- +dnl CF__GRANTPT_HEAD version: 3 updated: 2012/01/29 17:13:14 +dnl ---------------- +dnl Headers for workability check of grantpt. +define([CF__GRANTPT_HEAD],[ +#include <stdlib.h> +#include <termios.h> +#include <unistd.h> +#include <signal.h> +#include <fcntl.h> +#include <errno.h> + +#ifndef HAVE_POSIX_OPENPT +#undef posix_openpt +#define posix_openpt(mode) open("/dev/ptmx", mode) +#endif + +#ifdef HAVE_STROPTS_H +#include <stropts.h> +#endif + +static void failed(int code) +{ + perror("conftest"); + exit(code); +} + +static void my_timeout(int sig) +{ + exit(99); +} +]) |