blob: a72ff98df9fec5896f64205a0a77de14dc0f3b16 [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.
import("//build/config/clang/clang_cpu.gni")
config("headers") {
visibility = [
"./*",
"//zircon/system/ulib/c:*",
]
cflags = [
"-idirafter",
rebase_path("include", root_build_dir),
]
asmflags = cflags
}
group("musl_internal") {
visibility = [
"./*",
"//zircon/system/ulib/c/*",
"//zircon/third_party/scudo/*",
]
public_deps = [
"//src/zircon/lib/zircon",
"//zircon/system/ulib/processargs",
"//zircon/system/ulib/runtime",
"//zircon/system/ulib/zircon-internal",
]
public_configs = [
":headers",
":musl_internal.config",
]
}
group("musl_internal_testing") {
testonly = true
visibility = [
"./*",
"//zircon/system/ulib/c/*",
"//zircon/system/utest/libc:*",
]
public_deps = [ ":musl_internal" ]
}
config("musl_internal.config") {
visibility = [ ":musl_internal" ]
include_dirs = [
"src/internal",
"arch/${clang_cpu}",
]
defines = [ "_XOPEN_SOURCE=700" ]
# TODO(kulakowski): Clean up the junkier -Wno flags below.
cflags = [
"-Wno-sign-compare",
"-Wno-implicit-fallthrough",
]
cflags_c = [ "-Werror=incompatible-pointer-types" ]
if (is_gcc) {
cflags += [
# Some dubious but working musl code elicits GCC's pointer usage warnings.
"-Wno-dangling-pointer",
# Some of the math code gets false-positive warnings.
"-Wno-maybe-uninitialized",
]
}
if (!is_gcc) {
# Some of this code runs before the TLS area for the canary is set up.
# TODO(mcgrathr): Isolate this to exactly what code needs it.
cflags += [ "-fno-stack-protector" ]
}
# libfuzzer also uses libc internally, by removing the fuzzing
# instrumentation we avoid it adding noise to the fuzzing coverage.
# TODO(25073): Once a cleaner solution is found, remove this.
configs = [ "//build/config/zircon:no_fuzzer" ]
}
if (toolchain_variant.base == "//zircon/system/ulib/c:user.libc_$target_cpu") {
group("musl") {
visibility = [ "//zircon/system/ulib/c:*" ]
deps = [
"ldso",
"pthread",
"src/complex",
"src/conf",
"src/ctype",
"src/dirent",
"src/env",
"src/errno",
"src/exit",
"src/fcntl",
"src/internal",
"src/ipc",
"src/ldso",
"src/legacy",
"src/linux",
"src/locale",
"src/math",
"src/misc",
"src/mman",
"src/multibyte",
"src/network",
"src/passwd",
"src/prng",
"src/process",
"src/regex",
"src/sched",
"src/signal",
"src/stat",
"src/stdio",
"src/stdlib",
"src/string",
"src/temp",
"src/termios",
"src/thread",
"src/time",
"src/unistd",
"third_party/tre",
]
}
}
# We share just this internal header with fdio so it can implement
# getifaddrs re-using this address manipulation code.
source_set("getifaddrs-internal") {
visibility = [
"src/network:*",
"//sdk/lib/fdio:*",
"//sdk/lib/fdio:fdio_sdk_manifest",
"//sdk/lib/fdio:fdio_sdk_manifest_meta_copy",
]
sources = [ "src/network/getifaddrs.h" ]
public_configs = [ ":getifaddrs_include_dirs" ]
# TODO(https://fxbug.dev/42136089): delete the below and fix compiler warnings
configs += [ "//build/config:Wno-conversion" ]
}
config("getifaddrs_include_dirs") {
visibility = [ ":*" ]
include_dirs = [ "." ]
}