2026-02-06 18:44:42 -07:00
|
|
|
cmake_minimum_required(VERSION 3.20)
|
2026-02-08 09:06:50 -07:00
|
|
|
project(WhetstoneEditor LANGUAGES C CXX)
|
2026-02-06 18:44:42 -07:00
|
|
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
2026-02-09 09:35:00 -07:00
|
|
|
set(FETCHCONTENT_UPDATES_DISCONNECTED ON)
|
2026-02-06 18:44:42 -07:00
|
|
|
|
2026-02-09 14:54:55 -07:00
|
|
|
if(MSVC)
|
|
|
|
|
add_compile_options(/FS)
|
|
|
|
|
endif()
|
|
|
|
|
|
2026-02-07 22:06:50 -07:00
|
|
|
# Use vcpkg-installed nlohmann_json instead of FetchContent
|
|
|
|
|
find_package(nlohmann_json CONFIG REQUIRED)
|
2026-02-06 19:11:48 -07:00
|
|
|
|
2026-02-08 09:06:50 -07:00
|
|
|
# Tree-sitter core (from vcpkg)
|
|
|
|
|
find_package(unofficial-tree-sitter CONFIG REQUIRED)
|
|
|
|
|
|
|
|
|
|
# Tree-sitter grammar libraries (not available in vcpkg, fetched from GitHub)
|
|
|
|
|
include(FetchContent)
|
|
|
|
|
|
|
|
|
|
FetchContent_Declare(
|
|
|
|
|
tree-sitter-python
|
|
|
|
|
GIT_REPOSITORY https://github.com/tree-sitter/tree-sitter-python.git
|
|
|
|
|
GIT_TAG v0.23.6
|
|
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
FetchContent_Declare(
|
|
|
|
|
tree-sitter-cpp
|
|
|
|
|
GIT_REPOSITORY https://github.com/tree-sitter/tree-sitter-cpp.git
|
|
|
|
|
GIT_TAG v0.23.4
|
|
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
FetchContent_Declare(
|
|
|
|
|
tree-sitter-elisp
|
|
|
|
|
GIT_REPOSITORY https://github.com/Wilfred/tree-sitter-elisp.git
|
|
|
|
|
GIT_TAG 1.3.0
|
|
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
|
)
|
|
|
|
|
|
2026-02-09 09:22:03 -07:00
|
|
|
FetchContent_Declare(
|
|
|
|
|
tree-sitter-javascript
|
|
|
|
|
GIT_REPOSITORY https://github.com/tree-sitter/tree-sitter-javascript.git
|
2026-02-09 14:47:51 -07:00
|
|
|
GIT_TAG v0.23.1
|
2026-02-09 09:22:03 -07:00
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
FetchContent_Declare(
|
|
|
|
|
tree-sitter-typescript
|
|
|
|
|
GIT_REPOSITORY https://github.com/tree-sitter/tree-sitter-typescript.git
|
2026-02-09 14:47:51 -07:00
|
|
|
GIT_TAG v0.23.2
|
2026-02-09 09:22:03 -07:00
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
FetchContent_Declare(
|
|
|
|
|
tree-sitter-java
|
|
|
|
|
GIT_REPOSITORY https://github.com/tree-sitter/tree-sitter-java.git
|
2026-02-09 14:47:51 -07:00
|
|
|
GIT_TAG v0.23.5
|
2026-02-09 09:22:03 -07:00
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
FetchContent_Declare(
|
|
|
|
|
tree-sitter-rust
|
|
|
|
|
GIT_REPOSITORY https://github.com/tree-sitter/tree-sitter-rust.git
|
2026-02-09 14:47:51 -07:00
|
|
|
GIT_TAG v0.23.3
|
2026-02-09 09:22:03 -07:00
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
|
SOURCE_DIR ${CMAKE_BINARY_DIR}/_deps/tree-sitter-rust-src2
|
|
|
|
|
BINARY_DIR ${CMAKE_BINARY_DIR}/_deps/tree-sitter-rust-build2
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
FetchContent_Declare(
|
|
|
|
|
tree-sitter-go
|
|
|
|
|
GIT_REPOSITORY https://github.com/tree-sitter/tree-sitter-go.git
|
2026-02-09 14:47:51 -07:00
|
|
|
GIT_TAG v0.23.4
|
2026-02-09 09:22:03 -07:00
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
|
)
|
|
|
|
|
|
2026-02-09 09:26:54 -07:00
|
|
|
FetchContent_Declare(
|
|
|
|
|
tinyfiledialogs
|
|
|
|
|
GIT_REPOSITORY https://github.com/native-toolkit/tinyfiledialogs.git
|
2026-02-09 14:47:51 -07:00
|
|
|
GIT_TAG 2.9.3
|
2026-02-09 09:26:54 -07:00
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
|
)
|
|
|
|
|
|
2026-02-08 09:06:50 -07:00
|
|
|
# Populate without add_subdirectory (grammars have their own CMakeLists with conflicting targets)
|
|
|
|
|
FetchContent_GetProperties(tree-sitter-python)
|
|
|
|
|
if(NOT tree-sitter-python_POPULATED)
|
|
|
|
|
FetchContent_Populate(tree-sitter-python)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
FetchContent_GetProperties(tree-sitter-cpp)
|
|
|
|
|
if(NOT tree-sitter-cpp_POPULATED)
|
|
|
|
|
FetchContent_Populate(tree-sitter-cpp)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
FetchContent_GetProperties(tree-sitter-elisp)
|
|
|
|
|
if(NOT tree-sitter-elisp_POPULATED)
|
|
|
|
|
FetchContent_Populate(tree-sitter-elisp)
|
|
|
|
|
endif()
|
|
|
|
|
|
2026-02-09 09:22:03 -07:00
|
|
|
FetchContent_GetProperties(tree-sitter-javascript)
|
|
|
|
|
if(NOT tree-sitter-javascript_POPULATED)
|
|
|
|
|
FetchContent_Populate(tree-sitter-javascript)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
FetchContent_GetProperties(tree-sitter-typescript)
|
|
|
|
|
if(NOT tree-sitter-typescript_POPULATED)
|
|
|
|
|
FetchContent_Populate(tree-sitter-typescript)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
FetchContent_GetProperties(tree-sitter-java)
|
|
|
|
|
if(NOT tree-sitter-java_POPULATED)
|
|
|
|
|
FetchContent_Populate(tree-sitter-java)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
FetchContent_GetProperties(tree-sitter-rust)
|
|
|
|
|
if(NOT tree-sitter-rust_POPULATED)
|
|
|
|
|
FetchContent_Populate(tree-sitter-rust)
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
FetchContent_GetProperties(tree-sitter-go)
|
|
|
|
|
if(NOT tree-sitter-go_POPULATED)
|
|
|
|
|
FetchContent_Populate(tree-sitter-go)
|
|
|
|
|
endif()
|
|
|
|
|
|
2026-02-09 09:26:54 -07:00
|
|
|
FetchContent_GetProperties(tinyfiledialogs)
|
|
|
|
|
if(NOT tinyfiledialogs_POPULATED)
|
|
|
|
|
FetchContent_Populate(tinyfiledialogs)
|
|
|
|
|
endif()
|
|
|
|
|
|
2026-02-08 09:06:50 -07:00
|
|
|
# Build tree-sitter-python grammar as a static C library
|
|
|
|
|
add_library(tree_sitter_python STATIC
|
|
|
|
|
${tree-sitter-python_SOURCE_DIR}/src/parser.c
|
|
|
|
|
${tree-sitter-python_SOURCE_DIR}/src/scanner.c
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(tree_sitter_python PUBLIC
|
|
|
|
|
${tree-sitter-python_SOURCE_DIR}/src
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(tree_sitter_python PUBLIC unofficial::tree-sitter::tree-sitter)
|
|
|
|
|
|
|
|
|
|
# Build tree-sitter-cpp grammar as a static C library
|
|
|
|
|
# Note: tree-sitter-cpp scanner is C++ (.cc)
|
|
|
|
|
add_library(tree_sitter_cpp STATIC
|
|
|
|
|
${tree-sitter-cpp_SOURCE_DIR}/src/parser.c
|
|
|
|
|
${tree-sitter-cpp_SOURCE_DIR}/src/scanner.c
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(tree_sitter_cpp PUBLIC
|
|
|
|
|
${tree-sitter-cpp_SOURCE_DIR}/src
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(tree_sitter_cpp PUBLIC unofficial::tree-sitter::tree-sitter)
|
|
|
|
|
|
|
|
|
|
# Build tree-sitter-elisp grammar as a static C library
|
|
|
|
|
add_library(tree_sitter_elisp STATIC
|
|
|
|
|
${tree-sitter-elisp_SOURCE_DIR}/src/parser.c
|
|
|
|
|
)
|
|
|
|
|
target_include_directories(tree_sitter_elisp PUBLIC
|
|
|
|
|
${tree-sitter-elisp_SOURCE_DIR}/src
|
|
|
|
|
)
|
|
|
|
|
target_link_libraries(tree_sitter_elisp PUBLIC unofficial::tree-sitter::tree-sitter)
|
|
|
|
|
|
2026-02-09 09:22:03 -07:00
|
|
|
# Build tree-sitter-javascript grammar as a static C library
|
|
|
|
|
set(_ts_js_src ${tree-sitter-javascript_SOURCE_DIR}/src/parser.c)
|
|
|
|
|
if(EXISTS "${tree-sitter-javascript_SOURCE_DIR}/src/scanner.c")
|
|
|
|
|
list(APPEND _ts_js_src "${tree-sitter-javascript_SOURCE_DIR}/src/scanner.c")
|
|
|
|
|
endif()
|
|
|
|
|
add_library(tree_sitter_javascript STATIC ${_ts_js_src})
|
|
|
|
|
target_include_directories(tree_sitter_javascript PUBLIC ${tree-sitter-javascript_SOURCE_DIR}/src)
|
|
|
|
|
target_link_libraries(tree_sitter_javascript PUBLIC unofficial::tree-sitter::tree-sitter)
|
|
|
|
|
|
|
|
|
|
# Build tree-sitter-typescript grammar as a static C library (typescript only)
|
|
|
|
|
set(_ts_ts_src ${tree-sitter-typescript_SOURCE_DIR}/typescript/src/parser.c)
|
|
|
|
|
if(EXISTS "${tree-sitter-typescript_SOURCE_DIR}/typescript/src/scanner.c")
|
|
|
|
|
list(APPEND _ts_ts_src "${tree-sitter-typescript_SOURCE_DIR}/typescript/src/scanner.c")
|
|
|
|
|
endif()
|
|
|
|
|
add_library(tree_sitter_typescript STATIC ${_ts_ts_src})
|
|
|
|
|
target_include_directories(tree_sitter_typescript PUBLIC ${tree-sitter-typescript_SOURCE_DIR}/typescript/src)
|
|
|
|
|
target_link_libraries(tree_sitter_typescript PUBLIC unofficial::tree-sitter::tree-sitter)
|
|
|
|
|
|
|
|
|
|
# Build tree-sitter-java grammar as a static C library
|
|
|
|
|
set(_ts_java_src ${tree-sitter-java_SOURCE_DIR}/src/parser.c)
|
|
|
|
|
if(EXISTS "${tree-sitter-java_SOURCE_DIR}/src/scanner.c")
|
|
|
|
|
list(APPEND _ts_java_src "${tree-sitter-java_SOURCE_DIR}/src/scanner.c")
|
|
|
|
|
endif()
|
|
|
|
|
add_library(tree_sitter_java STATIC ${_ts_java_src})
|
|
|
|
|
target_include_directories(tree_sitter_java PUBLIC ${tree-sitter-java_SOURCE_DIR}/src)
|
|
|
|
|
target_link_libraries(tree_sitter_java PUBLIC unofficial::tree-sitter::tree-sitter)
|
|
|
|
|
|
|
|
|
|
# Build tree-sitter-rust grammar as a static C library
|
|
|
|
|
set(_ts_rust_src ${tree-sitter-rust_SOURCE_DIR}/src/parser.c)
|
|
|
|
|
if(EXISTS "${tree-sitter-rust_SOURCE_DIR}/src/scanner.c")
|
|
|
|
|
list(APPEND _ts_rust_src "${tree-sitter-rust_SOURCE_DIR}/src/scanner.c")
|
|
|
|
|
endif()
|
|
|
|
|
add_library(tree_sitter_rust STATIC ${_ts_rust_src})
|
|
|
|
|
target_include_directories(tree_sitter_rust PUBLIC ${tree-sitter-rust_SOURCE_DIR}/src)
|
|
|
|
|
target_link_libraries(tree_sitter_rust PUBLIC unofficial::tree-sitter::tree-sitter)
|
|
|
|
|
|
|
|
|
|
# Build tree-sitter-go grammar as a static C library
|
|
|
|
|
set(_ts_go_src ${tree-sitter-go_SOURCE_DIR}/src/parser.c)
|
|
|
|
|
if(EXISTS "${tree-sitter-go_SOURCE_DIR}/src/scanner.c")
|
|
|
|
|
list(APPEND _ts_go_src "${tree-sitter-go_SOURCE_DIR}/src/scanner.c")
|
|
|
|
|
endif()
|
|
|
|
|
add_library(tree_sitter_go STATIC ${_ts_go_src})
|
|
|
|
|
target_include_directories(tree_sitter_go PUBLIC ${tree-sitter-go_SOURCE_DIR}/src)
|
|
|
|
|
target_link_libraries(tree_sitter_go PUBLIC unofficial::tree-sitter::tree-sitter)
|
|
|
|
|
|
2026-02-09 09:26:54 -07:00
|
|
|
# tinyfiledialogs (single C file)
|
|
|
|
|
add_library(tinyfiledialogs STATIC ${tinyfiledialogs_SOURCE_DIR}/tinyfiledialogs.c)
|
|
|
|
|
target_include_directories(tinyfiledialogs PUBLIC ${tinyfiledialogs_SOURCE_DIR})
|
|
|
|
|
|
2026-02-06 18:44:42 -07:00
|
|
|
add_executable(step1_test tests/step1_test.cpp)
|
|
|
|
|
target_include_directories(step1_test PRIVATE src)
|
2026-02-06 18:54:18 -07:00
|
|
|
|
|
|
|
|
add_executable(step2_test tests/step2_test.cpp)
|
|
|
|
|
target_include_directories(step2_test PRIVATE src)
|
2026-02-06 19:01:35 -07:00
|
|
|
|
|
|
|
|
add_executable(step3_test tests/step3_test.cpp)
|
|
|
|
|
target_include_directories(step3_test PRIVATE src)
|
2026-02-06 19:04:37 -07:00
|
|
|
|
|
|
|
|
add_executable(step4_test tests/step4_test.cpp)
|
|
|
|
|
target_include_directories(step4_test PRIVATE src)
|
2026-02-06 19:11:48 -07:00
|
|
|
|
|
|
|
|
add_executable(step5_test tests/step5_test.cpp)
|
|
|
|
|
target_include_directories(step5_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step5_test PRIVATE nlohmann_json::nlohmann_json)
|
2026-02-06 19:14:45 -07:00
|
|
|
|
|
|
|
|
add_executable(step6_test tests/step6_test.cpp)
|
|
|
|
|
target_include_directories(step6_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step6_test PRIVATE nlohmann_json::nlohmann_json)
|
2026-02-06 19:31:38 -07:00
|
|
|
|
|
|
|
|
add_executable(step7_test tests/step7_test.cpp)
|
|
|
|
|
target_include_directories(step7_test PRIVATE src)
|
2026-02-06 19:35:48 -07:00
|
|
|
|
|
|
|
|
add_executable(step8_test tests/step8_test.cpp)
|
|
|
|
|
target_include_directories(step8_test PRIVATE src)
|
2026-02-06 19:39:24 -07:00
|
|
|
|
|
|
|
|
add_executable(step9_test tests/step9_test.cpp)
|
|
|
|
|
target_include_directories(step9_test PRIVATE src)
|
2026-02-06 19:42:57 -07:00
|
|
|
|
|
|
|
|
add_executable(step10_test tests/step10_test.cpp)
|
|
|
|
|
target_include_directories(step10_test PRIVATE src)
|
2026-02-06 19:56:57 -07:00
|
|
|
|
|
|
|
|
add_executable(step11_test tests/step11_test.cpp)
|
|
|
|
|
target_include_directories(step11_test PRIVATE src)
|
2026-02-06 20:04:12 -07:00
|
|
|
|
|
|
|
|
add_executable(step12_test tests/step12_test.cpp)
|
|
|
|
|
target_include_directories(step12_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 20:07:25 -07:00
|
|
|
add_executable(step13_test tests/step13_test.cpp)
|
|
|
|
|
target_include_directories(step13_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 20:10:59 -07:00
|
|
|
add_executable(step14_test tests/step14_test.cpp)
|
|
|
|
|
target_include_directories(step14_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 20:14:51 -07:00
|
|
|
add_executable(step15_test tests/step15_test.cpp)
|
|
|
|
|
target_include_directories(step15_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 20:22:37 -07:00
|
|
|
add_executable(step16_test tests/step16_test.cpp)
|
|
|
|
|
target_include_directories(step16_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 20:44:07 -07:00
|
|
|
add_executable(step17_test tests/step17_test.cpp)
|
|
|
|
|
target_include_directories(step17_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 21:02:01 -07:00
|
|
|
add_executable(step18_test tests/step18_test.cpp)
|
|
|
|
|
target_include_directories(step18_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 21:30:12 -07:00
|
|
|
add_executable(step19_test tests/step19_test.cpp)
|
|
|
|
|
target_include_directories(step19_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 21:37:45 -07:00
|
|
|
add_executable(step20_test tests/step20_test.cpp)
|
|
|
|
|
target_include_directories(step20_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 21:45:02 -07:00
|
|
|
add_executable(step21_test tests/step21_test.cpp)
|
|
|
|
|
target_include_directories(step21_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 21:48:25 -07:00
|
|
|
add_executable(step22_test tests/step22_test.cpp)
|
|
|
|
|
target_include_directories(step22_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 21:55:58 -07:00
|
|
|
add_executable(step23_test tests/step23_test.cpp)
|
|
|
|
|
target_include_directories(step23_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 22:15:46 -07:00
|
|
|
add_executable(step24_test tests/step24_test.cpp)
|
|
|
|
|
target_include_directories(step24_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 22:27:19 -07:00
|
|
|
add_executable(step25_test tests/step25_test.cpp)
|
|
|
|
|
target_include_directories(step25_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 22:43:07 -07:00
|
|
|
add_executable(step26_test tests/step26_test.cpp)
|
|
|
|
|
target_include_directories(step26_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 23:07:48 -07:00
|
|
|
add_executable(step27_test tests/step27_test.cpp)
|
|
|
|
|
target_include_directories(step27_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 23:12:59 -07:00
|
|
|
add_executable(step28_test tests/step28_test.cpp)
|
|
|
|
|
target_include_directories(step28_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 23:19:58 -07:00
|
|
|
add_executable(step29_test tests/step29_test.cpp)
|
|
|
|
|
target_include_directories(step29_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 23:30:34 -07:00
|
|
|
add_executable(step30_test tests/step30_test.cpp)
|
|
|
|
|
target_include_directories(step30_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 23:35:12 -07:00
|
|
|
add_executable(step31_test tests/step31_test.cpp)
|
|
|
|
|
target_include_directories(step31_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 23:41:36 -07:00
|
|
|
add_executable(step32_test tests/step32_test.cpp)
|
|
|
|
|
target_include_directories(step32_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 23:47:18 -07:00
|
|
|
add_executable(step33_test tests/step33_test.cpp)
|
|
|
|
|
target_include_directories(step33_test PRIVATE src)
|
|
|
|
|
|
2026-02-06 23:50:56 -07:00
|
|
|
add_executable(step34_test tests/step34_test.cpp)
|
|
|
|
|
target_include_directories(step34_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 05:31:36 -07:00
|
|
|
add_executable(step35_test tests/step35_test.cpp)
|
|
|
|
|
target_include_directories(step35_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 06:19:10 -07:00
|
|
|
add_executable(step36_test tests/step36_test.cpp)
|
|
|
|
|
target_include_directories(step36_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 06:52:35 -07:00
|
|
|
add_executable(step37_test tests/step37_test.cpp)
|
|
|
|
|
target_include_directories(step37_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 07:01:23 -07:00
|
|
|
add_executable(step38_test tests/step38_test.cpp)
|
|
|
|
|
target_include_directories(step38_test PRIVATE src)
|
|
|
|
|
|
Sprint 3 plan and docs: adopt canonical annotation system from annotations/Memory strategy.md
- Add Sprint 3 plan (37 steps, global 39-75) with canonical memory annotations,
test quality requirements, global step numbering, and Sprint 2 overlap notes
- Refactor all docs to use canonical annotation families (@Deallocate, @Lifetime,
@Reclaim, @Owner, @Allocate) replacing simplified @deref 4-strategy system
- Replace @perf with canonical @Hot/@Cold, @Inline, @Pure from annotations/6 optimization
- Replace @memory-footprint, @execution-mode, @deref-explicit with canonical equivalents
- Update REQUIREMENTS_OVERVIEW, SPRINT_1_REQUIREMENTS, SPRINT_2_PLAN, SPRINT_2_VISION,
C++ Implementation Roadmap, example files, and progress report
- Remove duplicate bonus steps 41-42, consolidate Phase 3h from 7 to 4 steps
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:11:23 -07:00
|
|
|
add_executable(step39_test tests/step39_test.cpp)
|
|
|
|
|
target_include_directories(step39_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:18:13 -07:00
|
|
|
add_executable(step40_test tests/step40_test.cpp)
|
|
|
|
|
target_include_directories(step40_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:18:51 -07:00
|
|
|
add_executable(step41_test tests/step41_test.cpp)
|
|
|
|
|
target_include_directories(step41_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:19:25 -07:00
|
|
|
add_executable(step42_test tests/step42_test.cpp)
|
|
|
|
|
target_include_directories(step42_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:20:04 -07:00
|
|
|
add_executable(step43_test tests/step43_test.cpp)
|
|
|
|
|
target_include_directories(step43_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:20:41 -07:00
|
|
|
add_executable(step44_test tests/step44_test.cpp)
|
|
|
|
|
target_include_directories(step44_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:21:27 -07:00
|
|
|
add_executable(step45_test tests/step45_test.cpp)
|
|
|
|
|
target_include_directories(step45_test PRIVATE src)
|
2026-02-08 09:06:50 -07:00
|
|
|
target_link_libraries(step45_test PRIVATE unofficial::tree-sitter::tree-sitter tree_sitter_python)
|
2026-02-07 08:21:27 -07:00
|
|
|
|
2026-02-07 08:22:00 -07:00
|
|
|
add_executable(step46_test tests/step46_test.cpp)
|
|
|
|
|
target_include_directories(step46_test PRIVATE src)
|
2026-02-08 09:06:50 -07:00
|
|
|
target_link_libraries(step46_test PRIVATE unofficial::tree-sitter::tree-sitter tree_sitter_cpp)
|
2026-02-07 08:22:00 -07:00
|
|
|
|
2026-02-07 08:22:35 -07:00
|
|
|
add_executable(step47_test tests/step47_test.cpp)
|
|
|
|
|
target_include_directories(step47_test PRIVATE src)
|
2026-02-08 09:06:50 -07:00
|
|
|
target_link_libraries(step47_test PRIVATE unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_elisp)
|
|
|
|
|
|
|
|
|
|
add_executable(step48_test tests/step48_test.cpp)
|
|
|
|
|
target_include_directories(step48_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step48_test PRIVATE unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_cpp tree_sitter_elisp)
|
|
|
|
|
|
|
|
|
|
add_executable(step49_test tests/step49_test.cpp)
|
|
|
|
|
target_include_directories(step49_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step49_test PRIVATE unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_cpp tree_sitter_elisp)
|
2026-02-07 08:22:35 -07:00
|
|
|
|
Phase 3c: Classical editing mode (Steps 50-53)
Implement TextASTSync and TextEditor — the core text editing layer
that bridges raw text and the structured AST. TextASTSync provides
bidirectional text-AST sync with debounce via TreeSitterParser and
generators. TextEditor wraps a text buffer with edit operations,
undo/redo that tracks AST state, find/replace, and selection.
New files: TextASTSync.h, TextEditor.h, step50_test.cpp
Updated: step51/53 tests (replaced stubs with real includes),
CMakeLists.txt (tree-sitter linking), PROGRESS.md
Fixed: step53 find-position off-by-one, canRedo assert logic
19/19 tests pass (step50: 8, step51: 5, step53: 6)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 15:45:59 -07:00
|
|
|
add_executable(step50_test tests/step50_test.cpp)
|
|
|
|
|
target_include_directories(step50_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step50_test PRIVATE unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_cpp tree_sitter_elisp)
|
|
|
|
|
|
2026-02-07 08:23:11 -07:00
|
|
|
add_executable(step51_test tests/step51_test.cpp)
|
|
|
|
|
target_include_directories(step51_test PRIVATE src)
|
Phase 3c: Classical editing mode (Steps 50-53)
Implement TextASTSync and TextEditor — the core text editing layer
that bridges raw text and the structured AST. TextASTSync provides
bidirectional text-AST sync with debounce via TreeSitterParser and
generators. TextEditor wraps a text buffer with edit operations,
undo/redo that tracks AST state, find/replace, and selection.
New files: TextASTSync.h, TextEditor.h, step50_test.cpp
Updated: step51/53 tests (replaced stubs with real includes),
CMakeLists.txt (tree-sitter linking), PROGRESS.md
Fixed: step53 find-position off-by-one, canRedo assert logic
19/19 tests pass (step50: 8, step51: 5, step53: 6)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 15:45:59 -07:00
|
|
|
target_link_libraries(step51_test PRIVATE unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_cpp tree_sitter_elisp)
|
2026-02-07 08:23:11 -07:00
|
|
|
|
Phase 3c complete: syntax highlighting and configurable keybindings (Steps 52, 54)
Step 52: SyntaxHighlighter walks tree-sitter CST to produce colored
token spans (keyword, string, comment, number, function, parameter,
type, operator, etc.) for Python, C++, and Elisp.
Step 54: KeybindingManager with swappable profiles — VSCode (default),
JetBrains, and Emacs. Each profile maps 25+ actions (file, edit,
search, nav, view, code, build) to key combos. Supports custom
overrides and reverse lookup.
Design direction: editor targets VSCode/JetBrains look-and-feel.
Keybinding profile selectable at startup. VSCode is default.
Phase 3c totals: 37/37 tests pass across 5 steps (50-54).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 16:12:10 -07:00
|
|
|
add_executable(step52_test tests/step52_test.cpp)
|
|
|
|
|
target_include_directories(step52_test PRIVATE src)
|
2026-02-09 14:54:55 -07:00
|
|
|
target_link_libraries(step52_test PRIVATE
|
|
|
|
|
unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
|
|
|
|
tree_sitter_elisp
|
|
|
|
|
tree_sitter_javascript
|
|
|
|
|
tree_sitter_typescript
|
|
|
|
|
tree_sitter_java
|
|
|
|
|
tree_sitter_rust
|
|
|
|
|
tree_sitter_go)
|
Phase 3c complete: syntax highlighting and configurable keybindings (Steps 52, 54)
Step 52: SyntaxHighlighter walks tree-sitter CST to produce colored
token spans (keyword, string, comment, number, function, parameter,
type, operator, etc.) for Python, C++, and Elisp.
Step 54: KeybindingManager with swappable profiles — VSCode (default),
JetBrains, and Emacs. Each profile maps 25+ actions (file, edit,
search, nav, view, code, build) to key combos. Supports custom
overrides and reverse lookup.
Design direction: editor targets VSCode/JetBrains look-and-feel.
Keybinding profile selectable at startup. VSCode is default.
Phase 3c totals: 37/37 tests pass across 5 steps (50-54).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 16:12:10 -07:00
|
|
|
|
2026-02-07 08:23:48 -07:00
|
|
|
add_executable(step53_test tests/step53_test.cpp)
|
|
|
|
|
target_include_directories(step53_test PRIVATE src)
|
Phase 3c: Classical editing mode (Steps 50-53)
Implement TextASTSync and TextEditor — the core text editing layer
that bridges raw text and the structured AST. TextASTSync provides
bidirectional text-AST sync with debounce via TreeSitterParser and
generators. TextEditor wraps a text buffer with edit operations,
undo/redo that tracks AST state, find/replace, and selection.
New files: TextASTSync.h, TextEditor.h, step50_test.cpp
Updated: step51/53 tests (replaced stubs with real includes),
CMakeLists.txt (tree-sitter linking), PROGRESS.md
Fixed: step53 find-position off-by-one, canRedo assert logic
19/19 tests pass (step50: 8, step51: 5, step53: 6)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 15:45:59 -07:00
|
|
|
target_link_libraries(step53_test PRIVATE unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_cpp tree_sitter_elisp)
|
2026-02-07 08:23:48 -07:00
|
|
|
|
Phase 3c complete: syntax highlighting and configurable keybindings (Steps 52, 54)
Step 52: SyntaxHighlighter walks tree-sitter CST to produce colored
token spans (keyword, string, comment, number, function, parameter,
type, operator, etc.) for Python, C++, and Elisp.
Step 54: KeybindingManager with swappable profiles — VSCode (default),
JetBrains, and Emacs. Each profile maps 25+ actions (file, edit,
search, nav, view, code, build) to key combos. Supports custom
overrides and reverse lookup.
Design direction: editor targets VSCode/JetBrains look-and-feel.
Keybinding profile selectable at startup. VSCode is default.
Phase 3c totals: 37/37 tests pass across 5 steps (50-54).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 16:12:10 -07:00
|
|
|
add_executable(step54_test tests/step54_test.cpp)
|
|
|
|
|
target_include_directories(step54_test PRIVATE src)
|
|
|
|
|
|
2026-02-08 16:27:22 -07:00
|
|
|
add_executable(step55_test tests/step55_test.cpp)
|
|
|
|
|
target_include_directories(step55_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:24:23 -07:00
|
|
|
add_executable(step56_test tests/step56_test.cpp)
|
|
|
|
|
target_include_directories(step56_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:24:58 -07:00
|
|
|
add_executable(step57_test tests/step57_test.cpp)
|
|
|
|
|
target_include_directories(step57_test PRIVATE src)
|
|
|
|
|
|
2026-02-08 16:27:22 -07:00
|
|
|
add_executable(step58_test tests/step58_test.cpp)
|
|
|
|
|
target_include_directories(step58_test PRIVATE src)
|
|
|
|
|
|
Phase 3e complete: Agent API Extend (Steps 59, 61-63)
Step 59: WebSocketAgentServer with session management, JSON-RPC routing, MockWebSocketTransport (10/10 tests)
Step 61: ASTMutationAPI with setProperty, updateNode, deleteNode, insertNode, journal, OptimizationLock warning (6/6 tests)
Step 62: ContextAPI with getInScopeSymbols, getCallHierarchy, getDependencyGraph (6/6 tests)
Step 63: BatchMutationAPI with atomic applySequence and reverse-order rollback (5/5 tests)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 20:57:39 -07:00
|
|
|
add_executable(step59_test tests/step59_test.cpp)
|
|
|
|
|
target_include_directories(step59_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step59_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-07 08:25:37 -07:00
|
|
|
add_executable(step60_test tests/step60_test.cpp)
|
|
|
|
|
target_include_directories(step60_test PRIVATE src)
|
2026-02-07 22:54:18 -07:00
|
|
|
target_link_libraries(step60_test PRIVATE nlohmann_json::nlohmann_json)
|
2026-02-07 08:25:37 -07:00
|
|
|
|
2026-02-07 08:26:14 -07:00
|
|
|
add_executable(step61_test tests/step61_test.cpp)
|
|
|
|
|
target_include_directories(step61_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:26:57 -07:00
|
|
|
add_executable(step62_test tests/step62_test.cpp)
|
|
|
|
|
target_include_directories(step62_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:27:36 -07:00
|
|
|
add_executable(step63_test tests/step63_test.cpp)
|
|
|
|
|
target_include_directories(step63_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:28:18 -07:00
|
|
|
add_executable(step64_test tests/step64_test.cpp)
|
|
|
|
|
target_include_directories(step64_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:28:51 -07:00
|
|
|
add_executable(step65_test tests/step65_test.cpp)
|
|
|
|
|
target_include_directories(step65_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:29:33 -07:00
|
|
|
add_executable(step66_test tests/step66_test.cpp)
|
|
|
|
|
target_include_directories(step66_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:30:09 -07:00
|
|
|
add_executable(step67_test tests/step67_test.cpp)
|
|
|
|
|
target_include_directories(step67_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:30:51 -07:00
|
|
|
add_executable(step68_test tests/step68_test.cpp)
|
|
|
|
|
target_include_directories(step68_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:31:30 -07:00
|
|
|
add_executable(step69_test tests/step69_test.cpp)
|
|
|
|
|
target_include_directories(step69_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:32:11 -07:00
|
|
|
add_executable(step70_test tests/step70_test.cpp)
|
|
|
|
|
target_include_directories(step70_test PRIVATE src)
|
|
|
|
|
|
2026-02-07 08:32:59 -07:00
|
|
|
add_executable(step71_test tests/step71_test.cpp)
|
|
|
|
|
target_include_directories(step71_test PRIVATE src)
|
|
|
|
|
|
Sprint 3 complete: Phases 3g+3h (Steps 68-75), all 75 steps done
Phase 3g — Optimization Pipeline (17/17 tests):
Step 68: TransformEngine — constant folding, dead code elimination, OptimizationLock warning
Step 69: StrategyAwareOptimizer — annotation-constrained (@Reclaim allows, @Owner blocks duplication, @Deallocate blocks reorder, @Allocate blocks dynamic)
Step 70: StrategyValidator — post-optimization invariants (use-after-free, leak, aliasing)
Step 71: IncrementalOptimizer — transform journal, undo by ID, provenance tracking
Phase 3h — Integration & Validation (26/26 tests):
Step 72: Pipeline — end-to-end parse→infer→validate→optimize→generate for Python/C++
Step 73: Error handling — empty ASTs, null roots, nonexistent IDs, unannotated code
Step 74: Performance benchmarks — 1000-fn AST 1ms, JSON round-trip 4ms, 50 transforms+undo 1ms
Step 75: APIDocGenerator — structured docs for 23 components across 6 categories
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 07:35:37 -07:00
|
|
|
add_executable(step72_test tests/step72_test.cpp)
|
|
|
|
|
target_include_directories(step72_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step72_test PRIVATE unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_cpp tree_sitter_elisp)
|
|
|
|
|
|
|
|
|
|
add_executable(step73_test tests/step73_test.cpp)
|
|
|
|
|
target_include_directories(step73_test PRIVATE src)
|
|
|
|
|
|
|
|
|
|
add_executable(step74_test tests/step74_test.cpp)
|
|
|
|
|
target_include_directories(step74_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step74_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
|
|
|
|
add_executable(step75_test tests/step75_test.cpp)
|
|
|
|
|
target_include_directories(step75_test PRIVATE src)
|
|
|
|
|
|
2026-02-09 08:22:02 -07:00
|
|
|
add_executable(step76_test tests/step76_test.cpp)
|
|
|
|
|
target_include_directories(step76_test PRIVATE src)
|
|
|
|
|
|
2026-02-09 09:04:12 -07:00
|
|
|
add_executable(step77_test tests/step77_test.cpp)
|
|
|
|
|
target_include_directories(step77_test PRIVATE src)
|
2026-02-09 14:54:55 -07:00
|
|
|
target_link_libraries(step77_test PRIVATE
|
|
|
|
|
imgui::imgui
|
|
|
|
|
unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
|
|
|
|
tree_sitter_elisp)
|
2026-02-09 09:04:12 -07:00
|
|
|
|
2026-02-09 09:06:07 -07:00
|
|
|
add_executable(step78_test tests/step78_test.cpp)
|
|
|
|
|
target_include_directories(step78_test PRIVATE src)
|
2026-02-09 14:54:55 -07:00
|
|
|
target_link_libraries(step78_test PRIVATE
|
|
|
|
|
imgui::imgui
|
|
|
|
|
unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
|
|
|
|
tree_sitter_elisp)
|
2026-02-09 09:06:07 -07:00
|
|
|
|
2026-02-09 09:07:53 -07:00
|
|
|
add_executable(step79_test tests/step79_test.cpp)
|
|
|
|
|
target_include_directories(step79_test PRIVATE src)
|
2026-02-09 14:54:55 -07:00
|
|
|
target_link_libraries(step79_test PRIVATE
|
|
|
|
|
imgui::imgui
|
|
|
|
|
unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
|
|
|
|
tree_sitter_elisp)
|
2026-02-09 09:07:53 -07:00
|
|
|
|
2026-02-09 09:10:01 -07:00
|
|
|
add_executable(step80_test tests/step80_test.cpp)
|
|
|
|
|
target_include_directories(step80_test PRIVATE src)
|
2026-02-09 14:54:55 -07:00
|
|
|
target_link_libraries(step80_test PRIVATE
|
|
|
|
|
imgui::imgui
|
|
|
|
|
unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
|
|
|
|
tree_sitter_elisp)
|
2026-02-09 09:10:01 -07:00
|
|
|
|
2026-02-09 09:12:34 -07:00
|
|
|
add_executable(step81_test tests/step81_test.cpp)
|
|
|
|
|
target_include_directories(step81_test PRIVATE src)
|
2026-02-09 14:54:55 -07:00
|
|
|
target_link_libraries(step81_test PRIVATE
|
|
|
|
|
imgui::imgui
|
|
|
|
|
unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
|
|
|
|
tree_sitter_elisp)
|
2026-02-09 09:12:34 -07:00
|
|
|
|
2026-02-09 09:14:47 -07:00
|
|
|
add_executable(step82_test tests/step82_test.cpp)
|
|
|
|
|
target_include_directories(step82_test PRIVATE src)
|
2026-02-09 14:54:55 -07:00
|
|
|
target_link_libraries(step82_test PRIVATE
|
|
|
|
|
imgui::imgui
|
|
|
|
|
unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
|
|
|
|
tree_sitter_elisp)
|
2026-02-09 09:14:47 -07:00
|
|
|
|
2026-02-09 09:22:03 -07:00
|
|
|
add_executable(step83_test tests/step83_test.cpp)
|
|
|
|
|
target_include_directories(step83_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step83_test PRIVATE unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
|
|
|
|
tree_sitter_elisp
|
|
|
|
|
tree_sitter_javascript
|
|
|
|
|
tree_sitter_typescript
|
|
|
|
|
tree_sitter_java
|
|
|
|
|
tree_sitter_rust
|
|
|
|
|
tree_sitter_go)
|
|
|
|
|
|
2026-02-09 09:26:54 -07:00
|
|
|
add_executable(step84_test tests/step84_test.cpp src/FileDialog.cpp)
|
|
|
|
|
target_include_directories(step84_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step84_test PRIVATE tinyfiledialogs)
|
|
|
|
|
|
2026-02-09 09:29:01 -07:00
|
|
|
add_executable(step85_test tests/step85_test.cpp)
|
|
|
|
|
target_include_directories(step85_test PRIVATE src)
|
|
|
|
|
|
2026-02-09 09:35:00 -07:00
|
|
|
add_executable(step86_test tests/step86_test.cpp)
|
|
|
|
|
target_include_directories(step86_test PRIVATE src)
|
|
|
|
|
|
2026-02-09 09:37:12 -07:00
|
|
|
add_executable(step87_test tests/step87_test.cpp)
|
|
|
|
|
target_include_directories(step87_test PRIVATE src)
|
|
|
|
|
|
2026-02-09 09:38:57 -07:00
|
|
|
add_executable(step88_test tests/step88_test.cpp)
|
|
|
|
|
target_include_directories(step88_test PRIVATE src)
|
|
|
|
|
|
2026-02-09 09:40:47 -07:00
|
|
|
add_executable(step89_test tests/step89_test.cpp)
|
|
|
|
|
target_include_directories(step89_test PRIVATE src)
|
|
|
|
|
|
2026-02-09 09:49:29 -07:00
|
|
|
add_executable(step90_test tests/step90_test.cpp)
|
|
|
|
|
target_include_directories(step90_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step90_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 09:55:48 -07:00
|
|
|
add_executable(step91_test tests/step91_test.cpp)
|
|
|
|
|
target_include_directories(step91_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step91_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 09:59:25 -07:00
|
|
|
add_executable(step92_test tests/step92_test.cpp)
|
|
|
|
|
target_include_directories(step92_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step92_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 10:02:03 -07:00
|
|
|
add_executable(step93_test tests/step93_test.cpp)
|
|
|
|
|
target_include_directories(step93_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step93_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 10:05:58 -07:00
|
|
|
add_executable(step94_test tests/step94_test.cpp)
|
|
|
|
|
target_include_directories(step94_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step94_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 10:22:13 -07:00
|
|
|
add_executable(step94a_test tests/step94a_test.cpp)
|
|
|
|
|
target_include_directories(step94a_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step94a_test PRIVATE nlohmann_json::nlohmann_json unofficial::tree-sitter::tree-sitter tree_sitter_python)
|
|
|
|
|
|
2026-02-09 10:10:25 -07:00
|
|
|
add_executable(step95_test tests/step95_test.cpp)
|
|
|
|
|
target_include_directories(step95_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step95_test PRIVATE imgui::imgui unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_cpp tree_sitter_elisp)
|
|
|
|
|
|
2026-02-09 10:14:40 -07:00
|
|
|
add_executable(step96_test tests/step96_test.cpp)
|
|
|
|
|
target_include_directories(step96_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step96_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 10:25:58 -07:00
|
|
|
add_executable(step97_test tests/step97_test.cpp)
|
|
|
|
|
target_include_directories(step97_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step97_test PRIVATE imgui::imgui unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_cpp tree_sitter_elisp)
|
|
|
|
|
|
2026-02-09 10:28:59 -07:00
|
|
|
add_executable(step98_test tests/step98_test.cpp)
|
|
|
|
|
target_include_directories(step98_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step98_test PRIVATE imgui::imgui unofficial::tree-sitter::tree-sitter tree_sitter_python tree_sitter_cpp tree_sitter_elisp)
|
|
|
|
|
|
2026-02-09 10:32:19 -07:00
|
|
|
add_executable(step99_test tests/step99_test.cpp)
|
|
|
|
|
target_include_directories(step99_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step99_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 10:36:06 -07:00
|
|
|
add_executable(step100_test tests/step100_test.cpp)
|
|
|
|
|
target_include_directories(step100_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step100_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 10:39:48 -07:00
|
|
|
add_executable(step101_test tests/step101_test.cpp)
|
|
|
|
|
target_include_directories(step101_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step101_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 10:41:54 -07:00
|
|
|
add_executable(step102_test tests/step102_test.cpp)
|
|
|
|
|
target_include_directories(step102_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step102_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 10:52:23 -07:00
|
|
|
add_executable(step103_test tests/step103_test.cpp)
|
|
|
|
|
target_include_directories(step103_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step103_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 10:57:25 -07:00
|
|
|
add_executable(step104_test tests/step104_test.cpp)
|
|
|
|
|
target_include_directories(step104_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step104_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 11:02:25 -07:00
|
|
|
add_executable(step105_test tests/step105_test.cpp)
|
|
|
|
|
target_include_directories(step105_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step105_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 11:08:57 -07:00
|
|
|
add_executable(step106_test tests/step106_test.cpp)
|
|
|
|
|
target_include_directories(step106_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step106_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 11:44:37 -07:00
|
|
|
add_executable(step107_test tests/step107_test.cpp)
|
|
|
|
|
target_include_directories(step107_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step107_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 11:46:57 -07:00
|
|
|
add_executable(step107a_test tests/step107a_test.cpp)
|
|
|
|
|
target_include_directories(step107a_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step107a_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 11:54:25 -07:00
|
|
|
add_executable(step107b_test tests/step107b_test.cpp)
|
|
|
|
|
target_include_directories(step107b_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step107b_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 11:57:18 -07:00
|
|
|
add_executable(step107c_test tests/step107c_test.cpp)
|
|
|
|
|
target_include_directories(step107c_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step107c_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:05:39 -07:00
|
|
|
add_executable(step108_test tests/step108_test.cpp)
|
|
|
|
|
target_include_directories(step108_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step108_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:12:08 -07:00
|
|
|
add_executable(step109_test tests/step109_test.cpp)
|
|
|
|
|
target_include_directories(step109_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step109_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:18:54 -07:00
|
|
|
add_executable(step110_test tests/step110_test.cpp)
|
|
|
|
|
target_include_directories(step110_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step110_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:23:45 -07:00
|
|
|
add_executable(step111_test tests/step111_test.cpp)
|
|
|
|
|
target_include_directories(step111_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step111_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:26:13 -07:00
|
|
|
add_executable(step112_test tests/step112_test.cpp)
|
|
|
|
|
target_include_directories(step112_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step112_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:30:31 -07:00
|
|
|
add_executable(step113_test tests/step113_test.cpp)
|
|
|
|
|
target_include_directories(step113_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step113_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:33:15 -07:00
|
|
|
add_executable(step114_test tests/step114_test.cpp)
|
|
|
|
|
target_include_directories(step114_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step114_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:49:14 -07:00
|
|
|
add_executable(step115_test tests/step115_test.cpp)
|
|
|
|
|
target_include_directories(step115_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step115_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:52:20 -07:00
|
|
|
add_executable(step116_test tests/step116_test.cpp)
|
|
|
|
|
target_include_directories(step116_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step116_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 12:56:27 -07:00
|
|
|
add_executable(step117_test tests/step117_test.cpp)
|
|
|
|
|
target_include_directories(step117_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step117_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 13:02:43 -07:00
|
|
|
add_executable(step118_test tests/step118_test.cpp)
|
|
|
|
|
target_include_directories(step118_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step118_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 13:04:58 -07:00
|
|
|
add_executable(step119_test tests/step119_test.cpp)
|
|
|
|
|
target_include_directories(step119_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step119_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 13:12:37 -07:00
|
|
|
add_executable(step120_test tests/step120_test.cpp)
|
|
|
|
|
target_include_directories(step120_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step120_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 15:00:26 -07:00
|
|
|
add_executable(step121_test tests/step121_test.cpp)
|
|
|
|
|
target_include_directories(step121_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step121_test PRIVATE nlohmann_json::nlohmann_json)
|
|
|
|
|
|
2026-02-09 15:04:25 -07:00
|
|
|
add_executable(step122_test tests/step122_test.cpp)
|
|
|
|
|
target_include_directories(step122_test PRIVATE src)
|
|
|
|
|
target_link_libraries(step122_test PRIVATE imgui::imgui)
|
|
|
|
|
|
2026-02-07 22:06:50 -07:00
|
|
|
find_package(SDL2 CONFIG REQUIRED)
|
|
|
|
|
find_package(OpenGL REQUIRED)
|
|
|
|
|
find_package(glad CONFIG REQUIRED)
|
|
|
|
|
find_package(imgui CONFIG REQUIRED)
|
|
|
|
|
|
|
|
|
|
# imgui SDL2 backend: vcpkg removed the sdl2-binding feature in imgui 1.91+.
|
|
|
|
|
# We compile the backend sources directly from imgui's source tree.
|
|
|
|
|
set(IMGUI_BACKENDS_DIR "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include")
|
|
|
|
|
set(IMGUI_SDL2_BACKEND "")
|
|
|
|
|
if(EXISTS "${IMGUI_BACKENDS_DIR}/imgui_impl_sdl2.h")
|
|
|
|
|
# vcpkg installed the SDL2 backend (older vcpkg or feature restored)
|
|
|
|
|
message(STATUS "Using vcpkg-installed imgui SDL2 backend")
|
|
|
|
|
else()
|
|
|
|
|
# Compile SDL2 backend from imgui source (shipped in backends/ of the port)
|
|
|
|
|
file(GLOB _imgui_sdl2_src
|
|
|
|
|
"${_VCPKG_INSTALLED_DIR}/../buildtrees/imgui/src/*/backends/imgui_impl_sdl2.cpp"
|
|
|
|
|
)
|
|
|
|
|
if(NOT _imgui_sdl2_src)
|
|
|
|
|
# Fallback: look for the backend in a local copy
|
|
|
|
|
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/imgui_backends/imgui_impl_sdl2.cpp")
|
|
|
|
|
set(_imgui_sdl2_src "${CMAKE_CURRENT_SOURCE_DIR}/src/imgui_backends/imgui_impl_sdl2.cpp")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
if(_imgui_sdl2_src)
|
|
|
|
|
list(GET _imgui_sdl2_src 0 _imgui_sdl2_src)
|
|
|
|
|
get_filename_component(_imgui_sdl2_dir "${_imgui_sdl2_src}" DIRECTORY)
|
|
|
|
|
message(STATUS "Compiling imgui SDL2 backend from: ${_imgui_sdl2_dir}")
|
|
|
|
|
set(IMGUI_SDL2_BACKEND "${_imgui_sdl2_src}")
|
|
|
|
|
else()
|
|
|
|
|
message(WARNING "imgui SDL2 backend not found. Editor will not compile. "
|
|
|
|
|
"Copy imgui_impl_sdl2.cpp/.h into editor/src/imgui_backends/")
|
|
|
|
|
endif()
|
|
|
|
|
endif()
|
|
|
|
|
|
2026-02-09 09:26:54 -07:00
|
|
|
add_executable(whetstone_editor src/main.cpp src/FileDialog.cpp ${IMGUI_SDL2_BACKEND})
|
2026-02-07 22:06:50 -07:00
|
|
|
target_include_directories(whetstone_editor PRIVATE
|
|
|
|
|
src
|
|
|
|
|
${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/imgui
|
|
|
|
|
${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include
|
|
|
|
|
)
|
|
|
|
|
if(IMGUI_SDL2_BACKEND)
|
|
|
|
|
get_filename_component(_sdl2_backend_dir "${IMGUI_SDL2_BACKEND}" DIRECTORY)
|
|
|
|
|
target_include_directories(whetstone_editor PRIVATE "${_sdl2_backend_dir}")
|
|
|
|
|
endif()
|
|
|
|
|
target_link_libraries(whetstone_editor PRIVATE
|
|
|
|
|
SDL2::SDL2
|
|
|
|
|
SDL2::SDL2main
|
|
|
|
|
OpenGL::GL
|
|
|
|
|
glad::glad
|
|
|
|
|
imgui::imgui
|
2026-02-08 16:21:22 -07:00
|
|
|
nlohmann_json::nlohmann_json
|
|
|
|
|
unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
2026-02-09 09:22:03 -07:00
|
|
|
tree_sitter_elisp
|
|
|
|
|
tree_sitter_javascript
|
|
|
|
|
tree_sitter_typescript
|
|
|
|
|
tree_sitter_java
|
|
|
|
|
tree_sitter_rust
|
|
|
|
|
tree_sitter_go)
|
2026-02-09 09:26:54 -07:00
|
|
|
target_link_libraries(whetstone_editor PRIVATE tinyfiledialogs)
|
2026-02-06 21:30:12 -07:00
|
|
|
|
2026-02-06 20:22:37 -07:00
|
|
|
add_executable(orchestrator src/orchestrator_main.cpp)
|
|
|
|
|
target_include_directories(orchestrator PRIVATE src)
|
2026-02-09 14:54:55 -07:00
|
|
|
target_link_libraries(orchestrator PRIVATE
|
|
|
|
|
nlohmann_json::nlohmann_json
|
|
|
|
|
unofficial::tree-sitter::tree-sitter
|
|
|
|
|
tree_sitter_python
|
|
|
|
|
tree_sitter_cpp
|
|
|
|
|
tree_sitter_elisp
|
|
|
|
|
tree_sitter_javascript
|
|
|
|
|
tree_sitter_typescript
|
|
|
|
|
tree_sitter_java
|
|
|
|
|
tree_sitter_rust
|
|
|
|
|
tree_sitter_go)
|
2026-02-06 20:22:37 -07:00
|
|
|
|
2026-02-06 20:04:12 -07:00
|
|
|
# Step 12: Dear ImGui shell scaffolding created (main.cpp exists but not built due to dependencies)
|