blob: 84ad35c21a292bd8cd0a2b0402e922063ba63c59 [file] [log] [blame]
Avi Drissman4a8573c2022-09-09 19:35:541# Copyright 2015 The Chromium Authors
Andrew Grieve19a00ca2022-07-29 19:01:482# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5# This exposes the Chrome version as GN variables for use in build files.
6# This also generates the various version codes used for builds of chrome for
7# android.
8#
9# PREFER NOT TO USE THESE. The GYP build uses this kind of thing extensively.
10# However, it is far better to write an action (or use
11# //build/util/process_version.gni) to generate a file at build-time with the
12# information you need. This allows better dependency checking and GN will
13# run faster.
14#
15# These values should only be used if you REALLY need to depend on them at
16# build-time, for example, in the computation of output file names.
17
18# Give version.py a pattern that will expand to a GN scope consisting of
19# all values we need at once.
20_version_dictionary_template = "full = \"@MAJOR@.@MINOR@.@BUILD@.@PATCH@\" " +
21 "major = \"@MAJOR@\" minor = \"@MINOR@\" " +
22 "build = \"@BUILD@\" patch = \"@PATCH@\" "
23
24# The file containing the Chrome version number.
25chrome_version_file = "//chrome/VERSION"
26
27_script_arguments = []
28
29if (is_mac) {
30 _version_dictionary_template += "patch_hi = @PATCH_HI@ patch_lo = @PATCH_LO@ "
31
32 _script_arguments += [
33 "-e",
34 "PATCH_HI=int(PATCH)//256",
35 "-e",
36 "PATCH_LO=int(PATCH)%256",
37 ]
Simone Arpe805cfbc32024-10-25 16:24:1838}
39
40if (target_os == "android") {
Andrew Grieve19a00ca2022-07-29 19:01:4841 import("//build/config/android/config.gni")
Samuel Huang938c87502022-11-04 14:37:3142 import("//build/config/chrome_build.gni")
Andrew Grieve19a00ca2022-07-29 19:01:4843
44 _version_dictionary_template +=
45 "chrome_version_code = " + "\"@CHROME_VERSION_CODE@\" " +
Andrew Grieve19a00ca2022-07-29 19:01:4846 "monochrome_version_code = \"@MONOCHROME_VERSION_CODE@\" " +
47 "trichrome_version_code = \"@TRICHROME_VERSION_CODE@\" " +
Ben Masonad24b0ec2023-09-06 16:31:4948 "trichrome_auto_version_code = \"@TRICHROME_AUTO_VERSION_CODE@\" " +
Nate Fischer04da18c2022-09-29 22:55:5049 "trichrome_beta_version_code = \"@TRICHROME_BETA_VERSION_CODE@\" " +
Andrew Grieve19a00ca2022-07-29 19:01:4850 "webview_stable_version_code = \"@WEBVIEW_STABLE_VERSION_CODE@\" " +
51 "webview_beta_version_code = \"@WEBVIEW_BETA_VERSION_CODE@\" " +
52 "webview_dev_version_code = \"@WEBVIEW_DEV_VERSION_CODE@\" "
53
Prashanth Swaminathan6a74faf2023-05-12 19:52:3854 # Generate hybrid configurations for target_cpu's that can run in hybrid configurations.
55 # i.e. "riscv64" does not show up in this list, as it's a 64-bit-only target_cpu.
Andrew Grieve19a00ca2022-07-29 19:01:4856 if (target_cpu == "arm64" || target_cpu == "x64") {
Nate Fischer161dd6862022-09-24 02:09:3257 _version_dictionary_template +=
Mohamed Heikalaff3bd42023-12-13 16:36:0158 "chrome_32_version_code = \"@CHROME_32_VERSION_CODE@\" "
59 _version_dictionary_template +=
Nate Fischer161dd6862022-09-24 02:09:3260 "monochrome_32_version_code = \"@MONOCHROME_32_VERSION_CODE@\" "
61 _version_dictionary_template +=
62 "monochrome_32_64_version_code = \"@MONOCHROME_32_64_VERSION_CODE@\" "
63 _version_dictionary_template +=
64 "monochrome_64_32_version_code = \"@MONOCHROME_64_32_VERSION_CODE@\" "
65 _version_dictionary_template +=
66 "monochrome_64_version_code = \"@MONOCHROME_64_VERSION_CODE@\" "
67 _version_dictionary_template +=
68 "trichrome_32_version_code = \"@TRICHROME_32_VERSION_CODE@\" "
69 _version_dictionary_template +=
Ben Masonad24b0ec2023-09-06 16:31:4970 "trichrome_auto_32_version_code = \"@TRICHROME_AUTO_32_VERSION_CODE@\" "
Mohamed Heikalaff3bd42023-12-13 16:36:0171 _version_dictionary_template += "trichrome_auto_32_64_version_code = \"@TRICHROME_AUTO_32_64_VERSION_CODE@\" "
Ben Masonad24b0ec2023-09-06 16:31:4972 _version_dictionary_template +=
Nate Fischer161dd6862022-09-24 02:09:3273 "trichrome_32_64_version_code = \"@TRICHROME_32_64_VERSION_CODE@\" "
74 _version_dictionary_template +=
75 "trichrome_64_32_version_code = \"@TRICHROME_64_32_VERSION_CODE@\" "
Samuel Huang40b8d8252023-02-06 16:34:2076 _version_dictionary_template += "trichrome_auto_64_32_version_code = \"@TRICHROME_AUTO_64_32_VERSION_CODE@\" "
Ben Masone304722c2023-02-02 20:57:5177 _version_dictionary_template +=
Nate Fischer161dd6862022-09-24 02:09:3278 "trichrome_64_version_code = \"@TRICHROME_64_VERSION_CODE@\" "
Ben Masonad24b0ec2023-09-06 16:31:4979 _version_dictionary_template +=
80 "trichrome_auto_64_version_code = \"@TRICHROME_AUTO_64_VERSION_CODE@\" "
Ben Masone6b009ff2024-07-10 16:36:5481 _version_dictionary_template +=
82 "trichrome_desktop_64_version_code = \"@TRICHROME_DESKTOP_64_VERSION_CODE@\" "
Samuel Huang938c87502022-11-04 14:37:3183 if (target_cpu == "arm64") {
Samuel Huang40b8d8252023-02-06 16:34:2084 _version_dictionary_template += "trichrome_64_32_high_version_code = \"@TRICHROME_64_32_HIGH_VERSION_CODE@\" "
Ben Masonc9fff862023-08-25 19:00:1385 _version_dictionary_template += "trichrome_auto_64_32_high_version_code = \"@TRICHROME_AUTO_64_32_HIGH_VERSION_CODE@\" "
Samuel Huang938c87502022-11-04 14:37:3186 }
Nate Fischer161dd6862022-09-24 02:09:3287 _version_dictionary_template +=
Nate Fischer04da18c2022-09-29 22:55:5088 "trichrome_32_beta_version_code = \"@TRICHROME_32_BETA_VERSION_CODE@\" "
89 _version_dictionary_template += "trichrome_32_64_beta_version_code = \"@TRICHROME_32_64_BETA_VERSION_CODE@\" "
90 _version_dictionary_template += "trichrome_64_32_beta_version_code = \"@TRICHROME_64_32_BETA_VERSION_CODE@\" "
91 _version_dictionary_template +=
92 "trichrome_64_beta_version_code = \"@TRICHROME_64_BETA_VERSION_CODE@\" "
Samuel Huang938c87502022-11-04 14:37:3193 if (target_cpu == "arm64") {
Samuel Huang40b8d8252023-02-06 16:34:2094 _version_dictionary_template += "trichrome_64_32_high_beta_version_code = \"@TRICHROME_64_32_HIGH_BETA_VERSION_CODE@\" "
Samuel Huang938c87502022-11-04 14:37:3195 }
Nate Fischer04da18c2022-09-29 22:55:5096 _version_dictionary_template +=
Nate Fischer161dd6862022-09-24 02:09:3297 "webview_32_stable_version_code = \"@WEBVIEW_32_STABLE_VERSION_CODE@\" "
98 _version_dictionary_template +=
99 "webview_32_beta_version_code = \"@WEBVIEW_32_BETA_VERSION_CODE@\" "
100 _version_dictionary_template +=
101 "webview_32_dev_version_code = \"@WEBVIEW_32_DEV_VERSION_CODE@\" "
102 _version_dictionary_template +=
103 "webview_64_stable_version_code = \"@WEBVIEW_64_STABLE_VERSION_CODE@\" "
104 _version_dictionary_template +=
105 "webview_64_beta_version_code = \"@WEBVIEW_64_BETA_VERSION_CODE@\" "
106 _version_dictionary_template +=
107 "webview_64_dev_version_code = \"@WEBVIEW_64_DEV_VERSION_CODE@\" "
Andrew Grieve19a00ca2022-07-29 19:01:48108 }
109
110 _script_arguments += [
111 "-a",
112 target_cpu,
113 ]
Andrew Grieve19a00ca2022-07-29 19:01:48114}
115
116_script_arguments += [
117 "-f",
118 rebase_path(chrome_version_file, root_build_dir),
119 "-t",
120 _version_dictionary_template,
121 "--os",
122 target_os,
123]
124
125_result = exec_script("//build/util/version.py",
126 _script_arguments,
127 "scope",
128 [
129 chrome_version_file,
130 "//build/util/android_chrome_version.py",
131 ])
132
133# Full version. For example "45.0.12321.0"
134chrome_version_full = _result.full
135
136# The constituent parts of the full version.
137chrome_version_major = _result.major
138chrome_version_minor = _result.minor
139chrome_version_build = _result.build
140chrome_version_patch = _result.patch
141
142if (is_mac) {
143 chrome_version_patch_hi = _result.patch_hi
144 chrome_version_patch_lo = _result.patch_lo
145
146 chrome_dylib_version = "$chrome_version_build.$chrome_version_patch_hi" +
147 ".$chrome_version_patch_lo"
148} else if (target_os == "android") {
149 forward_variables_from(_result,
150 [
Andrew Grieve19a00ca2022-07-29 19:01:48151 "chrome_version_code",
Mohamed Heikalaff3bd42023-12-13 16:36:01152 "chrome_32_version_code",
Andrew Grieve19a00ca2022-07-29 19:01:48153 "monochrome_version_code",
154 "monochrome_32_version_code",
155 "monochrome_32_64_version_code",
156 "monochrome_64_32_version_code",
157 "monochrome_64_version_code",
158 "trichrome_version_code",
Ben Masonad24b0ec2023-09-06 16:31:49159 "trichrome_auto_version_code",
Andrew Grieve19a00ca2022-07-29 19:01:48160 "trichrome_32_version_code",
Ben Masonad24b0ec2023-09-06 16:31:49161 "trichrome_auto_32_version_code",
Andrew Grieve19a00ca2022-07-29 19:01:48162 "trichrome_32_64_version_code",
163 "trichrome_64_32_version_code",
Samuel Huang40b8d8252023-02-06 16:34:20164 "trichrome_64_32_high_version_code",
Ben Masonad24b0ec2023-09-06 16:31:49165 "trichrome_auto_32_64_version_code",
166 "trichrome_auto_64_version_code",
Ben Masone304722c2023-02-02 20:57:51167 "trichrome_auto_64_32_version_code",
Ben Masonc9fff862023-08-25 19:00:13168 "trichrome_auto_64_32_high_version_code",
Ben Masone6b009ff2024-07-10 16:36:54169 "trichrome_desktop_64_version_code",
Andrew Grieve19a00ca2022-07-29 19:01:48170 "trichrome_64_version_code",
Nate Fischer04da18c2022-09-29 22:55:50171 "trichrome_beta_version_code",
172 "trichrome_32_beta_version_code",
173 "trichrome_32_64_beta_version_code",
174 "trichrome_64_32_beta_version_code",
Samuel Huang40b8d8252023-02-06 16:34:20175 "trichrome_64_32_high_beta_version_code",
Nate Fischer04da18c2022-09-29 22:55:50176 "trichrome_64_beta_version_code",
Andrew Grieve19a00ca2022-07-29 19:01:48177 "webview_beta_version_code",
178 "webview_dev_version_code",
179 "webview_stable_version_code",
180 "webview_32_beta_version_code",
181 "webview_32_dev_version_code",
182 "webview_32_stable_version_code",
183 "webview_64_beta_version_code",
184 "webview_64_dev_version_code",
185 "webview_64_stable_version_code",
186 ])
187
188 chrome_version_name = chrome_version_full
Andrew Grieve8d6a6d42024-06-24 15:53:02189
190 # There is a different version code only for arm64.
191 if (is_high_end_android && target_cpu != "arm64") {
192 trichrome_64_32_high_beta_version_code = trichrome_64_32_beta_version_code
193 trichrome_64_32_high_version_code = trichrome_64_32_version_code
194 trichrome_auto_64_32_high_version_code = trichrome_auto_64_32_version_code
195 }
Andrew Grieved62d30b2023-01-24 20:11:56196}
Andrew Grieve19a00ca2022-07-29 19:01:48197
Andrew Grieved62d30b2023-01-24 20:11:56198if (is_android && current_toolchain == default_toolchain) {
Andrew Grieve19a00ca2022-07-29 19:01:48199 lines_to_write = [
200 "VersionName: $chrome_version_name",
201 "Chrome: $chrome_version_code",
Andrew Grieve19a00ca2022-07-29 19:01:48202 "Monochrome: $monochrome_version_code",
203 "TrichromeChrome: $trichrome_version_code",
Ben Mason7eca2562023-10-02 13:43:28204 "TrichromeChromeOpenBeta: $trichrome_beta_version_code",
Ben Masonad24b0ec2023-09-06 16:31:49205 "TrichromeChromeAuto: $trichrome_auto_version_code",
Andrew Grieve19a00ca2022-07-29 19:01:48206 "AndroidWebviewStable: $webview_stable_version_code",
207 "AndroidWebviewBeta: $webview_beta_version_code",
208 "AndroidWebviewDev: $webview_dev_version_code",
209 ]
210
Prashanth Swaminathan6a74faf2023-05-12 19:52:38211 if (android_64bit_target_cpu && defined(android_app_secondary_abi)) {
Andrew Grieve19a00ca2022-07-29 19:01:48212 lines_to_write += [
213 "Monochrome32: $monochrome_32_version_code",
214 "Monochrome3264: $monochrome_32_64_version_code",
215 "Monochrome6432: $monochrome_64_32_version_code",
216 "Monochrome64: $monochrome_64_version_code",
217 "TrichromeChrome32: $trichrome_32_version_code",
218 "TrichromeChrome3264: $trichrome_32_64_version_code",
219 "TrichromeChrome6432: $trichrome_64_32_version_code",
220 "TrichromeChrome64: $trichrome_64_version_code",
Ben Masonad24b0ec2023-09-06 16:31:49221 "TrichromeChromeAuto32: $trichrome_auto_32_version_code",
222 "TrichromeChromeAuto3264: $trichrome_auto_32_64_version_code",
223 "TrichromeChromeAuto64: $trichrome_auto_64_version_code",
Ben Masone304722c2023-02-02 20:57:51224 "TrichromeChromeAuto6432: $trichrome_auto_64_32_version_code",
Ben Masone6b009ff2024-07-10 16:36:54225 "TrichromeChromeDesktop64: $trichrome_desktop_64_version_code",
Samuel Huang938c87502022-11-04 14:37:31226 ]
227 if (target_cpu == "arm64") {
Ben Masonc9fff862023-08-25 19:00:13228 lines_to_write += [
229 "TrichromeChrome6432High: $trichrome_64_32_high_version_code",
Mohamed Heikalaff3bd42023-12-13 16:36:01230 "TrichromeChromeAuto6432High: $trichrome_auto_64_32_high_version_code",
Ben Masonc9fff862023-08-25 19:00:13231 ]
Samuel Huang938c87502022-11-04 14:37:31232 }
233 lines_to_write += [
Nate Fischer1e4a3fd2022-10-07 05:24:32234 "TrichromeChrome32OpenBeta: $trichrome_32_beta_version_code",
235 "TrichromeChrome3264OpenBeta: $trichrome_32_64_beta_version_code",
236 "TrichromeChrome6432OpenBeta: $trichrome_64_32_beta_version_code",
237 "TrichromeChrome64OpenBeta: $trichrome_64_beta_version_code",
Samuel Huang938c87502022-11-04 14:37:31238 ]
239 if (target_cpu == "arm64") {
Andrew Grieve3cab3e02023-05-05 19:46:02240 lines_to_write += [ "TrichromeChrome6432HighOpenBeta: $trichrome_64_32_high_beta_version_code" ]
Samuel Huang938c87502022-11-04 14:37:31241 }
242 lines_to_write += [
Andrew Grieve19a00ca2022-07-29 19:01:48243 "AndroidWebview32Stable: $webview_32_stable_version_code",
244 "AndroidWebview32Beta: $webview_32_beta_version_code",
245 "AndroidWebview32Dev: $webview_32_dev_version_code",
246 "AndroidWebview64Stable: $webview_64_stable_version_code",
247 "AndroidWebview64Beta: $webview_64_beta_version_code",
248 "AndroidWebview64Dev: $webview_64_dev_version_code",
249 ]
250 }
251
252 write_file("$root_out_dir/android_chrome_versions.txt", lines_to_write)
253}
Andrew Grieved62d30b2023-01-24 20:11:56254
255if (is_android) {
256 import("//build/config/android/channel.gni")
257 import("//build/config/android/config.gni")
258 import("//build/config/chrome_build.gni")
259
260 # Lookup tables for version codes.
261 # For the list of configurations that exist, see:
262 # https://chromium.googlesource.com/chromium/src/+/main/docs/android_native_libraries.md#build-variants-eg_monochrome_64_32_apk
263 #
264 # For how version codes are computed, see:
265 # //build/util/android_chrome_version.py
266
267 # Key: {android_64bit_target_cpu}_{is_64_bit_browser}_{include_64_bit_webview}_{include_32_bit_webview}
268 TRICHROME_VERSION_MAP = {
269 _use_stable_package_name_for_trichrome =
270 use_stable_package_name_for_trichrome && android_channel == "beta"
271
272 # 64-bit constants are not generated by version.py on non-64-bit target_cpu.
273 if (android_64bit_target_cpu) {
Prashanth Swaminathan6a74faf2023-05-12 19:52:38274 # hybrid constants are not generated by version.py on non-64-bit-only target_cpu.
275 if (defined(android_app_secondary_abi)) {
276 if (_use_stable_package_name_for_trichrome) {
277 if (is_high_end_android) {
278 true_true_true_true = trichrome_64_32_high_beta_version_code
279 } else {
280 true_true_true_true = trichrome_64_32_beta_version_code
281 }
282 true_true_true_false = trichrome_64_beta_version_code
283 true_false_false_true = trichrome_32_beta_version_code
284 true_false_true_true = trichrome_32_64_beta_version_code
Andrew Grieved62d30b2023-01-24 20:11:56285 } else {
Prashanth Swaminathan6a74faf2023-05-12 19:52:38286 if (is_high_end_android) {
287 true_true_true_true = trichrome_64_32_high_version_code
288 } else {
289 true_true_true_true = trichrome_64_32_version_code
290 }
Ben Masone6b009ff2024-07-10 16:36:54291 if (is_desktop_android) {
292 true_true_true_false = trichrome_desktop_64_version_code
293 } else {
294 true_true_true_false = trichrome_64_version_code
295 }
Prashanth Swaminathan6a74faf2023-05-12 19:52:38296 true_false_false_true = trichrome_32_version_code
297 true_false_true_true = trichrome_32_64_version_code
Andrew Grieved62d30b2023-01-24 20:11:56298 }
Andrew Grieved62d30b2023-01-24 20:11:56299 } else {
Prashanth Swaminathan6a74faf2023-05-12 19:52:38300 if (_use_stable_package_name_for_trichrome) {
301 true_true_true_false = trichrome_beta_version_code
Andrew Grieved62d30b2023-01-24 20:11:56302 } else {
Prashanth Swaminathan6a74faf2023-05-12 19:52:38303 true_true_true_false = trichrome_version_code
Andrew Grieved62d30b2023-01-24 20:11:56304 }
Andrew Grieved62d30b2023-01-24 20:11:56305 }
306 } else {
307 # !android_64bit_target_cpu
308 if (_use_stable_package_name_for_trichrome) {
309 false_false_false_true = trichrome_beta_version_code
310 } else {
311 false_false_false_true = trichrome_version_code
312 }
313 }
314 }
315
316 # Key: {android_64bit_target_cpu}_{is_64_bit_browser}_{include_64_bit_webview}_{include_32_bit_webview}
317 MONOCHROME_VERSION_MAP = {
318 if (android_64bit_target_cpu) {
Prashanth Swaminathan6a74faf2023-05-12 19:52:38319 if (defined(android_app_secondary_abi)) {
320 true_true_true_true = monochrome_64_32_version_code
321 true_false_true_true = monochrome_32_64_version_code
322 true_true_true_false = monochrome_64_version_code
323 true_false_false_true = monochrome_32_version_code
324 } else {
325 true_true_true_false = monochrome_version_code
326 }
Andrew Grieved62d30b2023-01-24 20:11:56327 } else {
328 false_false_false_true = monochrome_version_code
329 }
330 }
331
332 # Key: {android_64bit_target_cpu}_{include_64_bit_webview}_{include_32_bit_webview}
333 WEBVIEW_VERSION_MAP = {
334 # 64-bit constants are not generated by version.py on non-64-bit target_cpu.
335 if (android_64bit_target_cpu) {
Prashanth Swaminathan6a74faf2023-05-12 19:52:38336 if (defined(android_app_secondary_abi)) {
337 if (android_channel == "dev") {
338 true_false_true = webview_32_dev_version_code
339 true_true_false = webview_64_dev_version_code
340 true_true_true = webview_dev_version_code
341 } else if (android_channel == "beta") {
342 true_false_true = webview_32_beta_version_code
343 true_true_false = webview_64_beta_version_code
344 true_true_true = webview_beta_version_code
345 } else {
346 true_false_true = webview_32_stable_version_code
347 true_true_false = webview_64_stable_version_code
348 true_true_true = webview_stable_version_code
349 }
Andrew Grieved62d30b2023-01-24 20:11:56350 } else {
Prashanth Swaminathan6a74faf2023-05-12 19:52:38351 if (android_channel == "dev") {
352 true_true_false = webview_dev_version_code
353 } else if (android_channel == "beta") {
354 true_true_false = webview_beta_version_code
355 } else {
356 true_true_false = webview_stable_version_code
357 }
Andrew Grieved62d30b2023-01-24 20:11:56358 }
359 } else {
360 # !android_64bit_target_cpu
361 if (android_channel == "dev") {
362 false_false_true = webview_dev_version_code
363 } else if (android_channel == "beta") {
364 false_false_true = webview_beta_version_code
365 } else {
366 false_false_true = webview_stable_version_code
367 }
368 }
369
370 # For system_webview_no_weblayer_apk.
371 true_false_false = "1"
372 false_false_false = "1"
373 }
374}