47 lines
1.4 KiB
Meson
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)
|