diff options
author | Mike Gilbert <floppym@gentoo.org> | 2017-06-19 00:57:51 -0400 |
---|---|---|
committer | Mike Gilbert <floppym@gentoo.org> | 2017-06-19 01:01:05 -0400 |
commit | 2dd4eba091de610ed6621df0b20daedc7c5c44c2 (patch) | |
tree | 0cdff38e380bb7d2a8b06a76adc662821d84c03b /www-client | |
parent | media-video/totem: remove old (diff) | |
download | gentoo-2dd4eba091de610ed6621df0b20daedc7c5c44c2.tar.gz gentoo-2dd4eba091de610ed6621df0b20daedc7c5c44c2.tar.bz2 gentoo-2dd4eba091de610ed6621df0b20daedc7c5c44c2.zip |
www-client/chromium: wire-up cross-compile support
Cross-compiling still does not work, but this gets us closer.
- Build GN with the host (CBUILD) compiler, skip rebuild after bootstrap.
- Add a toolchain definition for the host (CBUILD) compiler.
- Set the host_toolchain option.
- Set the target_cpu option based on the target arch (CHOST).
The host_toolchain option is also set for native builds. This makes
clang work without setting clang_base_path.
Package-Manager: Portage-2.3.6_p7, Repoman-2.3.2_p75
Diffstat (limited to 'www-client')
-rw-r--r-- | www-client/chromium/chromium-61.0.3128.3.ebuild | 47 | ||||
-rw-r--r-- | www-client/chromium/files/toolchain/BUILD.gn | 18 |
2 files changed, 50 insertions, 15 deletions
diff --git a/www-client/chromium/chromium-61.0.3128.3.ebuild b/www-client/chromium/chromium-61.0.3128.3.ebuild index 22c6f5f671bb..09e3875b0b4e 100644 --- a/www-client/chromium/chromium-61.0.3128.3.ebuild +++ b/www-client/chromium/chromium-61.0.3128.3.ebuild @@ -333,6 +333,22 @@ src_prepare() { build/linux/unbundle/remove_bundled_libraries.py "${keeplibs[@]}" --do-remove || die } +bootstrap_gn() { + if tc-is-cross-compiler; then + local -x AR=${BUILD_AR} + local -x CC=${BUILD_CC} + local -x CXX=${BUILD_CXX} + local -x NM=${BUILD_NM} + local -x CFLAGS=${BUILD_CFLAGS} + local -x CXXFLAGS=${BUILD_CXXFLAGS} + local -x LDFLAGS=${BUILD_LDFLAGS} + fi + einfo "Building GN..." + set -- tools/gn/bootstrap/bootstrap.py -s -v --no-clean + echo "$@" + "$@" || die +} + src_configure() { local myconf_gn="" @@ -398,7 +414,6 @@ src_configure() { if tc-is-clang; then myconf_gn+=" is_clang=true clang_use_chrome_plugins=false" - myconf_gn+=" clang_base_path=\"$(realpath $(dirname `which clang`)/..)\"" else myconf_gn+=" is_clang=false" fi @@ -425,16 +440,16 @@ src_configure() { local myarch="$(tc-arch)" if [[ $myarch = amd64 ]] ; then - target_arch=x64 + myconf_gn+=" target_cpu=\"x64\"" ffmpeg_target_arch=x64 elif [[ $myarch = x86 ]] ; then - target_arch=ia32 + myconf_gn+=" target_cpu=\"x86\"" ffmpeg_target_arch=ia32 elif [[ $myarch = arm64 ]] ; then - target_arch=arm64 + myconf_gn+=" target_cpu=\"arm64\"" ffmpeg_target_arch=arm64 elif [[ $myarch = arm ]] ; then - target_arch=arm + myconf_gn+=" target_cpu=\"arm\"" ffmpeg_target_arch=$(usex neon arm-neon arm) else die "Failed to determine target arch, got '$myarch'." @@ -467,20 +482,19 @@ src_configure() { # Make sure the build system will use the right tools, bug #340795. tc-export AR CC CXX NM - # https://bugs.gentoo.org/588596 - append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) - # Define a custom toolchain for GN myconf_gn+=" custom_toolchain=\"${FILESDIR}/toolchain:default\"" - # Tools for building programs to be executed on the build system, bug #410883. if tc-is-cross-compiler; then - export AR_host=$(tc-getBUILD_AR) - export CC_host=$(tc-getBUILD_CC) - export CXX_host=$(tc-getBUILD_CXX) - export NM_host=$(tc-getBUILD_NM) + tc-export BUILD_{AR,CC,CXX,NM} + myconf_gn+=" host_toolchain=\"${FILESDIR}/toolchain:host\"" + else + myconf_gn+=" host_toolchain=\"${FILESDIR}/toolchain:default\"" fi + # https://bugs.gentoo.org/588596 + append-cxxflags $(test-flags-CXX -fno-delete-null-pointer-checks) + # Bug 491582. export TMPDIR="${WORKDIR}/temp" mkdir -p -m 755 "${TMPDIR}" || die @@ -505,9 +519,12 @@ src_configure() { touch chrome/test/data/webui/i18n_process_css_test.html || die + bootstrap_gn + einfo "Configuring Chromium..." - tools/gn/bootstrap/bootstrap.py -v --no-clean --gn-gen-args "${myconf_gn}" || die - out/Release/gn gen --args="${myconf_gn}" out/Release || die + set -- out/Release/gn gen --args="${myconf_gn}" out/Release + echo "$@" + "$@" || die } src_compile() { diff --git a/www-client/chromium/files/toolchain/BUILD.gn b/www-client/chromium/files/toolchain/BUILD.gn index 78f7b57e3be5..f88d3afdcfda 100644 --- a/www-client/chromium/files/toolchain/BUILD.gn +++ b/www-client/chromium/files/toolchain/BUILD.gn @@ -17,3 +17,21 @@ gcc_toolchain("default") { current_os = current_os } } + +gcc_toolchain("host") { + cc = getenv("BUILD_CC") + cxx = getenv("BUILD_CXX") + ar = getenv("BUILD_AR") + nm = getenv("BUILD_NM") + ld = cxx + + extra_cflags = getenv("BUILD_CFLAGS") + extra_cppflags = getenv("BUILD_CPPFLAGS") + extra_cxxflags = getenv("BUILD_CXXFLAGS") + extra_ldflags = getenv("BUILD_LDFLAGS") + + toolchain_args = { + current_cpu = current_cpu + current_os = current_os + } +} |