# 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/allocator.gni")
import("//build/config/crypto.gni")
import("//build/config/features.gni")
import("//build/config/ui.gni")

declare_args() {
  # When set, turns off the (normally-on) iterator debugging and related stuff
  # that is normally turned on for Debug builds. These are generally useful for
  # catching bugs but in some cases may cause conflicts or excessive slowness.
  disable_iterator_debugging = false

  # Set to true to not store any build metadata (this isn't working yet but
  # this flag will help us to get there). See http://crbug.com/314403.
  # TODO(sebmarchand): Update this comment once this flag guarantee that
  #     there's no build metadata in the build artifacts.
  dont_embed_build_metadata = false
}

# TODO(brettw) Most of these should be removed. Instead of global feature
# flags, we should have more modular flags that apply only to a target and its
# dependents. For example, depending on the "x11" meta-target should define
# USE_X11 for all dependents so that everything that could use X11 gets the
# define, but anything that doesn't depend on X11 doesn't see it.
#
# For now we define these globally to match the current GYP build.
config("feature_flags") {
  # TODO(brettw) most of these need to be parameterized.
  defines = [
      "CHROMIUM_BUILD",
      "ENABLE_EGLIMAGE=1",
      "ENABLE_BACKGROUND=1",
      "V8_DEPRECATION_WARNINGS",  # Don't use deprecated V8 APIs anywhere.
  ]

  if (cld_version > 0) {
    defines += [ "CLD_VERSION=$cld_version" ]
  }
  if (enable_mdns) {
    defines += [ "ENABLE_MDNS=1" ]
  }
  if (enable_notifications) {
    defines += [ "ENABLE_NOTIFICATIONS" ]
  }
  if (enable_pepper_cdms) {
    # TODO(brettw) should probably be "=1"
    defines += [ "ENABLE_PEPPER_CDMS" ]
  }
  if (enable_browser_cdms) {
    # TODO(brettw) should probably be "=1"
    defines += [ "ENABLE_BROWSER_CDMS" ]
  }
  if (enable_plugins) {
    defines += [ "ENABLE_PLUGINS=1" ]
  }
  if (printing_mode > 0) {
    defines += [ "ENABLE_PRINTING=1" ]
    if (printing_mode < 2) {
      defines += [ "ENABLE_FULL_PRINTING=1" ]
    }
  }
  if (enable_spellcheck) {
    defines += [ "ENABLE_SPELLCHECK=1" ]
  }
  if (dont_embed_build_metadata) {
    defines += [ "DONT_EMBED_BUILD_METADATA" ]
  }
  if (use_udev) {
    # TODO(brettw) should probably be "=1".
    defines += [ "USE_UDEV" ]
  }
  if (toolkit_views) {
    defines += [ "TOOLKIT_VIEWS=1" ]
  }
  if (ui_compositor_image_transport) {
    # TODO(brettw) should probably be "=1".
    defines += [ "UI_COMPOSITOR_IMAGE_TRANSPORT" ]
  }
  if (use_ash) {
    defines += [ "USE_ASH=1" ]
  }
  if (use_aura) {
    defines += [ "USE_AURA=1" ]
  }
  if (use_cairo) {
    defines += [ "USE_CAIRO=1" ]
  }
  if (use_clipboard_aurax11) {
    defines += [ "USE_CLIPBOARD_AURAX11=1" ]
  }
  if (use_default_render_theme) {
    defines += [ "USE_DEFAULT_RENDER_THEME=1" ]
  }
  if (use_glib) {
    defines += [ "USE_GLIB=1" ]
  }
  if (use_openssl) {
    defines += [ "USE_OPENSSL=1" ]
    if (use_openssl_certs) {
      defines += [ "USE_OPENSSL_CERTS=1" ]
    }
  } else if (use_nss_certs) {
    # USE_NSS really means "use nss for certificate validation and storage"
    # (like USE_OPENSSL_CERTS) and not "we're linking to NSS." It might be nice
    # to rename this but we're hoping to transition away from NSS.
    defines += [ "USE_NSS=1" ]
  }
  if (use_ozone) {
    defines += [ "USE_OZONE=1" ]
  }
  if (use_x11) {
    defines += [ "USE_X11=1" ]
    if (use_xi2_mt > 0) {
      defines += [ "USE_XI2_MT=$use_xi2_mt" ]
    }
  }
  if (use_allocator != "tcmalloc") {
    defines += [ "NO_TCMALLOC" ]
  }
  if (enable_webrtc) {
    defines += [ "ENABLE_WEBRTC=1" ]
  }
  if (disable_ftp_support) {
    defines += [ "DISABLE_FTP_SUPPORT=1" ]
  }
  if (!enable_nacl) {
    defines += [ "DISABLE_NACL" ]
  }
  if (enable_extensions) {
    defines += [ "ENABLE_EXTENSIONS=1" ]
  }
  if (enable_configuration_policy) {
    defines += [ "ENABLE_CONFIGURATION_POLICY" ]
  }
  if (enable_task_manager) {
    defines += [ "ENABLE_TASK_MANAGER=1" ]
  }
  if (enable_themes) {
    defines += [ "ENABLE_THEMES=1" ]
  }
  if (enable_captive_portal_detection) {
    defines += [ "ENABLE_CAPTIVE_PORTAL_DETECTION=1" ]
  }
  if (enable_session_service) {
    defines += [ "ENABLE_SESSION_SERVICE=1" ]
  }
  if (enable_rlz) {
    defines += [ "ENABLE_RLZ" ]
  }
  if (enable_plugin_installation) {
    defines += [ "ENABLE_PLUGIN_INSTALLATION=1" ]
  }
  if (enable_app_list) {
    defines += [ "ENABLE_APP_LIST=1" ]
  }
  if (enable_settings_app) {
    defines += [ "ENABLE_SETTINGS_APP=1" ]
  }
  if (enable_managed_users) {
    defines += [ "ENABLE_MANAGED_USERS=1" ]
  }
  if (enable_service_discovery) {
    defines += [ "ENABLE_SERVICE_DISCOVERY=1" ]
  }
  if (enable_autofill_dialog) {
    defines += [ "ENABLE_AUTOFILL_DIALOG=1" ]
  }
  if (enable_wifi_bootstrapping) {
    defines += [ "ENABLE_WIFI_BOOTSTRAPPING=1" ]
  }
  if (enable_image_loader_extension) {
    defines += [ "IMAGE_LOADER_EXTENSION=1" ]
  }
  if (enable_remoting) {
    defines += [ "ENABLE_REMOTING=1" ]
  }
  if (enable_google_now) {
    defines += [ "ENABLE_GOOGLE_NOW=1" ]
  }
  if (enable_one_click_signin) {
    defines += [ "ENABLE_ONE_CLICK_SIGNIN" ]
  }
  if (use_athena) {
    defines += [ "USE_ATHENA=1" ]
  }
  if (enable_hidpi) {
    defines += [ "ENABLE_HIDPI=1" ]
  }
}

