mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-26 12:39:36 -05:00
gnu: ungoogled-chromium: Enable all release optimizations.
* gnu/packages/chromium.scm (ungoogled-chromium-snippet): Add substitution to allow using unbundled dependencies in "official" builds. (lld-as-ld, lld-wrapper, lld/wrapped): New variables. (ungoogled-chromium)[arguments]: Add "is_official_build" to #:configure-flags. Remove redundant or unnecessary flags, disable system protobuf. Use llvm-ar and llvm-nm instead of their binutils equivalents. [native-inputs]: Add LLD/WRAPPED. [inputs]: Remove PROTOBUF.
This commit is contained in:
parent
300b795520
commit
71c237bdc8
1 changed files with 41 additions and 8 deletions
|
@ -385,6 +385,13 @@ (define ungoogled-chromium-snippet
|
|||
|
||||
(format #t "Replacing GN files...~%")
|
||||
(force-output)
|
||||
(substitute* "tools/generate_shim_headers/generate_shim_headers.py"
|
||||
;; The "is_official_build" configure option enables certain
|
||||
;; release optimizations like those used in the commercial
|
||||
;; Chrome browser. Unfortunately it also requires using the
|
||||
;; bundled libraries: lose that restriction.
|
||||
(("#if defined\\(OFFICIAL_BUILD\\)")
|
||||
"#if 0"))
|
||||
(invoke "python" "build/linux/unbundle/replace_gn_files.py"
|
||||
"--system-libraries" "ffmpeg" "flac" "fontconfig"
|
||||
"freetype" "harfbuzz-ng" "icu" "libdrm" "libevent"
|
||||
|
@ -414,6 +421,31 @@ (define xcb-proto/python2
|
|||
`(("pkg-config" ,pkg-config)
|
||||
("python" ,python-2)))))
|
||||
|
||||
;; 'make-ld-wrapper' can only work with an 'ld' executable, so we need
|
||||
;; this trick to make it wrap 'lld'.
|
||||
(define lld-as-ld
|
||||
(computed-file "lld-ld"
|
||||
#~(begin
|
||||
(mkdir #$output)
|
||||
(mkdir (string-append #$output "/bin"))
|
||||
(symlink #$(file-append lld "/bin/lld")
|
||||
(string-append #$output "/bin/ld")))))
|
||||
|
||||
;; Create a wrapper for LLD that inserts appropriate -rpath entries.
|
||||
(define lld-wrapper
|
||||
(make-ld-wrapper "lld-wrapper"
|
||||
#:binutils lld-as-ld))
|
||||
|
||||
;; Clang looks for an 'ld.lld' executable, so we need to symlink it back.
|
||||
(define lld/wrapped
|
||||
(computed-file "lld-wrapped"
|
||||
#~(begin
|
||||
(mkdir #$output)
|
||||
(mkdir (string-append #$output "/bin"))
|
||||
(symlink #$(file-append lld-wrapper "/bin/ld")
|
||||
(string-append #$output "/bin/lld"))
|
||||
(symlink "lld" (string-append #$output "/bin/ld.lld")))))
|
||||
|
||||
(define-public ungoogled-chromium
|
||||
(package
|
||||
(name "ungoogled-chromium")
|
||||
|
@ -447,16 +479,14 @@ (define-public ungoogled-chromium
|
|||
;; directory for an exhaustive list of supported flags.
|
||||
;; (Note: The 'configure' phase will do that for you.)
|
||||
(list "is_debug=false"
|
||||
"is_unsafe_developer_build=false"
|
||||
"use_gold=false"
|
||||
"use_lld=false"
|
||||
;; Use the "official" release optimizations, as opposed to
|
||||
;; a developer build.
|
||||
"is_official_build=true"
|
||||
(string-append "max_jobs_per_link="
|
||||
(number->string (parallel-job-count)))
|
||||
"exclude_unwind_tables=true"
|
||||
"clang_use_chrome_plugins=false"
|
||||
"use_custom_libcxx=false"
|
||||
"use_sysroot=false"
|
||||
"enable_precompiled_headers=false"
|
||||
"goma_dir=\"\""
|
||||
"enable_nacl=false"
|
||||
"enable_nacl_nonsfi=false"
|
||||
|
@ -499,7 +529,10 @@ (define-public ungoogled-chromium
|
|||
"use_pulseaudio=true"
|
||||
"link_pulseaudio=true"
|
||||
"icu_use_data_file=false"
|
||||
"perfetto_use_system_protobuf=true"
|
||||
|
||||
;; FIXME: Using system protobuf with "is_official_build" causes an
|
||||
;; invalid opcode and "protoc-gen-plugin: Plugin killed by signal 4".
|
||||
;;"perfetto_use_system_protobuf=true"
|
||||
|
||||
;; VA-API acceleration is currently only supported on x86_64-linux.
|
||||
,@(if (string-prefix? "x86_64" (or (%current-target-system)
|
||||
|
@ -628,7 +661,7 @@ (define-public ungoogled-chromium
|
|||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
|
||||
;; Make sure the right build tools are used.
|
||||
(setenv "AR" "ar") (setenv "NM" "nm")
|
||||
(setenv "AR" "llvm-ar") (setenv "NM" "llvm-nm")
|
||||
(setenv "CC" "clang") (setenv "CXX" "clang++")
|
||||
|
||||
(setenv "CXXFLAGS"
|
||||
|
@ -755,6 +788,7 @@ (define-public ungoogled-chromium
|
|||
("clang" ,clang-10)
|
||||
("gn" ,gn)
|
||||
("gperf" ,gperf)
|
||||
("ld-wrapper" ,lld/wrapped)
|
||||
("ninja" ,ninja)
|
||||
("node" ,node)
|
||||
("pkg-config" ,pkg-config)
|
||||
|
@ -816,7 +850,6 @@ (define-public ungoogled-chromium
|
|||
("opus" ,opus+custom)
|
||||
("pango" ,pango)
|
||||
("pciutils" ,pciutils)
|
||||
("protobuf" ,protobuf)
|
||||
("pulseaudio" ,pulseaudio)
|
||||
("re2" ,re2)
|
||||
("snappy" ,snappy)
|
||||
|
|
Loading…
Reference in a new issue