| // Copyright (c) 2017, 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; | |
| import com.android.tools.r8.processkeeprules.annotations.KeepForProcessKeepRulesApi; | |
| import com.android.tools.r8.utils.VersionProperties; | |
| /** Version of the D8/R8 library. */ | |
| @KeepForProcessKeepRulesApi | |
| public final class Version { | |
| private static final String MAIN_LABEL = "main"; | |
| // This field is accessed from release scripts using simple pattern matching. | |
| // Therefore, changing this field could break our release scripts. | |
| public static final String LABEL = "9.4.32"; | |
| private Version() { | |
| } | |
| /** Returns current R8 version (with additional info) as a string. */ | |
| public static String getVersionString() { | |
| return LABEL + " (" + VersionProperties.INSTANCE.getDescription() + ")"; | |
| } | |
| /** | |
| * Returns the major version number of the compiler. | |
| * | |
| * @return Major version or -1 for an unreleased build. | |
| */ | |
| public static int getMajorVersion() { | |
| return getMajorVersion(LABEL); | |
| } | |
| static int getMajorVersion(String label) { | |
| if (label.equals(MAIN_LABEL)) { | |
| return -1; | |
| } | |
| int start = 0; | |
| int end = label.indexOf('.'); | |
| return Integer.parseInt(label.substring(start, end)); | |
| } | |
| /** | |
| * Returns the minor version number of the compiler. | |
| * | |
| * @return Minor version or -1 for an unreleased build. | |
| */ | |
| public static int getMinorVersion() { | |
| return getMinorVersion(LABEL); | |
| } | |
| static int getMinorVersion(String label) { | |
| if (label.equals(MAIN_LABEL)) { | |
| return -1; | |
| } | |
| int start = label.indexOf('.') + 1; | |
| int end = label.indexOf('.', start); | |
| return Integer.parseInt(label.substring(start, end)); | |
| } | |
| /** | |
| * Returns the patch version number of the compiler. | |
| * | |
| * @return Patch version or -1 for an unreleased build. | |
| */ | |
| public static int getPatchVersion() { | |
| return getPatchVersion(LABEL); | |
| } | |
| static int getPatchVersion(String label) { | |
| if (label.equals(MAIN_LABEL)) { | |
| return -1; | |
| } | |
| int skip = label.indexOf('.') + 1; | |
| int start = label.indexOf('.', skip) + 1; | |
| int end = label.indexOf('-', start); | |
| return Integer.parseInt(label.substring(start, end != -1 ? end : label.length())); | |
| } | |
| /** | |
| * Returns the pre-release version information of the compiler. | |
| * | |
| * @return Pre-release information if present, the empty string if absent, and null for an | |
| * unreleased build. | |
| */ | |
| public static String getPreReleaseString() { | |
| return getPreReleaseString(LABEL); | |
| } | |
| static String getPreReleaseString(String label) { | |
| if (label.equals(MAIN_LABEL)) { | |
| return null; | |
| } | |
| int start = label.indexOf('-') + 1; | |
| if (start > 0) { | |
| return label.substring(start); | |
| } | |
| return ""; | |
| } | |
| /** | |
| * Is this a development version of the D8/R8 library. | |
| * | |
| * @return True if the build is not a release or if it is a development release. | |
| */ | |
| public static boolean isDevelopmentVersion() { | |
| return isDevelopmentVersion(LABEL, VersionProperties.INSTANCE.isEngineering()); | |
| } | |
| static boolean isDevelopmentVersion(String label, boolean isEngineering) { | |
| return label.equals(MAIN_LABEL) || label.endsWith("-dev") || isEngineering; | |
| } | |
| public static boolean isMainVersion() { | |
| return LABEL.equals(MAIN_LABEL); | |
| } | |
| } |