# 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.

zx_library("c") {
  shared = true
  static = false

  # At link time and in DT_SONAME, musl is known as libc.so.  But the
  # (only) place it needs to be installed at runtime is where the
  # PT_INTERP strings embedded in executables point, which is ld.so.1.
  install_path = "lib/${toolchain.libprefix}ld.so.1"

  public_configs = [ "$zx/third_party/ulib/musl:headers" ]

  # The code comes from musl, where a source_set is defined.
  sources = []

  deps = [
    "$zx/system/ulib/zx-panic-libc:as_source",
    "$zx/third_party/ulib/musl",
    "sanitizers",
    "setjmp",
    "zircon",
  ]

  # Suppress the ${toolchain.implicit_deps} that points back to here.
  no_implicit_deps = true

  # Don't link against the shared libc++.
  configs += [ "$zx/public/gn/config:static-libc++" ]

  # TODO(33224): Enabling ICF for libc breaks some tests.  Turn it on
  # when that's figured out and fix.
  configs += [ "$zx/public/gn/config:no-icf" ]

  metadata = {
    # This library is on the allowlist for driver() shared library deps.
    # It doesn't cause driver-denylist-check.sh to fail, and it prunes the
    # metadata walk here so our own deps are not subject to the check.
    driver_shlib_denylist = []
    driver_shlib_denylist_barrier = []

    # TODO(BLD-353): temporary kludges; see //zircon/public/sysroot
    legacy_sysroot = [
      {
        libc = rebase_path("$target_out_dir/libc.so.debug", root_build_dir)
      },
      {
        libc_dist = rebase_path("$target_out_dir/libc.so", root_build_dir)
      },
      {
        include_dirs = [
          "//zircon/system/public",
          "//zircon/system/ulib/zircon/include",
          "//zircon/third_party/ulib/musl/include",
        ]
      },
      {
        sdk = {
          include_dir = "//zircon/system/public"
          headers = [
            "zircon/assert.h",
            "zircon/boot/driver-config.h",
            "zircon/boot/e820.h",
            "zircon/boot/image.h",
            "zircon/boot/multiboot.h",
            "zircon/boot/netboot.h",
            "zircon/boot/sysconfig.h",
            "zircon/compiler.h",
            "zircon/driver/binding.h",
            "zircon/errors.h",
            "zircon/features.h",
            "zircon/fidl.h",
            "zircon/hw/gpt.h",
            "zircon/hw/i2c.h",
            "zircon/hw/pci.h",
            "zircon/hw/usb.h",
            "zircon/hw/usb/audio.h",
            "zircon/hw/usb/cdc.h",
            "zircon/hw/usb/dfu.h",
            "zircon/hw/usb/hid.h",
            "zircon/hw/usb/hub.h",
            "zircon/hw/usb/ums.h",
            "zircon/hw/usb/video.h",
            "zircon/limits.h",
            "zircon/listnode.h",
            "zircon/pixelformat.h",
            "zircon/process.h",
            "zircon/processargs.h",
            "zircon/rights.h",
            "zircon/syscalls.h",
            "zircon/syscalls/clock.h",
            "zircon/syscalls/debug.h",
            "zircon/syscalls/exception.h",
            "zircon/syscalls/hypervisor.h",
            "zircon/syscalls/iommu.h",
            "zircon/syscalls/log.h",
            "zircon/syscalls/object.h",
            "zircon/syscalls/pci.h",
            "zircon/syscalls/policy.h",
            "zircon/syscalls/port.h",
            "zircon/syscalls/profile.h",
            "zircon/syscalls/resource.h",
            "zircon/syscalls/scheduler.h",
            "zircon/syscalls/smc.h",
            "zircon/syscalls/system.h",
            "zircon/syscalls/types.h",
            "zircon/time.h",
            "zircon/tls.h",
            "zircon/types.h",

            # Note: Most of zircon/device is excluded from SDKs.
            # TODO(FIDL-273,ZX-2503): remove this allowlist.
            "zircon/device/audio.h",

            "../../syscalls/alias_workarounds.fidl",
            "../../syscalls/bti.fidl",
            "../../syscalls/cache.fidl",
            "../../syscalls/channel.fidl",
            "../../syscalls/clock.fidl",
            "../../syscalls/cprng.fidl",
            "../../syscalls/debuglog.fidl",
            "../../syscalls/debug.fidl",
            "../../syscalls/eventpair.fidl",
            "../../syscalls/event.fidl",
            "../../syscalls/exception.fidl",
            "../../syscalls/fifo.fidl",
            "../../syscalls/framebuffer.fidl",
            "../../syscalls/futex.fidl",
            "../../syscalls/guest.fidl",
            "../../syscalls/handle.fidl",
            "../../syscalls/interrupt.fidl",
            "../../syscalls/iommu.fidl",
            "../../syscalls/ioports.fidl",
            "../../syscalls/job.fidl",
            "../../syscalls/ktrace.fidl",
            "../../syscalls/misc.fidl",
            "../../syscalls/mtrace.fidl",
            "../../syscalls/object.fidl",
            "../../syscalls/pager.fidl",
            "../../syscalls/pci.fidl",
            "../../syscalls/pc.fidl",
            "../../syscalls/pmt.fidl",
            "../../syscalls/port.fidl",
            "../../syscalls/process.fidl",
            "../../syscalls/profile.fidl",
            "../../syscalls/resource.fidl",
            "../../syscalls/rights.fidl",
            "../../syscalls/smc.fidl",
            "../../syscalls/socket.fidl",
            "../../syscalls/syscall.fidl",
            "../../syscalls/system.fidl",
            "../../syscalls/task.fidl",
            "../../syscalls/thread.fidl",
            "../../syscalls/timer.fidl",
            "../../syscalls/vcpu.fidl",
            "../../syscalls/vmar.fidl",
            "../../syscalls/vmo.fidl",
            "../../syscalls/zx.fidl",
          ]
        }
      },
      {
        sdk = {
          include_dir = "//zircon/third_party/ulib/musl/include"
          headers = [
            "alloca.h",
            "ar.h",
            "arpa/ftp.h",
            "arpa/inet.h",
            "arpa/nameser.h",
            "arpa/nameser_compat.h",
            "arpa/telnet.h",
            "arpa/tftp.h",
            "assert.h",
            "bits/aarch64/endian.h",
            "bits/aarch64/fenv.h",
            "bits/aarch64/io.h",
            "bits/aarch64/ioctl.h",
            "bits/aarch64/ipc.h",
            "bits/aarch64/reg.h",
            "bits/aarch64/setjmp.h",
            "bits/aarch64/signal.h",
            "bits/aarch64/stat.h",
            "bits/alltypes.h",
            "bits/endian.h",
            "bits/errno.h",
            "bits/fcntl.h",
            "bits/fenv.h",
            "bits/io.h",
            "bits/ioctl.h",
            "bits/ipc.h",
            "bits/limits.h",
            "bits/msg.h",
            "bits/null.h",
            "bits/poll.h",
            "bits/posix.h",
            "bits/reg.h",
            "bits/resource.h",
            "bits/sem.h",
            "bits/setjmp.h",
            "bits/shm.h",
            "bits/signal.h",
            "bits/socket.h",
            "bits/stat.h",
            "bits/statfs.h",
            "bits/termios.h",
            "bits/x86_64/endian.h",
            "bits/x86_64/fenv.h",
            "bits/x86_64/io.h",
            "bits/x86_64/ioctl.h",
            "bits/x86_64/ipc.h",
            "bits/x86_64/reg.h",
            "bits/x86_64/setjmp.h",
            "bits/x86_64/signal.h",
            "bits/x86_64/stat.h",
            "byteswap.h",
            "complex.h",
            "cpio.h",
            "ctype.h",
            "dirent.h",
            "dlfcn.h",
            "elf.h",
            "endian.h",
            "err.h",
            "errno.h",
            "fcntl.h",
            "features.h",
            "fenv.h",
            "fmtmsg.h",
            "fnmatch.h",
            "getopt.h",
            "glob.h",
            "grp.h",
            "iconv.h",
            "ifaddrs.h",
            "inttypes.h",
            "iso646.h",
            "langinfo.h",
            "libgen.h",
            "limits.h",
            "link.h",
            "locale.h",
            "malloc.h",
            "math.h",
            "memory.h",
            "monetary.h",
            "net/ethernet.h",
            "net/if.h",
            "net/if_arp.h",
            "net/route.h",
            "netdb.h",
            "netinet/ether.h",
            "netinet/icmp6.h",
            "netinet/if_ether.h",
            "netinet/igmp.h",
            "netinet/in.h",
            "netinet/in_systm.h",
            "netinet/ip.h",
            "netinet/ip6.h",
            "netinet/ip_icmp.h",
            "netinet/tcp.h",
            "netinet/udp.h",
            "netpacket/packet.h",
            "nl_types.h",
            "paths.h",
            "poll.h",
            "pthread.h",
            "pwd.h",
            "regex.h",
            "resolv.h",
            "sched.h",
            "search.h",
            "semaphore.h",
            "setjmp.h",
            "signal.h",
            "spawn.h",
            "stdio.h",
            "stdlib.h",
            "string.h",
            "strings.h",
            "stropts.h",
            "sys/acct.h",
            "sys/auxv.h",
            "sys/dir.h",
            "sys/errno.h",
            "sys/eventfd.h",
            "sys/fcntl.h",
            "sys/file.h",
            "sys/fsuid.h",
            "sys/io.h",
            "sys/ioctl.h",
            "sys/ipc.h",
            "sys/klog.h",
            "sys/mman.h",
            "sys/mount.h",
            "sys/msg.h",
            "sys/mtio.h",
            "sys/param.h",
            "sys/personality.h",
            "sys/poll.h",
            "sys/quota.h",
            "sys/random.h",
            "sys/reboot.h",
            "sys/reg.h",
            "sys/select.h",
            "sys/sem.h",
            "sys/shm.h",
            "sys/signal.h",
            "sys/signalfd.h",
            "sys/socket.h",
            "sys/stat.h",
            "sys/statfs.h",
            "sys/statvfs.h",
            "sys/stropts.h",
            "sys/swap.h",
            "sys/syslog.h",
            "sys/termios.h",
            "sys/time.h",
            "sys/timeb.h",
            "sys/timerfd.h",
            "sys/times.h",
            "sys/timex.h",
            "sys/ttydefaults.h",
            "sys/types.h",
            "sys/ucontext.h",
            "sys/uio.h",
            "sys/un.h",
            "sys/utsname.h",
            "sys/vfs.h",
            "sys/wait.h",
            "sysexits.h",
            "syslog.h",
            "tar.h",
            "termios.h",
            "threads.h",
            "time.h",
            "uchar.h",
            "ucontext.h",
            "unistd.h",
            "utime.h",
            "values.h",
            "wait.h",
            "wchar.h",
            "wctype.h",
            "wordexp.h",
            "zircon/dlfcn.h",
            "zircon/sanitizer.h",
            "zircon/threads.h",
          ]
        }
      },
      {
        sdk = {
          # TODO(TC-446): The stripped binary doesn't even have section
          # headers, so the linker can't handle it.  Eventually we'll have
          # linker stubs.  For now, just use the unstripped library to link
          # against.  This matches what library() gives the SDK via
          # zircon_library().
          source = rebase_path("$target_out_dir/libc.so.debug", root_build_dir)
          link = "lib/libc.so"
        }
      },
      {
        sdk = {
          source = rebase_path("$target_out_dir/libc.so.debug", root_build_dir)
          debug = "debug/libc.so"
        }
      },
      {
        sdk = {
          source = rebase_path("$target_out_dir/libc.so", root_build_dir)
          dist = "dist/lib/ld.so.1"
        }
      },
    ]
    foreach(lib,
            [
              "libdl.so",
              "libm.so",
              "libpthread.so",
              "librt.so",
            ]) {
      legacy_sysroot += [
        {
          sdk = {
            source =
                rebase_path("$zx/third_party/ulib/musl/lib.ld", root_build_dir)
            link = "lib/$lib"
          }
        },
      ]
    }
  }
}

source_set("crt1") {
  sources = [
    "Scrt1.cc",
  ]

  # This runs before all runtime setup.
  configs += [ "$zx/public/gn/config:no_sanitizers" ]

  # Minimize the code.  Even if there were lazy PLT resolution, it's never
  # worthwhile to have PLT entries for main or __libc_start_main, since
  # they are always used eagerly anyway.
  cflags = [ "-fno-plt" ]

  # TODO(BLD-353): temporary kludges
  metadata = {
    legacy_sysroot = [
      {
        crt1 = rebase_path("$target_out_dir/crt1.Scrt1.cc.o", root_build_dir)
        sdk = {
          source = crt1
          link = "lib/Scrt1.o"
        }
      },
    ]
  }
}
