16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines/*==-- clang-c/BuildSystem.h - Utilities for use by build systems -*- C -*-===*\ 2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|* *| 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|* The LLVM Compiler Infrastructure *| 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|* *| 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|* This file is distributed under the University of Illinois Open Source *| 6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|* License. See LICENSE.TXT for details. *| 7651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|* *| 8651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|*===----------------------------------------------------------------------===*| 9651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|* *| 10651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|* This header provides various utilities for use by build systems. *| 11651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines|* *| 12651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines\*===----------------------------------------------------------------------===*/ 13651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 14651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#ifndef CLANG_C_BUILD_SYSTEM_H 15651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#define CLANG_C_BUILD_SYSTEM_H 16651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 17651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include "clang-c/Platform.h" 18651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include "clang-c/CXErrorCode.h" 19651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#include "clang-c/CXString.h" 20651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 21651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#ifdef __cplusplus 22651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesextern "C" { 23651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#endif 24651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 25651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 26651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \defgroup BUILD_SYSTEM Build system utilities 27651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * @{ 28651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 29651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 30651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 31651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Return the timestamp for use with Clang's 32651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \c -fbuild-session-timestamp= option. 33651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 34651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE unsigned long long clang_getBuildSessionTimestamp(void); 35651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 36651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 37651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Object encapsulating information about overlaying virtual 38651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * file/directories over the real file system. 39651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 40651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinestypedef struct CXVirtualFileOverlayImpl *CXVirtualFileOverlay; 41651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 42651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 43651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Create a \c CXVirtualFileOverlay object. 44651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * Must be disposed with \c clang_VirtualFileOverlay_dispose(). 45651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * 46651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \param options is reserved, always pass 0. 47651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 48651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE CXVirtualFileOverlay 49651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclang_VirtualFileOverlay_create(unsigned options); 50651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 51651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 52651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Map an absolute virtual file path to an absolute real one. 53651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * The virtual path must be canonicalized (not contain "."/".."). 54651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \returns 0 for success, non-zero to indicate an error. 55651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 56651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE enum CXErrorCode 57651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclang_VirtualFileOverlay_addFileMapping(CXVirtualFileOverlay, 58651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines const char *virtualPath, 59651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines const char *realPath); 60651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 61651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 62651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Set the case sensitivity for the \c CXVirtualFileOverlay object. 63651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * The \c CXVirtualFileOverlay object is case-sensitive by default, this 64651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * option can be used to override the default. 65651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \returns 0 for success, non-zero to indicate an error. 66651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 67651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE enum CXErrorCode 68651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclang_VirtualFileOverlay_setCaseSensitivity(CXVirtualFileOverlay, 69651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines int caseSensitive); 70651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 71651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 72651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Write out the \c CXVirtualFileOverlay object to a char buffer. 73651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * 74651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \param options is reserved, always pass 0. 75651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \param out_buffer_ptr pointer to receive the buffer pointer, which should be 76651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * disposed using \c free(). 77651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \param out_buffer_size pointer to receive the buffer size. 78651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \returns 0 for success, non-zero to indicate an error. 79651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 80651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE enum CXErrorCode 81651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclang_VirtualFileOverlay_writeToBuffer(CXVirtualFileOverlay, unsigned options, 82651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines char **out_buffer_ptr, 83651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines unsigned *out_buffer_size); 84651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 85651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 86651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Dispose a \c CXVirtualFileOverlay object. 87651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 88651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE void clang_VirtualFileOverlay_dispose(CXVirtualFileOverlay); 89651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 90651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 91651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Object encapsulating information about a module.map file. 92651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 93651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinestypedef struct CXModuleMapDescriptorImpl *CXModuleMapDescriptor; 94651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 95651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 96651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Create a \c CXModuleMapDescriptor object. 97651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * Must be disposed with \c clang_ModuleMapDescriptor_dispose(). 98651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * 99651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \param options is reserved, always pass 0. 100651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 101651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE CXModuleMapDescriptor 102651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclang_ModuleMapDescriptor_create(unsigned options); 103651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 104651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 105651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Sets the framework module name that the module.map describes. 106651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \returns 0 for success, non-zero to indicate an error. 107651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 108651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE enum CXErrorCode 109651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclang_ModuleMapDescriptor_setFrameworkModuleName(CXModuleMapDescriptor, 110651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines const char *name); 111651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 112651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 113651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Sets the umbrealla header name that the module.map describes. 114651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \returns 0 for success, non-zero to indicate an error. 115651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 116651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE enum CXErrorCode 117651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclang_ModuleMapDescriptor_setUmbrellaHeader(CXModuleMapDescriptor, 118651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines const char *name); 119651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 120651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 121651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Write out the \c CXModuleMapDescriptor object to a char buffer. 122651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * 123651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \param options is reserved, always pass 0. 124651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \param out_buffer_ptr pointer to receive the buffer pointer, which should be 125651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * disposed using \c free(). 126651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \param out_buffer_size pointer to receive the buffer size. 127651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \returns 0 for success, non-zero to indicate an error. 128651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 129651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE enum CXErrorCode 130651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesclang_ModuleMapDescriptor_writeToBuffer(CXModuleMapDescriptor, unsigned options, 131651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines char **out_buffer_ptr, 132651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines unsigned *out_buffer_size); 133651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 134651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 135651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * \brief Dispose a \c CXModuleMapDescriptor object. 136651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 137651f13cea278ec967336033dd032faef0e9fc2ecStephen HinesCINDEX_LINKAGE void clang_ModuleMapDescriptor_dispose(CXModuleMapDescriptor); 138651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 139651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines/** 140651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines * @} 141651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines */ 142651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 143651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#ifdef __cplusplus 144651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 145651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#endif 146651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 147651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines#endif /* CLANG_C_BUILD_SYSTEM_H */ 148651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 149