summaryrefslogtreecommitdiffstats
path: root/build/config/mac/BUILD.gn
blob: 56e101cee713f3350170e5aeb007afe882bab157 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# Copyright (c) 2013 The Chromium 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")
import("//build/config/mac/mac_sdk.gni")

# This is included by reference in the //build/config/compiler config that
# is applied to all targets. It is here to separate out the logic.
#
# This is applied to BOTH desktop Mac and iOS targets.
config("compiler") {
  # These flags are shared between the C compiler and linker.
  common_mac_flags = []

  # CPU architecture.
  if (current_cpu == "x64") {
    common_mac_flags += [
      "-arch",
      "x86_64",
    ]
  } else if (current_cpu == "x86") {
    common_mac_flags += [
      "-arch",
      "i386",
    ]
  } else if (current_cpu == "armv7" || current_cpu == "arm") {
    common_mac_flags += [
      "-arch",
      "armv7",
    ]
  } else if (current_cpu == "arm64") {
    common_mac_flags += [
      "-arch",
      "arm64",
    ]
  }

  asmflags = common_mac_flags
  cflags = common_mac_flags

  # Without this, the constructors and destructors of a C++ object inside
  # an Objective C struct won't be called, which is very bad.
  cflags_objcc = [ "-fobjc-call-cxx-cdtors" ]

  cflags_c = [ "-std=c99" ]
  cflags_objc = cflags_c

  ldflags = common_mac_flags
}

# This is included by reference in the //build/config/compiler:runtime_library
# config that is applied to all targets. It is here to separate out the logic
# that is Mac-only. Please see that target for advice on what should go in
# :runtime_library vs. :compiler.
config("runtime_library") {
  common_flags = [
    "-isysroot",
    sysroot,
    "-mmacosx-version-min=$mac_deployment_target",
  ]

  asmflags = common_flags
  cflags = common_flags
  ldflags = common_flags
}

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

  if (is_component_build) {
    ldflags += [
      # 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") {
  # Remove this when targeting >=10.7 since it is the default in that config.
  ldflags = [ "-Wl,-pie" ]  # Position independent.
}