| dnl GAS_CHECK_DECL_NEEDED(name, typedefname, typedef, headers) |
| AC_DEFUN([GAS_CHECK_DECL_NEEDED],[ |
| AC_MSG_CHECKING(whether declaration is required for $1) |
| AC_CACHE_VAL(gas_cv_decl_needed_$1, |
| AC_TRY_LINK([$4], |
| [ |
| typedef $3; |
| $2 x; |
| x = ($2) $1; |
| ], gas_cv_decl_needed_$1=no, gas_cv_decl_needed_$1=yes))dnl |
| AC_MSG_RESULT($gas_cv_decl_needed_$1) |
| if test $gas_cv_decl_needed_$1 = yes; then |
| AC_DEFINE([NEED_DECLARATION_]translit($1, [a-z], [A-Z]), 1, |
| [Define if $1 is not declared in system header files.]) |
| fi |
| ])dnl |
| dnl |
| dnl Some non-ANSI preprocessors botch requoting inside strings. That's bad |
| dnl enough, but on some of those systems, the assert macro relies on requoting |
| dnl working properly! |
| dnl GAS_WORKING_ASSERT |
| AC_DEFUN([GAS_WORKING_ASSERT], |
| [AC_MSG_CHECKING([for working assert macro]) |
| AC_CACHE_VAL(gas_cv_assert_ok, |
| AC_TRY_LINK([#include <assert.h> |
| #include <string.h> |
| #include <stdio.h>], [ |
| /* check for requoting problems */ |
| static int a, b, c, d; |
| static char *s; |
| assert (!strcmp(s, "foo bar baz quux")); |
| /* check for newline handling */ |
| assert (a == b |
| || c == d); |
| ], gas_cv_assert_ok=yes, gas_cv_assert_ok=no))dnl |
| AC_MSG_RESULT($gas_cv_assert_ok) |
| test $gas_cv_assert_ok = yes || AC_DEFINE(BROKEN_ASSERT, 1, [assert broken?]) |
| ])dnl |
| dnl |
| dnl Since many Bourne shell implementations lack subroutines, use this |
| dnl hack to simplify the code in configure.ac. |
| dnl GAS_UNIQ(listvar) |
| AC_DEFUN([GAS_UNIQ], |
| [_gas_uniq_list="[$]$1" |
| _gas_uniq_newlist="" |
| dnl Protect against empty input list. |
| for _gas_uniq_i in _gas_uniq_dummy [$]_gas_uniq_list ; do |
| case [$]_gas_uniq_i in |
| _gas_uniq_dummy) ;; |
| *) case " [$]_gas_uniq_newlist " in |
| *" [$]_gas_uniq_i "*) ;; |
| *) _gas_uniq_newlist="[$]_gas_uniq_newlist [$]_gas_uniq_i" ;; |
| esac ;; |
| esac |
| done |
| $1=[$]_gas_uniq_newlist |
| ])dnl |
| dnl |
| dnl Check for existence of member $2 in type $1 in time.h |
| dnl |
| AC_DEFUN([GAS_HAVE_TIME_TYPE_MEMBER], |
| [AC_MSG_CHECKING([for $1.$2 in time.h]) |
| AC_CACHE_VAL(gas_cv_have_time_type_member_$2, |
| [AC_TRY_COMPILE([ |
| #define _BSD_SOURCE 1 |
| #include <time.h>], |
| [$1 avar; void* aref = (void*) &avar.$2], |
| gas_cv_have_time_type_member_$2=yes, |
| gas_cv_have_time_type_member_$2=no |
| )]) |
| if test $gas_cv_have_time_type_member_$2 = yes; then |
| AC_DEFINE([HAVE_]translit($2, [a-z], [A-Z]), 1, |
| [Define if <time.h> has $1.$2.]) |
| fi |
| AC_MSG_RESULT($gas_cv_have_time_type_member_$2) |
| ])dnl |
| dnl |
| dnl Check for existence of member $2.$3 in type $1 in sys/stat.h |
| dnl |
| AC_DEFUN([GAS_HAVE_SYS_STAT_TYPE_MEMBER], |
| [AC_MSG_CHECKING([for $1.$2.$3 in sys/stat.h]) |
| AC_CACHE_VAL(gas_cv_have_sys_stat_type_member_$2_$3, |
| [AC_TRY_COMPILE([ |
| #define _BSD_SOURCE 1 |
| #include <sys/stat.h>], |
| [$1 avar; void* aref = (void*) &avar.$2.$3], |
| gas_cv_have_sys_stat_type_member_$2_$3=yes, |
| gas_cv_have_sys_stat_type_member_$2_$3=no |
| )]) |
| if test $gas_cv_have_sys_stat_type_member_$2_$3 = yes; then |
| AC_DEFINE([HAVE_]translit($2, [a-z], [A-Z])[_]translit($3, [a-z], [A-Z]), 1, |
| [Define if <sys/stat.h> has $1.$2.$3]) |
| fi |
| AC_MSG_RESULT($gas_cv_have_sys_stat_type_member_$2_$3) |
| ])dnl |