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)