xref: /unit/auto/clang (revision 93)
10Sigor@sysoev.ru
20Sigor@sysoev.ru# Copyright (C) Igor Sysoev
30Sigor@sysoev.ru# Copyright (C) NGINX, Inc.
40Sigor@sysoev.ru
50Sigor@sysoev.ru
60Sigor@sysoev.ru# C language features.
70Sigor@sysoev.ru
80Sigor@sysoev.ru
90Sigor@sysoev.runxt_feature="C99 variadic macro"
100Sigor@sysoev.runxt_feature_name=NXT_HAVE_C99_VARIADIC_MACRO
110Sigor@sysoev.runxt_feature_run=yes
120Sigor@sysoev.runxt_feature_path=
130Sigor@sysoev.runxt_feature_libs=
140Sigor@sysoev.runxt_feature_test="#include <stdio.h>
150Sigor@sysoev.ru                  #define set(dummy, ...)  sprintf(__VA_ARGS__)
160Sigor@sysoev.ru
170Sigor@sysoev.ru                  int main() {
180Sigor@sysoev.ru                      char  buf[4];
190Sigor@sysoev.ru
200Sigor@sysoev.ru                      buf[0] = '0';
210Sigor@sysoev.ru                      set(0, buf, \"%d\", 1);
220Sigor@sysoev.ru
230Sigor@sysoev.ru                      if (buf[0] == '1')
240Sigor@sysoev.ru                          return 0;
250Sigor@sysoev.ru                      return 1;
260Sigor@sysoev.ru                  }"
270Sigor@sysoev.ru. auto/feature
280Sigor@sysoev.ru
290Sigor@sysoev.ru
300Sigor@sysoev.ruif [ $nxt_found = no ]; then
310Sigor@sysoev.ru
320Sigor@sysoev.ru    nxt_feature="GCC variadic macro"
330Sigor@sysoev.ru    nxt_feature_name=NXT_HAVE_GCC_VARIADIC_MACRO
340Sigor@sysoev.ru    nxt_feature_run=yes
350Sigor@sysoev.ru    nxt_feature_path=
360Sigor@sysoev.ru    nxt_feature_libs=
370Sigor@sysoev.ru    nxt_feature_test="#include <stdio.h>
380Sigor@sysoev.ru                      #define set(dummy, args...)  sprintf(args)
390Sigor@sysoev.ru
400Sigor@sysoev.ru                      int main() {
410Sigor@sysoev.ru                          char  buf[4];
420Sigor@sysoev.ru
430Sigor@sysoev.ru                          buf[0] = '0';
440Sigor@sysoev.ru                          set(0, buf, \"%d\", 1);
450Sigor@sysoev.ru
460Sigor@sysoev.ru                          if (buf[0] == '1')
470Sigor@sysoev.ru                              return 0;
480Sigor@sysoev.ru                          return 1;
490Sigor@sysoev.ru                      }"
500Sigor@sysoev.ru    . auto/feature
510Sigor@sysoev.rufi
520Sigor@sysoev.ru
530Sigor@sysoev.ru
540Sigor@sysoev.runxt_feature="GCC __builtin_expect()"
550Sigor@sysoev.runxt_feature_name=NXT_HAVE_BUILTIN_EXPECT
560Sigor@sysoev.runxt_feature_run=no
570Sigor@sysoev.runxt_feature_incs=
580Sigor@sysoev.runxt_feature_libs=
590Sigor@sysoev.runxt_feature_test="int main(int argc, char *const *argv) {
600Sigor@sysoev.ru                      if ((__typeof__(argc == 0))
610Sigor@sysoev.ru                                   __builtin_expect((argc == 0), 0))
620Sigor@sysoev.ru                          return 0;
630Sigor@sysoev.ru                      return 1;
640Sigor@sysoev.ru                  }"
650Sigor@sysoev.ru. auto/feature
660Sigor@sysoev.ru
670Sigor@sysoev.ru
680Sigor@sysoev.runxt_feature="GCC __builtin_unreachable()"
690Sigor@sysoev.runxt_feature_name=NXT_HAVE_BUILTIN_UNREACHABLE
700Sigor@sysoev.runxt_feature_run=no
710Sigor@sysoev.runxt_feature_incs=
720Sigor@sysoev.runxt_feature_libs=
730Sigor@sysoev.runxt_feature_test="int main() {
740Sigor@sysoev.ru                      __builtin_unreachable();
750Sigor@sysoev.ru                  }"
760Sigor@sysoev.ru. auto/feature
770Sigor@sysoev.ru
780Sigor@sysoev.ru
790Sigor@sysoev.runxt_feature="GCC __builtin_prefetch()"
800Sigor@sysoev.runxt_feature_name=NXT_HAVE_BUILTIN_PREFETCH
810Sigor@sysoev.runxt_feature_run=no
820Sigor@sysoev.runxt_feature_incs=
830Sigor@sysoev.runxt_feature_libs=
840Sigor@sysoev.runxt_feature_test="int main() {
850Sigor@sysoev.ru                      __builtin_prefetch(0);
860Sigor@sysoev.ru                  }"
870Sigor@sysoev.ru. auto/feature
880Sigor@sysoev.ru
890Sigor@sysoev.ru
90*93Smax.romanov@nginx.comnxt_feature="GCC __builtin_clz()"
91*93Smax.romanov@nginx.comnxt_feature_name=NXT_HAVE_BUILTIN_CLZ
92*93Smax.romanov@nginx.comnxt_feature_run=
93*93Smax.romanov@nginx.comnxt_feature_incs=
94*93Smax.romanov@nginx.comnxt_feature_libs=
95*93Smax.romanov@nginx.comnxt_feature_test="int main() {
96*93Smax.romanov@nginx.com                      if (__builtin_clz(1) == 31)
97*93Smax.romanov@nginx.com                          return 0;
98*93Smax.romanov@nginx.com                      return 1;
99*93Smax.romanov@nginx.com                  }"
100*93Smax.romanov@nginx.com. auto/feature
101*93Smax.romanov@nginx.com
102*93Smax.romanov@nginx.com
1030Sigor@sysoev.runxt_feature="GCC __attribute__ visibility"
1040Sigor@sysoev.runxt_feature_name=NXT_HAVE_GCC_ATTRIBUTE_VISIBILITY
1050Sigor@sysoev.runxt_feature_run=
1060Sigor@sysoev.runxt_feature_path=
1070Sigor@sysoev.runxt_feature_libs=
1080Sigor@sysoev.runxt_feature_test="int n __attribute__ ((visibility(\"default\")));
1090Sigor@sysoev.ru
1100Sigor@sysoev.ru                  int main() {
1110Sigor@sysoev.ru                      return 1;
1120Sigor@sysoev.ru                  }"
1130Sigor@sysoev.ru. auto/feature
1140Sigor@sysoev.ru
1150Sigor@sysoev.ru
1160Sigor@sysoev.runxt_feature="GCC __attribute__ aligned"
1170Sigor@sysoev.runxt_feature_name=NXT_HAVE_GCC_ATTRIBUTE_ALIGNED
1180Sigor@sysoev.runxt_feature_run=
1190Sigor@sysoev.runxt_feature_path=
1200Sigor@sysoev.runxt_feature_libs=
1210Sigor@sysoev.runxt_feature_test="int n __attribute__ ((aligned(64)));
1220Sigor@sysoev.ru
1230Sigor@sysoev.ru                  int main() {
1240Sigor@sysoev.ru                      return 1;
1250Sigor@sysoev.ru                  }"
1260Sigor@sysoev.ru. auto/feature
1270Sigor@sysoev.ru
1280Sigor@sysoev.ru
1290Sigor@sysoev.runxt_feature="GCC __attribute__ malloc"
1300Sigor@sysoev.runxt_feature_name=NXT_HAVE_GCC_ATTRIBUTE_MALLOC
1310Sigor@sysoev.runxt_feature_run=
1320Sigor@sysoev.runxt_feature_path=
1330Sigor@sysoev.runxt_feature_libs=
1340Sigor@sysoev.runxt_feature_test="#include <stdlib.h>
1350Sigor@sysoev.ru
1360Sigor@sysoev.ru                  void *f(void) __attribute__ ((__malloc__));
1370Sigor@sysoev.ru
1380Sigor@sysoev.ru                  void *f(void) {
1390Sigor@sysoev.ru                      return malloc(1);
1400Sigor@sysoev.ru                  }
1410Sigor@sysoev.ru
1420Sigor@sysoev.ru                  int main() {
1430Sigor@sysoev.ru                      if (f() != NULL) {
1440Sigor@sysoev.ru                          return 1;
1450Sigor@sysoev.ru                      }
1460Sigor@sysoev.ru                      return 0;
1470Sigor@sysoev.ru                  }"
1480Sigor@sysoev.ru. auto/feature
149