# 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/sysroot.gni")

config("compiler") {
  cflags_objcc = [
    "-std=c++14",
    "-stdlib=libc++",
  ]
  configs = [ ":sysroot" ]
}

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",
  ]
}
