2266380304
https://developers.google.com/style/inclusive-documentation#ableist-language Change-Id: I212f6e7c428b7738b7a3fb2319e0821b34b0a78a Reviewed-on: https://skia-review.googlesource.com/c/skia/+/362098 Commit-Queue: Kevin Lubick <kjlubick@google.com> Reviewed-by: Eric Boren <borenet@google.com>
123 lines
4.3 KiB
Python
123 lines
4.3 KiB
Python
# Copyright 2018 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
from . import util
|
|
import os
|
|
|
|
IMAGES = {
|
|
# Used to build ChromeOS for Pixelbook in Debian9, to align GLIBC versions.
|
|
'Debian9': (
|
|
'gcr.io/skia-public/debian9@sha256:'
|
|
'f48edc56b621a44ee2f985555f9b09c2802da15d56bb4e43666faabbec80d569'),
|
|
}
|
|
|
|
def compile_fn(api, checkout_root, out_dir):
|
|
skia_dir = checkout_root.join('skia')
|
|
configuration = api.vars.builder_cfg.get('configuration')
|
|
target_arch = api.vars.builder_cfg.get('target_arch')
|
|
os_name = api.vars.builder_cfg.get('os', '')
|
|
builder_name = api.vars.builder_name
|
|
|
|
# Currently we mount this directory to /SRC in Docker.
|
|
# TODO(westont): Add docker module API to match binding to actual structure.
|
|
top_level = '/SRC' if 'Docker' in builder_name else str(api.vars.workdir)
|
|
|
|
clang_linux = os.path.join(top_level, 'clang_linux')
|
|
# This is a pretty typical arm-linux-gnueabihf sysroot
|
|
sysroot_dir = os.path.join(top_level, 'armhf_sysroot')
|
|
|
|
args = {
|
|
'cc': "%s" % os.path.join(clang_linux, 'bin','clang'),
|
|
'cxx': "%s" % os.path.join(clang_linux, 'bin','clang++'),
|
|
'extra_cflags' : [],
|
|
'extra_ldflags' : [],
|
|
'extra_asmflags' : [],
|
|
'target_cpu': target_arch,
|
|
'skia_use_fontconfig': False,
|
|
'skia_use_system_freetype2': False,
|
|
'skia_use_egl': True,
|
|
'werror': True,
|
|
}
|
|
|
|
if 'arm' == target_arch:
|
|
# This is the extra things needed to link against for the chromebook.
|
|
# For example, the Mali GL drivers.
|
|
gl_dir = os.path.join(top_level, 'chromebook_arm_gles')
|
|
env = {'LD_LIBRARY_PATH': os.path.join(sysroot_dir, 'lib')}
|
|
args['extra_asmflags'] = [
|
|
'--target=armv7a-linux-gnueabihf',
|
|
'--sysroot=%s' % sysroot_dir,
|
|
'-march=armv7-a',
|
|
'-mfpu=neon',
|
|
'-mthumb',
|
|
]
|
|
|
|
args['extra_cflags'] = [
|
|
'--target=armv7a-linux-gnueabihf',
|
|
'--sysroot=%s' % sysroot_dir,
|
|
'-I%s' % os.path.join(gl_dir, 'include'),
|
|
'-I%s' % os.path.join(sysroot_dir, 'include'),
|
|
'-I%s' % os.path.join(sysroot_dir, 'include', 'c++', '6'),
|
|
'-I%s' % os.path.join(sysroot_dir, 'include', 'c++', '6', 'arm-linux-gnueabihf'),
|
|
'-DMESA_EGL_NO_X11_HEADERS',
|
|
'-U_GLIBCXX_DEBUG',
|
|
]
|
|
|
|
args['extra_ldflags'] = [
|
|
'--target=armv7a-linux-gnueabihf',
|
|
'--sysroot=%s' % sysroot_dir,
|
|
'-static-libstdc++', '-static-libgcc',
|
|
# use sysroot's ld which can properly link things.
|
|
'-B%s' % os.path.join(sysroot_dir, 'bin'),
|
|
# helps locate crt*.o
|
|
'-B%s' % os.path.join(sysroot_dir, 'gcc-cross'),
|
|
# helps locate libgcc*.so
|
|
'-L%s' % os.path.join(sysroot_dir, 'gcc-cross'),
|
|
'-L%s' % os.path.join(sysroot_dir, 'lib'),
|
|
'-L%s' % os.path.join(gl_dir, 'lib'),
|
|
]
|
|
else:
|
|
gl_dir = os.path.join(top_level,'chromebook_x86_64_gles')
|
|
env = {}
|
|
args['extra_asmflags'] = []
|
|
args['extra_cflags'] = [
|
|
'-DMESA_EGL_NO_X11_HEADERS',
|
|
'-I%s' % os.path.join(gl_dir, 'include'),
|
|
]
|
|
args['extra_ldflags'] = [
|
|
'-L%s' % os.path.join(gl_dir, 'lib'),
|
|
'-static-libstdc++', '-static-libgcc',
|
|
'-fuse-ld=lld',
|
|
]
|
|
|
|
args['extra_cflags'].append('-DREBUILD_IF_CHANGED_clang_linux_version=%s' %
|
|
api.run.asset_version('clang_linux', skia_dir))
|
|
|
|
if configuration != 'Debug':
|
|
args['is_debug'] = False
|
|
|
|
gn = skia_dir.join('bin', 'gn')
|
|
|
|
if os_name == 'Debian9' and 'Docker' in builder_name:
|
|
script = api.build.resource('docker-chromeos-compile.sh')
|
|
image_hash = IMAGES[os_name]
|
|
# Invalidate incremental build cache if image changes.
|
|
args['extra_cflags'].append('-DREBUILD_IF_CHANGED_docker_image=%s' % image_hash)
|
|
api.docker.run('Run build script in Docker', image_hash,
|
|
checkout_root, out_dir, script, args=[util.py_to_gn(args)])
|
|
return
|
|
|
|
with api.context(cwd=skia_dir, env=env):
|
|
api.run(api.python, 'fetch-gn',
|
|
script=skia_dir.join('bin', 'fetch-gn'),
|
|
infra_step=True)
|
|
api.run(api.step, 'gn gen',
|
|
cmd=[gn, 'gen', out_dir, '--args=' + util.py_to_gn(args)])
|
|
api.run(api.step, 'ninja',
|
|
cmd=['ninja', '-C', out_dir, 'nanobench', 'dm'])
|
|
|
|
|
|
def copy_build_products(api, src, dst):
|
|
util.copy_listed_files(api, src, dst, util.DEFAULT_BUILD_PRODUCTS)
|