File: cc-gnu.c

package info (click to toggle)
castxml 0.6.13-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 4,224 kB
  • sloc: cpp: 5,192; ansic: 352; sh: 85; makefile: 18
file content (91 lines) | stat: -rw-r--r-- 3,928 bytes parent folder | download
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
#include <stdio.h>
#include <string.h>

#define DEFINE_FLT(x)                                                         \
  "#define __" #x "_DECIMAL_DIG__\n"                                          \
  "#define __" #x "_DENORM_MIN__\n"                                           \
  "#define __" #x "_DIG__\n"                                                  \
  "#define __" #x "_EPSILON__\n"                                              \
  "#define __" #x "_HAS_DENORM__\n"                                           \
  "#define __" #x "_HAS_INFINITY__\n"                                         \
  "#define __" #x "_HAS_QUIET_NAN__\n"                                        \
  "#define __" #x "_IS_IEC_60559__\n"                                         \
  "#define __" #x "_MANT_DIG__\n"                                             \
  "#define __" #x "_MAX_10_EXP__\n"                                           \
  "#define __" #x "_MAX_EXP__\n"                                              \
  "#define __" #x "_MAX__\n"                                                  \
  "#define __" #x "_MIN_10_EXP__\n"                                           \
  "#define __" #x "_MIN_EXP__\n"                                              \
  "#define __" #x "_MIN__\n"                                                  \
  "#define __" #x "_NORM_MAX__\n"                                             \
  ""

int main(int argc, const char* argv[])
{
  int cpp = 0;
  const char* std_date = 0;
  const char* ver_major = "1";
  int i;
  for (i = 1; i < argc; ++i) {
    if (strncmp(argv[i], "--cc-define=", 12) == 0) {
      fprintf(stdout, "#define %s 1\n", argv[i] + 12);
    } else if (strncmp(argv[i], "--ver-major=", 12) == 0) {
      ver_major = argv[i] + 12;
    } else if (strncmp(argv[i], "-std=", 5) == 0) {
      std_date = argv[i] + 5;
    } else if (strcmp(argv[i], "-ansi") == 0) {
      fprintf(stdout, "#define __STRICT_ANSI__ 1\n");
    } else if (strcmp(argv[i], "-fsized-deallocation") == 0) {
      fprintf(stdout, "#define __cpp_sized_deallocation 201309L\n");
    } else if (strcmp(argv[i], "-tgt-armv7") == 0) {
      fprintf(stdout, "#define __arm__ 1\n");
      fprintf(stdout, "#define __ARM_ARCH 7\n");
    } else if (strcmp(argv[i], "-tgt-arm64v8") == 0) {
      fprintf(stdout, "#define __aarch64__ 1\n");
      fprintf(stdout, "#define __ARM_ARCH 8\n");
    } else if (strstr(argv[i], ".cpp")) {
      cpp = 1;
    }
  }
  if (cpp) {
    fprintf(stdout, "#define __cplusplus %s\n",
            std_date ? std_date : "199711L");
  } else if (std_date) {
    fprintf(stdout, "#define __STDC_VERSION__ %s\n", std_date);
  }
  fprintf(stdout,
#ifdef _WIN32
          "#define _WIN32 1\n"
          "#define __MINGW32__ 1\n"
#endif
          "#define __GNUC__ %s\n"
          "#define __has_include(x) x\n"
          "#define __has_include_next(x) x\n"
          "#define __GNUC_MINOR__ 1\n"
          "#define __bool __bool\n"
          "#define __builtin_vsx_foo __builtin_vsx_foo\n"
          "#define __pixel __pixel\n"
          "#define __vector __vector\n"
          "#define __has_last(x) x",
          ver_major);
  /* Test GCC builtin definitions for features Clang does not implement.  */
  fprintf(stdout, DEFINE_FLT(BFLT16));
  fprintf(stdout, DEFINE_FLT(FLT32));
  fprintf(stdout, DEFINE_FLT(FLT32X));
  fprintf(stdout, DEFINE_FLT(FLT64));
  fprintf(stdout, DEFINE_FLT(FLT64X));
  fprintf(stdout, DEFINE_FLT(FLT128));
  fprintf(stdout,
          "#define __STDCPP_BFLOAT16_T__\n"
          "#define __STDCPP_FLOAT128_T__\n"
          "#define __STDCPP_FLOAT16_T__\n"
          "#define __STDCPP_FLOAT32_T__\n"
          "#define __STDCPP_FLOAT64_T__\n");
  fprintf(stderr,
          "#include <...> search starts here:\n"
          " /some/include\n"
          " " TEST_DIR "/cc-gnu-builtin\n"
          " /some/Frameworks\n"
          " /some/CustomFW (framework directory)\n");
  return 0;
}