mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Don't rely on awk/sed in cmake build. Closes #1430
* It's theoretically possible to have a bash shell without awk or sed available (though very strange), so we can use cmake string processing & configure_file to get the same effect.
This commit is contained in:
+14
-12
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@
|
||||
<Message Text="Processing layer JSON file for RenderDoc $(MajorVersion).$(MinorVersion)" Importance="High" />
|
||||
<!-- Read the template json, replace the major/minor versions -->
|
||||
<PropertyGroup>
|
||||
<JSONContents>$([System.IO.File]::ReadAllText('$(ProjectDir)renderdoc.json').Replace('[MAJOR]', '$(MajorVersion)').Replace('[MINOR]', '$(MinorVersion)'))</JSONContents>
|
||||
<JSONContents>$([System.IO.File]::ReadAllText('$(ProjectDir)renderdoc.json').Replace('@RENDERDOC_VERSION_MAJOR@', '$(MajorVersion)').Replace('@RENDERDOC_VERSION_MINOR@', '$(MinorVersion)').Replace('@VULKAN_LAYER_MODULE_PATH@', '.\\renderdoc.dll'))</JSONContents>
|
||||
</PropertyGroup>
|
||||
<!-- Write it out to the output directory -->
|
||||
<WriteLinesToFile File="$(OutDir)renderdoc.json" Lines="$(JSONContents)" Overwrite="true" />
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user