cmake_minimum_required(VERSION 3.21)

project(LEngine.Editor LANGUAGES C CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_C_STANDARD 11)

set(VulkanSdkDir "${CMAKE_CURRENT_LIST_DIR}/../../VulkanSDK/1.3.231.1")

#C:/VulkanSDK/1.3.231.1

add_executable(LEngine.Editor)

add_subdirectory(Dependencies/LFramework)
add_subdirectory(Dependencies/LEngine)
add_subdirectory(Dependencies/LMath)
add_subdirectory(Dependencies/NativeLINQ)



target_include_directories(${PROJECT_NAME} 
PRIVATE
    Src
)
add_subdirectory(Src)



target_compile_definitions(LEngine.Editor
PRIVATE
    _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING
    LF_INPUT
    LF_TERMINAL_STREAM_COUT

    ENABLE_HLSL
)

target_link_libraries(LEngine.Editor
PUBLIC
    LEngine
    LMath
    NativeLINQ
    LFramework

    glslangd
    shadercd
    HLSLd
    SPIRVd
    MachineIndependentd
    OGLCompilerd
    OSDependentd
    GenericCodeGend
    shadercd
    shaderc_utild
    shaderc_combinedd
)


target_link_directories(LEngine.Editor
PUBLIC
    "${VulkanSdkDir}/Lib"
)

target_include_directories(LEngine.Editor
PUBLIC
    Src
    "${VulkanSdkDir}/Source/SPIRV-Reflect"
    "${VulkanSdkDir}/Include"
)

target_include_directories(LEngine
INTERFACE
    Src
    "${VulkanSdkDir}/Source/SPIRV-Reflect"
    "${VulkanSdkDir}/Include"
)

target_sources(LEngine.Editor
PUBLIC
    "${VulkanSdkDir}/Include/vulkan/vulkan.h"
    "${VulkanSdkDir}/Include/vulkan/vk_platform.h"
    "${VulkanSdkDir}/Include/vulkan/vulkan_core.h"
    "${VulkanSdkDir}/Source/SPIRV-Reflect/spirv_reflect.h"
    "${VulkanSdkDir}/Source/SPIRV-Reflect/spirv_reflect.c"
)


