blob: fb560e563637068847589ce33b18a2c98c2858dd [file] [log] [blame]
# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
# This file is used to define these important variables:
#
# zircon_vdso_toolchain: The GN toolchain() instance that will build
# the VDSO binary (libzircon.so) according to the current toolchain
# and build variant selectors.
#
# zircon_vdso_target: The GN label of the target that generates the
# VDSO binary, includes zircon_vdso_toolchain.
#
# zircon_vdso_unstripped, zircon_vdso_stripped:
# The paths to the unstripped and stripped VDSO libraries generated
# by the build for zircon_vdso_target.
#
# To do so, it needs to duplicate the build variant selection logic
# normally found in BUILDCONFIG.gn (see below).
# The variant selector fields corresponding to the Zircon VDSO
# Keep it in sync with the definitions of user.vdso_${target_cpu}
# in //zircon/system/ulib/zircon/BUILD.gn!
#
_select_host = false
_select_testonly = false
_select_target_type = [ "shared_library" ]
_select_output_name = [ "libzircon.so" ]
_select_label = [ "//zircon/system/ulib/zircon" ]
_select_name = [ "zircon" ]
_select_dir = [ "//zircon/system/ulib/zircon" ]
_select_exclude_toolchain_tags = [
"instrumented",
"gcc",
]
_with_shared = false
# ======================================================================
# START OF CODE TO KEEP IN SYNC WITH BUILDCONFIG.gn
#
# IMPORTANT: Always keep the code below in sync with the computations
# performed by variant_target() within //build/config/BUILDCONFIG.gn.
#
_target_variant = ""
if (select_variant_canonical != []) {
_selected = false
foreach(selector, select_variant_canonical) {
if (!_selected) {
_selector = {
}
_selector = {
target_type = []
output_name = []
label = []
name = []
dir = []
forward_variables_from(selector, "*")
}
_selected = true
if (_selected && defined(_selector.host)) {
_selected = _selector.host == _select_host
}
if (_selected && defined(_selector.testonly)) {
_selected = _selector.testonly == _select_testonly
}
if (_selected && _selector.target_type != []) {
_selected = _selector.target_type + _select_target_type -
_select_target_type != _selector.target_type
}
if (_selected && _selector.output_name != []) {
_selected = _selector.output_name + _select_output_name -
_select_output_name != _selector.output_name
}
if (_selected && _selector.label != []) {
_selected =
_selector.label + _select_label - _select_label != _selector.label
}
if (_selected && _selector.name != []) {
_selected =
_selector.name + _select_name - _select_name != _selector.name
}
if (_selected && _selector.dir != []) {
_selected = _selector.dir + _select_dir - _select_dir != _selector.dir
}
if (_selected && _select_exclude_toolchain_tags != []) {
_selected = _select_exclude_toolchain_tags + _selector.variant_tags -
_selector.variant_tags == _select_exclude_toolchain_tags
}
if (_selected && _selector.variant != false) {
_target_variant = "-${_selector.variant}"
}
}
}
}
if (_with_shared) {
_target_variant += "-shared"
}
# END OF CODE TO KEEP IN SYNC WITH BUILDCONFIG.gn!
# ==================================================================
# Define the zircon_vdso_xxx variables now.
zircon_vdso_label = "//zircon/system/ulib/zircon"
zircon_vdso_toolchain =
"//zircon/system/ulib/zircon:user.vdso_${target_cpu}${_target_variant}"
zircon_vdso_target = "$zircon_vdso_label($zircon_vdso_toolchain)"
zircon_vdso_stripped =
get_label_info(zircon_vdso_target, "root_out_dir") + "/libzircon.so"
zircon_vdso_unstripped = zircon_vdso_stripped + ".debug"