feat(scripting): add mono csharp runtime foundation
This commit is contained in:
@@ -2,6 +2,8 @@ cmake_minimum_required(VERSION 3.15)
|
||||
project(XCEngineLib)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(XCENGINE_VULKAN_SDK_HINT "$ENV{VULKAN_SDK}")
|
||||
if(NOT EXISTS "${XCENGINE_VULKAN_SDK_HINT}/Lib/vulkan-1.lib")
|
||||
file(GLOB XCENGINE_VULKAN_SDK_DIRS "D:/VulkanSDK/*")
|
||||
@@ -18,8 +20,6 @@ endif()
|
||||
|
||||
find_package(Vulkan REQUIRED)
|
||||
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
add_library(XCEngine STATIC
|
||||
# Core (Types, RefCounted, SmartPtr, Event)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Core/Types.h
|
||||
@@ -149,6 +149,7 @@ add_library(XCEngine STATIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12ResourceView.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12QueryHeap.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12RenderPass.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Framebuffer.cpp
|
||||
|
||||
# Vulkan RHI
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/Vulkan/VulkanCommon.h
|
||||
@@ -171,7 +172,6 @@ add_library(XCEngine STATIC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/Vulkan/VulkanSwapChain.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/Vulkan/VulkanDevice.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/Vulkan/VulkanScreenshot.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/RHI/D3D12/D3D12Framebuffer.cpp
|
||||
|
||||
# OpenGL RHI
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/RHI/OpenGL/OpenGLBuffer.h
|
||||
@@ -332,8 +332,10 @@ add_library(XCEngine STATIC
|
||||
|
||||
# Scene
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Scene/Scene.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Scene/SceneRuntime.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Scene/SceneManager.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/Scene/Scene.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/Scene/SceneRuntime.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/Scene/SceneManager.cpp
|
||||
|
||||
# Platform
|
||||
@@ -413,6 +415,49 @@ target_link_libraries(XCEngine PUBLIC
|
||||
Vulkan::Vulkan
|
||||
)
|
||||
|
||||
if(XCENGINE_ENABLE_MONO_SCRIPTING)
|
||||
set(XCENGINE_MONO_INCLUDE_DIR "${XCENGINE_MONO_ROOT_DIR}/include")
|
||||
set(XCENGINE_MONO_STATIC_LIBRARY "${XCENGINE_MONO_ROOT_DIR}/lib/libmono-static-sgen.lib")
|
||||
set(XCENGINE_MONO_POSIX_HELPER_LIBRARY "${XCENGINE_MONO_ROOT_DIR}/lib/MonoPosixHelper.lib")
|
||||
|
||||
foreach(XCENGINE_MONO_REQUIRED_PATH
|
||||
"${XCENGINE_MONO_INCLUDE_DIR}"
|
||||
"${XCENGINE_MONO_STATIC_LIBRARY}"
|
||||
"${XCENGINE_MONO_POSIX_HELPER_LIBRARY}")
|
||||
if(NOT EXISTS "${XCENGINE_MONO_REQUIRED_PATH}")
|
||||
message(FATAL_ERROR "Required Mono dependency is missing: ${XCENGINE_MONO_REQUIRED_PATH}")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
add_library(XCEMono STATIC IMPORTED)
|
||||
set_target_properties(XCEMono PROPERTIES
|
||||
IMPORTED_LOCATION "${XCENGINE_MONO_STATIC_LIBRARY}"
|
||||
)
|
||||
|
||||
target_sources(XCEngine PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/include/XCEngine/Scripting/Mono/MonoScriptRuntime.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/Scripting/Mono/MonoScriptRuntime.cpp
|
||||
)
|
||||
|
||||
target_include_directories(XCEngine PRIVATE
|
||||
${XCENGINE_MONO_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
target_link_libraries(XCEngine PUBLIC
|
||||
XCEMono
|
||||
${XCENGINE_MONO_POSIX_HELPER_LIBRARY}
|
||||
ws2_32
|
||||
bcrypt
|
||||
version
|
||||
iphlpapi
|
||||
winmm
|
||||
)
|
||||
|
||||
target_compile_definitions(XCEngine PRIVATE
|
||||
XCENGINE_ENABLE_MONO_SCRIPTING
|
||||
)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_compile_options(XCEngine PRIVATE /W3 /FS)
|
||||
else()
|
||||
|
||||
Reference in New Issue
Block a user