| #!/usr/bin/env python3 |
| # Copyright (c) 2019, 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. |
| |
| import os |
| import sys |
| |
| import defines |
| |
| JDK_DIR = os.path.join(defines.THIRD_PARTY, 'openjdk') |
| |
| ALL_JDKS = ['openjdk-9.0.4', 'jdk-11', 'jdk-15', 'jdk-16', 'jdk-17', |
| 'jdk-18', 'jdk-21', 'jdk-23'] |
| |
| |
| def GetJdkHome(): |
| return GetJdk11Home() |
| |
| |
| def GetJdkRoot(): |
| return GetJdk11Root() |
| |
| |
| def GetJdk11Root(): |
| root = os.path.join(JDK_DIR, 'jdk-11') |
| os_root = GetOSPath(root) |
| return os_root if os_root else os.environ['JAVA_HOME'] |
| |
| |
| def GetOSPath(root): |
| if defines.IsLinux(): |
| return os.path.join(root, 'linux') |
| elif defines.IsOsX(): |
| return os.path.join(root, 'osx') |
| elif defines.IsWindows(): |
| return os.path.join(root, 'windows') |
| else: |
| return None |
| |
| |
| def GetAllJdkDirs(): |
| dirs = [] |
| for jdk in ALL_JDKS: |
| root = GetOSPath(os.path.join(JDK_DIR, jdk)) |
| # Some jdks are not available on windows, don't try to get these. |
| if os.path.exists(root + '.tar.gz.sha1'): |
| dirs.append(root) |
| return dirs |
| |
| |
| def GetJdk11Home(): |
| root = GetJdk11Root() |
| # osx has the home inside Contents/Home in the bundle |
| if defines.IsOsX(): |
| return os.path.join(root, 'Contents', 'Home') |
| else: |
| return root |
| |
| |
| def GetJdk9Home(): |
| root = os.path.join(JDK_DIR, 'openjdk-9.0.4') |
| if defines.IsLinux(): |
| return os.path.join(root, 'linux') |
| elif defines.IsOsX(): |
| return os.path.join(root, 'osx') |
| elif defines.IsWindows(): |
| return os.path.join(root, 'windows') |
| else: |
| return os.environ['JAVA_HOME'] |
| |
| |
| def GetJdk8Home(): |
| root = os.path.join(JDK_DIR, 'jdk8') |
| if defines.IsLinux(): |
| return os.path.join(root, 'linux-x86') |
| elif defines.IsOsX(): |
| return os.path.join(root, 'darwin-x86') |
| else: |
| return os.environ['JAVA_HOME'] |
| |
| |
| def GetJavaExecutable(jdkHome=None): |
| jdkHome = jdkHome if jdkHome else GetJdkHome() |
| executable = 'java.exe' if defines.IsWindows() else 'java' |
| return os.path.join(jdkHome, 'bin', executable) if jdkHome else executable |
| |
| |
| def GetJavacExecutable(jdkHome=None): |
| jdkHome = jdkHome if jdkHome else GetJdkHome() |
| executable = 'javac.exe' if defines.IsWindows() else 'javac' |
| return os.path.join(jdkHome, 'bin', executable) if jdkHome else executable |
| |
| |
| def Main(): |
| print(GetJdkHome()) |
| |
| |
| if __name__ == '__main__': |
| sys.exit(Main()) |