platform_bionic/benchmarks/spawn/Android.bp
Colin Cross da446cc5cc Tweak linux_glibc properties for musl builds in bionic
For convenience, builds against musl libc currently use the
linux_glibc properties because they are almost always linux-specific
and not glibc-specific.  In preparation for removing this hack,
tweak the linux_glibc properties by either moving them to host_linux,
which will apply to linux_glibc, linux_musl and linux_bionic, or
by setting appropriate musl or linux_musl properties.  Properties
that must not be repeated while musl uses linux_musl and also still
uses the linux_glibc properties are moved to glibc properties, which
don't apply to musl.  Whether these stay as glibc properties or get
moved back to linux_glibc later once the musl hack is removed is TBD.

Bug: 223257095
Test: m checkbuild
Test: m USE_HOST_MUSL=true host-native
Change-Id: I809bf1ba783dff02f6491d87fbdc9fa7fc0975b0
2022-03-08 15:07:57 -08:00

142 lines
3.9 KiB
Text

//
// Copyright (C) 2019 The Android Open Source Project
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in
// the documentation and/or other materials provided with the
// distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
// OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
package {
default_applicable_licenses: ["bionic_benchmarks_license"],
}
cc_defaults {
name: "bionic_spawn_benchmark_targets",
host_supported: true,
target: {
darwin: {
enabled: false,
},
windows: {
enabled: false,
},
linux_glibc_x86: {
enabled: false,
},
linux_musl_x86: {
enabled: false,
},
},
}
cc_library_static {
name: "libbionic_spawn_benchmark",
defaults: ["bionic_spawn_benchmark_targets"],
srcs: ["spawn_benchmark.cpp"],
export_include_dirs: ["include"],
static_libs: [
"libbase",
"libgoogle-benchmark",
"liblog",
],
}
cc_benchmark {
name: "bionic-spawn-benchmarks",
defaults: ["bionic_spawn_benchmark_targets"],
srcs: ["spawn_benchmarks.cpp"],
static_libs: [
"libbase",
"libbionic_spawn_benchmark",
"liblog",
],
// Install these binaries in the same directory as the main benchmark binary.
data: [
":bench_cxa_atexit",
":bench_noop",
":bench_noop_nostl",
":bench_noop_static",
],
}
cc_defaults {
name: "bionic_spawn_benchmark_binary",
defaults: ["bionic_spawn_benchmark_targets"],
compile_multilib: "both",
multilib: {
lib32: {
suffix: "32",
},
lib64: {
suffix: "64",
},
},
// When this binary is installed to host/linux-x86/bin, its runpath is ${ORIGIN}/../lib64, which
// is fine for finding host/linux-x86/lib64/libc++.so. When it's installed to
// host/linux-x86/benchmarktest64/bionic-spawn-benchmarks, the runpath needs an extra "..". This
// argument has no effect when a static executable is produced.
target: {
linux_glibc_x86_64: {
ldflags: [
"-Wl,--rpath,${ORIGIN}/../../lib64",
],
},
linux_musl_x86_64: {
ldflags: [
"-Wl,--rpath,${ORIGIN}/../../lib64",
],
},
},
}
cc_binary {
defaults: ["bionic_spawn_benchmark_binary"],
name: "bench_cxa_atexit",
srcs: ["bench_cxa_atexit.cpp"],
}
cc_binary {
defaults: ["bionic_spawn_benchmark_binary"],
name: "bench_noop",
srcs: ["noop.cpp"],
}
cc_binary {
defaults: ["bionic_spawn_benchmark_binary"],
name: "bench_noop_nostl",
srcs: ["noop.cpp"],
stl: "none",
}
cc_binary {
defaults: ["bionic_spawn_benchmark_binary"],
name: "bench_noop_static",
srcs: ["noop.cpp"],
static_executable: true,
stl: "libc++_static",
}