1add_subdirectory(llvm-libc-macros)
2add_subdirectory(llvm-libc-types)
3
4add_header(
5  llvm_libc_common_h
6  HDR
7    __llvm-libc-common.h
8)
9
10add_gen_header(
11  ctype
12  DEF_FILE ctype.h.def
13  GEN_HDR ctype.h
14  DEPENDS
15    .llvm_libc_common_h
16)
17
18add_gen_header(
19  fcntl
20  DEF_FILE fcntl.h.def
21  GEN_HDR fcntl.h
22  DEPENDS
23    .llvm_libc_common_h
24    .llvm-libc-macros.fcntl_macros
25    .llvm-libc-types.mode_t
26)
27
28add_gen_header(
29  fenv
30  DEF_FILE fenv.h.def
31  GEN_HDR fenv.h
32  DEPENDS
33    .llvm_libc_common_h
34    .llvm-libc-types.fenv_t
35    .llvm-libc-types.fexcept_t
36)
37
38add_gen_header(
39  inttypes
40  DEF_FILE inttypes.h.def
41  GEN_HDR inttypes.h
42  DEPENDS
43    .llvm_libc_common_h
44    .llvm-libc-types.imaxdiv_t
45)
46
47add_gen_header(
48  math
49  DEF_FILE math.h.def
50  GEN_HDR math.h
51  DEPENDS
52    .llvm_libc_common_h
53    .llvm-libc-types.double_t
54    .llvm-libc-types.float_t
55)
56
57add_gen_header(
58  assert_h
59  DEF_FILE assert.h.def
60  GEN_HDR assert.h
61  DEPENDS
62    .llvm_libc_common_h
63)
64
65add_gen_header(
66  string
67  DEF_FILE string.h.def
68  GEN_HDR string.h
69  DEPENDS
70    .llvm_libc_common_h
71    .llvm-libc-types.size_t
72)
73
74add_gen_header(
75  time
76  DEF_FILE time.h.def
77  GEN_HDR time.h
78  DEPENDS
79    .llvm_libc_common_h
80    .llvm-libc-types.time_t
81    .llvm-libc-types.struct_tm
82)
83
84add_gen_header(
85  threads
86  DEF_FILE threads.h.def
87  GEN_HDR threads.h
88  DEPENDS
89    .llvm_libc_common_h
90    .llvm-libc-types.__call_once_func_t
91    .llvm-libc-types.cnd_t
92    .llvm-libc-types.mtx_t
93    .llvm-libc-types.once_flag
94    .llvm-libc-types.thrd_start_t
95    .llvm-libc-types.thrd_t
96)
97
98add_gen_header(
99  errno
100  DEF_FILE errno.h.def
101  PARAMS
102    platform_errno=../config/${LIBC_TARGET_OS}/errno.h.in
103  GEN_HDR errno.h
104  DATA_FILES
105    ../config/${LIBC_TARGET_OS}/errno.h.in
106)
107
108add_gen_header(
109  signal
110  DEF_FILE signal.h.def
111  PARAMS
112    platform_signal=../config/${LIBC_TARGET_OS}/signal.h.in
113  GEN_HDR signal.h
114  DATA_FILES
115    ../config/${LIBC_TARGET_OS}/signal.h.in
116  DEPENDS
117    .llvm-libc-types.struct_sigaction
118    .llvm-libc-types.__sighandler_t
119)
120
121add_gen_header(
122  stdio
123  DEF_FILE stdio.h.def
124  GEN_HDR stdio.h
125  DEPENDS
126    .llvm_libc_common_h
127    .llvm-libc-macros.file_seek_macros
128    .llvm-libc-types.FILE
129    .llvm-libc-types.size_t
130)
131
132add_gen_header(
133  stdlib
134  DEF_FILE stdlib.h.def
135  GEN_HDR stdlib.h
136  DEPENDS
137    .llvm_libc_common_h
138    .llvm-libc-types.__bsearchcompare_t
139    .llvm-libc-types.__qsortcompare_t
140    .llvm-libc-types.div_t
141    .llvm-libc-types.ldiv_t
142    .llvm-libc-types.lldiv_t
143    .llvm-libc-types.size_t
144    .llvm-libc-types.__atexithandler_t
145)
146
147add_gen_header(
148  unistd
149  DEF_FILE unistd.h.def
150  GEN_HDR unistd.h
151  DEPENDS
152    .llvm_libc_common_h
153    .llvm-libc-macros.file_seek_macros
154    .llvm-libc-types.size_t
155    .llvm-libc-types.ssize_t
156)
157
158# TODO: Not all platforms will have a include/sys directory. Add the sys
159# directory and the targets for sys/*.h files conditional to the OS requiring
160# them.
161file(MAKE_DIRECTORY "sys")
162
163add_gen_header(
164  sys_mman
165  DEF_FILE sys/mman.h.def
166  GEN_HDR sys/mman.h
167  DEPENDS
168    .llvm_libc_common_h
169    .llvm-libc-types.off_t
170    .llvm-libc-types.ssize_t
171)
172
173add_gen_header(
174  sys_stat
175  DEF_FILE sys/stat.h.def
176  GEN_HDR sys/stat.h
177  DEPENDS
178    .llvm_libc_common_h
179    .llvm-libc-types.mode_t
180)
181
182add_gen_header(
183  sys_syscall
184  DEF_FILE sys/syscall.h.def
185  GEN_HDR sys/syscall.h
186  PARAMS
187    syscall_numbers=../config/${LIBC_TARGET_OS}/syscall_numbers.h.inc
188  DATA_FILES
189    ../config/${LIBC_TARGET_OS}/syscall_numbers.h.inc
190)
191