1 dnl Checks to see if this is SUNPro we're building with
4 AC_DEFUN([AC_PROG_CC_SUNPRO],
5 [AC_CACHE_CHECK(whether we are using SUNPro C, ac_cv_prog_suncc,
6 [dnl The semicolon is to pacify NeXT's syntax-checking cpp.
12 if AC_TRY_COMMAND(${CC-cc} -E conftest.c) | egrep yes >/dev/null 2>&1; then
19 dnl # FR_CHECK_TYPE_INCLUDE([#includes ...], type, default-C-types)
21 dnl # This function is like AC_CHECK_TYPE, but you can give this one
22 dnl # a list of include files to check.
24 AC_DEFUN([FR_CHECK_TYPE_INCLUDE],
26 AC_CACHE_CHECK(for $2, ac_cv_type_$2,
35 if test "$ac_cv_type_$2" != "yes"; then
41 dnl # Locate the directory in which a particular file is found.
43 dnl # Usage: FR_LOCATE_DIR(MYSQLLIB_DIR, libmysqlclient.a)
45 dnl # Defines the variable MYSQLLIB_DIR to be the directory(s) in
46 dnl # which the file libmysqlclient.a is to be found.
49 AC_DEFUN([FR_LOCATE_DIR],
51 dnl # If we have the program 'locate', then the problem of finding a
52 dnl # particular file becomes MUCH easier.
56 dnl # No 'locate' defined, do NOT do anything.
58 if test "x$LOCATE" != "x"; then
60 dnl # Root through a series of directories, looking for the given file.
65 for x in `${LOCATE} $file 2>/dev/null`; do
67 dnl # When asked for 'foo', locate will also find 'foo_bar', which we
68 dnl # don't want. We want that EXACT filename.
70 dnl # We ALSO want to be able to look for files like 'mysql/mysql.h',
71 dnl # and properly match them, too. So we try to strip off the last
72 dnl # part of the filename, using the name of the file we're looking
73 dnl # for. If we CANNOT strip it off, then the name will be unchanged.
75 base=`echo $x | sed "s%/${file}%%"`
76 if test "x$x" = "x$base"; then
80 dir=`${DIRNAME} $x 2>/dev/null`
82 dnl # Exclude a number of directories.
84 exclude=`echo ${dir} | ${GREP} /home`
85 if test "x$exclude" != "x"; then
90 dnl # OK, we have an exact match. Let's be sure that we only find ONE
91 dnl # matching directory.
93 already=`echo \$$1 ${DIRS} | ${GREP} ${dir}`
94 if test "x$already" = "x"; then
101 dnl # And remember the directory in which we found the file.
103 eval "$1=\"\$$1 $DIRS\""
107 dnl #######################################################################
109 dnl # Look for a library in a number of places.
111 dnl # FR_SMART_CHECK_LIB(library, function)
113 AC_DEFUN([FR_SMART_CHECK_LIB], [
115 sm_lib_safe=`echo "$1" | sed 'y%./+-%__p_%'`
116 sm_func_safe=`echo "$2" | sed 'y%./+-%__p_%'`
123 dnl # Try first any user-specified directory, otherwise we may pick up
124 dnl # the wrong version.
126 if test "x$smart_try_dir" != "x"; then
127 for try in $smart_try_dir; do
128 AC_MSG_CHECKING([for $2 in -l$1 in $try])
129 LIBS="-L$try -l$1 $old_LIBS -Wl,-rpath,$try"
130 AC_TRY_LINK([extern char $2();],
133 smart_lib="-L$try -l$1 -Wl,-rpath,$try"
143 dnl # Try using the default library path
145 if test "x$smart_lib" = "x"; then
146 AC_MSG_CHECKING([for $2 in -l$1])
147 LIBS="-l$1 $old_LIBS"
148 AC_TRY_LINK([extern char $2();],
159 dnl # Try to guess possible locations.
161 if test "x$smart_lib" = "x"; then
162 FR_LOCATE_DIR(smart_lib_dir,[lib$1${libltdl_cv_shlibext}])
163 FR_LOCATE_DIR(smart_lib_dir,[lib$1.a])
165 for try in $smart_lib_dir /usr/local/lib /opt/lib; do
166 AC_MSG_CHECKING([for $2 in -l$1 in $try])
167 LIBS="-L$try -l$1 $old_LIBS -Wl,-rpath,$try"
168 AC_TRY_LINK([extern char $2();],
171 smart_lib="-L$try -l$1 -Wl,-rpath,$try"
181 dnl # Found it, set the appropriate variable.
183 if test "x$smart_lib" != "x"; then
184 eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes"
185 LIBS="$smart_lib $old_LIBS"
186 SMART_LIBS="$smart_lib $SMART_LIBS"
190 dnl #######################################################################
192 dnl # Look for a header file in a number of places.
194 dnl # FR_SMART_CHECK_INCLUDE(foo.h, [ #include <other.h> ])
196 AC_DEFUN([FR_SMART_CHECK_INCLUDE], [
198 ac_safe=`echo "$1" | sed 'y%./+-%__pm%'`
204 dnl # Try first any user-specified directory, otherwise we may pick up
205 dnl # the wrong version.
207 if test "x$smart_try_dir" != "x"; then
208 for try in $smart_try_dir; do
209 AC_MSG_CHECKING([for $1 in $try])
210 CFLAGS="$old_CFLAGS -isystem $try"
215 smart_include="-isystem $try"
228 dnl # Try using the default includes.
230 if test "x$smart_include" = "x"; then
231 AC_MSG_CHECKING([for $1])
247 dnl # Try to guess possible locations.
249 if test "x$smart_include" = "x"; then
250 FR_LOCATE_DIR(smart_include_dir,$1)
251 for try in $smart_include_dir /usr/local/include /opt/include; do
252 AC_MSG_CHECKING([for $1 in $try])
253 CFLAGS="$old_CFLAGS -isystem $try"
258 smart_include="-isystem $try"
271 dnl # Found it, set the appropriate variable.
273 if test "x$smart_include" != "x"; then
274 eval "ac_cv_header_$ac_safe=yes"
275 CFLAGS="$old_CFLAGS $smart_include"
276 SMART_CFLAGS="$SMART_CFLAGS $smart_include"
280 dnl #######################################################################
282 dnl # Look for a header file in a number of places.
284 dnl # Usage: FR_CHECK_STRUCT_HAS_MEMBER([#include <foo.h>], [struct foo], member)
285 dnl # If the member is defined, then the variable
286 dnl # ac_cv_type_struct_foo_has_member is set to 'yes'
288 AC_DEFUN([FR_CHECK_STRUCT_HAS_MEMBER], [
289 AC_MSG_CHECKING([for $3 in $2])
291 dnl BASED on 'offsetof':
292 dnl #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
301 #define offsetof(TYPE, MEMBER) ((int) &((TYPE *)0)->MEMBER)
304 [ int foo = offsetof($2, $3) ],
308 ac_safe_type=`echo "$2" | sed 'y% %_%'`
309 if test "x$has_element" != "x"; then
311 eval "ac_cv_type_${ac_safe_type}_has_$3=yes"
314 eval "ac_cv_type_${ac_safe_type}_has_$3="
318 dnl Autoconf 2.61 breaks the support for chained configure scripts
319 dnl in combination with config.cache
320 m4_pushdef([AC_OUTPUT],
322 unset ac_cv_env_LIBS_set
323 unset ac_cv_env_LIBS_value
324 m4_popdef([AC_OUTPUT])
325 AC_OUTPUT([$1],[$2],[$3])
329 # See if the compilation works with __thread, for thread-local storage
333 AC_MSG_CHECKING(for __thread support in compiler)
337 static __thread int val;
338 int main(int argc, char **argv) {
343 ],[have_tls=yes],[have_tls=no],[have_tls=no])
344 AC_MSG_RESULT($have_tls)
345 if test "x$have_tls" = "xyes"; then
346 AC_DEFINE([HAVE_THREAD_TLS],[1],[Define if the compiler supports __thread])
351 AC_DEFUN([VL_LIB_READLINE], [
352 AC_CACHE_CHECK([for a readline compatible library],
353 vl_cv_lib_readline, [
355 for readline_lib in readline edit editline; do
356 for termcap_lib in "" termcap curses ncurses; do
357 if test -z "$termcap_lib"; then
358 TRY_LIB="-l$readline_lib"
360 TRY_LIB="-l$readline_lib -l$termcap_lib"
362 LIBS="$ORIG_LIBS $TRY_LIB"
363 AC_TRY_LINK_FUNC(readline, vl_cv_lib_readline="$TRY_LIB")
364 if test -n "$vl_cv_lib_readline"; then
368 if test -n "$vl_cv_lib_readline"; then
372 if test -z "$vl_cv_lib_readline"; then
373 vl_cv_lib_readline="no"
378 if test "$vl_cv_lib_readline" != "no"; then
379 LIBREADLINE="$vl_cv_lib_readline"
380 AC_DEFINE(HAVE_LIBREADLINE, 1,
381 [Define if you have a readline compatible library])
382 AC_CHECK_HEADERS(readline.h readline/readline.h)
383 AC_CACHE_CHECK([whether readline supports history],
384 [vl_cv_lib_readline_history], [
385 vl_cv_lib_readline_history="no"
386 AC_TRY_LINK_FUNC([add_history], [vl_cv_lib_readline_history="yes"])
388 if test "$vl_cv_lib_readline_history" = "yes"; then
389 AC_DEFINE(HAVE_READLINE_HISTORY, 1,
390 [Define if your readline library has \`add_history'])
391 AC_CHECK_HEADERS(history.h readline/history.h)
394 AC_SUBST(LIBREADLINE)
397 AC_INCLUDE(aclocal.m4)