• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2013 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/config/allocator.gni")
6import("//build/config/crypto.gni")
7import("//build/config/features.gni")
8import("//build/config/ui.gni")
9
10declare_args() {
11  # When set, turns off the (normally-on) iterator debugging and related stuff
12  # that is normally turned on for Debug builds. These are generally useful for
13  # catching bugs but in some cases may cause conflicts or excessive slowness.
14  disable_iterator_debugging = false
15
16  # Set to true to not store any build metadata (this isn't working yet but
17  # this flag will help us to get there). See http://crbug.com/314403.
18  # TODO(sebmarchand): Update this comment once this flag guarantee that
19  #     there's no build metadata in the build artifacts.
20  dont_embed_build_metadata = false
21}
22
23# TODO(brettw) Most of these should be removed. Instead of global feature
24# flags, we should have more modular flags that apply only to a target and its
25# dependents. For example, depending on the "x11" meta-target should define
26# USE_X11 for all dependents so that everything that could use X11 gets the
27# define, but anything that doesn't depend on X11 doesn't see it.
28#
29# For now we define these globally to match the current GYP build.
30config("feature_flags") {
31  # TODO(brettw) most of these need to be parameterized.
32  defines = [
33      "CHROMIUM_BUILD",
34      "ENABLE_EGLIMAGE=1",
35      "ENABLE_BACKGROUND=1",
36      "V8_DEPRECATION_WARNINGS",  # Don't use deprecated V8 APIs anywhere.
37  ]
38
39  if (cld_version > 0) {
40    defines += [ "CLD_VERSION=$cld_version" ]
41  }
42  if (enable_mdns) {
43    defines += [ "ENABLE_MDNS=1" ]
44  }
45  if (enable_notifications) {
46    defines += [ "ENABLE_NOTIFICATIONS" ]
47  }
48  if (enable_pepper_cdms) {
49    # TODO(brettw) should probably be "=1"
50    defines += [ "ENABLE_PEPPER_CDMS" ]
51  }
52  if (enable_browser_cdms) {
53    # TODO(brettw) should probably be "=1"
54    defines += [ "ENABLE_BROWSER_CDMS" ]
55  }
56  if (enable_plugins) {
57    defines += [ "ENABLE_PLUGINS=1" ]
58  }
59  if (printing_mode > 0) {
60    defines += [ "ENABLE_PRINTING=1" ]
61    if (printing_mode < 2) {
62      defines += [ "ENABLE_FULL_PRINTING=1" ]
63    }
64  }
65  if (enable_spellcheck) {
66    defines += [ "ENABLE_SPELLCHECK=1" ]
67  }
68  if (dont_embed_build_metadata) {
69    defines += [ "DONT_EMBED_BUILD_METADATA" ]
70  }
71  if (use_udev) {
72    # TODO(brettw) should probably be "=1".
73    defines += [ "USE_UDEV" ]
74  }
75  if (toolkit_views) {
76    defines += [ "TOOLKIT_VIEWS=1" ]
77  }
78  if (ui_compositor_image_transport) {
79    # TODO(brettw) should probably be "=1".
80    defines += [ "UI_COMPOSITOR_IMAGE_TRANSPORT" ]
81  }
82  if (use_ash) {
83    defines += [ "USE_ASH=1" ]
84  }
85  if (use_aura) {
86    defines += [ "USE_AURA=1" ]
87  }
88  if (use_cairo) {
89    defines += [ "USE_CAIRO=1" ]
90  }
91  if (use_clipboard_aurax11) {
92    defines += [ "USE_CLIPBOARD_AURAX11=1" ]
93  }
94  if (use_default_render_theme) {
95    defines += [ "USE_DEFAULT_RENDER_THEME=1" ]
96  }
97  if (use_glib) {
98    defines += [ "USE_GLIB=1" ]
99  }
100  if (use_openssl) {
101    defines += [ "USE_OPENSSL=1" ]
102    if (use_openssl_certs) {
103      defines += [ "USE_OPENSSL_CERTS=1" ]
104    }
105  } else if (use_nss_certs) {
106    # USE_NSS really means "use nss for certificate validation and storage"
107    # (like USE_OPENSSL_CERTS) and not "we're linking to NSS." It might be nice
108    # to rename this but we're hoping to transition away from NSS.
109    defines += [ "USE_NSS=1" ]
110  }
111  if (use_ozone) {
112    defines += [ "USE_OZONE=1" ]
113  }
114  if (use_x11) {
115    defines += [ "USE_X11=1" ]
116    if (use_xi2_mt > 0) {
117      defines += [ "USE_XI2_MT=$use_xi2_mt" ]
118    }
119  }
120  if (use_allocator != "tcmalloc") {
121    defines += [ "NO_TCMALLOC" ]
122  }
123  if (enable_webrtc) {
124    defines += [ "ENABLE_WEBRTC=1" ]
125  }
126  if (disable_ftp_support) {
127    defines += [ "DISABLE_FTP_SUPPORT=1" ]
128  }
129  if (!enable_nacl) {
130    defines += [ "DISABLE_NACL" ]
131  }
132  if (enable_extensions) {
133    defines += [ "ENABLE_EXTENSIONS=1" ]
134  }
135  if (enable_configuration_policy) {
136    defines += [ "ENABLE_CONFIGURATION_POLICY" ]
137  }
138  if (enable_task_manager) {
139    defines += [ "ENABLE_TASK_MANAGER=1" ]
140  }
141  if (enable_themes) {
142    defines += [ "ENABLE_THEMES=1" ]
143  }
144  if (enable_captive_portal_detection) {
145    defines += [ "ENABLE_CAPTIVE_PORTAL_DETECTION=1" ]
146  }
147  if (enable_session_service) {
148    defines += [ "ENABLE_SESSION_SERVICE=1" ]
149  }
150  if (enable_rlz) {
151    defines += [ "ENABLE_RLZ" ]
152  }
153  if (enable_plugin_installation) {
154    defines += [ "ENABLE_PLUGIN_INSTALLATION=1" ]
155  }
156  if (enable_app_list) {
157    defines += [ "ENABLE_APP_LIST=1" ]
158  }
159  if (enable_settings_app) {
160    defines += [ "ENABLE_SETTINGS_APP=1" ]
161  }
162  if (enable_managed_users) {
163    defines += [ "ENABLE_MANAGED_USERS=1" ]
164  }
165  if (enable_service_discovery) {
166    defines += [ "ENABLE_SERVICE_DISCOVERY=1" ]
167  }
168  if (enable_autofill_dialog) {
169    defines += [ "ENABLE_AUTOFILL_DIALOG=1" ]
170  }
171  if (enable_wifi_bootstrapping) {
172    defines += [ "ENABLE_WIFI_BOOTSTRAPPING=1" ]
173  }
174  if (enable_image_loader_extension) {
175    defines += [ "IMAGE_LOADER_EXTENSION=1" ]
176  }
177  if (enable_remoting) {
178    defines += [ "ENABLE_REMOTING=1" ]
179  }
180  if (enable_google_now) {
181    defines += [ "ENABLE_GOOGLE_NOW=1" ]
182  }
183  if (enable_one_click_signin) {
184    defines += [ "ENABLE_ONE_CLICK_SIGNIN" ]
185  }
186  if (use_athena) {
187    defines += [ "USE_ATHENA=1" ]
188  }
189  if (enable_hidpi) {
190    defines += [ "ENABLE_HIDPI=1" ]
191  }
192}
193
194# Debug/release ----------------------------------------------------------------
195
196config("debug") {
197  defines = [
198    "_DEBUG",
199    "DYNAMIC_ANNOTATIONS_ENABLED=1",
200    "WTF_USE_DYNAMIC_ANNOTATIONS=1",
201  ]
202
203  if (is_win) {
204    if (disable_iterator_debugging) {
205      # Iterator debugging is enabled by the compiler on debug builds, and we
206      # have to tell it to turn it off.
207      defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
208    }
209  } else if (is_linux && !is_android && cpu_arch == "x64" &&
210             !disable_iterator_debugging) {
211    # Enable libstdc++ debugging facilities to help catch problems early, see
212    # http://crbug.com/65151 .
213    # TODO(phajdan.jr): Should we enable this for all of POSIX?
214    defines += [ "_GLIBCXX_DEBUG=1" ]
215  }
216}
217
218config("release") {
219  defines = [
220    "NDEBUG",
221  ]
222}
223
224# Default libraries ------------------------------------------------------------
225
226# This config defines the default libraries applied to all targets.
227config("default_libs") {
228  if (is_win) {
229    # TODO(brettw) this list of defaults should probably be smaller, and
230    # instead the targets that use the less common ones (e.g. wininet or
231    # winspool) should include those explicitly.
232    libs = [
233      "advapi32.lib",
234      "comdlg32.lib",
235      "dbghelp.lib",
236      "delayimp.lib",
237      "dnsapi.lib",
238      "gdi32.lib",
239      "kernel32.lib",
240      "msimg32.lib",
241      "odbc32.lib",
242      "odbccp32.lib",
243      "ole32.lib",
244      "oleaut32.lib",
245      "psapi.lib",
246      "shell32.lib",
247      "shlwapi.lib",
248      "user32.lib",
249      "usp10.lib",
250      "uuid.lib",
251      "version.lib",
252      "wininet.lib",
253      "winmm.lib",
254      "winspool.lib",
255      "ws2_32.lib",
256      # Please don't add more stuff here. We should actually be making this
257      # list smaller, since all common things should be covered. If you need
258      # some extra libraries, please just add a libs = [ "foo.lib" ] to your
259      # target that needs it.
260    ]
261  } else if (is_android) {
262    # Android uses -nostdlib so we need to add even libc here.
263    libs = [
264      # TODO(brettw) write a version of this, hopefully we can express this
265      # without forking out to GCC just to get the library name. The android
266      # toolchain directory should probably be extracted into a .gni file that
267      # this file and the android toolchain .gn file can share.
268      #   # Manually link the libgcc.a that the cross compiler uses.
269      #   '<!(<(android_toolchain)/*-gcc -print-libgcc-file-name)',
270      "c",
271      "dl",
272      "m"
273    ]
274  } else if (is_mac) {
275    libs = [
276      "AppKit.framework",
277      "ApplicationServices.framework",
278      "Carbon.framework",
279      "CoreFoundation.framework",
280      "Foundation.framework",
281      "IOKit.framework",
282      "Security.framework",
283    ]
284  } else if (is_ios) {
285    libs = [
286      "CoreFoundation.framework",
287      "CoreGraphics.framework",
288      "CoreText.framework",
289      "Foundation.framework",
290      "UIKit.framework",
291    ]
292  } else if (is_linux) {
293    libs = [
294      "dl",
295    ]
296  }
297}
298