mirror of
https://github.com/MaskRay/ccls.git
synced 2024-11-29 11:01:57 +00:00
[waf] Add --use-clang-cxx in prep for using clang C++ API
This commit is contained in:
parent
6636617b4d
commit
5029173c8a
34
wscript
34
wscript
@ -78,6 +78,8 @@ def options(opt):
|
|||||||
grp = opt.add_option_group('Configuration options related to use of clang from the system (not recommended)')
|
grp = opt.add_option_group('Configuration options related to use of clang from the system (not recommended)')
|
||||||
grp.add_option('--use-system-clang', dest='use_system_clang', default=False, action='store_true',
|
grp.add_option('--use-system-clang', dest='use_system_clang', default=False, action='store_true',
|
||||||
help='enable use of clang from the system')
|
help='enable use of clang from the system')
|
||||||
|
grp.add_option('--use-clang-cxx', dest='use_clang_cxx', default=False, action='store_true',
|
||||||
|
help='use clang C++ API')
|
||||||
grp.add_option('--bundled-clang', dest='bundled_clang', default='4.0.0',
|
grp.add_option('--bundled-clang', dest='bundled_clang', default='4.0.0',
|
||||||
help='bundled clang version, downloaded from https://releases.llvm.org/ , e.g. 4.0.0 5.0.1')
|
help='bundled clang version, downloaded from https://releases.llvm.org/ , e.g. 4.0.0 5.0.1')
|
||||||
grp.add_option('--llvm-config', dest='llvm_config', default='llvm-config',
|
grp.add_option('--llvm-config', dest='llvm_config', default='llvm-config',
|
||||||
@ -145,6 +147,7 @@ def configure(ctx):
|
|||||||
ctx.load('clang_compilation_database', tooldir='.')
|
ctx.load('clang_compilation_database', tooldir='.')
|
||||||
|
|
||||||
ctx.env['use_system_clang'] = ctx.options.use_system_clang
|
ctx.env['use_system_clang'] = ctx.options.use_system_clang
|
||||||
|
ctx.env['use_clang_cxx'] = ctx.options.use_clang_cxx
|
||||||
ctx.env['llvm_config'] = ctx.options.llvm_config
|
ctx.env['llvm_config'] = ctx.options.llvm_config
|
||||||
ctx.env['bundled_clang'] = ctx.options.bundled_clang
|
ctx.env['bundled_clang'] = ctx.options.bundled_clang
|
||||||
def libname(lib):
|
def libname(lib):
|
||||||
@ -220,6 +223,8 @@ def configure(ctx):
|
|||||||
|
|
||||||
def build(bld):
|
def build(bld):
|
||||||
cc_files = bld.path.ant_glob(['src/*.cc', 'src/messages/*.cc'])
|
cc_files = bld.path.ant_glob(['src/*.cc', 'src/messages/*.cc'])
|
||||||
|
if bld.env['use_clang_cxx']:
|
||||||
|
cc_files += bld.path.ant_glob(['src/cxx/*.cc'])
|
||||||
|
|
||||||
lib = []
|
lib = []
|
||||||
if sys.platform.startswith('linux'):
|
if sys.platform.startswith('linux'):
|
||||||
@ -237,6 +242,22 @@ def build(bld):
|
|||||||
elif sys.platform == 'darwin':
|
elif sys.platform == 'darwin':
|
||||||
lib.append('pthread')
|
lib.append('pthread')
|
||||||
|
|
||||||
|
if bld.env['use_clang_cxx']:
|
||||||
|
# -fno-rtti is required for object files using clang/llvm C++ API
|
||||||
|
|
||||||
|
# The order is derived by topological sorting LINK_LIBS in clang/lib/*/CMakeLists.txt
|
||||||
|
lib.append('clangAST')
|
||||||
|
lib.append('clangLex')
|
||||||
|
lib.append('clangBasic')
|
||||||
|
|
||||||
|
# The order is derived from llvm-config --libs core
|
||||||
|
lib.append('LLVMCore')
|
||||||
|
lib.append('LLVMBinaryFormat')
|
||||||
|
lib.append('LLVMSupport')
|
||||||
|
lib.append('LLVMDemangle')
|
||||||
|
|
||||||
|
lib.append('ncurses')
|
||||||
|
|
||||||
if bld.env['use_system_clang']:
|
if bld.env['use_system_clang']:
|
||||||
if bld.env['llvm_config']:
|
if bld.env['llvm_config']:
|
||||||
# If --llvm-config is specified, set RPATH and use $bindir/bin/clang -###
|
# If --llvm-config is specified, set RPATH and use $bindir/bin/clang -###
|
||||||
@ -291,17 +312,28 @@ def build(bld):
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
rpath = bld.env['LIBPATH_clang']
|
rpath = bld.env['LIBPATH_clang']
|
||||||
|
|
||||||
|
#obj_type_printer = bld.objects(
|
||||||
|
# source='src/cxx/type_printer.cc',
|
||||||
|
# use='clang',
|
||||||
|
# cxxflags=['-fno-rtti'],
|
||||||
|
# includes=['libclang/'])
|
||||||
|
|
||||||
|
# https://waf.io/apidocs/tools/c_aliases.html#waflib.Tools.c_aliases.program
|
||||||
bld.program(
|
bld.program(
|
||||||
source=cc_files,
|
source=cc_files,
|
||||||
use='clang',
|
use='clang',
|
||||||
includes=[
|
includes=[
|
||||||
|
#'libclang/',
|
||||||
'src/',
|
'src/',
|
||||||
'third_party/',
|
'third_party/',
|
||||||
'third_party/doctest/',
|
'third_party/doctest/',
|
||||||
'third_party/loguru/',
|
'third_party/loguru/',
|
||||||
'third_party/rapidjson/include/',
|
'third_party/rapidjson/include/',
|
||||||
'third_party/sparsepp/'],
|
'third_party/sparsepp/'],
|
||||||
defines=['LOGURU_WITH_STREAMS=1',
|
defines=[#'_GLIBCXX_USE_CXX11_ABI=0', 'clang+llvm-$version-x86_64-linux-gnu-ubuntu-14.04' is pre CXX11_ABI
|
||||||
|
#'LOGURU_STACKTRACES=0',
|
||||||
|
'LOGURU_WITH_STREAMS=1',
|
||||||
'DEFAULT_RESOURCE_DIRECTORY="' + default_resource_directory + '"'],
|
'DEFAULT_RESOURCE_DIRECTORY="' + default_resource_directory + '"'],
|
||||||
lib=lib,
|
lib=lib,
|
||||||
rpath=rpath,
|
rpath=rpath,
|
||||||
|
Loading…
Reference in New Issue
Block a user