# Copyright 2017 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.gni")
import("//build/config/mac/mac_sdk.gni")
import("//build/config/sysroot.gni")

config("compiler") {
  cflags_cc = [
    # macOS needs this to not complain about C++17isms that older macOS
    # system libc++ doesn't support. However, we use our own toolchain's
    # static libc++ anyway.
    "-faligned-allocation",
  ]
  cflags_objcc = [
    "-std=c++14",
    "-stdlib=libc++",
  ]
  defines = [
    # libc++ headers mark some symbols as unavailable on macOS by default
    # because the system libc++ doesn't support them.  But we use our own
    # toolchain's static libc++ anyway.
    "_LIBCPP_DISABLE_AVAILABILITY",
  ]
  ldflags = [
    "-nostdlib++",
    "${clang_prefix}/../lib/libc++.a",
  ]
  configs = [ ":sysroot" ]
  rustflags = [
    "-Clinker=" + rebase_path("$clang_prefix/clang++", "", root_build_dir),
    "-Clink-arg=-mmacosx-version-min=" + mac_sdk_min,
    "-Cdefault-linker-libraries",
  ]
}

config("sysroot") {
  cflags = [ "--sysroot=$sysroot" ]
  ldflags = cflags
  asmflags = cflags
}

# On Mac, this is used for everything except static libraries.
config("mac_dynamic_flags") {
  ldflags = [
    "-Wl,-search_paths_first",
    "-L.",

    # Path for loading shared libraries for unbundled binaries.
    "-Wl,-rpath,@loader_path/.",

    # Path for loading shared libraries for bundled binaries.
    # Get back from Binary.app/Contents/MacOS.
    "-Wl,-rpath,@loader_path/../../..",
  ]
}

# On Mac, this is used only for executables.
config("mac_executable_flags") {
  ldflags = [ "-Wl,-pie" ]  # Position independent.
}

# Standard libraries.
config("default_libs") {
  libs = [
    "AppKit.framework",
    "ApplicationServices.framework",
    "Carbon.framework",
    "CoreFoundation.framework",
    "CoreVideo.framework",
    "Foundation.framework",
    "OpenGL.framework",
    "Security.framework",
    "IOKit.framework",
  ]
}
