Skip to content

Commit

Permalink
cmake: move add_precompiled_vulkan_spirv to root cmake
Browse files Browse the repository at this point in the history
  • Loading branch information
DHrpcs3 committed Sep 3, 2024
1 parent 3b70ef2 commit 068d95c
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 33 deletions.
36 changes: 36 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,42 @@ set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

add_subdirectory(3rdparty EXCLUDE_FROM_ALL)

function(add_precompiled_vulkan_spirv target)
add_library(${target} INTERFACE)
set(SPIRV_GEN_ROOT_DIR "spirv-gen/include/")
set(SPIRV_GEN_DIR "${SPIRV_GEN_ROOT_DIR}/shaders")

cmake_path(ABSOLUTE_PATH SPIRV_GEN_ROOT_DIR BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} NORMALIZE OUTPUT_VARIABLE outputrootdir)
cmake_path(ABSOLUTE_PATH SPIRV_GEN_DIR BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} NORMALIZE OUTPUT_VARIABLE outputdir)
file(MAKE_DIRECTORY ${outputrootdir})
file(MAKE_DIRECTORY ${outputdir})
target_include_directories(${target} INTERFACE ${outputrootdir})

foreach(input IN LISTS ARGN)
cmake_path(GET input FILENAME inputname)
cmake_path(REPLACE_EXTENSION inputname LAST_ONLY .h OUTPUT_VARIABLE outputname)
cmake_path(APPEND outputdir ${outputname} OUTPUT_VARIABLE outputpath)
cmake_path(REMOVE_EXTENSION inputname LAST_ONLY OUTPUT_VARIABLE varname)

string(REPLACE "." "_" varname ${varname})
string(PREPEND varname "spirv_")

add_custom_command(
OUTPUT ${outputpath}
COMMAND $<TARGET_FILE:glslang-standalone> -V --target-env vulkan1.3 --vn "${varname}" -o "${outputpath}" "${CMAKE_CURRENT_SOURCE_DIR}/${input}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${input}" glslang-standalone
COMMENT "Generating ${outputname}..."
)

set(subtarget ".${target}-subtarget-${outputname}")
add_custom_target(${subtarget} DEPENDS ${outputpath})
add_dependencies(${target} ${subtarget})
endforeach()
endfunction()

add_subdirectory(tools)

add_subdirectory(orbis-kernel)
add_subdirectory(rpcsx-os)
add_subdirectory(rpcsx-gpu)
Expand Down
33 changes: 0 additions & 33 deletions hw/amdgpu/device/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,39 +5,6 @@ set(SRC
src/device.cpp
)

function(add_precompiled_vulkan_spirv target)
add_library(${target} INTERFACE)
set(SPIRV_GEN_ROOT_DIR "spirv-gen/include/")
set(SPIRV_GEN_DIR "${SPIRV_GEN_ROOT_DIR}/shaders")

cmake_path(ABSOLUTE_PATH SPIRV_GEN_ROOT_DIR BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} NORMALIZE OUTPUT_VARIABLE outputrootdir)
cmake_path(ABSOLUTE_PATH SPIRV_GEN_DIR BASE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} NORMALIZE OUTPUT_VARIABLE outputdir)
file(MAKE_DIRECTORY ${outputrootdir})
file(MAKE_DIRECTORY ${outputdir})
target_include_directories(${target} INTERFACE ${outputrootdir})

foreach(input IN LISTS ARGN)
cmake_path(GET input FILENAME inputname)
cmake_path(REPLACE_EXTENSION inputname LAST_ONLY .h OUTPUT_VARIABLE outputname)
cmake_path(APPEND outputdir ${outputname} OUTPUT_VARIABLE outputpath)
cmake_path(REMOVE_EXTENSION inputname LAST_ONLY OUTPUT_VARIABLE varname)

string(REPLACE "." "_" varname ${varname})
string(PREPEND varname "spirv_")

add_custom_command(
OUTPUT ${outputpath}
COMMAND $<TARGET_FILE:glslang-standalone> -V --target-env vulkan1.3 --vn "${varname}" -o "${outputpath}" "${CMAKE_CURRENT_SOURCE_DIR}/${input}"
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${input}" glslang-standalone
COMMENT "Generating ${outputname}..."
)

set(subtarget ".${target}-subtarget-${outputname}")
add_custom_target(${subtarget} DEPENDS ${outputpath})
add_dependencies(${target} ${subtarget})
endforeach()
endfunction()

add_precompiled_vulkan_spirv(${PROJECT_NAME}-shaders
src/rect_list.geom.glsl
)
Expand Down

0 comments on commit 068d95c

Please sign in to comment.