WIP | Add slang + compile slang and optimize spirv
This commit is contained in:
+36
-27
@@ -1,42 +1,51 @@
|
||||
cmake_minimum_required(VERSION 4.1)
|
||||
project(triangle)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
set(BINARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/")
|
||||
set(ASSETS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/assets")
|
||||
|
||||
##### Project settings ######
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
|
||||
# Set the assets directory
|
||||
set(ASSETS_DIR "assets")
|
||||
set(SHADERS_DIR "assets/shaders")
|
||||
|
||||
if(${CMAKE_BUILD_TYPE} STREQUAL "Debug")
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
else()
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
endif()
|
||||
|
||||
##### Dependencies #####
|
||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
|
||||
option(ENABLE_CPP20_MODULE "Enable C++ 20 module support for Vulkan" OFF)
|
||||
file(GLOB CMAKE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/cmake/*.cmake")
|
||||
foreach(cmake_file ${CMAKE_FILES})
|
||||
include(${cmake_file})
|
||||
endforeach()
|
||||
|
||||
##### Project actions #####
|
||||
set (CMAKE_FILES
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/compileCommands.cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/platform.cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/copy_files.cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/Vulkan.cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/GLFW.cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/spirv-headers.cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/spirv-tools.cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/slang-src.cmake"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/spirv-reflect.cmake"
|
||||
)
|
||||
|
||||
foreach (cmake_file ${CMAKE_FILES})
|
||||
include (${cmake_file})
|
||||
endforeach ()
|
||||
|
||||
create_copy_folder_target(copy_assets_folder ${ASSETS_DIR} "${BINARY_DIR}/assets")
|
||||
|
||||
# Define out executable
|
||||
file(GLOB SRC_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
|
||||
file(GLOB HEADER_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.h")
|
||||
add_executable(${PROJECT_NAME} ${SRC_FILES} ${HEADER_FILES})
|
||||
|
||||
# Add the shaders dependency
|
||||
add_dependencies(${PROJECT_NAME} slang_shaders)
|
||||
add_dependencies(${PROJECT_NAME} glsl_shaders)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${BINARY_DIR}")
|
||||
add_dependencies(${PROJECT_NAME} copy_assets_folder)
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC "${glfw_SOURCE_DIR}/include")
|
||||
|
||||
# Link with libs
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
glfw
|
||||
Vulkan::cppm
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC
|
||||
"${glfw_SOURCE_DIR}/include"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/src"
|
||||
)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME}
|
||||
slang
|
||||
slang-rt
|
||||
core # slang::core
|
||||
SPIRV-Tools-opt
|
||||
spirv-reflect-static
|
||||
glfw
|
||||
Vulkan::cppm
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user