Add helper to wrap result of std::filesystem::path::u8string() (#2535)

In C++17 the return type of std::filesystem::path::u8string() is
std::string, but in C++20 the return type changed to std::u8string.

Add a helper to copy a std::u8string to a std::string, to be used when a
std::string is required. This fixes the build for C++20.
This commit is contained in:
David Neto
2025-10-01 16:40:43 -04:00
committed by GitHub
parent ac673e5e8c
commit e92140f82d
3 changed files with 24 additions and 5 deletions

View File

@@ -17,9 +17,10 @@
#include <filesystem>
#include "harness/testHarness.h"
#include "harness/stringHelpers.h"
std::string spvBinariesPath =
(std::filesystem::path("compiler") / "spirv_bin").u8string();
to_string((std::filesystem::path("compiler") / "spirv_bin").u8string());
const std::string spvBinariesPathArg = "--spirv-binaries-path";
void printUsage()

View File

@@ -24,6 +24,7 @@
#include <unistd.h>
#endif
#include "harness/conversions.h"
#include "harness/stringHelpers.h"
#define MAX_LINE_SIZE_IN_PROGRAM 1024
#define MAX_LOG_SIZE_IN_PROGRAM 2048
@@ -3059,12 +3060,13 @@ REGISTER_TEST(execute_after_included_header_link)
}
const auto simple_header_path = temp_dir_path / simple_header_name;
FILE *simple_header_file =
fopen(simple_header_path.u8string().c_str(), "w");
const std::string simple_header_path_str =
to_string(simple_header_path.u8string());
FILE *simple_header_file = fopen(simple_header_path_str.c_str(), "w");
if (simple_header_file == NULL)
{
log_error("ERROR: Unable to create simple header file %s! (in %s:%d)\n",
simple_header_path.u8string().c_str(), __FILE__, __LINE__);
simple_header_path_str.c_str(), __FILE__, __LINE__);
return -1;
}
if (fprintf(simple_header_file, "%s", simple_header) < 0)
@@ -3082,7 +3084,7 @@ REGISTER_TEST(execute_after_included_header_link)
}
const std::string include_path =
std::string("-I") + temp_dir_path.generic_u8string();
std::string("-I") + to_string(temp_dir_path.generic_u8string());
error = clCompileProgram(program, 1, &device, include_path.c_str(), 0, NULL,
NULL, NULL, NULL);
test_error(error,