blob: c697759ac709202fb39f2407aed9c079191e2aac [file] [log] [blame]
Ian Zernydcb172e2022-02-22 15:36:45 +01001#!/usr/bin/env python3
Ian Zerny5fffb0a2019-02-11 13:54:22 +01002# Copyright (c) 2019, the R8 project authors. Please see the AUTHORS file
3# for details. All rights reserved. Use of this source code is governed by a
4# BSD-style license that can be found in the LICENSE file.
5
6import os
7import sys
Ian Zerny5fffb0a2019-02-11 13:54:22 +01008
Ian Zernya8b7d422022-03-31 11:20:49 +02009import defines
10
Ian Zerny3f54e222019-02-12 10:51:17 +010011JDK_DIR = os.path.join(defines.THIRD_PARTY, 'openjdk')
Ian Zerny5fffb0a2019-02-11 13:54:22 +010012
Søren Gjesse00a92742023-11-01 10:39:16 +010013ALL_JDKS = ['openjdk-9.0.4', 'jdk-11', 'jdk-15', 'jdk-16', 'jdk-17',
14 'jdk-18', 'jdk-21']
Rico Wind80af6202023-08-29 12:41:01 +020015
16
Ian Zerny5fffb0a2019-02-11 13:54:22 +010017def GetJdkHome():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020018 return GetJdk11Home()
19
Ian Zernya8b7d422022-03-31 11:20:49 +020020
Rico Winda12d1cf2022-04-22 07:37:00 +000021def GetJdkRoot():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020022 return GetJdk11Root()
23
Rico Winda12d1cf2022-04-22 07:37:00 +000024
25def GetJdk11Root():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020026 root = os.path.join(JDK_DIR, 'jdk-11')
27 os_root = GetOSPath(root)
28 return os_root if os_root else os.environ['JAVA_HOME']
29
Rico Wind80af6202023-08-29 12:41:01 +020030
31def GetOSPath(root):
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020032 if defines.IsLinux():
33 return os.path.join(root, 'linux')
34 elif defines.IsOsX():
35 return os.path.join(root, 'osx')
36 elif defines.IsWindows():
37 return os.path.join(root, 'windows')
38 else:
39 return None
40
Rico Wind80af6202023-08-29 12:41:01 +020041
42def GetAllJdkDirs():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020043 dirs = []
44 for jdk in ALL_JDKS:
45 root = GetOSPath(os.path.join(JDK_DIR, jdk))
46 # Some jdks are not available on windows, don't try to get these.
47 if os.path.exists(root + '.tar.gz.sha1'):
48 dirs.append(root)
49 return dirs
50
Ian Zerny5fffb0a2019-02-11 13:54:22 +010051
Rico Winda12d1cf2022-04-22 07:37:00 +000052def GetJdk11Home():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020053 root = GetJdk11Root()
54 # osx has the home inside Contents/Home in the bundle
55 if defines.IsOsX():
56 return os.path.join(root, 'Contents', 'Home')
57 else:
58 return root
59
Rico Winda12d1cf2022-04-22 07:37:00 +000060
Ian Zernya8b7d422022-03-31 11:20:49 +020061def GetJdk9Home():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020062 root = os.path.join(JDK_DIR, 'openjdk-9.0.4')
63 if defines.IsLinux():
64 return os.path.join(root, 'linux')
65 elif defines.IsOsX():
66 return os.path.join(root, 'osx')
67 elif defines.IsWindows():
68 return os.path.join(root, 'windows')
69 else:
70 return os.environ['JAVA_HOME']
71
Clément Béra54696f72021-11-16 09:27:22 +000072
Morten Krogh-Jespersenf2f98e12020-03-23 09:02:30 +010073def GetJdk8Home():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020074 root = os.path.join(JDK_DIR, 'jdk8')
75 if defines.IsLinux():
76 return os.path.join(root, 'linux-x86')
77 elif defines.IsOsX():
78 return os.path.join(root, 'darwin-x86')
79 else:
80 return os.environ['JAVA_HOME']
81
Morten Krogh-Jespersenf2f98e12020-03-23 09:02:30 +010082
Ian Zerny5fffb0a2019-02-11 13:54:22 +010083def GetJavaExecutable(jdkHome=None):
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020084 jdkHome = jdkHome if jdkHome else GetJdkHome()
85 executable = 'java.exe' if defines.IsWindows() else 'java'
86 return os.path.join(jdkHome, 'bin', executable) if jdkHome else executable
87
Ian Zerny5fffb0a2019-02-11 13:54:22 +010088
89def GetJavacExecutable(jdkHome=None):
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020090 jdkHome = jdkHome if jdkHome else GetJdkHome()
91 executable = 'javac.exe' if defines.IsWindows() else 'javac'
92 return os.path.join(jdkHome, 'bin', executable) if jdkHome else executable
93
Ian Zerny5fffb0a2019-02-11 13:54:22 +010094
Ian Zerny5fffb0a2019-02-11 13:54:22 +010095def Main():
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +020096 print(GetJdkHome())
97
Ian Zerny5fffb0a2019-02-11 13:54:22 +010098
99if __name__ == '__main__':
Christoffer Quist Adamsen2434a4d2023-10-16 11:29:03 +0200100 sys.exit(Main())