1 | /*==-- clang-c/BuildSystem.h - Utilities for use by build systems -*- C -*-===*\ |
---|---|
2 | |* *| |
3 | |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *| |
4 | |* Exceptions. *| |
5 | |* See https://llvm.org/LICENSE.txt for license information. *| |
6 | |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *| |
7 | |* *| |
8 | |*===----------------------------------------------------------------------===*| |
9 | |* *| |
10 | |* This header provides various utilities for use by build systems. *| |
11 | |* *| |
12 | \*===----------------------------------------------------------------------===*/ |
13 | |
14 | #ifndef LLVM_CLANG_C_BUILDSYSTEM_H |
15 | #define LLVM_CLANG_C_BUILDSYSTEM_H |
16 | |
17 | #include "clang-c/Platform.h" |
18 | #include "clang-c/CXErrorCode.h" |
19 | #include "clang-c/CXString.h" |
20 | |
21 | #ifdef __cplusplus |
22 | extern "C" { |
23 | #endif |
24 | |
25 | /** |
26 | * \defgroup BUILD_SYSTEM Build system utilities |
27 | * @{ |
28 | */ |
29 | |
30 | /** |
31 | * Return the timestamp for use with Clang's |
32 | * \c -fbuild-session-timestamp= option. |
33 | */ |
34 | CINDEX_LINKAGE unsigned long long clang_getBuildSessionTimestamp(void); |
35 | |
36 | /** |
37 | * Object encapsulating information about overlaying virtual |
38 | * file/directories over the real file system. |
39 | */ |
40 | typedef struct CXVirtualFileOverlayImpl *CXVirtualFileOverlay; |
41 | |
42 | /** |
43 | * Create a \c CXVirtualFileOverlay object. |
44 | * Must be disposed with \c clang_VirtualFileOverlay_dispose(). |
45 | * |
46 | * \param options is reserved, always pass 0. |
47 | */ |
48 | CINDEX_LINKAGE CXVirtualFileOverlay |
49 | clang_VirtualFileOverlay_create(unsigned options); |
50 | |
51 | /** |
52 | * Map an absolute virtual file path to an absolute real one. |
53 | * The virtual path must be canonicalized (not contain "."/".."). |
54 | * \returns 0 for success, non-zero to indicate an error. |
55 | */ |
56 | CINDEX_LINKAGE enum CXErrorCode |
57 | clang_VirtualFileOverlay_addFileMapping(CXVirtualFileOverlay, |
58 | const char *virtualPath, |
59 | const char *realPath); |
60 | |
61 | /** |
62 | * Set the case sensitivity for the \c CXVirtualFileOverlay object. |
63 | * The \c CXVirtualFileOverlay object is case-sensitive by default, this |
64 | * option can be used to override the default. |
65 | * \returns 0 for success, non-zero to indicate an error. |
66 | */ |
67 | CINDEX_LINKAGE enum CXErrorCode |
68 | clang_VirtualFileOverlay_setCaseSensitivity(CXVirtualFileOverlay, |
69 | int caseSensitive); |
70 | |
71 | /** |
72 | * Write out the \c CXVirtualFileOverlay object to a char buffer. |
73 | * |
74 | * \param options is reserved, always pass 0. |
75 | * \param out_buffer_ptr pointer to receive the buffer pointer, which should be |
76 | * disposed using \c clang_free(). |
77 | * \param out_buffer_size pointer to receive the buffer size. |
78 | * \returns 0 for success, non-zero to indicate an error. |
79 | */ |
80 | CINDEX_LINKAGE enum CXErrorCode |
81 | clang_VirtualFileOverlay_writeToBuffer(CXVirtualFileOverlay, unsigned options, |
82 | char **out_buffer_ptr, |
83 | unsigned *out_buffer_size); |
84 | |
85 | /** |
86 | * free memory allocated by libclang, such as the buffer returned by |
87 | * \c CXVirtualFileOverlay() or \c clang_ModuleMapDescriptor_writeToBuffer(). |
88 | * |
89 | * \param buffer memory pointer to free. |
90 | */ |
91 | CINDEX_LINKAGE void clang_free(void *buffer); |
92 | |
93 | /** |
94 | * Dispose a \c CXVirtualFileOverlay object. |
95 | */ |
96 | CINDEX_LINKAGE void clang_VirtualFileOverlay_dispose(CXVirtualFileOverlay); |
97 | |
98 | /** |
99 | * Object encapsulating information about a module.map file. |
100 | */ |
101 | typedef struct CXModuleMapDescriptorImpl *CXModuleMapDescriptor; |
102 | |
103 | /** |
104 | * Create a \c CXModuleMapDescriptor object. |
105 | * Must be disposed with \c clang_ModuleMapDescriptor_dispose(). |
106 | * |
107 | * \param options is reserved, always pass 0. |
108 | */ |
109 | CINDEX_LINKAGE CXModuleMapDescriptor |
110 | clang_ModuleMapDescriptor_create(unsigned options); |
111 | |
112 | /** |
113 | * Sets the framework module name that the module.map describes. |
114 | * \returns 0 for success, non-zero to indicate an error. |
115 | */ |
116 | CINDEX_LINKAGE enum CXErrorCode |
117 | clang_ModuleMapDescriptor_setFrameworkModuleName(CXModuleMapDescriptor, |
118 | const char *name); |
119 | |
120 | /** |
121 | * Sets the umbrealla header name that the module.map describes. |
122 | * \returns 0 for success, non-zero to indicate an error. |
123 | */ |
124 | CINDEX_LINKAGE enum CXErrorCode |
125 | clang_ModuleMapDescriptor_setUmbrellaHeader(CXModuleMapDescriptor, |
126 | const char *name); |
127 | |
128 | /** |
129 | * Write out the \c CXModuleMapDescriptor object to a char buffer. |
130 | * |
131 | * \param options is reserved, always pass 0. |
132 | * \param out_buffer_ptr pointer to receive the buffer pointer, which should be |
133 | * disposed using \c clang_free(). |
134 | * \param out_buffer_size pointer to receive the buffer size. |
135 | * \returns 0 for success, non-zero to indicate an error. |
136 | */ |
137 | CINDEX_LINKAGE enum CXErrorCode |
138 | clang_ModuleMapDescriptor_writeToBuffer(CXModuleMapDescriptor, unsigned options, |
139 | char **out_buffer_ptr, |
140 | unsigned *out_buffer_size); |
141 | |
142 | /** |
143 | * Dispose a \c CXModuleMapDescriptor object. |
144 | */ |
145 | CINDEX_LINKAGE void clang_ModuleMapDescriptor_dispose(CXModuleMapDescriptor); |
146 | |
147 | /** |
148 | * @} |
149 | */ |
150 | |
151 | #ifdef __cplusplus |
152 | } |
153 | #endif |
154 | |
155 | #endif /* CLANG_C_BUILD_SYSTEM_H */ |
156 | |
157 |