Commit | Line | Data |
---|---|---|
252b5132 | 1 | dnl GAS_CHECK_DECL_NEEDED(name, typedefname, typedef, headers) |
f8b73030 | 2 | AC_DEFUN([GAS_CHECK_DECL_NEEDED],[ |
252b5132 RH |
3 | AC_MSG_CHECKING(whether declaration is required for $1) |
4 | AC_CACHE_VAL(gas_cv_decl_needed_$1, | |
5 | AC_TRY_LINK([$4], | |
6 | [ | |
7 | typedef $3; | |
8 | $2 x; | |
9 | x = ($2) $1; | |
10 | ], gas_cv_decl_needed_$1=no, gas_cv_decl_needed_$1=yes))dnl | |
11 | AC_MSG_RESULT($gas_cv_decl_needed_$1) | |
12 | if test $gas_cv_decl_needed_$1 = yes; then | |
13 | AC_DEFINE([NEED_DECLARATION_]translit($1, [a-z], [A-Z]), 1, | |
14 | [Define if $1 is not declared in system header files.]) | |
15 | fi | |
16 | ])dnl | |
17 | dnl | |
18 | dnl Some non-ANSI preprocessors botch requoting inside strings. That's bad | |
19 | dnl enough, but on some of those systems, the assert macro relies on requoting | |
20 | dnl working properly! | |
21 | dnl GAS_WORKING_ASSERT | |
f8b73030 | 22 | AC_DEFUN([GAS_WORKING_ASSERT], |
252b5132 RH |
23 | [AC_MSG_CHECKING([for working assert macro]) |
24 | AC_CACHE_VAL(gas_cv_assert_ok, | |
25 | AC_TRY_LINK([#include <assert.h> | |
26 | #include <stdio.h>], [ | |
27 | /* check for requoting problems */ | |
28 | static int a, b, c, d; | |
29 | static char *s; | |
30 | assert (!strcmp(s, "foo bar baz quux")); | |
31 | /* check for newline handling */ | |
32 | assert (a == b | |
33 | || c == d); | |
34 | ], gas_cv_assert_ok=yes, gas_cv_assert_ok=no))dnl | |
35 | AC_MSG_RESULT($gas_cv_assert_ok) | |
36 | test $gas_cv_assert_ok = yes || AC_DEFINE(BROKEN_ASSERT, 1, [assert broken?]) | |
37 | ])dnl | |
38 | dnl | |
39 | dnl Since many Bourne shell implementations lack subroutines, use this | |
1110793a | 40 | dnl hack to simplify the code in configure.ac. |
252b5132 | 41 | dnl GAS_UNIQ(listvar) |
f8b73030 | 42 | AC_DEFUN([GAS_UNIQ], |
252b5132 RH |
43 | [_gas_uniq_list="[$]$1" |
44 | _gas_uniq_newlist="" | |
45 | dnl Protect against empty input list. | |
46 | for _gas_uniq_i in _gas_uniq_dummy [$]_gas_uniq_list ; do | |
47 | case [$]_gas_uniq_i in | |
48 | _gas_uniq_dummy) ;; | |
49 | *) case " [$]_gas_uniq_newlist " in | |
50 | *" [$]_gas_uniq_i "*) ;; | |
51 | *) _gas_uniq_newlist="[$]_gas_uniq_newlist [$]_gas_uniq_i" ;; | |
52 | esac ;; | |
53 | esac | |
54 | done | |
55 | $1=[$]_gas_uniq_newlist | |
56 | ])dnl | |
b11d79f2 TG |
57 | dnl |
58 | dnl Check for existence of member $2 in type $1 in time.h | |
59 | dnl | |
60 | AC_DEFUN([GAS_HAVE_TIME_TYPE_MEMBER], | |
61 | [AC_MSG_CHECKING([for $1.$2 in time.h]) | |
62 | AC_CACHE_VAL(gas_cv_have_time_type_member_$2, | |
63 | [AC_TRY_COMPILE([ | |
64 | #define _BSD_SOURCE 1 | |
65 | #include <time.h>], | |
66 | [$1 avar; void* aref = (void*) &avar.$2], | |
67 | gas_cv_have_time_type_member_$2=yes, | |
68 | gas_cv_have_time_type_member_$2=no | |
69 | )]) | |
70 | if test $gas_cv_have_time_type_member_$2 = yes; then | |
71 | AC_DEFINE([HAVE_]translit($2, [a-z], [A-Z]), 1, | |
72 | [Define if <time.h> has $1.$2.]) | |
73 | fi | |
74 | AC_MSG_RESULT($gas_cv_have_time_type_member_$2) | |
75 | ])dnl | |
76 | dnl | |
77 | dnl Check for existence of member $2.$3 in type $1 in sys/stat.h | |
78 | dnl | |
79 | AC_DEFUN([GAS_HAVE_SYS_STAT_TYPE_MEMBER], | |
80 | [AC_MSG_CHECKING([for $1.$2.$3 in sys/stat.h]) | |
81 | AC_CACHE_VAL(gas_cv_have_sys_stat_type_member_$2_$3, | |
82 | [AC_TRY_COMPILE([ | |
83 | #define _BSD_SOURCE 1 | |
84 | #include <sys/stat.h>], | |
85 | [$1 avar; void* aref = (void*) &avar.$2.$3], | |
86 | gas_cv_have_sys_stat_type_member_$2_$3=yes, | |
87 | gas_cv_have_sys_stat_type_member_$2_$3=no | |
88 | )]) | |
89 | if test $gas_cv_have_sys_stat_type_member_$2_$3 = yes; then | |
90 | AC_DEFINE([HAVE_]translit($2, [a-z], [A-Z])[_]translit($3, [a-z], [A-Z]), 1, | |
91 | [Define if <sys/stat.h> has $1.$2.$3]) | |
92 | fi | |
93 | AC_MSG_RESULT($gas_cv_have_sys_stat_type_member_$2_$3) | |
94 | ])dnl |