Skip to content

Commit 428fba3

Browse files
authored
Add missing MoltenVK submodules. (#6)
* Add missing MoltenVK submodules. * Update XenonRecomp
1 parent 54c3971 commit 428fba3

6 files changed

Lines changed: 96 additions & 2 deletions

File tree

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,9 @@
6161
[submodule "MarathonRecompResources"]
6262
path = MarathonRecompResources
6363
url = https://github.com/IsaacMarovitz/MarathonRecompResources
64+
[submodule "thirdparty/MoltenVK/MoltenVK"]
65+
path = thirdparty/MoltenVK/MoltenVK
66+
url = https://github.com/KhronosGroup/MoltenVK.git
67+
[submodule "thirdparty/MoltenVK/SPIRV-Cross"]
68+
path = thirdparty/MoltenVK/SPIRV-Cross
69+
url = https://github.com/KhronosGroup/SPIRV-Cross.git

thirdparty/MoltenVK/CMakeLists.txt

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
# Simple CMake script to compile MoltenVK with SPIRV-Cross as a shared library target
2+
3+
# Prepare MoltenVK Git revision
4+
find_package(Git)
5+
if(GIT_FOUND)
6+
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
7+
OUTPUT_VARIABLE MVK_GIT_REV
8+
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK
9+
ERROR_QUIET
10+
OUTPUT_STRIP_TRAILING_WHITESPACE)
11+
endif()
12+
set(MVK_GENERATED_INCLUDES ${CMAKE_CURRENT_BINARY_DIR}/Generated)
13+
file(WRITE ${MVK_GENERATED_INCLUDES}/mvkGitRevDerived.h "static const char* mvkRevString = \"${MVK_GIT_REV}\";")
14+
message(STATUS "MoltenVK revision: ${MVK_GIT_REV}")
15+
16+
# Prepare MoltenVK version
17+
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK/MoltenVK/API/mvk_private_api.h MVK_PRIVATE_API)
18+
string(REGEX MATCH "#define MVK_VERSION_MAJOR [0-9]+" MVK_VERSION_MAJOR_LINE "${MVK_PRIVATE_API}")
19+
string(REGEX MATCH "[0-9]+" MVK_VERSION_MAJOR "${MVK_VERSION_MAJOR_LINE}")
20+
string(REGEX MATCH "#define MVK_VERSION_MINOR [0-9]+" MVK_VERSION_MINOR_LINE "${MVK_PRIVATE_API}")
21+
string(REGEX MATCH "[0-9]+" MVK_VERSION_MINOR "${MVK_VERSION_MINOR_LINE}")
22+
string(REGEX MATCH "#define MVK_VERSION_PATCH [0-9]+" MVK_VERSION_PATCH_LINE "${MVK_PRIVATE_API}")
23+
string(REGEX MATCH "[0-9]+" MVK_VERSION_PATCH "${MVK_VERSION_PATCH_LINE}")
24+
set(MVK_VERSION "${MVK_VERSION_MAJOR}.${MVK_VERSION_MINOR}.${MVK_VERSION_PATCH}")
25+
message(STATUS "MoltenVK version: ${MVK_VERSION}")
26+
27+
# Find required system libraries
28+
find_library(APPKIT_LIBRARY AppKit REQUIRED)
29+
find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
30+
find_library(IOKIT_LIBRARY IOKit REQUIRED)
31+
find_library(IOSURFACE_LIBRARY IOSurface REQUIRED)
32+
find_library(METAL_LIBRARY Metal REQUIRED)
33+
find_library(QUARTZCORE_LIBRARY QuartzCore REQUIRED)
34+
35+
# SPIRV-Cross
36+
option(SPIRV_CROSS_CLI "" OFF)
37+
option(SPIRV_CROSS_ENABLE_TESTS "" OFF)
38+
option(SPIRV_CROSS_ENABLE_HLSL "" OFF)
39+
option(SPIRV_CROSS_ENABLE_CPP "" OFF)
40+
option(SPIRV_CROSS_SKIP_INSTALL "" ON)
41+
add_subdirectory(SPIRV-Cross)
42+
43+
# Common
44+
set(MVK_COMMON_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/Common)
45+
file(GLOB_RECURSE MVK_COMMON_SOURCES CONFIGURE_DEPENDS
46+
${MVK_COMMON_DIR}/*.cpp
47+
${MVK_COMMON_DIR}/*.m
48+
${MVK_COMMON_DIR}/*.mm)
49+
set(MVK_COMMON_INCLUDES ${MVK_COMMON_DIR})
50+
51+
add_library(MoltenVKCommon STATIC ${MVK_COMMON_SOURCES})
52+
target_include_directories(MoltenVKCommon PUBLIC ${MVK_COMMON_INCLUDES})
53+
target_compile_options(MoltenVKCommon PRIVATE -w)
54+
55+
# MoltenVKShaderConverter
56+
set(MVK_SHADER_CONVERTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVKShaderConverter)
57+
file(GLOB_RECURSE MVK_SHADER_CONVERTER_SOURCES CONFIGURE_DEPENDS
58+
${MVK_SHADER_CONVERTER_DIR}/MoltenVKShaderConverter/*.cpp
59+
${MVK_SHADER_CONVERTER_DIR}/MoltenVKShaderConverter/*.m
60+
${MVK_SHADER_CONVERTER_DIR}/MoltenVKShaderConverter/*.mm)
61+
set(MVK_SHADER_CONVERTER_INCLUDES ${MVK_SHADER_CONVERTER_DIR} ${MVK_SHADER_CONVERTER_DIR}/include)
62+
63+
add_library(MoltenVKShaderConverter STATIC ${MVK_SHADER_CONVERTER_SOURCES})
64+
target_include_directories(MoltenVKShaderConverter PUBLIC ${MVK_SHADER_CONVERTER_INCLUDES})
65+
target_compile_options(MoltenVKShaderConverter PRIVATE -w)
66+
target_link_libraries(MoltenVKShaderConverter PRIVATE spirv-cross-msl spirv-cross-reflect MoltenVKCommon)
67+
target_compile_definitions(MoltenVKShaderConverter PRIVATE MVK_EXCLUDE_SPIRV_TOOLS=1)
68+
69+
# MoltenVK
70+
set(MVK_DIR ${CMAKE_CURRENT_SOURCE_DIR}/MoltenVK/MoltenVK)
71+
file(GLOB_RECURSE MVK_SOURCES CONFIGURE_DEPENDS
72+
${MVK_DIR}/MoltenVK/*.cpp
73+
${MVK_DIR}/MoltenVK/*.m
74+
${MVK_DIR}/MoltenVK/*.mm)
75+
file(GLOB MVK_SRC_INCLUDES LIST_DIRECTORIES ON ${MVK_DIR}/MoltenVK/*)
76+
set(MVK_INCLUDES
77+
${MVK_SRC_INCLUDES} ${MVK_GENERATED_INCLUDES} ${MVK_DIR}/include
78+
${MARATHON_RECOMP_THIRDPARTY_ROOT}/Vulkan-Headers/include)
79+
80+
add_library(MoltenVK SHARED ${MVK_SOURCES})
81+
target_include_directories(MoltenVK PRIVATE ${MVK_INCLUDES})
82+
target_compile_options(MoltenVK PRIVATE -w)
83+
target_link_libraries(MoltenVK PRIVATE
84+
${APPKIT_LIBRARY} ${FOUNDATION_LIBRARY} ${IOKIT_LIBRARY} ${IOSURFACE_LIBRARY} ${METAL_LIBRARY} ${QUARTZCORE_LIBRARY}
85+
spirv-cross-msl MoltenVKCommon MoltenVKShaderConverter)
86+
target_compile_definitions(MoltenVK PRIVATE MVK_FRAMEWORK_VERSION=${MVK_VERSION} MVK_USE_CEREAL=0)

thirdparty/MoltenVK/MoltenVK

Submodule MoltenVK added at 7cacb93

thirdparty/MoltenVK/SPIRV-Cross

Submodule SPIRV-Cross added at d8e3e2b

thirdparty/Vulkan-Headers

Submodule Vulkan-Headers updated 66 files

tools/XenonRecomp

0 commit comments

Comments
 (0)