154 lines · c
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_H15#define LLVM_CLANG_C_BUILDSYSTEM_H16 17#include "clang-c/CXErrorCode.h"18#include "clang-c/CXString.h"19#include "clang-c/ExternC.h"20#include "clang-c/Platform.h"21 22LLVM_CLANG_C_EXTERN_C_BEGIN23 24/**25 * \defgroup BUILD_SYSTEM Build system utilities26 * @{27 */28 29/**30 * Return the timestamp for use with Clang's31 * \c -fbuild-session-timestamp= option.32 */33CINDEX_LINKAGE unsigned long long clang_getBuildSessionTimestamp(void);34 35/**36 * Object encapsulating information about overlaying virtual37 * file/directories over the real file system.38 */39typedef struct CXVirtualFileOverlayImpl *CXVirtualFileOverlay;40 41/**42 * Create a \c CXVirtualFileOverlay object.43 * Must be disposed with \c clang_VirtualFileOverlay_dispose().44 *45 * \param options is reserved, always pass 0.46 */47CINDEX_LINKAGE CXVirtualFileOverlay48clang_VirtualFileOverlay_create(unsigned options);49 50/**51 * Map an absolute virtual file path to an absolute real one.52 * The virtual path must be canonicalized (not contain "."/"..").53 * \returns 0 for success, non-zero to indicate an error.54 */55CINDEX_LINKAGE enum CXErrorCode56clang_VirtualFileOverlay_addFileMapping(CXVirtualFileOverlay,57 const char *virtualPath,58 const char *realPath);59 60/**61 * Set the case sensitivity for the \c CXVirtualFileOverlay object.62 * The \c CXVirtualFileOverlay object is case-sensitive by default, this63 * option can be used to override the default.64 * \returns 0 for success, non-zero to indicate an error.65 */66CINDEX_LINKAGE enum CXErrorCode67clang_VirtualFileOverlay_setCaseSensitivity(CXVirtualFileOverlay,68 int caseSensitive);69 70/**71 * Write out the \c CXVirtualFileOverlay object to a char buffer.72 *73 * \param options is reserved, always pass 0.74 * \param out_buffer_ptr pointer to receive the buffer pointer, which should be75 * disposed using \c clang_free().76 * \param out_buffer_size pointer to receive the buffer size.77 * \returns 0 for success, non-zero to indicate an error.78 */79CINDEX_LINKAGE enum CXErrorCode80clang_VirtualFileOverlay_writeToBuffer(CXVirtualFileOverlay, unsigned options,81 char **out_buffer_ptr,82 unsigned *out_buffer_size);83 84/**85 * free memory allocated by libclang, such as the buffer returned by86 * \c CXVirtualFileOverlay() or \c clang_ModuleMapDescriptor_writeToBuffer().87 *88 * \param buffer memory pointer to free.89 */90CINDEX_LINKAGE void clang_free(void *buffer);91 92/**93 * Dispose a \c CXVirtualFileOverlay object.94 */95CINDEX_LINKAGE void clang_VirtualFileOverlay_dispose(CXVirtualFileOverlay);96 97/**98 * Object encapsulating information about a module.modulemap file.99 */100typedef struct CXModuleMapDescriptorImpl *CXModuleMapDescriptor;101 102/**103 * Create a \c CXModuleMapDescriptor object.104 * Must be disposed with \c clang_ModuleMapDescriptor_dispose().105 *106 * \param options is reserved, always pass 0.107 */108CINDEX_LINKAGE CXModuleMapDescriptor109clang_ModuleMapDescriptor_create(unsigned options);110 111/**112 * Sets the framework module name that the module.modulemap describes.113 * \returns 0 for success, non-zero to indicate an error.114 */115CINDEX_LINKAGE enum CXErrorCode116clang_ModuleMapDescriptor_setFrameworkModuleName(CXModuleMapDescriptor,117 const char *name);118 119/**120 * Sets the umbrella header name that the module.modulemap describes.121 * \returns 0 for success, non-zero to indicate an error.122 */123CINDEX_LINKAGE enum CXErrorCode124clang_ModuleMapDescriptor_setUmbrellaHeader(CXModuleMapDescriptor,125 const char *name);126 127/**128 * Write out the \c CXModuleMapDescriptor object to a char buffer.129 *130 * \param options is reserved, always pass 0.131 * \param out_buffer_ptr pointer to receive the buffer pointer, which should be132 * disposed using \c clang_free().133 * \param out_buffer_size pointer to receive the buffer size.134 * \returns 0 for success, non-zero to indicate an error.135 */136CINDEX_LINKAGE enum CXErrorCode137clang_ModuleMapDescriptor_writeToBuffer(CXModuleMapDescriptor, unsigned options,138 char **out_buffer_ptr,139 unsigned *out_buffer_size);140 141/**142 * Dispose a \c CXModuleMapDescriptor object.143 */144CINDEX_LINKAGE void clang_ModuleMapDescriptor_dispose(CXModuleMapDescriptor);145 146/**147 * @}148 */149 150LLVM_CLANG_C_EXTERN_C_END151 152#endif /* CLANG_C_BUILD_SYSTEM_H */153 154