Files
whetstone_DSL/editor/CMakeLists.txt
Bill e08fc9e0e0 Add build infrastructure, installer scripts, and fix build errors
- Create vcpkg.json manifest with all editor dependencies
- Create CMakePresets.json for Windows (MSVC) and Linux (GCC)
- Create Inno Setup installer script (setup.iss) with file associations
- Create Windows build helper (build.ps1) with vcpkg auto-install
- Create Linux build/install scripts (build.sh, install.sh)
- Vendor imgui SDL2 backend locally (removed from vcpkg imgui 1.91+)
- Switch CMakeLists.txt from FetchContent to vcpkg find_package
- Fix ElispGenerator missing pure virtual overrides for memory annotations
- Fix Orchestrator::findNodeById const-correctness
- Fix orchestrator_main.cpp loadFile/saveFile type mismatches
- Fix main.cpp SDL_GL_SwapBuffers -> SDL_GL_SwapWindow

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:15:50 -07:00

258 lines
9.1 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(WhetstoneEditor LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# Use vcpkg-installed nlohmann_json instead of FetchContent
find_package(nlohmann_json CONFIG REQUIRED)
add_executable(step1_test tests/step1_test.cpp)
target_include_directories(step1_test PRIVATE src)
add_executable(step2_test tests/step2_test.cpp)
target_include_directories(step2_test PRIVATE src)
add_executable(step3_test tests/step3_test.cpp)
target_include_directories(step3_test PRIVATE src)
add_executable(step4_test tests/step4_test.cpp)
target_include_directories(step4_test PRIVATE src)
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)
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)
add_executable(step7_test tests/step7_test.cpp)
target_include_directories(step7_test PRIVATE src)
add_executable(step8_test tests/step8_test.cpp)
target_include_directories(step8_test PRIVATE src)
add_executable(step9_test tests/step9_test.cpp)
target_include_directories(step9_test PRIVATE src)
add_executable(step10_test tests/step10_test.cpp)
target_include_directories(step10_test PRIVATE src)
add_executable(step11_test tests/step11_test.cpp)
target_include_directories(step11_test PRIVATE src)
add_executable(step12_test tests/step12_test.cpp)
target_include_directories(step12_test PRIVATE src)
add_executable(step13_test tests/step13_test.cpp)
target_include_directories(step13_test PRIVATE src)
add_executable(step14_test tests/step14_test.cpp)
target_include_directories(step14_test PRIVATE src)
add_executable(step15_test tests/step15_test.cpp)
target_include_directories(step15_test PRIVATE src)
add_executable(step16_test tests/step16_test.cpp)
target_include_directories(step16_test PRIVATE src)
add_executable(step17_test tests/step17_test.cpp)
target_include_directories(step17_test PRIVATE src)
add_executable(step18_test tests/step18_test.cpp)
target_include_directories(step18_test PRIVATE src)
add_executable(step19_test tests/step19_test.cpp)
target_include_directories(step19_test PRIVATE src)
add_executable(step20_test tests/step20_test.cpp)
target_include_directories(step20_test PRIVATE src)
add_executable(step21_test tests/step21_test.cpp)
target_include_directories(step21_test PRIVATE src)
add_executable(step22_test tests/step22_test.cpp)
target_include_directories(step22_test PRIVATE src)
add_executable(step23_test tests/step23_test.cpp)
target_include_directories(step23_test PRIVATE src)
add_executable(step24_test tests/step24_test.cpp)
target_include_directories(step24_test PRIVATE src)
add_executable(step25_test tests/step25_test.cpp)
target_include_directories(step25_test PRIVATE src)
add_executable(step26_test tests/step26_test.cpp)
target_include_directories(step26_test PRIVATE src)
add_executable(step27_test tests/step27_test.cpp)
target_include_directories(step27_test PRIVATE src)
add_executable(step28_test tests/step28_test.cpp)
target_include_directories(step28_test PRIVATE src)
add_executable(step29_test tests/step29_test.cpp)
target_include_directories(step29_test PRIVATE src)
add_executable(step30_test tests/step30_test.cpp)
target_include_directories(step30_test PRIVATE src)
add_executable(step31_test tests/step31_test.cpp)
target_include_directories(step31_test PRIVATE src)
add_executable(step32_test tests/step32_test.cpp)
target_include_directories(step32_test PRIVATE src)
add_executable(step33_test tests/step33_test.cpp)
target_include_directories(step33_test PRIVATE src)
add_executable(step34_test tests/step34_test.cpp)
target_include_directories(step34_test PRIVATE src)
add_executable(step35_test tests/step35_test.cpp)
target_include_directories(step35_test PRIVATE src)
add_executable(step36_test tests/step36_test.cpp)
target_include_directories(step36_test PRIVATE src)
add_executable(step37_test tests/step37_test.cpp)
target_include_directories(step37_test PRIVATE src)
add_executable(step38_test tests/step38_test.cpp)
target_include_directories(step38_test PRIVATE src)
add_executable(step39_test tests/step39_test.cpp)
target_include_directories(step39_test PRIVATE src)
add_executable(step40_test tests/step40_test.cpp)
target_include_directories(step40_test PRIVATE src)
add_executable(step41_test tests/step41_test.cpp)
target_include_directories(step41_test PRIVATE src)
add_executable(step42_test tests/step42_test.cpp)
target_include_directories(step42_test PRIVATE src)
add_executable(step43_test tests/step43_test.cpp)
target_include_directories(step43_test PRIVATE src)
add_executable(step44_test tests/step44_test.cpp)
target_include_directories(step44_test PRIVATE src)
add_executable(step45_test tests/step45_test.cpp)
target_include_directories(step45_test PRIVATE src)
add_executable(step46_test tests/step46_test.cpp)
target_include_directories(step46_test PRIVATE src)
add_executable(step47_test tests/step47_test.cpp)
target_include_directories(step47_test PRIVATE src)
add_executable(step51_test tests/step51_test.cpp)
target_include_directories(step51_test PRIVATE src)
add_executable(step53_test tests/step53_test.cpp)
target_include_directories(step53_test PRIVATE src)
add_executable(step56_test tests/step56_test.cpp)
target_include_directories(step56_test PRIVATE src)
add_executable(step57_test tests/step57_test.cpp)
target_include_directories(step57_test PRIVATE src)
add_executable(step60_test tests/step60_test.cpp)
target_include_directories(step60_test PRIVATE src)
add_executable(step61_test tests/step61_test.cpp)
target_include_directories(step61_test PRIVATE src)
add_executable(step62_test tests/step62_test.cpp)
target_include_directories(step62_test PRIVATE src)
add_executable(step63_test tests/step63_test.cpp)
target_include_directories(step63_test PRIVATE src)
add_executable(step64_test tests/step64_test.cpp)
target_include_directories(step64_test PRIVATE src)
add_executable(step65_test tests/step65_test.cpp)
target_include_directories(step65_test PRIVATE src)
add_executable(step66_test tests/step66_test.cpp)
target_include_directories(step66_test PRIVATE src)
add_executable(step67_test tests/step67_test.cpp)
target_include_directories(step67_test PRIVATE src)
add_executable(step68_test tests/step68_test.cpp)
target_include_directories(step68_test PRIVATE src)
add_executable(step69_test tests/step69_test.cpp)
target_include_directories(step69_test PRIVATE src)
add_executable(step70_test tests/step70_test.cpp)
target_include_directories(step70_test PRIVATE src)
add_executable(step71_test tests/step71_test.cpp)
target_include_directories(step71_test PRIVATE src)
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()
add_executable(whetstone_editor src/main.cpp ${IMGUI_SDL2_BACKEND})
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
nlohmann_json::nlohmann_json)
add_executable(orchestrator src/orchestrator_main.cpp)
target_include_directories(orchestrator PRIVATE src)
target_link_libraries(orchestrator PRIVATE nlohmann_json::nlohmann_json)
# Step 12: Dear ImGui shell scaffolding created (main.cpp exists but not built due to dependencies)