def _GenerateConfigVariableReport(
            log: Log, topLevelPackage: Package,
            configVariantOptions: List[str]) -> GeneratorVariableReport:
        variableReport = GeneratorVariableReport(
            log, configVariantOptions=configVariantOptions)
        # Add all the package variants
        for variantEntry in topLevelPackage.ResolvedAllVariantDict.values():
            variantEntryOptions = [
                option.Name for option in variantEntry.Options
            ]
            variableReport.Add(variantEntry.Name, variantEntryOptions)

        # CMake names for debug and release building
        variableReport.Add(LocalMagicBuildVariants.CMakeBuildConfig,
                           ['Debug', 'Release', 'Debug'],
                           ToolAddedVariant.CONFIG)
        # CMake settings for the code coverage option
        variableReport.Add(LocalMagicBuildVariants.OptionCodeCoverage,
                           ['OFF', 'OFF', 'ON'], ToolAddedVariant.CONFIG)

        # make builds default to release
        variableReport.SetDefaultOption(
            ToolAddedVariant.CONFIG,
            ToolAddedVariantConfigOption.GetDefaultSetting())
        return variableReport
    def _GenerateVariableReport(
            log: Log, generatorName: str, package: Package,
            configVariantOptions: List[str],
            isMasterBuild: bool) -> GeneratorVariableReport:
        variableReport = GeneratorVariableReport(
            log, configVariantOptions=configVariantOptions)
        # Add all the package variants
        for variantEntry in package.ResolvedAllVariantDict.values():
            variantEntryOptions = [
                option.Name for option in variantEntry.Options
            ]
            variableReport.Add(variantEntry.Name, variantEntryOptions)

        # The make files generate executable files in debug mode with the postfix '_d'
        exeFileExtensionOptionList = ['_d', '']
        # This is a bit ugly as we just assume coverage will be last
        if ToolAddedVariantConfigOption.Coverage in configVariantOptions:
            exeFileExtensionOptionList.append('_c')
        variableReport.Add(LocalMagicBuildVariants.GeneratorExeFileExtension,
                           exeFileExtensionOptionList, ToolAddedVariant.CONFIG)

        # CMake names for debug and release building
        variableReport.Add(LocalMagicBuildVariants.CMakeBuildConfig,
                           ['Debug', 'Release'], ToolAddedVariant.CONFIG)

        # make builds default to release
        variableReport.SetDefaultOption(ToolAddedVariant.CONFIG,
                                        ToolAddedVariantConfigOption.Release)
        return variableReport
    def GenerateVariableReport(log: Log, generatorName: str,
                               package: Package) -> GeneratorVariableReport:
        variableReport = GeneratorVariableReport(log)
        # Add all the package variants
        for variantEntry in package.ResolvedAllVariantDict.values():
            variantEntryOptions = [
                option.Name for option in variantEntry.Options
            ]
            variableReport.Add(variantEntry.Name, variantEntryOptions)

        # The make files generate executable files in debug mode with the postfix '_d'
        variableReport.Add(LocalMagicBuildVariants.GeneratorExeFileExtension,
                           ['_d', ''], ToolAddedVariant.CONFIG)

        # make builds default to release
        variableReport.SetDefaultOption(ToolAddedVariant.CONFIG,
                                        ToolAddedVariantConfigOption.Release)
        return variableReport