aboutsummaryrefslogtreecommitdiff
path: root/compiler/tests/interop/c/sysincludes.lc
blob: 811224d098bae83d6c917eec94e145a04ca9c66d (plain)
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

// The system headers are different on different system.
// This file has been tested on 64-bit Debian Linux with GCC and GNU libc

// Files that can be included. Actually using them is untested...
interop systest = "c" (:system, "errno.h", @[]);
interop systest = "c" (:system, "inttypes.h", @[]);
interop systest = "c" (:system, "locale.h", @[]);
interop systest = "c" (:system, "stdbool.h", @[]);
interop systest = "c" (:system, "stdint.h", @[]);
interop systest = "c" (:system, "math.h", @[]);
interop systest = "c" (:system, "setjmp.h", @[]);
interop systest = "c" (:system, "stddef.h", @[]);
interop systest = "c" (:system, "stdlib.h", @[]);
interop systest = "c" (:system, "string.h", @[]);
interop systest = "c" (:system, "time.h", @[]);
interop systest = "c" (:system, "uchar.h", @[]);
interop systest = "c" (:system, "ctype.h", @[]);
interop systest = "c" (:system, "wctype.h", @[]);
interop systest = "c" (:system, "signal.h", @[]);
interop systest = "c" (:system, "threads.h", @[]);

// Files that can be included but are not useful in LRL for some reason
interop systest = "c" (:system, "assert.h", @[]); // macros are ignored by LRL
interop systest = "c" (:system, "float.h", @[]); // macros
interop systest = "c" (:system, "iso646.h", @[]); // macros
interop systest = "c" (:system, "limits.h", @[]); // macros
interop systest = "c" (:system, "stdalign.h", @[]);
interop systest = "c" (:system, "stdnoreturn.h", @[]);

// LRL fails to parse these headers
//interop systest = "c" (:system, "complex.h", @[]); // uses float/double _Complex
//interop systest = "c" (:system, "fenv.h", @[]); // requires bitfield support
//interop systest = "c" (:system, "stdarg.h", @[]); // "no such type", probably __builtin_va_list [previously: crashes the C backend]
//interop systest = "c" (:system, "stdio.h", @[]); // uses stdarg (which in turn uses gcc internal stuff), causes multiple definitions. crashes if the headers above aren't included
//interop systest = "c" (:system, "tgmath.h", @[]); // includes complex.h which is not supported
//interop systest = "c" (:system, "wchar.h", @[]); // includes stdarg.h [previously: crashes the C backend]
//interop systest = "c" (:system, "stdatomic.h", @[]); // "no such type"