| # 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 = [ "-mmacosx-version-min=" + mac_sdk_min ] |
| 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), |
| "-Cdefault-linker-libraries", |
| ] |
| foreach(flag, ldflags) { |
| rustflags += [ "-Clink-arg=$flag" ] |
| } |
| } |
| |
| config("sysroot") { |
| cflags = [ "--sysroot=$sysroot" ] |
| ldflags = cflags |
| asmflags = cflags |
| |
| rustflags = [] |
| foreach(flag, ldflags) { |
| rustflags += [ "-Clink-arg=$flag" ] |
| } |
| } |
| |
| # 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/../../..", |
| ] |
| |
| rustflags = [] |
| foreach(flag, ldflags) { |
| rustflags += [ "-Clink-arg=$flag" ] |
| } |
| } |
| |
| # On Mac, this is used only for executables. |
| config("mac_executable_flags") { |
| ldflags = [ "-Wl,-pie" ] # Position independent. |
| } |
| |
| # Standard libraries. |
| config("default_libs") { |
| frameworks = [ |
| "AppKit.framework", |
| "ApplicationServices.framework", |
| "Carbon.framework", |
| "CoreFoundation.framework", |
| "CoreVideo.framework", |
| "Foundation.framework", |
| "OpenGL.framework", |
| "Security.framework", |
| "IOKit.framework", |
| ] |
| } |