summaryrefslogtreecommitdiffhomepage
path: root/auto/clang
blob: 975a6468e32e275adf5048c2eaf02a0962ee53f0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196

# Copyright (C) Igor Sysoev
# Copyright (C) NGINX, Inc.


# C language features.


nxt_feature="C99 variadic macro"
nxt_feature_name=NXT_HAVE_C99_VARIADIC_MACRO
nxt_feature_run=yes
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="#include <stdio.h>
                  #define set(dummy, ...)  sprintf(__VA_ARGS__)

                  int main(void) {
                      char  buf[4];

                      buf[0] = '0';
                      set(0, buf, \"%d\", 1);

                      if (buf[0] == '1')
                          return 0;
                      return 1;
                  }"
. auto/feature


if [ $nxt_found = no ]; then

    nxt_feature="GCC variadic macro"
    nxt_feature_name=NXT_HAVE_GCC_VARIADIC_MACRO
    nxt_feature_run=yes
    nxt_feature_incs=
    nxt_feature_libs=
    nxt_feature_test="#include <stdio.h>
                      #define set(dummy, args...)  sprintf(args)

                      int main(void) {
                          char  buf[4];

                          buf[0] = '0';
                          set(0, buf, \"%d\", 1);

                          if (buf[0] == '1')
                              return 0;
                          return 1;
                      }"
    . auto/feature
fi


nxt_feature="GCC __builtin_expect()"
nxt_feature_name=NXT_HAVE_BUILTIN_EXPECT
nxt_feature_run=no
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="int main(int argc, char *const *argv) {
                      if ((__typeof__(argc == 0))
                                   __builtin_expect((argc == 0), 0))
                          return 0;
                      return 1;
                  }"
. auto/feature


nxt_feature="GCC __builtin_unreachable()"
nxt_feature_name=NXT_HAVE_BUILTIN_UNREACHABLE
nxt_feature_run=no
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="int main(void) {
                      __builtin_unreachable();
                  }"
. auto/feature


nxt_feature="GCC __builtin_prefetch()"
nxt_feature_name=NXT_HAVE_BUILTIN_PREFETCH
nxt_feature_run=no
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="int main(void) {
                      __builtin_prefetch(0);
                      return 0;
                  }"
. auto/feature


nxt_feature="GCC __builtin_clz()"
nxt_feature_name=NXT_HAVE_BUILTIN_CLZ
nxt_feature_run=
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="int main(void) {
                      if (__builtin_clz(1) == 31)
                          return 0;
                      return 1;
                  }"
. auto/feature


nxt_feature="GCC __builtin_popcount()"
nxt_feature_name=NXT_HAVE_BUILTIN_POPCOUNT
nxt_feature_run=
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="int main(void) {
                      if (__builtin_popcount(5) == 2)
                          return 0;
                      return 1;
                  }"
. auto/feature


nxt_feature="GCC __attribute__ visibility"
nxt_feature_name=NXT_HAVE_GCC_ATTRIBUTE_VISIBILITY
nxt_feature_run=
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="int n __attribute__ ((visibility(\"default\")));

                  int main(void) {
                      return 1;
                  }"
. auto/feature


nxt_feature="GCC __attribute__ aligned"
nxt_feature_name=NXT_HAVE_GCC_ATTRIBUTE_ALIGNED
nxt_feature_run=
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="int n __attribute__ ((aligned(64)));

                  int main(void) {
                      return 1;
                  }"
. auto/feature


nxt_feature="GCC __attribute__ malloc"
nxt_feature_name=NXT_HAVE_GCC_ATTRIBUTE_MALLOC
nxt_feature_run=
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="#include <stdlib.h>

                  void *f(void) __attribute__ ((__malloc__));

                  void *f(void) {
                      return malloc(1);
                  }

                  int main(void) {
                      if (f() != NULL) {
                          return 1;
                      }
                      return 0;
                  }"
. auto/feature


nxt_feature="GCC __attribute__ packed"
nxt_feature_name=NXT_HAVE_GCC_ATTRIBUTE_PACKED
nxt_feature_run=
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="struct s {
                      char c;
                      int i;
                  } __attribute__ ((__packed__));

                  int main(void) {
                      return 1;
                  }"
. auto/feature


nxt_feature="GCC __attribute__ unused"
nxt_feature_name=NXT_HAVE_GCC_ATTRIBUTE_UNUSED
nxt_feature_run=
nxt_feature_incs=
nxt_feature_libs=
nxt_feature_test="static void f(void) __attribute__ ((__unused__));

                  static void f(void)
                  {
                      return;
                  }

                  int main(void) {
                      return 0;
                  }"
. auto/feature