# Debug/release ----------------------------------------------------------------

config("debug") {
  defines = [
    "_DEBUG",
    "DYNAMIC_ANNOTATIONS_ENABLED=1",
    "WTF_USE_DYNAMIC_ANNOTATIONS=1",
  ]

  if (is_win) {
    if (disable_iterator_debugging) {
      # Iterator debugging is enabled by the compiler on debug builds, and we
      # have to tell it to turn it off.
      defines += [ "_HAS_ITERATOR_DEBUGGING=0" ]
    }
  } else if (is_linux && !is_android && cpu_arch == "x64" &&
             !disable_iterator_debugging) {
    # Enable libstdc++ debugging facilities to help catch problems early, see
    # http://crbug.com/65151 .
    # TODO(phajdan.jr): Should we enable this for all of POSIX?
    defines += [ "_GLIBCXX_DEBUG=1" ]
  }
}

config("release") {
  defines = [
    "NDEBUG",
  ]
}

# Default libraries ------------------------------------------------------------

# This config defines the default libraries applied to all targets.
config("default_libs") {
  if (is_win) {
    # TODO(brettw) this list of defaults should probably be smaller, and
    # instead the targets that use the less common ones (e.g. wininet or
    # winspool) should include those explicitly.
    libs = [
      "advapi32.lib",
      "comdlg32.lib",
      "dbghelp.lib",
      "delayimp.lib",
      "dnsapi.lib",
      "gdi32.lib",
      "kernel32.lib",
      "msimg32.lib",
      "odbc32.lib",
      "odbccp32.lib",
      "ole32.lib",
      "oleaut32.lib",
      "psapi.lib",
      "shell32.lib",
      "shlwapi.lib",
      "user32.lib",
      "usp10.lib",
      "uuid.lib",
      "version.lib",
      "wininet.lib",
      "winmm.lib",
      "winspool.lib",
      "ws2_32.lib",
      # Please don't add more stuff here. We should actually be making this
      # list smaller, since all common things should be covered. If you need
      # some extra libraries, please just add a libs = [ "foo.lib" ] to your
      # target that needs it.
    ]
  } else if (is_android) {
    # Android uses -nostdlib so we need to add even libc here.
    libs = [
      # TODO(brettw) write a version of this, hopefully we can express this
      # without forking out to GCC just to get the library name. The android
      # toolchain directory should probably be extracted into a .gni file that
      # this file and the android toolchain .gn file can share.
      #   # Manually link the libgcc.a that the cross compiler uses.
      #   '<!(<(android_toolchain)/*-gcc -print-libgcc-file-name)',
      "c",
      "dl",
      "m"
    ]
  } else if (is_mac) {
    libs = [
      "AppKit.framework",
      "ApplicationServices.framework",
      "Carbon.framework",
      "CoreFoundation.framework",
      "Foundation.framework",
      "IOKit.framework",
      "Security.framework",
    ]
  } else if (is_ios) {
    libs = [
      "CoreFoundation.framework",
      "CoreGraphics.framework",
      "CoreText.framework",
      "Foundation.framework",
      "UIKit.framework",
    ]
  } else if (is_linux) {
    libs = [
      "dl",
    ]
  }
}
