blob: 238e620eaa8e6515b8dbc95bada2a6e266badaee [file] [log] [blame]
// Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.utils;
import com.android.tools.r8.Version;
import com.google.common.base.Suppliers;
import java.util.function.Supplier;
public class SemanticVersionUtils {
public static Supplier<SemanticVersion> compilerVersionSemanticVersionSupplier(
SemanticVersion forceCompilerVersion,
String artificialMaxVersionWarningInfo,
Reporter reporter) {
return Suppliers.memoize(
() -> {
SemanticVersion compilerVersion =
forceCompilerVersion == null
? SemanticVersion.create(
Version.getMajorVersion(),
Version.getMinorVersion(),
Version.getPatchVersion())
: forceCompilerVersion;
if (compilerVersion.getMajor() < 0) {
compilerVersion =
SemanticVersion.create(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE);
reporter.warning(
"Running R8 version "
+ Version.getVersionString()
+ ", which cannot be represented as a semantic version."
+ (artificialMaxVersionWarningInfo == null
? ""
: (" " + artificialMaxVersionWarningInfo)));
}
return compilerVersion;
});
}
}