cmake_minimum_required(VERSION 4.0) project(test_provider LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1) find_package(glaze CONFIG REQUIRED) find_package(spdlog CONFIG REQUIRED) find_package(fmt CONFIG REQUIRED) find_package(Taskflow CONFIG REQUIRED) find_package(tree-sitter CONFIG REQUIRED) if(UNIX AND NOT APPLE) find_package(Threads REQUIRED) endif() set(SOURCES main.cc test_main.cppm ../test_lsp_any/test_framework.cppm fixtures.cppm completion_test.cppm json_flow_test.cppm definitions_test.cppm provider_misc_test.cppm provider_surface_test.cppm ../../src/tree-sitter/parser.c ../../src/tree-sitter/scanner.c) add_executable(${PROJECT_NAME} ${SOURCES}) if(TARGET std_module) add_dependencies(${PROJECT_NAME} std_module) endif() target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../../src) target_sources( ${PROJECT_NAME} PRIVATE FILE_SET cxx_modules TYPE CXX_MODULES BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../test_lsp_any ${CMAKE_CURRENT_SOURCE_DIR}/../../src FILES ${CMAKE_CURRENT_SOURCE_DIR}/test_main.cppm ${CMAKE_CURRENT_SOURCE_DIR}/../test_lsp_any/test_framework.cppm ${CMAKE_CURRENT_SOURCE_DIR}/fixtures.cppm ${CMAKE_CURRENT_SOURCE_DIR}/completion_test.cppm ${CMAKE_CURRENT_SOURCE_DIR}/json_flow_test.cppm ${CMAKE_CURRENT_SOURCE_DIR}/definitions_test.cppm ${CMAKE_CURRENT_SOURCE_DIR}/provider_misc_test.cppm ${CMAKE_CURRENT_SOURCE_DIR}/provider_surface_test.cppm ../../src/bridge/glaze.cppm ../../src/bridge/spdlog.cppm ../../src/bridge/taskflow.cppm ../../src/bridge/tree_sitter.cppm ../../src/utils/string.cppm ../../src/utils/text_coordinates.cppm ../../src/core/dispacther.cppm ../../src/scheduler/async_executor.cppm ../../src/manager/event_bus.cppm ../../src/manager/events.cppm ../../src/manager/detail/text_document.cppm ../../src/manager/document.cppm ../../src/manager/parser.cppm ../../src/manager/symbol.cppm ../../src/manager/manager_hub.cppm ../../src/language/ast/ast.cppm ../../src/language/ast/types.cppm ../../src/language/ast/deserializer.cppm ../../src/language/ast/deserializer_impl.cppm ../../src/language/ast/ts_utils.cppm ../../src/language/ast/detail.cppm ../../src/language/symbol/types.cppm ../../src/language/symbol/internal/builder.cppm ../../src/language/symbol/internal/store.cppm ../../src/language/symbol/internal/table.cppm ../../src/language/symbol/index/coordinator.cppm ../../src/language/symbol/index/location.cppm ../../src/language/symbol/index/scope.cppm ../../src/language/symbol/symbol.cppm ../../src/language/semantic/interface.cppm ../../src/language/semantic/semantic.cppm ../../src/language/semantic/analyzer.cppm ../../src/language/semantic/semantic_model.cppm ../../src/language/semantic/type_system.cppm ../../src/language/semantic/name_resolver.cppm ../../src/language/semantic/token_collector.cppm ../../src/language/semantic/graph/call.cppm ../../src/language/semantic/graph/reference.cppm ../../src/language/semantic/graph/inheritance.cppm ../../src/language/keyword/repo.cppm ../../src/codec/common.cppm ../../src/codec/transformer.cppm ../../src/codec/facade.cppm ../../src/protocol/common/basic_types.cppm ../../src/protocol/common/message.cppm ../../src/protocol/common/registration.cppm ../../src/protocol/window/progress.cppm ../../src/protocol/initialize/configuration.cppm ../../src/protocol/initialize/capabilities.cppm ../../src/protocol/workspace/workspace.cppm ../../src/protocol/workspace/file_operations.cppm ../../src/protocol/workspace/notebook.cppm ../../src/protocol/text_document/document_sync.cppm ../../src/protocol/text_document/completion.cppm ../../src/protocol/text_document/code_actions.cppm ../../src/protocol/text_document/diagnostics.cppm ../../src/protocol/text_document/document_features.cppm ../../src/protocol/text_document/formatting.cppm ../../src/protocol/text_document/inline_features.cppm ../../src/protocol/text_document/navigation.cppm ../../src/protocol/text_document/rename.cppm ../../src/protocol/text_document/semantic_tokens.cppm ../../src/protocol/text_document/signature_help.cppm ../../src/protocol/text_document/symbols.cppm ../../src/protocol/types.cppm ../../src/protocol/protocol.cppm ../../src/provider/base/interface.cppm ../../src/provider/text_document/completion.cppm ../../src/provider/text_document/definition.cppm ../../src/provider/text_document/did_open.cppm ../../src/provider/text_document/did_change.cppm ../../src/provider/text_document/did_close.cppm ../../src/provider/text_document/rename.cppm ../../src/provider/text_document/references.cppm ../../src/provider/text_document/semantic_tokens.cppm ../../src/provider/completion_item/resolve.cppm ../../src/provider/initialize/initialize.cppm ../../src/provider/initialized/initialized.cppm ../../src/provider/shutdown/shutdown.cppm ../../src/provider/exit/exit.cppm ../../src/provider/cancel_request/cancel_request.cppm ../../src/provider/trace/set_trace.cppm ../../src/provider/client/register_capability.cppm ../../src/provider/client/unregister_capability.cppm ../../src/provider/workspace/symbol.cppm ../../src/provider/call_hierarchy/incoming_calls.cppm ../../src/provider/call_hierarchy/outgoing_calls.cppm ../../src/provider/code_action/resolve.cppm ../../src/provider/code_lens/resolve.cppm ../../src/provider/document_link/resolve.cppm ../../src/provider/inlay_hint/resolve.cppm ../../src/provider/telemetry/event.cppm ../../src/provider/text_document/code_action.cppm ../../src/provider/text_document/code_lens.cppm ../../src/provider/text_document/color_presentation.cppm ../../src/provider/text_document/diagnostic.cppm ../../src/provider/text_document/document_color.cppm ../../src/provider/text_document/document_highlight.cppm ../../src/provider/text_document/document_link.cppm ../../src/provider/text_document/document_symbol.cppm ../../src/provider/text_document/folding_range.cppm ../../src/provider/text_document/formatting.cppm ../../src/provider/text_document/hover.cppm ../../src/provider/text_document/implementation.cppm ../../src/provider/text_document/inlay_hint.cppm ../../src/provider/text_document/inline_value.cppm ../../src/provider/text_document/linked_editing_range.cppm ../../src/provider/text_document/moniker.cppm ../../src/provider/text_document/on_type_formatting.cppm ../../src/provider/text_document/prepare_call_hierarchy.cppm ../../src/provider/text_document/prepare_rename.cppm ../../src/provider/text_document/prepare_type_hierarchy.cppm ../../src/provider/text_document/publish_diagnostics.cppm ../../src/provider/text_document/range_formatting.cppm ../../src/provider/text_document/selection_range.cppm ../../src/provider/text_document/signature_help.cppm ../../src/provider/text_document/type_definition.cppm ../../src/provider/type_hierarchy/subtypes.cppm ../../src/provider/type_hierarchy/supertypes.cppm ../../src/provider/window/log_message.cppm ../../src/provider/window/show_document.cppm ../../src/provider/window/show_message.cppm ../../src/provider/window/show_message_request.cppm ../../src/provider/window/work_done_progress_create.cppm ../../src/provider/workspace/apply_edit.cppm ../../src/provider/workspace/code_lens_refresh.cppm ../../src/provider/workspace/configuration.cppm ../../src/provider/workspace/diagnostic.cppm ../../src/provider/workspace/diagnostic_refresh.cppm ../../src/provider/workspace/did_change_configuration.cppm ../../src/provider/workspace/did_change_watched_files.cppm ../../src/provider/workspace/did_change_workspace_folders.cppm ../../src/provider/workspace/did_create_files.cppm ../../src/provider/workspace/did_delete_files.cppm ../../src/provider/workspace/did_rename_files.cppm ../../src/provider/workspace/execute_command.cppm ../../src/provider/workspace/inlay_hint_refresh.cppm ../../src/provider/workspace/inline_value_refresh.cppm ../../src/provider/workspace/semantic_tokens_refresh.cppm ../../src/provider/workspace/will_create_files.cppm ../../src/provider/workspace/will_delete_files.cppm ../../src/provider/workspace/will_rename_files.cppm ../../src/provider/workspace/workspace_folders.cppm ../../src/provider/workspace_symbol/resolve.cppm) target_compile_definitions(${PROJECT_NAME} PRIVATE SPDLOG_HEADER_ONLY FMT_HEADER_ONLY) target_link_libraries( ${PROJECT_NAME} PRIVATE glaze::glaze Taskflow::Taskflow spdlog::spdlog_header_only fmt::fmt-header-only tree-sitter::tree-sitter $<$:Threads::Threads>) target_compile_options( ${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic $<$:-g -O0> -Wno-import-implementation-partition-unit-in-interface-unit $<$:-O3>)