| OLD | NEW |
| (Empty) |
| 1 # | |
| 2 # This is a collection of useful autoconf macros | |
| 3 # | |
| 4 | |
| 5 ############################################ | |
| 6 # Check if the compiler handles c99 struct initialization, and if not try -AC99
and -c99 flags | |
| 7 # Usage: LIBREPLACE_C99_STRUCT_INIT(success-action,failure-action) | |
| 8 # changes CFLAGS to add -AC99 or -c99 if needed | |
| 9 AC_DEFUN([LIBREPLACE_C99_STRUCT_INIT], | |
| 10 [ | |
| 11 saved_CFLAGS="$CFLAGS"; | |
| 12 c99_init=no | |
| 13 if test x"$c99_init" = x"no"; then | |
| 14 AC_MSG_CHECKING(for C99 designated initializers) | |
| 15 CFLAGS="$saved_CFLAGS"; | |
| 16 AC_TRY_COMPILE([#include <stdio.h>], | |
| 17 [ struct foo {int x;char y;}; | |
| 18 struct foo bar = { .y = 'X', .x = 1 }; | |
| 19 ], | |
| 20 [AC_MSG_RESULT(yes); c99_init=yes],[AC_MSG_RESULT(no)]) | |
| 21 fi | |
| 22 if test x"$c99_init" = x"no"; then | |
| 23 AC_MSG_CHECKING(for C99 designated initializers with -AC99) | |
| 24 CFLAGS="$saved_CFLAGS -AC99"; | |
| 25 AC_TRY_COMPILE([#include <stdio.h>], | |
| 26 [ struct foo {int x;char y;}; | |
| 27 struct foo bar = { .y = 'X', .x = 1 }; | |
| 28 ], | |
| 29 [AC_MSG_RESULT(yes); c99_init=yes],[AC_MSG_RESULT(no)]) | |
| 30 fi | |
| 31 if test x"$c99_init" = x"no"; then | |
| 32 AC_MSG_CHECKING(for C99 designated initializers with -qlanglvl=extc99) | |
| 33 CFLAGS="$saved_CFLAGS -qlanglvl=extc99"; | |
| 34 AC_TRY_COMPILE([#include <stdio.h>], | |
| 35 [ struct foo {int x;char y;}; | |
| 36 struct foo bar = { .y = 'X', .x = 1 }; | |
| 37 ], | |
| 38 [AC_MSG_RESULT(yes); c99_init=yes],[AC_MSG_RESULT(no)]) | |
| 39 fi | |
| 40 if test x"$c99_init" = x"no"; then | |
| 41 AC_MSG_CHECKING(for C99 designated initializers with -qlanglvl=stdc99) | |
| 42 CFLAGS="$saved_CFLAGS -qlanglvl=stdc99"; | |
| 43 AC_TRY_COMPILE([#include <stdio.h>], | |
| 44 [ struct foo {int x;char y;}; | |
| 45 struct foo bar = { .y = 'X', .x = 1 }; | |
| 46 ], | |
| 47 [AC_MSG_RESULT(yes); c99_init=yes],[AC_MSG_RESULT(no)]) | |
| 48 fi | |
| 49 if test x"$c99_init" = x"no"; then | |
| 50 AC_MSG_CHECKING(for C99 designated initializers with -c99) | |
| 51 CFLAGS="$saved_CFLAGS -c99" | |
| 52 AC_TRY_COMPILE([#include <stdio.h>], | |
| 53 [ struct foo {int x;char y;}; | |
| 54 struct foo bar = { .y = 'X', .x = 1 }; | |
| 55 ], | |
| 56 [AC_MSG_RESULT(yes); c99_init=yes],[AC_MSG_RESULT(no)]) | |
| 57 fi | |
| 58 | |
| 59 if test "`uname`" = "HP-UX"; then | |
| 60 if test "$ac_cv_c_compiler_gnu" = no; then | |
| 61 # special override for broken HP-UX compiler - I can't find a way to tes
t | |
| 62 # this properly (its a compiler bug) | |
| 63 CFLAGS="$CFLAGS -AC99"; | |
| 64 c99_init=yes; | |
| 65 fi | |
| 66 fi | |
| 67 | |
| 68 if test x"$c99_init" = x"yes"; then | |
| 69 saved_CFLAGS="" | |
| 70 $1 | |
| 71 else | |
| 72 CFLAGS="$saved_CFLAGS" | |
| 73 saved_CFLAGS="" | |
| 74 $2 | |
| 75 fi | |
| 76 ]) | |
| 77 | |
| 78 dnl AC_PROG_CC_FLAG(flag) | |
| 79 AC_DEFUN(AC_PROG_CC_FLAG, | |
| 80 [AC_CACHE_CHECK(whether ${CC-cc} accepts -$1, ac_cv_prog_cc_$1, | |
| 81 [echo 'void f(){}' > conftest.c | |
| 82 if test -z "`${CC-cc} -$1 -c conftest.c 2>&1`"; then | |
| 83 ac_cv_prog_cc_$1=yes | |
| 84 else | |
| 85 ac_cv_prog_cc_$1=no | |
| 86 fi | |
| 87 rm -f conftest* | |
| 88 ])]) | |
| 89 | |
| 90 dnl see if a declaration exists for a function or variable | |
| 91 dnl defines HAVE_function_DECL if it exists | |
| 92 dnl AC_HAVE_DECL(var, includes) | |
| 93 AC_DEFUN(AC_HAVE_DECL, | |
| 94 [ | |
| 95 AC_CACHE_CHECK([for $1 declaration],ac_cv_have_$1_decl,[ | |
| 96 AC_TRY_COMPILE([$2],[int i = (int)$1], | |
| 97 ac_cv_have_$1_decl=yes,ac_cv_have_$1_decl=no)]) | |
| 98 if test x"$ac_cv_have_$1_decl" = x"yes"; then | |
| 99 AC_DEFINE([HAVE_]translit([$1], [a-z], [A-Z])[_DECL],1,[Whether $1() is avai
lable]) | |
| 100 fi | |
| 101 ]) | |
| 102 | |
| 103 | |
| 104 # AC_CHECK_LIB_EXT(LIBRARY, [EXT_LIBS], [FUNCTION], | |
| 105 # [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], | |
| 106 # [ADD-ACTION-IF-FOUND],[OTHER-LIBRARIES]) | |
| 107 # ------------------------------------------------------ | |
| 108 # | |
| 109 # Use a cache variable name containing both the library and function name, | |
| 110 # because the test really is for library $1 defining function $3, not | |
| 111 # just for library $1. Separate tests with the same $1 and different $3s | |
| 112 # may have different results. | |
| 113 # | |
| 114 # Note that using directly AS_VAR_PUSHDEF([ac_Lib], [ac_cv_lib_$1_$3]) | |
| 115 # is asking for trouble, since AC_CHECK_LIB($lib, fun) would give | |
| 116 # ac_cv_lib_$lib_fun, which is definitely not what was meant. Hence | |
| 117 # the AS_LITERAL_IF indirection. | |
| 118 # | |
| 119 # FIXME: This macro is extremely suspicious. It DEFINEs unconditionally, | |
| 120 # whatever the FUNCTION, in addition to not being a *S macro. Note | |
| 121 # that the cache does depend upon the function we are looking for. | |
| 122 # | |
| 123 # It is on purpose we used `ac_check_lib_ext_save_LIBS' and not just | |
| 124 # `ac_save_LIBS': there are many macros which don't want to see `LIBS' | |
| 125 # changed but still want to use AC_CHECK_LIB_EXT, so they save `LIBS'. | |
| 126 # And ``ac_save_LIBS' is too tempting a name, so let's leave them some | |
| 127 # freedom. | |
| 128 AC_DEFUN([AC_CHECK_LIB_EXT], | |
| 129 [ | |
| 130 AH_CHECK_LIB_EXT([$1]) | |
| 131 ac_check_lib_ext_save_LIBS=$LIBS | |
| 132 LIBS="-l$1 $$2 $7 $LIBS" | |
| 133 AS_LITERAL_IF([$1], | |
| 134 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1])], | |
| 135 [AS_VAR_PUSHDEF([ac_Lib_ext], [ac_cv_lib_ext_$1''])])dnl | |
| 136 | |
| 137 m4_ifval([$3], | |
| 138 [ | |
| 139 AH_CHECK_FUNC_EXT([$3]) | |
| 140 AS_LITERAL_IF([$1], | |
| 141 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1_$3])], | |
| 142 [AS_VAR_PUSHDEF([ac_Lib_func], [ac_cv_lib_ext_$1''_$3])])dnl | |
| 143 AC_CACHE_CHECK([for $3 in -l$1], ac_Lib_func, | |
| 144 [AC_TRY_LINK_FUNC($3, | |
| 145 [AS_VAR_SET(ac_Lib_func, yes); | |
| 146 AS_VAR_SET(ac_Lib_ext, yes)], | |
| 147 [AS_VAR_SET(ac_Lib_func, no); | |
| 148 AS_VAR_SET(ac_Lib_ext, no)]) | |
| 149 ]) | |
| 150 AS_IF([test AS_VAR_GET(ac_Lib_func) = yes], | |
| 151 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$3))])dnl | |
| 152 AS_VAR_POPDEF([ac_Lib_func])dnl | |
| 153 ],[ | |
| 154 AC_CACHE_CHECK([for -l$1], ac_Lib_ext, | |
| 155 [AC_TRY_LINK_FUNC([main], | |
| 156 [AS_VAR_SET(ac_Lib_ext, yes)], | |
| 157 [AS_VAR_SET(ac_Lib_ext, no)]) | |
| 158 ]) | |
| 159 ]) | |
| 160 LIBS=$ac_check_lib_ext_save_LIBS | |
| 161 | |
| 162 AS_IF([test AS_VAR_GET(ac_Lib_ext) = yes], | |
| 163 [m4_default([$4], | |
| 164 [AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_LIB$1)) | |
| 165 case "$$2" in | |
| 166 *-l$1*) | |
| 167 ;; | |
| 168 *) | |
| 169 $2="-l$1 $$2" | |
| 170 ;; | |
| 171 esac]) | |
| 172 [$6] | |
| 173 ], | |
| 174 [$5])dnl | |
| 175 AS_VAR_POPDEF([ac_Lib_ext])dnl | |
| 176 ])# AC_CHECK_LIB_EXT | |
| 177 | |
| 178 # AH_CHECK_LIB_EXT(LIBNAME) | |
| 179 # --------------------- | |
| 180 m4_define([AH_CHECK_LIB_EXT], | |
| 181 [AH_TEMPLATE(AS_TR_CPP(HAVE_LIB$1), | |
| 182 [Define to 1 if you have the `]$1[' library (-l]$1[).])]) | |
| 183 | |
| 184 dnl AC_SEARCH_LIBS_EXT(FUNCTION, SEARCH-LIBS, EXT_LIBS, | |
| 185 dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND], | |
| 186 dnl [OTHER-LIBRARIES]) | |
| 187 dnl -------------------------------------------------------- | |
| 188 dnl Search for a library defining FUNC, if it's not already available. | |
| 189 AC_DEFUN([AC_SEARCH_LIBS_EXT], | |
| 190 [AC_CACHE_CHECK([for library containing $1], [ac_cv_search_ext_$1], | |
| 191 [ | |
| 192 ac_func_search_ext_save_LIBS=$LIBS | |
| 193 ac_cv_search_ext_$1=no | |
| 194 AC_LINK_IFELSE([AC_LANG_CALL([], [$1])], | |
| 195 [ac_cv_search_ext_$1="none required"]) | |
| 196 if test "$ac_cv_search_ext_$1" = no; then | |
| 197 for ac_lib in $2; do | |
| 198 LIBS="-l$ac_lib $$3 $6 $ac_func_search_save_ext_LIBS" | |
| 199 AC_LINK_IFELSE([AC_LANG_CALL([], [$1])], | |
| 200 [ac_cv_search_ext_$1="-l$ac_lib" | |
| 201 break]) | |
| 202 done | |
| 203 fi | |
| 204 LIBS=$ac_func_search_ext_save_LIBS]) | |
| 205 AS_IF([test "$ac_cv_search_ext_$1" != no], | |
| 206 [test "$ac_cv_search_ext_$1" = "none required" || $3="$ac_cv_search_ext_$1 $$3
" | |
| 207 $4], | |
| 208 [$5])dnl | |
| 209 ]) | |
| 210 | |
| 211 dnl check for a function in a $LIBS and $OTHER_LIBS libraries variable. | |
| 212 dnl AC_CHECK_FUNC_EXT(func,OTHER_LIBS,IF-TRUE,IF-FALSE) | |
| 213 AC_DEFUN([AC_CHECK_FUNC_EXT], | |
| 214 [ | |
| 215 AH_CHECK_FUNC_EXT($1) | |
| 216 ac_check_func_ext_save_LIBS=$LIBS | |
| 217 LIBS="$2 $LIBS" | |
| 218 AS_VAR_PUSHDEF([ac_var], [ac_cv_func_ext_$1])dnl | |
| 219 AC_CACHE_CHECK([for $1], ac_var, | |
| 220 [AC_LINK_IFELSE([AC_LANG_FUNC_LINK_TRY([$1])], | |
| 221 [AS_VAR_SET(ac_var, yes)], | |
| 222 [AS_VAR_SET(ac_var, no)])]) | |
| 223 LIBS=$ac_check_func_ext_save_LIBS | |
| 224 AS_IF([test AS_VAR_GET(ac_var) = yes], | |
| 225 [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1])) $3], | |
| 226 [$4])dnl | |
| 227 AS_VAR_POPDEF([ac_var])dnl | |
| 228 ])# AC_CHECK_FUNC | |
| 229 | |
| 230 # AH_CHECK_FUNC_EXT(FUNCNAME) | |
| 231 # --------------------- | |
| 232 m4_define([AH_CHECK_FUNC_EXT], | |
| 233 [AH_TEMPLATE(AS_TR_CPP(HAVE_$1), | |
| 234 [Define to 1 if you have the `]$1[' function.])]) | |
| 235 | |
| 236 dnl Define an AC_DEFINE with ifndef guard. | |
| 237 dnl AC_N_DEFINE(VARIABLE [, VALUE]) | |
| 238 AC_DEFUN([AC_N_DEFINE], | |
| 239 [ | |
| 240 AH_VERBATIM([$1], [ | |
| 241 #ifndef $1 | |
| 242 # undef $1 | |
| 243 #endif | |
| 244 ]) | |
| 245 | |
| 246 cat >>confdefs.h <<\EOF | |
| 247 #ifndef $1 | |
| 248 [#define] $1 m4_if($#, 1, 1, [$2]) | |
| 249 #endif | |
| 250 EOF | |
| 251 ]) | |
| 252 | |
| 253 dnl Add an #include | |
| 254 dnl AC_ADD_INCLUDE(VARIABLE) | |
| 255 define(AC_ADD_INCLUDE, | |
| 256 [cat >> confdefs.h <<\EOF | |
| 257 [#include] $1 | |
| 258 EOF | |
| 259 ]) | |
| 260 | |
| 261 dnl remove an #include | |
| 262 dnl AC_REMOVE_INCLUDE(VARIABLE) | |
| 263 define(AC_REMOVE_INCLUDE, | |
| 264 [ | |
| 265 grep -v '[#include] $1' confdefs.h >confdefs.h.tmp | |
| 266 cat confdefs.h.tmp > confdefs.h | |
| 267 rm confdefs.h.tmp | |
| 268 ]) | |
| 269 | |
| 270 dnl remove an #define | |
| 271 dnl AC_REMOVE_DEFINE(VARIABLE) | |
| 272 define(AC_REMOVE_DEFINE, | |
| 273 [ | |
| 274 grep -v '[#define] $1 ' confdefs.h |grep -v '[#define] $1[$]'>confdefs.h.tmp | |
| 275 cat confdefs.h.tmp > confdefs.h | |
| 276 rm confdefs.h.tmp | |
| 277 ]) | |
| 278 | |
| 279 dnl AS_HELP_STRING is not available in autoconf 2.57, and AC_HELP_STRING is depr
ecated | |
| 280 dnl in autoconf 2.59, so define AS_HELP_STRING to be AC_HELP_STRING unless it is
already | |
| 281 dnl defined. | |
| 282 m4_ifdef([AS_HELP_STRING], , [m4_define([AS_HELP_STRING], m4_defn([AC_HELP_STRIN
G]))]) | |
| 283 | |
| 284 dnl check if the prototype in the header matches the given one | |
| 285 dnl AC_VERIFY_C_PROTOTYPE(prototype,functionbody,[IF-TRUE].[IF-FALSE],[extrahead
ers]) | |
| 286 AC_DEFUN(AC_VERIFY_C_PROTOTYPE, | |
| 287 [AC_CACHE_CHECK([for prototype $1], AS_TR_SH([ac_cv_c_prototype_$1]), | |
| 288 AC_COMPILE_IFELSE([AC_LANG_SOURCE([ | |
| 289 AC_INCLUDES_DEFAULT | |
| 290 $5 | |
| 291 $1 | |
| 292 { | |
| 293 $2 | |
| 294 } | |
| 295 ])],[ | |
| 296 AS_TR_SH([ac_cv_c_prototype_$1])=yes | |
| 297 ],[ | |
| 298 AS_TR_SH([ac_cv_c_prototype_$1])=no | |
| 299 ]) | |
| 300 ) | |
| 301 AS_IF([test $AS_TR_SH([ac_cv_c_prototype_$1]) = yes],[$3],[$4]) | |
| 302 ]) | |
| 303 | |
| 304 AC_DEFUN(LIBREPLACE_PROVIDE_HEADER, | |
| 305 [AC_CHECK_HEADER([$1], | |
| 306 [ AC_CONFIG_COMMANDS(rm-$1, [rm -f $libreplacedir/$1], [librepla
cedir=$libreplacedir]) ], | |
| 307 [ AC_CONFIG_COMMANDS(mk-$1, [echo "#include \"replace.h\"" > $li
breplacedir/$1], [libreplacedir=$libreplacedir]) ] | |
| 308 ) | |
| 309 ]) | |
| 310 | |
| 311 dnl AC_HAVE_TYPE(TYPE,INCLUDES) | |
| 312 AC_DEFUN([AC_HAVE_TYPE], [ | |
| 313 AC_REQUIRE([AC_HEADER_STDC]) | |
| 314 cv=`echo "$1" | sed 'y%./+- %__p__%'` | |
| 315 AC_MSG_CHECKING(for $1) | |
| 316 AC_CACHE_VAL([ac_cv_type_$cv], | |
| 317 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ | |
| 318 AC_INCLUDES_DEFAULT | |
| 319 $2]], | |
| 320 [[$1 foo;]])], | |
| 321 [eval "ac_cv_type_$cv=yes"], | |
| 322 [eval "ac_cv_type_$cv=no"]))dnl | |
| 323 ac_foo=`eval echo \\$ac_cv_type_$cv` | |
| 324 AC_MSG_RESULT($ac_foo) | |
| 325 if test "$ac_foo" = yes; then | |
| 326 ac_tr_hdr=HAVE_`echo $1 | sed 'y%abcdefghijklmnopqrstuvwxyz./- %ABCDEFGHIJKLMN
OPQRSTUVWXYZ____%'` | |
| 327 if false; then | |
| 328 AC_CHECK_TYPES($1) | |
| 329 fi | |
| 330 AC_DEFINE_UNQUOTED($ac_tr_hdr, 1, [Define if you have type `$1']) | |
| 331 fi | |
| 332 ]) | |
| OLD | NEW |