-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbuild.lua
89 lines (74 loc) · 2.42 KB
/
build.lua
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
require "olua"
olua.AUTO_EXPORT_PARENT = true
olua.AUTO_GEN_PROP = false
-------------------------------------------------------------------------------
--- clang compile options
-------------------------------------------------------------------------------
clang {
'-DOLUA_DEBUG',
'-I./src',
'-I./lua53',
'-I./',
'-I./llvm-project/clang/include'
}
-------------------------------------------------------------------------------
--- clang wrapper
-------------------------------------------------------------------------------
module 'clang'
output_dir 'src'
api_dir 'olua/addons/clang'
headers [[
#include "clang_wrapper.h"
]]
entry "clangwrapper::clang"
local pattern = {
'^CXGlobalOpt_', '^CXType_', '^CXCursor_', '^CXDiagnostic_', '^CXCallingConv_',
'^CXTypeNullability_', '^CXRefQualifier_', '^CXLinkage_', '^CXVisibility_',
'^CXAvailability_', '^CXLanguage_', '^CXTLS_', '^CXTemplateArgumentKind_',
'^CX_CXX', 'CX_SC_', '^CXTranslationUnit_', '^CXError_'
}
local function luaname(name)
for _, v in ipairs(pattern) do
if name:find(v) then
name = name:gsub(v, '')
end
end
return name
end
local function typeenum(cls)
return typeconf(cls)
.luaname(luaname)
end
luacls(function (cppcls)
return cppcls:gsub('clangwrapper::', 'clang.'):gsub('::', '.')
end)
typedef 'clangwrapper::string'
.luatype 'string'
.conv 'olua_$$_string'
typeconf 'clangwrapper::Cursor::SourceRange'
typeconf 'clangwrapper::Cursor::SourceLocation'
typeenum 'clangwrapper::AvailabilityKind'
typeenum 'clangwrapper::CallingConv'
typeenum 'clangwrapper::CursorKind'
typeenum 'clangwrapper::CXXAccessSpecifier'
typeenum 'clangwrapper::DiagnosticSeverity'
typeenum 'clangwrapper::GlobalOptFlags'
typeenum 'clangwrapper::LanguageKind'
typeenum 'clangwrapper::LinkageKind'
typeenum 'clangwrapper::RefQualifierKind'
typeenum 'clangwrapper::StorageClass'
typeenum 'clangwrapper::TemplateArgumentKind'
typeenum 'clangwrapper::TLSKind'
typeenum 'clangwrapper::TypeKind'
typeenum 'clangwrapper::TypeNullabilityKind'
typeenum 'clangwrapper::VisibilityKind'
typeenum 'clangwrapper::TranslationUnitFlags'
typeenum 'clangwrapper::ErrorCode'
typeconf 'clangwrapper::Diagnostic'
typeconf 'clangwrapper::File'
typeconf 'clangwrapper::Type'
typeconf 'clangwrapper::Cursor'
typeconf 'clangwrapper::Module'
typeconf 'clangwrapper::TranslationUnit'
typeconf 'clangwrapper::Index'
typeconf 'clangwrapper::clang'