yams/plugins/symbol_extractor_treesitter/meson.build

47 lines
1.4 KiB
Meson

if not get_option('plugin-symbols')
subdir_done()
endif
cpp = meson.get_compiler('cpp')
# Conan-provided runtime (PkgConfigDeps)
ts_dep = dependency('tree-sitter', required: true)
if not ts_dep.found()
warning('tree-sitter dependency not found, skipping symbol_extractor_treesitter plugin.')
subdir_done()
endif
# dlopen for loading grammar at runtime
libdl_dep = cpp.find_library('dl', required: host_machine.system() != 'windows')
# C++20/23 symbol extractor sources - modular architecture
extractor_sources = files(
'plugin_api.cpp',
'symbol_extractor.cpp',
'grammar_loader.cpp',
)
tl_expected_dep = dependency('tl-expected', required: true)
spdlog_dep = dependency('spdlog', required: true)
fmt_dep = dependency('fmt', required: true)
yams_config_dep = dependency('yams_config', required: true)
if cpp.get_id() == 'msvc' or cpp.get_id() == 'clang-cl'
_plugin_std = 'vc++latest'
else
_plugin_std = 'c++23'
endif
symbol_extractor_plugin_target = shared_module(
'yams_symbol_extractor',
extractor_sources,
include_directories: [ include_directories('../../include'), include_directories('.') ],
dependencies: [ts_dep, libdl_dep, tl_expected_dep, spdlog_dep, fmt_dep, yams_config_dep],
override_options: ['cpp_std=' + _plugin_std],
build_by_default: true,
install: true,
install_dir: plugins_dir,
name_prefix: '', # Don't add 'lib' prefix
)
set_variable('symbol_extractor_plugin_target', symbol_extractor_plugin_target)