Merge topic 'autogen-rcc-zstd' into release-3.29

9e87df4d46 Autogen/RCC: Disable zstd if it is not supported

Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: alcroito <alexandru.croitor@qt.io>
Merge-request: !9232
This commit is contained in:
Brad King
2024-02-12 15:50:44 +00:00
committed by Kitware Robot
3 changed files with 46 additions and 0 deletions

View File

@@ -883,6 +883,27 @@ bool cmQtAutoGenInitializer::InitRcc()
}
}
// Disable zstd if it is not supported
{
std::string const qtFeatureZSTD = "QT_FEATURE_zstd";
if (this->GenTarget->Target->GetMakefile()->IsDefinitionSet(
qtFeatureZSTD)) {
const auto zstdDef =
this->GenTarget->Target->GetMakefile()->GetSafeDefinition(
qtFeatureZSTD);
const auto zstdVal = cmValue(zstdDef);
if (zstdVal.IsOff()) {
auto const& kw = this->GlobalInitializer->kw();
auto rccOptions = this->GenTarget->GetSafeProperty(kw.AUTORCC_OPTIONS);
std::string const nozstd = "--no-zstd";
if (rccOptions.find(nozstd) == std::string::npos) {
rccOptions.append(";" + nozstd + ";");
}
this->GenTarget->Target->SetProperty(kw.AUTORCC_OPTIONS, rccOptions);
}
}
}
return true;
}

View File

@@ -9,3 +9,7 @@ target_link_libraries(dummy Qt${with_qt_version}::Core
Qt${with_qt_version}::Gui)
set_target_properties(dummy PROPERTIES AUTORCC ON)
if(DEFINED ZSTD_VALUE)
set(QT_FEATURE_zstd ${ZSTD_VALUE})
endif()

View File

@@ -463,4 +463,25 @@ ${make_program_stderr}
endblock()
endforeach()
endif()
if (QtCore_VERSION VERSION_GREATER_EQUAL 6)
if (RunCMake_GENERATOR MATCHES "Make|Ninja")
foreach(value IN ITEMS ON OFF)
block()
set(RunCMake_TEST_BINARY_DIR
${RunCMake_BINARY_DIR}/RccNoZTSD-${value}-build)
run_cmake_with_options(RccExample ${RunCMake_TEST_OPTIONS}
-DCMAKE_AUTOGEN_VERBOSE=ON -DZSTD_VALUE=${value})
if (value STREQUAL "OFF")
set(RunCMake_TEST_EXPECT_stdout "--no-zstd")
else()
set(RunCMake_TEST_NOT_EXPECT_stdout "--no-zstd")
endif()
set(RunCMake_TEST_NO_CLEAN 1)
run_cmake_command(RccNoZTSD-${value}-build ${CMAKE_COMMAND}
--build . --config Debug)
endblock()
endforeach()
endif()
endif()
endif ()