Modules/Sketch2D/CMakeLists.txt
Шурупов Илья Викторович 37eb17b3dc Snap dab positions and shapes and reuse rasterised dab masks
Dab centres snap to 1/16 px, or 1/8, 1/4 and 1/2 px above 16, 64 and
256 px, and dab size, angle, hardness and interior snap to fixed
steps, so dabs with the same shape and sub-pixel phase share one
rasterised coverage mask from a process wide cache. Masks above 256
px are not cached and use the direct shape evaluation. The normal,
masked and level paint paths share one loop over the mask.
2026-10-20 14:36:38 +03:00

52 lines
3.9 KiB
CMake

project(Sketch2D)
add_subdirectory(src/libs)
if (MODULES_BUILD_DESKTOP OR ANDROID)
if (ANDROID)
add_library(sketch2dAndroid SHARED ./src/apps/AndroidEntry.cpp ./src/apps/AndroidUpdater.cpp)
target_include_directories(sketch2dAndroid PRIVATE ${ANDROID_NDK}/sources/android/native_app_glue)
target_link_libraries(sketch2dAndroid PRIVATE ${PROJECT_NAME}Application)
target_link_options(sketch2dAndroid PRIVATE "-Wl,-u,ANativeActivity_onCreate")
else ()
add_executable(sketch2dApp ./src/apps/Entry.cpp)
target_link_libraries(sketch2dApp ${PROJECT_NAME}Application)
endif ()
endif ()
if (MODULES_BUILD_DESKTOP)
### -------------------------- Benchmark -------------------------- ###
add_library(${PROJECT_NAME}BenchCore STATIC
./bench/BenchInput.cpp ./bench/BenchReport.cpp
./bench/BenchInput.hpp ./bench/BenchReport.hpp ./bench/BenchScenario.hpp
)
target_include_directories(${PROJECT_NAME}BenchCore PUBLIC ./bench/)
target_link_libraries(${PROJECT_NAME}BenchCore PUBLIC ${PROJECT_NAME}UI Graphics)
add_executable(sketch2dBench ./bench/BenchMain.cpp ./bench/BenchRunner.cpp ./bench/BenchScenario.cpp ./bench/BenchRunner.hpp)
target_link_libraries(sketch2dBench ${PROJECT_NAME}BenchCore ${PROJECT_NAME}Application)
if (MODULES_BUILD_BENCH_TESTS)
add_test(NAME sketch2dBenchSmoke COMMAND ${CMAKE_SOURCE_DIR}/Sketch2D/temp/run-headless-wayland.sh $<TARGET_FILE:sketch2dBench> --quick --repeats 2 --filter "size 20" --out ${CMAKE_BINARY_DIR}/Sketch2D/bench-smoke WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME})
endif ()
endif ()
### -------------------------- Headless UI Tests -------------------------- ###
if (MODULES_BUILD_TESTS AND MODULES_BUILD_DESKTOP)
add_executable(Test${PROJECT_NAME} ./tests/Sketch2DUiTests.cpp ./tests/TouchUiTests.cpp ./tests/StudioUiTests.cpp ./tests/SketchLibraryTests.cpp ./tests/UpdateTests.cpp ./tests/BrushTests.cpp ./tests/StabilizerTests.cpp ./tests/CommandTests.cpp ./tests/HistoryTests.cpp ./tests/LayerTests.cpp ./tests/CompositorTests.cpp ./tests/MipTests.cpp ./tests/CanvasTests.cpp ./tests/BenchTests.cpp ./tests/SessionTests.cpp ./tests/StrokePainterTests.cpp ./tests/BrushCursorTests.cpp ./tests/BrushToolsTests.cpp ./tests/ColorCommandTests.cpp ./tests/ColorPanelTests.cpp ./tests/ColorHistoryTests.cpp ./tests/PickerToolTests.cpp ./tests/ViewToolTests.cpp ./tests/BucketToolTests.cpp ./tests/GradientToolTests.cpp ./tests/MoveToolTests.cpp ./tests/TransformToolTests.cpp ./tests/CropToolTests.cpp ./tests/SelectionTests.cpp ./tests/MagicWandTests.cpp ./tests/SelectionEditTests.cpp ./tests/FilterTests.cpp ./tests/ClipboardTests.cpp ./tests/AdjustmentTests.cpp ./tests/LineTests.cpp ./tests/ViewLockTests.cpp ./tests/EngineScenarioTests.cpp ./tests/EngineTests.cpp ./tests/BrushWorkflowTests.cpp ./tests/StrokePathTests.cpp ./tests/DabMaskTests.cpp ./tests/DabMaskBenchTests.cpp ./bench/BenchScenario.cpp ../Widgets/tests/Main.cpp ../Widgets/tests/support/UiDriver.cpp ../Widgets/tests/support/RecordingPainter.cpp)
target_include_directories(Test${PROJECT_NAME} PRIVATE ../Widgets/tests/support)
target_link_libraries(Test${PROJECT_NAME} ${PROJECT_NAME}BenchCore UnitTest++)
add_test(NAME Test${PROJECT_NAME} COMMAND Test${PROJECT_NAME})
endif ()
### -------------------------- Application Integration Tests -------------------------- ###
if (MODULES_BUILD_TESTS AND MODULES_BUILD_DESKTOP)
add_executable(Test${PROJECT_NAME}App ./tests/integration/Sketch2DAppTests.cpp ../Widgets/tests/Main.cpp)
target_link_libraries(Test${PROJECT_NAME}App ${PROJECT_NAME}Application UnitTest++)
add_test(NAME Test${PROJECT_NAME}App COMMAND ${CMAKE_SOURCE_DIR}/Sketch2D/temp/run-headless-wayland.sh $<TARGET_FILE:Test${PROJECT_NAME}App> WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME})
endif ()
if (MODULES_BUILD_DESKTOP)
file(COPY "../Graphics/rsc" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/")
file(COPY "rsc/icons" DESTINATION "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/rsc/")
endif ()