Files
XCEngine/new_editor/CMakeLists.txt

363 lines
13 KiB
CMake

cmake_minimum_required(VERSION 3.15)
project(XCUIEditor VERSION 0.1 LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
file(TO_CMAKE_PATH "${CMAKE_SOURCE_DIR}" XCUIEDITOR_REPO_ROOT_PATH)
function(xcui_editor_apply_common_target_settings target visibility)
target_compile_definitions(${target} ${visibility}
UNICODE
_UNICODE
)
if(MSVC)
target_compile_options(${target} PRIVATE /utf-8 /FS)
set_property(TARGET ${target} PROPERTY
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
endif()
endfunction()
set(XCUI_EDITOR_FOUNDATION_SOURCES
src/Foundation/UIEditorCommandDispatcher.cpp
src/Foundation/UIEditorCommandRegistry.cpp
src/Foundation/UIEditorRuntimeTrace.cpp
src/Foundation/UIEditorShortcutManager.cpp
src/Foundation/UIEditorTheme.cpp
)
set(XCUI_EDITOR_FIELD_SOURCES
src/Fields/UIEditorAssetField.cpp
src/Fields/UIEditorAssetFieldInteraction.cpp
src/Fields/UIEditorBoolField.cpp
src/Fields/UIEditorBoolFieldInteraction.cpp
src/Fields/UIEditorColorField.cpp
src/Fields/UIEditorColorFieldInteraction.cpp
src/Fields/UIEditorColorFieldRendering.cpp
src/Fields/UIEditorEnumField.cpp
src/Fields/UIEditorEnumFieldInteraction.cpp
src/Fields/UIEditorFieldStyle.cpp
src/Fields/UIEditorNumberField.cpp
src/Fields/UIEditorNumberFieldInteraction.cpp
src/Fields/UIEditorObjectField.cpp
src/Fields/UIEditorObjectFieldInteraction.cpp
src/Fields/UIEditorPropertyGrid.cpp
src/Fields/UIEditorPropertyGridInteraction.cpp
src/Fields/UIEditorPropertyGridInteractionHelpers.cpp
src/Fields/UIEditorPropertyGridRendering.cpp
src/Fields/UIEditorTextField.cpp
src/Fields/UIEditorTextFieldInteraction.cpp
src/Fields/UIEditorVector2Field.cpp
src/Fields/UIEditorVector2FieldInteraction.cpp
src/Fields/UIEditorVector3Field.cpp
src/Fields/UIEditorVector3FieldInteraction.cpp
src/Fields/UIEditorVector4Field.cpp
src/Fields/UIEditorVector4FieldInteraction.cpp
)
set(XCUI_EDITOR_COLLECTION_SOURCES
src/Collections/UIEditorInlineRenameSession.cpp
src/Collections/UIEditorListView.cpp
src/Collections/UIEditorListViewInteraction.cpp
src/Collections/UIEditorScrollView.cpp
src/Collections/UIEditorScrollViewInteraction.cpp
src/Collections/UIEditorTabStrip.cpp
src/Collections/UIEditorTabStripInteraction.cpp
src/Collections/UIEditorTreeView.cpp
src/Collections/UIEditorTreeViewInteraction.cpp
)
set(XCUI_EDITOR_DOCKING_SOURCES
src/Docking/UIEditorDockHost.cpp
src/Docking/UIEditorDockHostHitTest.cpp
src/Docking/UIEditorDockHostRendering.cpp
src/Docking/UIEditorDockHostInteraction.cpp
src/Docking/UIEditorDockHostInteractionHelpers.cpp
)
set(XCUI_EDITOR_MENU_SOURCES
src/Menu/UIEditorMenuBar.cpp
src/Menu/UIEditorMenuModel.cpp
src/Menu/UIEditorMenuPopup.cpp
src/Menu/UIEditorMenuSession.cpp
)
set(XCUI_EDITOR_PANEL_SOURCES
src/Panels/UIEditorPanelContentHost.cpp
src/Panels/UIEditorPanelFrame.cpp
src/Panels/UIEditorPanelHostLifecycle.cpp
src/Panels/UIEditorPanelRegistry.cpp
)
set(XCUI_EDITOR_SHELL_SOURCES
src/Shell/UIEditorShellAsset.cpp
src/Shell/UIEditorShellCompose.cpp
src/Shell/UIEditorShellInteraction.cpp
src/Shell/UIEditorShellInteractionRequest.cpp
src/Shell/UIEditorShellInteractionRendering.cpp
src/Shell/UIEditorStatusBar.cpp
)
set(XCUI_EDITOR_VIEWPORT_SOURCES
src/Viewport/UIEditorViewportInputBridge.cpp
src/Viewport/UIEditorViewportShell.cpp
src/Viewport/UIEditorViewportSlot.cpp
)
set(XCUI_EDITOR_WORKSPACE_SOURCES
src/Workspace/UIEditorWorkspaceCompose.cpp
src/Workspace/UIEditorWorkspaceController.cpp
src/Workspace/UIEditorWorkspaceControllerDispatch.cpp
src/Workspace/UIEditorWorkspaceControllerLayoutOps.cpp
src/Workspace/UIEditorWorkspaceInteraction.cpp
src/Workspace/UIEditorWorkspaceLayoutPersistence.cpp
src/Workspace/UIEditorWorkspaceModel.cpp
src/Workspace/UIEditorWorkspaceModelMutation.cpp
src/Workspace/UIEditorWorkspaceModelQueries.cpp
src/Workspace/UIEditorWorkspaceModelValidation.cpp
src/Workspace/UIEditorWorkspaceSession.cpp
src/Workspace/UIEditorWorkspaceTransfer.cpp
src/Workspace/UIEditorWindowWorkspaceController.cpp
src/Workspace/UIEditorWindowWorkspaceModel.cpp
)
set(XCUI_EDITOR_WIDGET_SUPPORT_SOURCES
src/Widgets/UIEditorCollectionPrimitives.cpp
src/Widgets/UIEditorFieldRowLayout.cpp
)
add_library(XCUIEditorLib STATIC
${XCUI_EDITOR_FOUNDATION_SOURCES}
${XCUI_EDITOR_FIELD_SOURCES}
${XCUI_EDITOR_COLLECTION_SOURCES}
${XCUI_EDITOR_DOCKING_SOURCES}
${XCUI_EDITOR_MENU_SOURCES}
${XCUI_EDITOR_PANEL_SOURCES}
${XCUI_EDITOR_SHELL_SOURCES}
${XCUI_EDITOR_VIEWPORT_SOURCES}
${XCUI_EDITOR_WORKSPACE_SOURCES}
${XCUI_EDITOR_WIDGET_SUPPORT_SOURCES}
)
target_include_directories(XCUIEditorLib
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/engine/include
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_compile_definitions(XCUIEditorLib PUBLIC
XCUIEDITOR_REPO_ROOT="${XCUIEDITOR_REPO_ROOT_PATH}"
)
xcui_editor_apply_common_target_settings(XCUIEditorLib PUBLIC)
target_link_libraries(XCUIEditorLib PUBLIC
XCEngine
)
set(XCUI_EDITOR_HOST_PLATFORM_SOURCES
app/Platform/Win32/BorderlessWindowChrome.cpp
app/Platform/Win32/BorderlessWindowChromeRendering.cpp
app/Platform/Win32/BorderlessWindowChromeDwm.cpp
app/Platform/Win32/BorderlessWindowFrame.cpp
app/Platform/Win32/WindowMessageDispatcher.cpp
app/Platform/Win32/WindowMessageDispatcherChrome.cpp
app/Platform/Win32/WindowMessageDispatcherInput.cpp
app/Platform/Win32/WindowMessageDispatcherPointer.cpp
app/Platform/Win32/WindowMessageDispatcherLifecycle.cpp
)
set(XCUI_EDITOR_HOST_RENDERING_SOURCES
app/Rendering/Native/AutoScreenshot.cpp
app/Rendering/D3D12/D3D12HostDevice.cpp
app/Rendering/D3D12/D3D12HostDeviceFence.cpp
app/Rendering/D3D12/D3D12HostDeviceFrame.cpp
app/Rendering/D3D12/D3D12HostDeviceLifecycle.cpp
app/Rendering/D3D12/D3D12ShaderResourceDescriptorAllocator.cpp
app/Rendering/D3D12/D3D12WindowInteropContext.cpp
app/Rendering/D3D12/D3D12WindowInteropDevice.cpp
app/Rendering/D3D12/D3D12WindowInteropResources.cpp
app/Rendering/D3D12/D3D12WindowInteropSourceTextures.cpp
app/Rendering/D3D12/D3D12WindowRenderer.cpp
app/Rendering/D3D12/D3D12WindowSwapChainPresenter.cpp
app/Rendering/D3D12/D3D12WindowSwapChainPresenterBackBuffers.cpp
app/Rendering/D3D12/D3D12WindowSwapChainPresenterLifecycle.cpp
app/Rendering/D3D12/D3D12WindowSwapChainPresenterPresentation.cpp
app/Rendering/D3D12/D3D12WindowSwapChainPresenterResize.cpp
app/Rendering/D3D12/D3D12WindowRenderLoop.cpp
app/Rendering/Native/NativeRenderer.cpp
app/Rendering/Native/NativeRendererCapture.cpp
app/Rendering/Native/NativeRendererDraw.cpp
app/Rendering/Native/NativeRendererDrawContent.cpp
app/Rendering/Native/NativeRendererDrawGeometry.cpp
app/Rendering/Native/NativeRendererLifecycle.cpp
app/Rendering/Native/NativeRendererRenderTarget.cpp
app/Rendering/Native/NativeRendererRendering.cpp
app/Rendering/Native/NativeRendererText.cpp
app/Rendering/Native/NativeRendererTextureDecoding.cpp
app/Rendering/Native/NativeRendererTextures.cpp
app/Rendering/Native/NativeRendererWindowInterop.cpp
)
add_library(XCUIEditorHost STATIC
${XCUI_EDITOR_HOST_PLATFORM_SOURCES}
${XCUI_EDITOR_HOST_RENDERING_SOURCES}
)
target_include_directories(XCUIEditorHost
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/app
${CMAKE_CURRENT_SOURCE_DIR}/include
${CMAKE_SOURCE_DIR}/engine/include
)
xcui_editor_apply_common_target_settings(XCUIEditorHost PRIVATE)
target_link_libraries(XCUIEditorHost PRIVATE
XCEngine
d2d1.lib
d3d11.lib
d3d12.lib
d3dcompiler.lib
dwrite.lib
dxgi.lib
windowscodecs.lib
)
if(XCENGINE_BUILD_XCUI_EDITOR_APP)
set(XCUI_EDITOR_APP_BOOTSTRAP_SOURCES
app/Bootstrap/EditorApp.rc
app/main.cpp
app/Bootstrap/ApplicationBootstrap.cpp
app/Bootstrap/ApplicationLifecycle.cpp
app/Bootstrap/ApplicationRunLoop.cpp
app/Bootstrap/ApplicationWindowClass.cpp
)
set(XCUI_EDITOR_APP_STATE_SOURCES
app/State/EditorContext.cpp
app/State/EditorContextStatus.cpp
app/State/EditorSession.cpp
)
set(XCUI_EDITOR_APP_COMPOSITION_SOURCES
app/Composition/EditorHostCommandBridge.cpp
app/Composition/EditorShellAssetBuilder.cpp
app/Composition/EditorShellAssetCommands.cpp
app/Composition/EditorShellAssetDefinition.cpp
app/Composition/EditorShellAssetLayout.cpp
app/Composition/EditorShellAssetMenu.cpp
app/Composition/EditorShellRuntime.cpp
app/Composition/EditorShellRuntimeRendering.cpp
app/Composition/EditorShellRuntimeUpdate.cpp
app/Composition/EditorShellRuntimeViewport.cpp
app/Composition/WorkspaceEventSync.cpp
)
set(XCUI_EDITOR_APP_FEATURE_SOURCES
app/Features/Console/ConsolePanel.cpp
app/Features/Hierarchy/HierarchyModel.cpp
app/Features/Hierarchy/HierarchyPanel.cpp
app/Features/Hierarchy/HierarchyPanelInteraction.cpp
app/Features/Hierarchy/HierarchyPanelRendering.cpp
app/Features/Inspector/InspectorPanel.cpp
app/Features/Project/ProjectPanel.cpp
app/Features/Project/ProjectPanelInteraction.cpp
app/Features/Project/ProjectPanelLayout.cpp
app/Features/Project/ProjectPanelRendering.cpp
app/Features/Project/ProjectBrowserModel.cpp
app/Features/Project/ProjectBrowserModelAssets.cpp
app/Features/Project/ProjectBrowserModelFolders.cpp
)
set(XCUI_EDITOR_APP_RENDERING_SOURCES
app/Rendering/Assets/BuiltInIcons.cpp
app/Rendering/Viewport/ViewportHostService.cpp
app/Rendering/Viewport/ViewportHostServiceFrame.cpp
app/Rendering/Viewport/ViewportHostServiceLifecycle.cpp
app/Rendering/Viewport/ViewportRenderTargetManager.cpp
app/Rendering/Viewport/ViewportRenderTargetManagerCleanup.cpp
app/Rendering/Viewport/ViewportRenderTargetManagerResources.cpp
app/Rendering/Viewport/ViewportRenderTargetManagerSurfaces.cpp
app/Rendering/Viewport/ViewportRenderTargets.cpp
)
set(XCUI_EDITOR_APP_PLATFORM_SOURCES
app/Platform/Win32/EditorWindowBorderlessPlacement.cpp
app/Platform/Win32/EditorWindowBorderlessResize.cpp
app/Platform/Win32/EditorWindowFrame.cpp
app/Platform/Win32/EditorWindowFrameSupport.cpp
app/Platform/Win32/EditorWindowFrameRuntime.cpp
app/Platform/Win32/EditorWindowTitleBar.cpp
app/Platform/Win32/EditorWindowTitleBarDragRestore.cpp
app/Platform/Win32/EditorWindowTitleBarInteraction.cpp
app/Platform/Win32/EditorWindowTitleBarRendering.cpp
app/Platform/Win32/EditorWindowInitialization.cpp
app/Platform/Win32/EditorWindowLifecycle.cpp
app/Platform/Win32/EditorWindowMetrics.cpp
app/Platform/Win32/EditorWindowInput.cpp
app/Platform/Win32/EditorWindowResizeLifecycle.cpp
app/Platform/Win32/EditorWindowManagerCreation.cpp
app/Platform/Win32/EditorWindowManagerLifecycle.cpp
app/Platform/Win32/EditorWindowManagerLookup.cpp
app/Platform/Win32/EditorWindowManagerWindowSet.cpp
app/Platform/Win32/EditorWindowManagerWindowSynchronization.cpp
app/Platform/Win32/EditorWindowManagerTabDrag.cpp
app/Platform/Win32/EditorWindowManagerDetach.cpp
app/Platform/Win32/EditorWindowManagerCrossWindowDrop.cpp
)
add_executable(XCUIEditorApp WIN32
${XCUI_EDITOR_APP_BOOTSTRAP_SOURCES}
${XCUI_EDITOR_APP_STATE_SOURCES}
${XCUI_EDITOR_APP_COMPOSITION_SOURCES}
${XCUI_EDITOR_APP_FEATURE_SOURCES}
${XCUI_EDITOR_APP_RENDERING_SOURCES}
${XCUI_EDITOR_APP_PLATFORM_SOURCES}
)
target_include_directories(XCUIEditorApp PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/app
)
target_compile_definitions(XCUIEditorApp PRIVATE
XCUIEDITOR_REPO_ROOT="${XCUIEDITOR_REPO_ROOT_PATH}"
)
xcui_editor_apply_common_target_settings(XCUIEditorApp PRIVATE)
target_link_libraries(XCUIEditorApp PRIVATE
XCUIEditorLib
XCUIEditorHost
d2d1.lib
d3d11.lib
d3d12.lib
d3dcompiler.lib
dwrite.lib
dxgi.lib
windowscodecs.lib
)
set_target_properties(XCUIEditorApp PROPERTIES
OUTPUT_NAME "XCUIEditor"
)
add_test(
NAME xcui_editor_app_smoke
COMMAND $<TARGET_FILE:XCUIEditorApp>
)
set_tests_properties(xcui_editor_app_smoke PROPERTIES
TIMEOUT 20
RUN_SERIAL TRUE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
ENVIRONMENT
"XCUIEDITOR_SMOKE_TEST=1;XCUIEDITOR_SMOKE_TEST_FRAME_LIMIT=4;XCUI_AUTO_CAPTURE_ON_STARTUP=0"
)
endif()