blob: fbc20f5d65c1bb7006f1feb8266d44d1b676bc4d [file] [log] [blame]
brettwa874dcc2015-08-28 23:59:181# Copyright 2015 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
thomasanderson018ffc7f2017-06-22 01:25:335import("//build/config/c++/c++.gni")
brettwa874dcc2015-08-28 23:59:186import("//build/config/chrome_build.gni")
Yuta Hijikata2ae70cd2020-12-09 09:47:037import("//build/config/chromeos/ui_mode.gni")
dpranke3b870612015-09-10 23:42:048import("//build/config/features.gni")
brettw4cab0f12015-09-14 21:40:019import("//build/config/sanitizers/sanitizers.gni")
thomasanderson7a01af42016-10-18 21:22:4210import("//build/config/sysroot.gni")
Sven Zheng361d7c72021-02-04 03:07:4311import("//build/linux/strip_binary.gni")
Takuto Ikuta36541eb82018-08-01 02:09:5612import("//build/util/lastchange.gni")
raphael.kubo.da.costadc683d22016-09-17 19:41:1313import("//build/util/process_version.gni")
brettwa874dcc2015-08-28 23:59:1814import("//build/util/version.gni")
Dirk Prankeccc0c362017-09-28 22:15:1115import("//components/nacl/features.gni")
Sophie Chang09b6dbbb72022-01-20 02:49:3316import("//components/optimization_guide/features.gni")
Jonah Ryan-Davis0d073c42021-06-10 23:38:1617import("//third_party/angle/gni/angle.gni")
Xiaohan Wang7b76fce32018-10-01 23:21:2918import("//third_party/widevine/cdm/widevine.gni")
Tom Anderson991f4aa2020-05-05 03:42:2319import("//ui/gl/features.gni")
brettwa874dcc2015-08-28 23:59:1820
Xiaohan Wang7b76fce32018-10-01 23:21:2921if (bundle_widevine_cdm) {
Xiaohan Wangcc32f2e2018-01-30 01:09:0522 import("//media/cdm/library_cdm/cdm_paths.gni")
xhwangc3a252b2016-05-23 02:35:4823}
24
Tom Anderson372cee72018-02-23 19:00:1325declare_args() {
26 # Enables checks that ensure the packages are installable on all supported
27 # distributions.
28 enable_distro_version_check = true
Olivier Tilloy70e8efc2020-04-01 22:13:0329
30 # Enable building snap packages
Thomas Andersonfebdf3b2020-06-09 18:22:4931 enable_snap_package = false
Tom Anderson372cee72018-02-23 19:00:1332}
33
Sean McAllisterd3bd1532020-07-30 18:43:5734assert(is_linux || is_chromeos)
brettwa874dcc2015-08-28 23:59:1835
Tom Anderson7f6acf62017-09-08 03:13:0936packaging_files_executables = [
Tom Andersone068dcb2017-09-01 18:31:2137 "$root_out_dir/chrome",
Matthew Dentonf9d1fd92021-08-03 22:40:0438 "$root_out_dir/chrome_crashpad_handler",
hmare9fb72f92022-03-20 16:24:2939 "$root_out_dir/chrome_management_service",
Tom Andersone068dcb2017-09-01 18:31:2140 "$root_out_dir/chrome_sandbox",
Tom Andersone068dcb2017-09-01 18:31:2141]
Tom Anderson7f6acf62017-09-08 03:13:0942packaging_files_shlibs = []
Tom Andersone068dcb2017-09-01 18:31:2143
Mark Seaborn7c29eff92022-03-23 20:08:1444# TODO(https://crbug.com/1299021): Implement building these NaCl targets as
45# ARM32 when Chrome is built for ARM64 (for Linux/Chrome OS).
46if (target_cpu == "arm64") {
47 enable_nacl = false
48}
49
Tom Andersone068dcb2017-09-01 18:31:2150if (enable_nacl) {
Tom Anderson7f6acf62017-09-08 03:13:0951 packaging_files_executables += [
Tom Andersone068dcb2017-09-01 18:31:2152 "$root_out_dir/nacl_helper",
53 "$root_out_dir/nacl_helper_bootstrap",
54 ]
55
56 if (current_cpu == "x86") {
Tom Anderson7f6acf62017-09-08 03:13:0957 packaging_files_executables += [ "$root_out_dir/nacl_irt_x86_32.nexe" ]
Tom Andersone068dcb2017-09-01 18:31:2158 } else if (current_cpu == "x64") {
Tom Anderson7f6acf62017-09-08 03:13:0959 packaging_files_executables += [ "$root_out_dir/nacl_irt_x86_64.nexe" ]
Tom Andersone068dcb2017-09-01 18:31:2160 } else if (current_cpu == "arm") {
Tom Anderson7f6acf62017-09-08 03:13:0961 packaging_files_executables += [ "$root_out_dir/nacl_irt_arm.nexe" ]
Milko Leporis0f74ee82017-10-02 22:37:0762 } else if (current_cpu == "mipsel") {
63 packaging_files_executables += [ "$root_out_dir/nacl_irt_mips32.nexe" ]
Tom Andersone068dcb2017-09-01 18:31:2164 }
65}
66
Xiaohan Wang7b76fce32018-10-01 23:21:2967if (bundle_widevine_cdm) {
Xiaohan Wangd5b69c82018-03-20 22:18:3568 packaging_files_shlibs +=
69 [ "$root_out_dir/$widevine_cdm_path/libwidevinecdm.so" ]
Tom Andersone068dcb2017-09-01 18:31:2170}
71
Tom Anderson991f4aa2020-05-05 03:42:2372if (use_egl) {
73 packaging_files_shlibs += [
74 "$root_out_dir/libEGL.so",
75 "$root_out_dir/libGLESv2.so",
76 ]
Jonah Ryan-Davis0d073c42021-06-10 23:38:1677 if (angle_shared_libvulkan && !is_chromeos) {
78 packaging_files_shlibs += [ "$root_out_dir/libvulkan.so.1" ]
79 }
Tom Anderson991f4aa2020-05-05 03:42:2380}
81
82if (enable_swiftshader) {
83 packaging_files_shlibs += [
84 "$root_out_dir/swiftshader_libEGL.so",
85 "$root_out_dir/swiftshader_libGLESv2.so",
Jonah Ryan-Davisded0a1b2021-04-13 16:48:4286 "$root_out_dir/libvk_swiftshader.so",
Tom Anderson991f4aa2020-05-05 03:42:2387 ]
88}
89
Sophie Chang09b6dbbb72022-01-20 02:49:3390if (build_with_internal_optimization_guide) {
91 packaging_files_shlibs +=
92 [ "$root_out_dir/liboptimization_guide_internal.so" ]
93}
94
Tom Anderson7f6acf62017-09-08 03:13:0995packaging_files_binaries = packaging_files_executables + packaging_files_shlibs
96
Tom Anderson991f4aa2020-05-05 03:42:2397copy("swiftshader_libs") {
98 sources = [
99 "$root_out_dir/swiftshader/libEGL.so",
100 "$root_out_dir/swiftshader/libGLESv2.so",
101 ]
102 outputs = [ "$root_out_dir/swiftshader_{{source_file_part}}" ]
103 public_deps = [
104 "//third_party/swiftshader/src/OpenGL/libEGL:swiftshader_libEGL",
105 "//third_party/swiftshader/src/OpenGL/libGLESv2:swiftshader_libGLESv2",
Tom Anderson991f4aa2020-05-05 03:42:23106 ]
107}
108
Tom Andersone068dcb2017-09-01 18:31:21109# TODO(mmoss) Any convenient way to get all the relevant build files?
110# (e.g. all locales, resources, etc.)
111packaging_files = packaging_files_binaries + [
Jonah Ryan-Davisbb8b4cae2021-04-23 20:44:52112 "$root_out_dir/vk_swiftshader_icd.json",
Tom Andersone068dcb2017-09-01 18:31:21113 "$root_out_dir/xdg-mime",
114 "$root_out_dir/xdg-settings",
115 "$root_out_dir/locales/en-US.pak",
Becca Hughesd89f6ff2017-12-13 13:20:44116 "$root_out_dir/MEIPreload/manifest.json",
117 "$root_out_dir/MEIPreload/preloaded_data.pb",
Tom Andersone068dcb2017-09-01 18:31:21118 ]
119
Tom Andersona80a9b42017-09-07 02:35:33120action_foreach("calculate_deb_dependencies") {
Nico Weber74eeac72020-01-17 00:16:50121 deps = [ ":installer_deps" ]
Tom Andersona80a9b42017-09-07 02:35:33122 script = "debian/calculate_package_deps.py"
Tom Andersone068dcb2017-09-01 18:31:21123 sources = packaging_files_binaries
Tom Anderson3a3c5882017-09-12 21:16:24124 inputs = [
125 "debian/deb_version.py",
Lei Zhange680353b2017-09-25 23:03:50126 "debian/dist_package_versions.json",
Tom Anderson3a3c5882017-09-12 21:16:24127 "debian/package_version_interval.py",
Tom Andersonfde653b02020-01-16 02:20:10128 "//third_party/dpkg-shlibdeps/dpkg-shlibdeps.pl",
Tom Anderson3a3c5882017-09-12 21:16:24129 ]
Nico Weber74eeac72020-01-17 00:16:50130 outputs = [ "$root_out_dir/deb_{{source_name_part}}.deps" ]
Tom Andersone068dcb2017-09-01 18:31:21131 args = [
132 "{{source}}",
133 rebase_path(sysroot, root_build_dir),
134 target_cpu,
Tom Andersona80a9b42017-09-07 02:35:33135 "deb_{{source_name_part}}.deps",
Tom Andersone068dcb2017-09-01 18:31:21136 ]
Yuta Hijikata2ae70cd2020-12-09 09:47:03137 if ((is_linux || is_chromeos_lacros) && target_cpu == "x64" &&
138 enable_distro_version_check) {
Tom Andersonc92bc272017-09-15 23:12:57139 args += [ "--distro-check" ]
140 }
Tom Andersone068dcb2017-09-01 18:31:21141}
142
Tom Andersona80a9b42017-09-07 02:35:33143action("merge_deb_dependencies") {
Nico Weber74eeac72020-01-17 00:16:50144 deps = [ ":calculate_deb_dependencies" ]
Tom Andersona80a9b42017-09-07 02:35:33145 script = "debian/merge_package_versions.py"
Tom Anderson21254bb2017-09-07 04:07:18146 additional_deps = "debian/additional_deps"
147 inputs = [
148 additional_deps,
Tom Anderson3a3c5882017-09-12 21:16:24149 "debian/deb_version.py",
150 "debian/package_version_interval.py",
Tom Andersona80a9b42017-09-07 02:35:33151 ]
Nico Weber74eeac72020-01-17 00:16:50152 outputs = [ "$root_out_dir/deb_common.deps" ]
Tom Anderson21254bb2017-09-07 04:07:18153 args = [
154 "deb_common.deps",
155 rebase_path(additional_deps, root_build_dir),
156 ]
Tom Andersona80a9b42017-09-07 02:35:33157 args += rebase_path(get_target_outputs(":calculate_deb_dependencies"),
158 root_build_dir)
159}
160
Tom Anderson7f6acf62017-09-08 03:13:09161action_foreach("calculate_rpm_dependencies") {
Nico Weber74eeac72020-01-17 00:16:50162 deps = [ ":installer_deps" ]
Tom Anderson7f6acf62017-09-08 03:13:09163 script = "rpm/calculate_package_deps.py"
164 sources = packaging_files_binaries
Nico Weber74eeac72020-01-17 00:16:50165 inputs = [ "rpm/dist_package_provides.json" ]
166 outputs = [ "$root_out_dir/rpm_{{source_name_part}}.deps" ]
Tom Anderson7f6acf62017-09-08 03:13:09167 args = [
168 "{{source}}",
169 "rpm_{{source_name_part}}.deps",
170 ]
171 args += rebase_path(packaging_files_shlibs, root_build_dir)
Yuta Hijikata2ae70cd2020-12-09 09:47:03172 if ((is_linux || is_chromeos_lacros) && target_cpu == "x64" &&
173 enable_distro_version_check) {
Tom Andersonc92bc272017-09-15 23:12:57174 args += [ "--distro-check" ]
175 }
Tom Anderson7f6acf62017-09-08 03:13:09176}
177
178action("merge_rpm_dependencies") {
Nico Weber74eeac72020-01-17 00:16:50179 deps = [ ":calculate_rpm_dependencies" ]
Tom Anderson7f6acf62017-09-08 03:13:09180 script = "rpm/merge_package_deps.py"
Tom Anderson3a3c5882017-09-12 21:16:24181 additional_deps = "rpm/additional_deps"
Nico Weber74eeac72020-01-17 00:16:50182 inputs = [ additional_deps ]
183 outputs = [ "$root_out_dir/rpm_common.deps" ]
Tom Anderson3a3c5882017-09-12 21:16:24184 args = [
185 "rpm_common.deps",
186 rebase_path(additional_deps, root_build_dir),
187 ]
Tom Anderson7f6acf62017-09-08 03:13:09188 args += rebase_path(get_target_outputs(":calculate_rpm_dependencies"),
189 root_build_dir)
190}
191
Sven Zheng361d7c72021-02-04 03:07:43192strip_binary("strip_chrome_binary") {
193 binary_input = "$root_out_dir/chrome"
Nico Weber74eeac72020-01-17 00:16:50194 deps = [ "//chrome" ]
Tom Andersonce16a0c2017-09-02 00:27:51195}
196
Michael Moss28d34ca02021-12-01 02:11:37197strip_binary("strip_chrome_crashpad_handler") {
198 binary_input = "$root_out_dir/chrome_crashpad_handler"
199 deps = [ "//components/crash/core/app:chrome_crashpad_handler" ]
200}
201
hmare9fb72f92022-03-20 16:24:29202strip_binary("strip_chrome_management_service") {
203 binary_input = "$root_out_dir/chrome_management_service"
204 deps = [ "//chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service:chrome_management_service" ]
205}
206
Michael Moss28d34ca02021-12-01 02:11:37207strip_binary("strip_chrome_sandbox") {
208 binary_input = "$root_out_dir/chrome_sandbox"
209 deps = [ "//sandbox/linux:chrome_sandbox" ]
210}
211
212strip_binary("strip_libEGL_shlib") {
213 binary_input = "$root_out_dir/libEGL.so"
214 deps = [ "//third_party/angle:libEGL" ]
215}
216
217strip_binary("strip_libGLESv2_shlib") {
218 binary_input = "$root_out_dir/libGLESv2.so"
219 deps = [ "//third_party/angle:libGLESv2" ]
220}
221
222strip_binary("strip_libvulkan_shlib") {
223 binary_input = "$root_out_dir/libvulkan.so.1"
224 deps = [ "//third_party/vulkan-deps/vulkan-loader/src:libvulkan" ]
225}
226
227strip_binary("strip_swiftshader_libEGL_shlib") {
228 binary_input = "$root_out_dir/swiftshader/libEGL.so"
229 deps = [ "//third_party/swiftshader/src/OpenGL/libEGL:swiftshader_libEGL" ]
230}
231
232strip_binary("strip_swiftshader_libGLESv2_shlib") {
233 binary_input = "$root_out_dir/swiftshader/libGLESv2.so"
234 deps =
235 [ "//third_party/swiftshader/src/OpenGL/libGLESv2:swiftshader_libGLESv2" ]
236}
237
238strip_binary("strip_libvk_swiftshader.shlib") {
239 binary_input = "$root_out_dir/libvk_swiftshader.so"
240 deps = [ "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan" ]
241}
242
243if (enable_nacl) {
244 strip_binary("strip_nacl_helper") {
245 binary_input = "$root_out_dir/nacl_helper"
246 deps = [ "//components/nacl/loader:nacl_helper" ]
247 }
248
249 strip_binary("strip_nacl_helper_bootstrap") {
250 binary_input = "$root_out_dir/nacl_helper_bootstrap"
251 deps = [ "//native_client/src/trusted/service_runtime/linux:bootstrap" ]
252 }
253}
254
Sophie Chang09b6dbbb72022-01-20 02:49:33255if (build_with_internal_optimization_guide) {
256 strip_binary("strip_optimization_guide") {
257 binary_input = "$root_out_dir/liboptimization_guide_internal.so"
258 deps = [
259 "//components/optimization_guide/internal:optimization_guide_internal",
260 ]
261 }
262}
263
Tom Anderson991f4aa2020-05-05 03:42:23264# This target builds all "normal" Linux installers. You must set
265# is_component_build=false before building this target.
brettwa874dcc2015-08-28 23:59:18266group("linux") {
267 deps = [
268 ":beta",
269 ":stable",
270 ":unstable",
271 ]
272}
273
274branding_dir = "//chrome/app/theme/$branding_path_component"
275branding_dir_100 =
276 "//chrome/app/theme/default_100_percent/$branding_path_component"
277
278copy("common_packaging_files") {
279 visibility = [ ":*" ]
280 sources = [
Tom Anderson64b96142017-09-26 21:00:54281 "//chrome/app/resources/manpage.1.in",
brettwa874dcc2015-08-28 23:59:18282 "common/apt.include",
283 "common/default-app-block.template",
284 "common/default-app.template",
285 "common/desktop.template",
brettwa874dcc2015-08-28 23:59:18286 "common/installer.include",
287 "common/postinst.include",
288 "common/prerm.include",
289 "common/repo.cron",
Lei Zhang8d9f0d3f2022-03-18 00:08:26290 "common/repo_variables.include",
brettwa874dcc2015-08-28 23:59:18291 "common/rpm.include",
292 "common/rpmrepo.cron",
293 "common/symlinks.include",
294 "common/variables.include",
295 "common/wrapper",
296 ]
297
sbcfa8f43b2016-10-05 17:11:35298 if (is_chrome_branded) {
tomas.popeladd765c02017-03-21 14:44:16299 sources += [
300 "common/google-chrome/google-chrome.appdata.xml.template",
301 "common/google-chrome/google-chrome.info",
302 ]
sbcfa8f43b2016-10-05 17:11:35303 } else {
tomas.popeladd765c02017-03-21 14:44:16304 sources += [
305 "common/chromium-browser/chromium-browser.appdata.xml",
306 "common/chromium-browser/chromium-browser.info",
307 ]
sbcfa8f43b2016-10-05 17:11:35308 }
309
Michael Spangab3960d2019-01-30 17:06:47310 sources += [ "//buildtools/third_party/eu-strip/bin/eu-strip" ]
brettwa874dcc2015-08-28 23:59:18311
Nico Weber74eeac72020-01-17 00:16:50312 outputs = [ "$root_out_dir/installer/common/{{source_file_part}}" ]
brettwa874dcc2015-08-28 23:59:18313}
314
315copy("deb_packaging_files") {
316 visibility = [ ":*" ]
317 sources = [
318 "debian/build.sh",
319 "debian/changelog.template",
320 "debian/control.template",
321 "debian/debian.menu",
Tom Anderson0a880b62019-12-18 18:52:10322 "debian/manual_recommends",
brettwa874dcc2015-08-28 23:59:18323 "debian/postinst",
324 "debian/postrm",
325 "debian/prerm",
326 ]
Nico Weber74eeac72020-01-17 00:16:50327 outputs = [ "$root_out_dir/installer/debian/{{source_file_part}}" ]
brettwa874dcc2015-08-28 23:59:18328}
329
330copy("theme_files") {
331 visibility = [ ":*" ]
332 sources = [
333 "$branding_dir/BRANDING",
Tom Anderson4c606e72022-02-17 15:49:14334 "$branding_dir/linux/product_logo_128.png",
335 "$branding_dir/linux/product_logo_24.png",
336 "$branding_dir/linux/product_logo_256.png",
brettwa874dcc2015-08-28 23:59:18337 "$branding_dir/linux/product_logo_32.xpm",
Tom Anderson4c606e72022-02-17 15:49:14338 "$branding_dir/linux/product_logo_48.png",
339 "$branding_dir/linux/product_logo_64.png",
340 "$branding_dir_100/linux/product_logo_16.png",
341 "$branding_dir_100/linux/product_logo_32.png",
brettwa874dcc2015-08-28 23:59:18342 ]
Tom Andersonc8ebf272017-11-17 23:41:33343 if (is_chrome_branded) {
344 sources += [
Tom Anderson4c606e72022-02-17 15:49:14345 "$branding_dir/linux/product_logo_128_beta.png",
346 "$branding_dir/linux/product_logo_128_dev.png",
347 "$branding_dir/linux/product_logo_24_beta.png",
348 "$branding_dir/linux/product_logo_24_dev.png",
349 "$branding_dir/linux/product_logo_256_beta.png",
350 "$branding_dir/linux/product_logo_256_dev.png",
Tom Andersonc8ebf272017-11-17 23:41:33351 "$branding_dir/linux/product_logo_32_beta.xpm",
352 "$branding_dir/linux/product_logo_32_dev.xpm",
Tom Anderson4c606e72022-02-17 15:49:14353 "$branding_dir/linux/product_logo_48_beta.png",
354 "$branding_dir/linux/product_logo_48_dev.png",
355 "$branding_dir/linux/product_logo_64_beta.png",
356 "$branding_dir/linux/product_logo_64_dev.png",
357 "$branding_dir_100/linux/product_logo_16_beta.png",
358 "$branding_dir_100/linux/product_logo_16_dev.png",
359 "$branding_dir_100/linux/product_logo_32_beta.png",
360 "$branding_dir_100/linux/product_logo_32_dev.png",
Tom Andersonc8ebf272017-11-17 23:41:33361 ]
362 }
Nico Weber74eeac72020-01-17 00:16:50363 outputs = [ "$root_out_dir/installer/theme/{{source_file_part}}" ]
brettwa874dcc2015-08-28 23:59:18364}
365
Yuta Hijikata2ae70cd2020-12-09 09:47:03366if (!is_chromeos_ash) {
brettwa874dcc2015-08-28 23:59:18367 copy("rpm_packaging_files") {
368 visibility = [ ":*" ]
369 sources = [
370 "rpm/build.sh",
371 "rpm/chrome.spec.template",
brettwa874dcc2015-08-28 23:59:18372 ]
Nico Weber74eeac72020-01-17 00:16:50373 outputs = [ "$root_out_dir/installer/rpm/{{source_file_part}}" ]
brettwa874dcc2015-08-28 23:59:18374 }
375}
376
377process_version("save_build_info") {
378 # Just output the default version info variables (no template).
379 process_only = true
raphael.kubo.da.costadc683d22016-09-17 19:41:13380 sources = [
raphael.kubo.da.costadc683d22016-09-17 19:41:13381 "//chrome/VERSION",
382 branding_file_path,
Takuto Ikuta36541eb82018-08-01 02:09:56383 lastchange_file,
raphael.kubo.da.costadc683d22016-09-17 19:41:13384 ]
brettwa874dcc2015-08-28 23:59:18385 output = "$root_out_dir/installer/version.txt"
386}
387
388# Dependencies for all Linux installer targets.
389group("installer_deps") {
mcgrathr6edf192f2015-10-19 19:39:11390 # Though many of these things appear in data_deps further down the
391 # dependency chain, they must appear here as public_deps so that they can
392 # be listed as inputs to the actions that depend on ":installer_deps"
393 # and are guaranteed to have been built before those actions run.
394
brettwa874dcc2015-08-28 23:59:18395 public_deps = [
396 ":common_packaging_files",
397 ":deb_packaging_files",
398 ":save_build_info",
Tom Andersonce16a0c2017-09-02 00:27:51399 ":strip_chrome_binary",
Michael Moss28d34ca02021-12-01 02:11:37400 ":strip_chrome_crashpad_handler",
hmare9fb72f92022-03-20 16:24:29401 ":strip_chrome_management_service",
Michael Moss28d34ca02021-12-01 02:11:37402 ":strip_chrome_sandbox",
brettwa874dcc2015-08-28 23:59:18403 ":theme_files",
404 "//chrome",
405 "//chrome:packed_resources",
hmare9fb72f92022-03-20 16:24:29406 "//chrome/browser/enterprise/connectors/device_trust/key_management/installer/management_service:chrome_management_service",
Becca Hughesd89f6ff2017-12-13 13:20:44407 "//chrome/browser/resources/media/mei_preload:component",
Matthew Dentonf9d1fd92021-08-03 22:40:04408 "//components/crash/core/app:chrome_crashpad_handler",
brettwa874dcc2015-08-28 23:59:18409 "//sandbox/linux:chrome_sandbox",
brettwa874dcc2015-08-28 23:59:18410 ]
dpranke3b870612015-09-10 23:42:04411 if (enable_nacl) {
mcgrathr6edf192f2015-10-19 19:39:11412 public_deps += [
Michael Moss28d34ca02021-12-01 02:11:37413 ":strip_nacl_helper",
414 ":strip_nacl_helper_bootstrap",
brettwf4b4a4282015-12-16 00:41:13415 "//components/nacl/loader:nacl_helper",
mcgrathr6edf192f2015-10-19 19:39:11416
417 # These are data_deps of nacl_helper, but that is not enough,
418 # as explained above.
419 "//native_client/src/trusted/service_runtime/linux:bootstrap",
420 "//ppapi/native_client:irt",
421 ]
dpranke3b870612015-09-10 23:42:04422 }
Xiaohan Wang7b76fce32018-10-01 23:21:29423 if (bundle_widevine_cdm) {
Xiaohan Wangd5b69c82018-03-20 22:18:35424 public_deps += [ "//third_party/widevine/cdm" ]
brettwa874dcc2015-08-28 23:59:18425 }
Tom Anderson991f4aa2020-05-05 03:42:23426 if (use_egl) {
427 public_deps += [
Michael Moss28d34ca02021-12-01 02:11:37428 ":strip_libEGL_shlib",
429 ":strip_libGLESv2_shlib",
Tom Anderson991f4aa2020-05-05 03:42:23430 "//third_party/angle:libEGL",
431 "//third_party/angle:libGLESv2",
432 ]
Jonah Ryan-Davis0d073c42021-06-10 23:38:16433 if (angle_shared_libvulkan && !is_chromeos) {
Michael Moss28d34ca02021-12-01 02:11:37434 public_deps += [
435 ":strip_libvulkan_shlib",
436 "//third_party/vulkan-deps/vulkan-loader/src:libvulkan",
437 ]
Jonah Ryan-Davis0d073c42021-06-10 23:38:16438 }
Tom Anderson991f4aa2020-05-05 03:42:23439 }
440 if (enable_swiftshader) {
Jonah Ryan-Davisded0a1b2021-04-13 16:48:42441 public_deps += [
Michael Moss28d34ca02021-12-01 02:11:37442 ":strip_libvk_swiftshader.shlib",
443 ":strip_swiftshader_libEGL_shlib",
444 ":strip_swiftshader_libGLESv2_shlib",
Jonah Ryan-Davisded0a1b2021-04-13 16:48:42445 ":swiftshader_libs",
Jonah Ryan-Davisbb8b4cae2021-04-23 20:44:52446 "//third_party/swiftshader/src/Vulkan:icd_file",
Jonah Ryan-Davisded0a1b2021-04-13 16:48:42447 "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan",
448 ]
Tom Anderson991f4aa2020-05-05 03:42:23449 }
Yuta Hijikata2ae70cd2020-12-09 09:47:03450 if (!is_chromeos_ash) {
brettwa874dcc2015-08-28 23:59:18451 public_deps += [ ":rpm_packaging_files" ]
452 }
Sophie Chang09b6dbbb72022-01-20 02:49:33453 if (build_with_internal_optimization_guide) {
454 public_deps += [
455 ":strip_optimization_guide",
456 "//components/optimization_guide/internal:optimization_guide_internal",
457 ]
458 }
brettwa874dcc2015-08-28 23:59:18459}
460
461# Creates .deb and .rpm (RPM for non-ChromeOS only) installer packages.
462#
463# channel:
464# Name of the channel.
465template("linux_package") {
466 assert(defined(invoker.channel))
467 channel = invoker.channel
468
Olivier Tilloy70e8efc2020-04-01 22:13:03469 if (is_chrome_branded) {
470 package = "google-chrome"
471 } else {
472 package = "chromium-browser"
473 }
474
brettwa874dcc2015-08-28 23:59:18475 deb_target_name = "${target_name}_deb"
476 action(deb_target_name) {
477 visibility = [ ":*" ]
Tom Anderson2bb2b382017-09-26 20:21:53478 script = "//build/gn_run_binary.py"
brettwa874dcc2015-08-28 23:59:18479
480 if (current_cpu == "x86") {
481 deb_arch = "i386"
482 } else if (current_cpu == "x64") {
483 deb_arch = "amd64"
484 } else if (current_cpu == "arm") {
Jiaxun Yangc8ec82ec2020-02-27 02:50:28485 deb_arch = "armhf"
Halton Huoa8501eb2018-06-25 03:46:53486 } else if (current_cpu == "arm64") {
487 deb_arch = "arm64"
Milko Leporis0f74ee82017-10-02 22:37:07488 } else if (current_cpu == "mipsel") {
489 deb_arch = "mipsel"
Milko Leporisb6e93fc2018-01-24 21:40:19490 } else if (current_cpu == "mips64el") {
491 deb_arch = "mips64el"
brettwa874dcc2015-08-28 23:59:18492 } else {
493 assert(false, "Linux installer not configured for this architecture.")
494 }
495
Tom Andersone068dcb2017-09-01 18:31:21496 inputs = packaging_files
Nico Weber74eeac72020-01-17 00:16:50497 outputs = [ "$root_out_dir/${package}-${channel}_${chrome_version_full}-1_${deb_arch}.deb" ]
brettwa874dcc2015-08-28 23:59:18498
499 args = [
brettwa874dcc2015-08-28 23:59:18500 rebase_path("$root_out_dir/installer/debian/build.sh", root_build_dir),
brettwa874dcc2015-08-28 23:59:18501 "-a",
Jiaxun Yangc8ec82ec2020-02-27 02:50:28502 deb_arch,
brettwa874dcc2015-08-28 23:59:18503 "-c",
504 invoker.channel,
505 "-d",
506 branding_path_component,
Tom Andersoncae008e2017-09-01 01:47:35507 "-o",
508 rebase_path(root_out_dir, root_build_dir),
thomasanderson7a01af42016-10-18 21:22:42509 "-s",
Tom Anderson04125932017-11-28 03:13:13510 rebase_path(sysroot, root_build_dir),
Tom Andersond7f95c632017-12-07 02:18:42511 "-t",
512 target_os,
brettwa874dcc2015-08-28 23:59:18513 ]
Tom Andersoncae008e2017-09-01 01:47:35514 if (is_official_build) {
515 args += [ "-f" ]
516 }
brettwa874dcc2015-08-28 23:59:18517 deps = [
518 ":installer_deps",
Tom Anderson21254bb2017-09-07 04:07:18519 ":merge_deb_dependencies",
brettwa874dcc2015-08-28 23:59:18520 ]
521 }
522
Yuta Hijikata2ae70cd2020-12-09 09:47:03523 if (!is_chromeos_ash) {
brettwa874dcc2015-08-28 23:59:18524 rpm_target_name = "${target_name}_rpm"
525 action(rpm_target_name) {
526 visibility = [ ":*" ]
Tom Anderson2bb2b382017-09-26 20:21:53527 script = "//build/gn_run_binary.py"
brettwa874dcc2015-08-28 23:59:18528
529 if (current_cpu == "x86") {
530 rpm_arch = "i386"
531 } else if (current_cpu == "x64") {
532 rpm_arch = "x86_64"
533 } else if (current_cpu == "arm") {
Jiaxun Yangc8ec82ec2020-02-27 02:50:28534 rpm_arch = "armhf"
Halton Huoa8501eb2018-06-25 03:46:53535 } else if (current_cpu == "arm64") {
Jiaxun Yangc8ec82ec2020-02-27 02:50:28536 rpm_arch = "aarch64"
Milko Leporis0f74ee82017-10-02 22:37:07537 } else if (current_cpu == "mipsel") {
538 rpm_arch = "mipsel"
Milko Leporisb6e93fc2018-01-24 21:40:19539 } else if (current_cpu == "mips64el") {
540 rpm_arch = "mips64el"
brettwa874dcc2015-08-28 23:59:18541 } else {
542 assert(false, "Linux installer not configured for this architecture.")
543 }
544
Tom Andersone068dcb2017-09-01 18:31:21545 inputs = packaging_files
Nico Weber74eeac72020-01-17 00:16:50546 outputs = [ "$root_out_dir/${package}-${channel}-${chrome_version_full}-1.${rpm_arch}.rpm" ]
brettwa874dcc2015-08-28 23:59:18547
548 args = [
brettwa874dcc2015-08-28 23:59:18549 rebase_path("$root_out_dir/installer/rpm/build.sh", root_build_dir),
brettwa874dcc2015-08-28 23:59:18550 "-a",
Jiaxun Yangc8ec82ec2020-02-27 02:50:28551 rpm_arch,
brettwa874dcc2015-08-28 23:59:18552 "-c",
553 invoker.channel,
554 "-d",
555 branding_path_component,
Tom Andersoncae008e2017-09-01 01:47:35556 "-o",
557 rebase_path(root_out_dir, root_build_dir),
Tom Andersond7f95c632017-12-07 02:18:42558 "-t",
559 target_os,
brettwa874dcc2015-08-28 23:59:18560 ]
Tom Andersoncae008e2017-09-01 01:47:35561 if (is_official_build) {
562 args += [ "-f" ]
563 }
brettwa874dcc2015-08-28 23:59:18564 deps = [
565 ":installer_deps",
Tom Anderson3a3c5882017-09-12 21:16:24566 ":merge_rpm_dependencies",
brettwa874dcc2015-08-28 23:59:18567 ]
568 }
Olivier Tilloy70e8efc2020-04-01 22:13:03569
570 if (enable_snap_package) {
571 snap_target_name = "${target_name}_snap"
572 action(snap_target_name) {
573 visibility = [ ":*" ]
574 deps = [
575 ":installer_deps",
576 ":save_build_info",
577 ]
578 script = "//build/gn_run_binary.py"
579 sources = [
580 "snap/chrome.launcher.in",
581 "snap/snapcraft.yaml.in",
582 ]
583 if (!is_chrome_branded) {
584 package = "chromium"
585 }
586 if (current_cpu == "x86") {
587 snap_arch = "i386"
588 } else if (current_cpu == "x64") {
589 snap_arch = "amd64"
590 } else if (current_cpu == "arm") {
591 snap_arch = "armhf"
592 } else if (current_cpu == "arm64") {
593 snap_arch = "arm64"
594 } else {
595 assert(false, "Linux installer not configured for this architecture.")
596 }
597 args = [
598 rebase_path("snap/build.sh", root_build_dir),
599 package,
600 channel,
601 chrome_version_full,
602 snap_arch,
603 target_os,
604 ]
605 outputs = [ "$root_out_dir/${package}-${channel}_${chrome_version_full}_${snap_arch}.snap" ]
606 }
607 }
brettwa874dcc2015-08-28 23:59:18608 }
609
610 group(target_name) {
Nico Weber74eeac72020-01-17 00:16:50611 deps = [ ":$deb_target_name" ]
Yuta Hijikata2ae70cd2020-12-09 09:47:03612 if (!is_chromeos_ash) {
brettwa874dcc2015-08-28 23:59:18613 deps += [ ":$rpm_target_name" ]
Olivier Tilloy70e8efc2020-04-01 22:13:03614 if (enable_snap_package) {
615 deps += [ ":$snap_target_name" ]
616 }
brettwa874dcc2015-08-28 23:59:18617 }
618 }
619}
620
621# Standard packages.
622linux_package("stable") {
623 channel = "stable"
624}
625linux_package("beta") {
626 channel = "beta"
627}
628linux_package("unstable") {
629 channel = "unstable"
630}