diff --git a/CMakeLists.txt b/CMakeLists.txt
index 75ead2615..813d103bb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -188,24 +188,26 @@ endif()
message(STATUS "Calculating version")
-execute_process(
- COMMAND awk "{ if (/_MAJOR [0-9]/) { print $3 } }" renderdoc/api/replay/version.h
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE RENDERDOC_VERSION_MAJOR
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
+file(READ ${CMAKE_SOURCE_DIR}/renderdoc/api/replay/version.h VERSION_CONTENTS)
-execute_process(
- COMMAND awk "{ if (/_MINOR [0-9]/) { print $3 } }" renderdoc/api/replay/version.h
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
- OUTPUT_VARIABLE RENDERDOC_VERSION_MINOR
- OUTPUT_STRIP_TRAILING_WHITESPACE
- )
+string(REGEX MATCH "_MAJOR [0-9]+" MAJOR_VERSION_LINE "${VERSION_CONTENTS}")
+string(REGEX MATCH "[0-9]+" RENDERDOC_VERSION_MAJOR "${MAJOR_VERSION_LINE}")
+
+string(REGEX MATCH "_MINOR [0-9]+" MINOR_VERSION_LINE "${VERSION_CONTENTS}")
+string(REGEX MATCH "[0-9]+" RENDERDOC_VERSION_MINOR "${MINOR_VERSION_LINE}")
set(RENDERDOC_VERSION "${RENDERDOC_VERSION_MAJOR}.${RENDERDOC_VERSION_MINOR}")
message(STATUS "Building RenderDoc version ${RENDERDOC_VERSION}")
+if(RENDERDOC_VERSION_MAJOR STREQUAL "")
+ message(FATAL_ERROR "Couldn't calculate major version")
+endif()
+
+if(RENDERDOC_VERSION_MINOR STREQUAL "")
+ message(FATAL_ERROR "Couldn't calculate minor version")
+endif()
+
if(APPLE)
message(STATUS "Disabling GLES driver on apple")
set(ENABLE_GLES OFF CACHE BOOL "" FORCE)
diff --git a/renderdoc/driver/vulkan/CMakeLists.txt b/renderdoc/driver/vulkan/CMakeLists.txt
index 04198cf9f..f5aede826 100644
--- a/renderdoc/driver/vulkan/CMakeLists.txt
+++ b/renderdoc/driver/vulkan/CMakeLists.txt
@@ -91,12 +91,12 @@ elseif(ENABLE_GGP)
list(APPEND sources vk_posix.cpp vk_ggp.cpp)
add_definitions(-DVK_USE_PLATFORM_GGP)
+ set(VULKAN_LAYER_MODULE_PATH "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${LIB_SUBFOLDER_TRAIL_SLASH}librenderdoc.so")
+
set(json_in ${CMAKE_CURRENT_SOURCE_DIR}/renderdoc.json)
set(json_out ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/renderdoc_capture.json)
- add_custom_command(OUTPUT ${json_out}
- COMMAND sed '{s%\\[MAJOR\\]%${RENDERDOC_VERSION_MAJOR}%\; s%\\[MINOR\\]%${RENDERDOC_VERSION_MINOR}%\; s%...renderdoc.dll%${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${LIB_SUBFOLDER_TRAIL_SLASH}librenderdoc.so%}' < ${json_in} > ${json_out}
- DEPENDS ${json_in})
- add_custom_target(generate-json ALL DEPENDS ${json_out})
+
+ configure_file(${json_in} ${json_out})
install (FILES ${json_out} DESTINATION ${VULKAN_LAYER_FOLDER})
elseif(UNIX)
@@ -110,12 +110,12 @@ elseif(UNIX)
add_definitions(-DVK_USE_PLATFORM_XCB_KHR)
endif()
+ set(VULKAN_LAYER_MODULE_PATH "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${LIB_SUBFOLDER_TRAIL_SLASH}librenderdoc.so")
+
set(json_in ${CMAKE_CURRENT_SOURCE_DIR}/renderdoc.json)
set(json_out ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/renderdoc_capture.json)
- add_custom_command(OUTPUT ${json_out}
- COMMAND sed '{s%\\[MAJOR\\]%${RENDERDOC_VERSION_MAJOR}%\; s%\\[MINOR\\]%${RENDERDOC_VERSION_MINOR}%\; s%...renderdoc.dll%${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/${LIB_SUBFOLDER_TRAIL_SLASH}librenderdoc.so%}' < ${json_in} > ${json_out}
- DEPENDS ${json_in})
- add_custom_target(generate-json ALL DEPENDS ${json_out})
+
+ configure_file(${json_in} ${json_out})
install (FILES ${json_out} DESTINATION ${VULKAN_LAYER_FOLDER})
endif()
diff --git a/renderdoc/driver/vulkan/renderdoc.json b/renderdoc/driver/vulkan/renderdoc.json
index 9930852ca..f13e1fea9 100644
--- a/renderdoc/driver/vulkan/renderdoc.json
+++ b/renderdoc/driver/vulkan/renderdoc.json
@@ -3,9 +3,9 @@
"layer" : {
"name": "VK_LAYER_RENDERDOC_Capture",
"type": "GLOBAL",
- "library_path": ".\\renderdoc.dll",
+ "library_path": "@VULKAN_LAYER_MODULE_PATH@",
"api_version": "1.1.73",
- "implementation_version": "[MINOR]",
+ "implementation_version": "@RENDERDOC_VERSION_MINOR@",
"description": "Debugging capture layer for RenderDoc",
"functions": {
"vkGetInstanceProcAddr": "VK_LAYER_RENDERDOC_CaptureGetInstanceProcAddr",
@@ -37,7 +37,7 @@
"ENABLE_VULKAN_RENDERDOC_CAPTURE": "1"
},
"disable_environment": {
- "DISABLE_VULKAN_RENDERDOC_CAPTURE_[MAJOR]_[MINOR]": "1"
+ "DISABLE_VULKAN_RENDERDOC_CAPTURE_@RENDERDOC_VERSION_MAJOR@_@RENDERDOC_VERSION_MINOR@": "1"
}
}
}
diff --git a/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj b/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj
index 2d038d7c6..bf6b80525 100644
--- a/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj
+++ b/renderdoc/driver/vulkan/renderdoc_vulkan.vcxproj
@@ -220,7 +220,7 @@
- $([System.IO.File]::ReadAllText('$(ProjectDir)renderdoc.json').Replace('[MAJOR]', '$(MajorVersion)').Replace('[MINOR]', '$(MinorVersion)'))
+ $([System.IO.File]::ReadAllText('$(ProjectDir)renderdoc.json').Replace('@RENDERDOC_VERSION_MAJOR@', '$(MajorVersion)').Replace('@RENDERDOC_VERSION_MINOR@', '$(MinorVersion)').Replace('@VULKAN_LAYER_MODULE_PATH@', '.\\renderdoc.dll'))
diff --git a/renderdoc/driver/vulkan/vk_posix.cpp b/renderdoc/driver/vulkan/vk_posix.cpp
index ba7863481..4f4cbf1f4 100644
--- a/renderdoc/driver/vulkan/vk_posix.cpp
+++ b/renderdoc/driver/vulkan/vk_posix.cpp
@@ -228,13 +228,13 @@ static std::string GenerateJSON(const std::string &sopath)
std::string json = std::string(txt, txt + len);
- const char dllPathString[] = ".\\\\renderdoc.dll";
+ const char modulePathString[] = "@VULKAN_LAYER_MODULE_PATH@";
- size_t idx = json.find(dllPathString);
+ size_t idx = json.find(modulePathString);
- json = json.substr(0, idx) + sopath + json.substr(idx + sizeof(dllPathString) - 1);
+ json = json.substr(0, idx) + sopath + json.substr(idx + sizeof(modulePathString) - 1);
- const char majorString[] = "[MAJOR]";
+ const char majorString[] = "@RENDERDOC_VERSION_MAJOR@";
idx = json.find(majorString);
while(idx != std::string::npos)
@@ -245,7 +245,7 @@ static std::string GenerateJSON(const std::string &sopath)
idx = json.find(majorString);
}
- const char minorString[] = "[MINOR]";
+ const char minorString[] = "@RENDERDOC_VERSION_MINOR@";
idx = json.find(minorString);
while(idx != std::string::npos)