Files
tsl-devkit/lsp-server/test/test_ast/CMakeLists.txt
T
csh a9958f36fe 🔧 chore(repo): refresh local rules and ast defaults
add repository-local agent rules and refresh the architecture notes
for the current lsp layering.

register the AST self-test in CTest, initialize a few AST defaults,
and bump glaze to the newer conan package version.

verify: `cmake --build lsp-server/build/clang-linux/Release --target test_ast`
verify: `ctest --test-dir lsp-server/build/clang-linux/Release -R test_ast_unit --output-on-failure` passes
known issue: `ctest --test-dir lsp-server/build/clang-linux/Release -R test_ast_script --output-on-failure` still fails on `/home/csh/windows_share/tsf/funcext/Common/Tree/TTree.tsf` due to invalid TSF syntax (`FConfig &= v` missing trailing `;`).
2026-03-06 13:03:00 +08:00

77 lines
2.7 KiB
CMake

cmake_minimum_required(VERSION 4.0)
project(test_ast LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
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(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1)
set(SOURCES
main.cc
test.cppm
debug_printer.cppm
../../src/utils/string.cppm
../../src/tree-sitter/scanner.c
../../src/tree-sitter/parser.c)
add_executable(${PROJECT_NAME} ${SOURCES})
target_sources(
${PROJECT_NAME}
PRIVATE
FILE_SET cxx_modules TYPE CXX_MODULES
BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../src/language/ast
${CMAKE_CURRENT_SOURCE_DIR}/../../src/utils
${CMAKE_CURRENT_SOURCE_DIR}/../../src/bridge
${CMAKE_CURRENT_SOURCE_DIR}
FILES ../../src/bridge/tree_sitter.cppm
../../src/bridge/spdlog.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/utils/string.cppm
${CMAKE_CURRENT_SOURCE_DIR}/debug_printer.cppm
${CMAKE_CURRENT_SOURCE_DIR}/test.cppm)
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/../../src/language/ast)
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
$<$<PLATFORM_ID:Linux>:Threads::Threads>)
target_compile_options(
${PROJECT_NAME}
PRIVATE
-Wall -Wextra -Wpedantic $<$<CONFIG:Debug>:-g -O0>
-Wno-import-implementation-partition-unit-in-interface-unit
$<$<CONFIG:Release>:-O3>)
if(BUILD_TESTS)
add_test(NAME test_ast_unit
COMMAND $<TARGET_FILE:test_ast> --self-test)
add_test(NAME test_ast_script
COMMAND ${CMAKE_COMMAND} -E env
TEST_AST_OVERRIDE=$<TARGET_FILE:test_ast>
BUILD_PRESET=ctest
bash ${CMAKE_CURRENT_SOURCE_DIR}/test.sh)
endif()