gcc prior to 4.9 didn't implement <regex>, causing a startup crash in the swr knob parameter reading code.
CC: <mesa-sta...@lists.freedesktop.org> --- .../swr/rasterizer/codegen/templates/gen_knobs.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp index e109fd2..06b93bd 100644 --- a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp +++ b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp @@ -140,6 +140,26 @@ extern GlobalKnobs g_GlobalKnobs; //======================================================== void KnobBase::autoExpandEnvironmentVariables(std::string &text) { +#if (__GNUC__) && (GCC_VERSION < 409000) + // <regex> isn't implemented prior to gcc-4.9.0 + // unix style variable replacement + size_t start; + while ((start = text.find("${'${'}")) != std::string::npos) { + size_t end = text.find("}"); + if (end == std::string::npos) + break; + const std::string var = GetEnv(text.substr(start + 2, end - start - 2)); + text.replace(start, end - start + 1, var); + } + // win32 style variable replacement + while ((start = text.find("%")) != std::string::npos) { + size_t end = text.find("%", start + 1); + if (end == std::string::npos) + break; + const std::string var = GetEnv(text.substr(start + 1, end - start - 1)); + text.replace(start, end - start + 1, var); + } +#else { // unix style variable replacement static std::regex env("\\$\\{([^}]+)\\}"); @@ -164,6 +184,7 @@ void KnobBase::autoExpandEnvironmentVariables(std::string &text) text.replace(match.prefix().length(), match[0].length(), var); } } +#endif } -- 2.7.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev