# Copyright 2014 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/features.gni")
import("//build/config/locales.gni")
import("//build/config/ui.gni")
import("//chrome/chrome_repack_locales.gni")
import("//chrome/version.gni")

if (is_android) {
  import("//build/config/android/rules.gni")
}

if (!is_android && !(is_chromeos && !use_ozone)) {

# TODO(GYP) for Windows need to the the reorder-imports step which probably
# means adding another target and renaming this to chrome_initial like in GYP.
executable("chrome") {
  # Because the sources list varies so significantly per-platform, generally
  # each platform lists its own files rather than relying on filtering or
  # removing unused files.
  sources = [
    "app/chrome_exe_resource.h",
  ]
  deps = []
  datadeps = []

  # TODO(GYP) mac_bundle_resources, xcode_settings

  # TODO(GYP) order_profiling, order_text_section

  if (is_win) {
    sources += [
      "app/chrome_exe_main_win.cc",
      "app/client_util.cc",
      "app/client_util.h",
      "app/signature_validator_win.cc",
      "app/signature_validator_win.h",
      "//content/app/startup_helper_win.cc",
    ]
    deps += [ "//ui/gfx" ]
  } else if (use_aura) {
    # Non-Windows aura entrypoint.
    sources += [ "app/chrome_exe_main_aura.cc" ]
  }

  if (is_linux) {
    # TODO(GYP) manpage action

    sources += [
      "app/chrome_dll_resource.h",
      "app/chrome_main.cc",
      "app/chrome_main_delegate.cc",
      "app/chrome_main_delegate.h",
    ]

    deps += [
      # On Linux, link the dependencies (libraries) that make up actual
      # Chromium functionality directly into the executable.
      ":browser_dependencies",
      ":child_dependencies",

      "//base/allocator",
      # Needed to use the master_preferences functions
      "//chrome/installer/util",
      "//content/public/app:both",
    ]

    # Needed for chrome_main.cc initialization of libraries.
    configs += [ "//build/config/linux:pangocairo" ]

    # TODO(GYP) ['profiling==0 and linux_disable_pie==0', {
    #   'ldflags': [
    #      '-pie',
    #   ],
    #}],

    if (use_x11) {
      configs += [
        "//build/config/linux:x11",
        "//build/config/linux:xext",
      ]
    }
  }

  if (is_mac) {
    sources += [
      "app/chrome_exe_main_mac.cc",
    ]
    # TODO(GYP) lots more stuff in the is_mac block.
  } else {  # Non-Mac.
    deps += [
      ":packed_extra_resources",
      ":packed_resources",

      # Copy Flash Player files to PRODUCT_DIR if applicable. Let the .gyp
      # file decide what to do on a per-OS basis; on Mac, internal plugins
      # go inside the framework, so this dependency is in chrome_dll.gypi.
      #'../third_party/adobe/flash/flash_player.gyp:flapper_binaries',  TODO(GYP)

      # Copy CDM files to PRODUCT_DIR if applicable. Let the .gyp
      # file decide what to do on a per-OS basis; on Mac, internal plugins
      # go inside the framework, so this dependency is in chrome_dll.gypi.
      #'../third_party/widevine/cdm/widevine_cdm.gyp:widevinecdmadapter',  TODO(GYP)
    ]

    # TODO(GYP) some stuff from GYP including chrome_multiple_dll.

  }


  if (!is_mac) {
    # On Mac this is done in chrome_dll.gypi.
    datadeps += [ "//pdf" ]

    # TODO(GYP) pdf linux symbols
  }
}

}  # !is_android

shared_library("main_dll") {
  configs += [ "//build/config/compiler:wexit_time_destructors" ]

  deps = [
    ":browser_dependencies",
    "//base/allocator",
  ]
  if (is_win) {
    output_name = "chrome"

    sources = [
      "app/chrome_command_ids.h",
      "app/chrome_dll.rc",
      "app/chrome_dll_resource.h",
      "app/chrome_main.cc",
      "app/chrome_main_delegate.cc",
      "app/chrome_main_delegate.h",
      "app/close_handle_hook_win.cc",
      "app/close_handle_hook_win.h",
      "app/delay_load_hook_win.cc",
      "app/delay_load_hook_win.h",
      "//base/win/dllmain.cc",
    ]

    deps += [
      # On Windows, link the dependencies (libraries) that make up actual
      # Chromium functionality into this .dll.
      #'chrome_version_resources',  TODO(GYP)
      "//chrome/app/theme:chrome_unscaled_resources",
      "//content/app/resources",
      "//crypto",
      "//net:net_resources",
      "//third_party/wtl",
      "//ui/views",
      #'<(DEPTH)/chrome_elf/chrome_elf.gyp:chrome_elf' ]  TODO(GYP)
    ]
    if (enable_configuration_policy) {
      deps += [ "//components/policy" ]
    }
    if (cpu_arch == "x86") {
      # Add a dependency to custom import library for user32 delay imports only
      # in x86 builds.
      #deps += [ 'chrome_user32_delay_imports' ]  TODO(GYP)
    }

    # TODO(GYP) incremental linking flags in debug builds
    #'LinkIncremental': '<(msvs_large_module_debug_link_mode)',

    # TODO(GYP) Lots of VCLinkerTool stuff on Windows.

    # TODO(GYP) chrome_pgo_phase on Windows.
  }

  if (use_aura) {
    deps += [ "//ui/compositor" ]
  }

  #TODO(GYP) add chrome_multiple_dll support
  if (false) {  #chrome_multiple_dll) {
    defines = [ "CHROME_MULTIPLE_DLL_BROWSER" ]
    deps += [
      "//content/public/app:browser",
    ]
  } else {
    deps += [
      ":child_dependencies",
      "//content/public/app:both",
    ]
  }

  if (cld_version == 0 || cld_version == 2) {
    deps += [
      "//third_party/cld_2",
    ]
  }

  if (is_mac) {
    #['OS=="mac" and component!="shared_library"', {  TODO(GYP)
    #  'includes': [ 'chrome_dll_bundle.gypi' ],
    #}],

    # TODO(GYP) Lots of other stuff in the OS=="mac" block.
  }
}

# GYP version: chromium_browser_dependencies variable in chrome.gyp
group("browser_dependencies") {
  deps = [
    "//chrome/browser",
    "//chrome/common",
    "//sync",
  ]
  if (!is_ios) {
    deps += [
      "//ppapi:ppapi_host",
    ]
  }

  if (enable_basic_printing || enable_print_preview) {
    deps += [ "//printing" ]
    if (enable_print_preview) {
      deps += [ "//chrome/service" ]
    }
  }
}

# GYP version: chromium_child_dependencies variable in chrome.gyp
group("child_dependencies") {
  deps = [
    "//chrome/common",
    "//sync",
  ]
  if (!is_ios) {
    deps += [
      "//chrome/browser/devtools",
      "//chrome/plugin",
      "//chrome/renderer",
      "//chrome/utility",
      "//content/public/child",
      "//third_party/WebKit/public:blink_devtools_frontend_resources",
    ]
  }
}

if (is_win) {
  # TODO(brettw) this duplicates "//chrome/common:version" which applies to
  # Linux.
  process_version("version_header") {
    # TODO(brettW) this should have more reduced visibility, but chrome/browser
    # currently depends on this.
    #visibility = [ ":*" ]
    source = "version.h.in"
    # TODO(brettw) this should move to $target_gen_dir/version.h and
    # source files including it should reference it via "chrome/version.h"
    output = "$root_gen_dir/version.h"
  }
}

# GYP version: chrome/chrome_resources.gyp:chrome_resources
group("resources") {
  deps = [
    # Note: GYP lists some dependencies in addition to these actions. However,
    # these are just dependencies for the actions themselves, which our actions
    # list individually when needed.
    "//chrome/browser:resources",
    "//chrome/common:resources",
    "//chrome/renderer:resources",
  ]

  if (enable_extensions) {
    deps += [ "//chrome/common:extensions_api_resources" ]
  }
}

# GYP version: chrome/chrome_resources.gyp:chrome_extra_resources
group("extra_resources") {
  deps = [
    "//chrome/browser/resources:invalidations_resources",
    "//chrome/browser/resources:memory_internals_resources",
    "//chrome/browser/resources:net_internals_resources",
    "//chrome/browser/resources:password_manager_internals_resources",
    "//chrome/browser/resources:signin_internals_resources",
    "//chrome/browser/resources:sync_internals_resources",
    "//chrome/browser/resources:translate_internals_resources",
  ]
  if (!is_ios) {
    deps += [
      "//chrome/browser/resources:component_extension_resources",
      "//chrome/browser/resources:options_resources",
    ]
  }

  if (enable_chromevox_next) {
    deps += [
      #'browser/resources/chromeos/chromevox2/chromevox.gyp:chromevox2',  TODO(GYP)
    ]
  } else {
    deps += [
      #'browser/resources/chromeos/chromevox/chromevox.gyp:chromevox',  TODO(GYP)
    ]
  }

  if (enable_extensions) {
    deps += [
      "//chrome/browser/resources:quota_internals_resources",
      "//chrome/browser/resources:sync_file_system_internals_resources",
    ]
  }
}

group("packed_resources") {
  deps = [
    ":repack_locales_pack",
    ":repack_pseudo_locales_pack",
    ":repack_chrome_100_percent",
  ]

  # TODO(GYP) if (is_chrome_branded) {
  # ... copy default_apps from default_apps_list

  if (enable_hidpi) {
    deps += [ ":repack_chrome_200_percent" ]
  }
}

repack("packed_extra_resources") {
  visibility = [ "./*" ]
  sources = [
    "$root_gen_dir/chrome/browser_resources.pak",
    "$root_gen_dir/chrome/chrome_unscaled_resources.pak",
    "$root_gen_dir/chrome/common_resources.pak",
    "$root_gen_dir/chrome/invalidations_resources.pak",
    "$root_gen_dir/chrome/memory_internals_resources.pak",
    "$root_gen_dir/chrome/net_internals_resources.pak",
    "$root_gen_dir/chrome/password_manager_internals_resources.pak",
    "$root_gen_dir/chrome/signin_internals_resources.pak",
    "$root_gen_dir/chrome/sync_internals_resources.pak",
    "$root_gen_dir/chrome/translate_internals_resources.pak",
    "$root_gen_dir/components/components_resources.pak",
    "$root_gen_dir/net/net_resources.pak",
    "$root_gen_dir/ui/resources/webui_resources.pak",
  ]
  deps = [
    "//chrome/browser:resources",
    "//chrome/app/theme:chrome_unscaled_resources",
    "//chrome/common:resources",
    "//chrome/browser/resources:invalidations_resources",
    "//chrome/browser/resources:memory_internals_resources",
    "//chrome/browser/resources:net_internals_resources",
    "//chrome/browser/resources:password_manager_internals_resources",
    "//chrome/browser/resources:signin_internals_resources",
    "//chrome/browser/resources:sync_internals_resources",
    "//chrome/browser/resources:translate_internals_resources",
    "//components/resources",
    "//net:net_resources",
    "//ui/resources",
  ]

  if (!is_ios && !is_android) {
    # New paks should be added here by default.
    sources += [
      "$root_gen_dir/webkit/devtools_resources.pak",
      "$root_gen_dir/chrome/component_extension_resources.pak",
      "$root_gen_dir/chrome/options_resources.pak",
      "$root_gen_dir/chrome/quota_internals_resources.pak",
      "$root_gen_dir/chrome/sync_file_system_internals_resources.pak",
    ]
    deps += [
      "//content/browser/devtools:devtools_resources",
      "//chrome/browser/resources:component_extension_resources",
      "//chrome/browser/resources:options_resources",
      "//chrome/browser/resources:quota_internals_resources",
      "//chrome/browser/resources:sync_file_system_internals_resources",
    ]
  }
  if (!is_ios) {
    sources += [
      "$root_gen_dir/blink/public/resources/blink_resources.pak",
      "$root_gen_dir/content/browser/tracing/tracing_resources.pak",
      "$root_gen_dir/content/content_resources.pak",
    ]
  }
  if (is_chromeos) {
    sources += [ "$root_gen_dir/ui/file_manager/file_manager_resources.pak" ]
    deps += [ "//ui/file_manager:resources" ]
  }
  if (enable_extensions) {
    sources += [
      "$root_gen_dir/chrome/extensions_api_resources.pak",
      "$root_gen_dir/extensions/extensions_renderer_resources.pak",
      "$root_gen_dir/extensions/extensions_resources.pak",
    ]
    deps += [ "//chrome/common:extensions_api_resources" ]
  }

  # GYP outputs the file in the gen/repack directory. On non-Mac/iOS platforms
  # it them copies it. This skipes the copy step and writes it to the final
  # location.
  if (is_mac || is_ios) {
    output = "$root_gen_dir/repack/resources.pak"
  } else {
    output = "$root_out_dir/resources.pak"
  }
}

# Collects per-locale grit files from many sources into global per-locale files.
chrome_repack_locales("repack_locales_pack") {
  visibility = [ ":*" ]

  input_locales = locales

  if (is_mac) {
    output_locales = locales_as_mac_outputs
  } else {
    output_locales = locales
  }
}

chrome_repack_locales("repack_pseudo_locales_pack") {
  visibility = [ ":*" ]

  input_locales = [ "fake-bidi" ]

  if (is_mac) {
    output_locales = [ "fake_bidi" ]  # Mac uses underscores.
  } else {
    output_locales = [ "fake-bidi" ]
  }
}

# Generates a rule to repack a set of resources, substituting a given string
# in for the percentage (e.g. "100", "200"). It generates the repacked files in
# the "gen" directory, and then introduces a copy rule to copy it to the root
# build directory.
#
# It's not clear why this two-step dance is necessary as opposed to just
# generating the file in the destination. However, this is what the GYP build
# does, and for maintenance purposes, this keeps the same files in the same
# place between the two builds when possible.
#
# Argument:
#   percent [required]
#      String to substitute for the percentage.
template("chrome_repack_percent") {
  percent = invoker.percent

  repack_name = "${target_name}_repack"
  repack_output_file = "$root_gen_dir/repack/chrome_${percent}_percent.pak"

  copy_name = target_name

  repack(repack_name) {
    visibility = [ ":$copy_name" ]
    # All sources should also have deps for completeness.
    sources = [
      "$root_gen_dir/components/components_resources_${percent}_percent.pak",
      "$root_gen_dir/ui/resources/ui_resources_${percent}_percent.pak",
      "$root_gen_dir/chrome/renderer_resources_${percent}_percent.pak",
      "$root_gen_dir/chrome/theme_resources_${percent}_percent.pak",
    ]

    deps = [
      "//chrome/app/theme:theme_resources",
      "//chrome/renderer:resources",
      "//components/strings",
      "//net:net_resources",
    ]

    if (!is_ios) {
      sources += [
        "$root_gen_dir/content/app/resources/content_resources_${percent}_percent.pak",
      ]
      deps += [ "//content:resources" ]
    }
    if (use_ash) {
      sources += [ "$root_gen_dir/ash/resources/ash_resources_${percent}_percent.pak" ]
      deps += [ "//ash/resources" ]
    }
    if (use_athena) {
      sources += [
        "$root_gen_dir/athena/resources/athena_resources_${percent}_percent.pak",
      ]
      deps += [ "//athena/resources" ]
    }
    if (is_chromeos) {
      sources += [
        "$root_gen_dir/ui/chromeos/resources/ui_chromeos_resources_${percent}_percent.pak",
      ]
      deps += [ "//ui/chromeos/resources" ]
    }
    if (enable_extensions) {
      sources += [
        "$root_gen_dir/extensions/extensions_browser_resources_${percent}_percent.pak",
      ]
    }

    output = repack_output_file
  }

  copy(copy_name) {
    visibility = [ ":*" ]
    deps = [ ":$repack_name" ]
    sources = [ repack_output_file ]
    outputs = [ "$root_build_dir/chrome_${percent}_percent.pak" ]
  }
}

chrome_repack_percent("repack_chrome_100_percent") {
  percent = "100"
}

if (enable_hidpi) {
  chrome_repack_percent("repack_chrome_200_percent") {
    percent = "200"
  }
}

# GYP version: chrome/chrome_resources.gyp:chrome_strings
group("strings") {
  deps = [
    "//chrome/app:chromium_strings",
    "//chrome/app:generated_resources",
    "//chrome/app:google_chrome_strings",
    "//chrome/app/resources:locale_settings",
  ]
}

if (is_android) {

# GYP: //chrome/chrome.gyp:content_setting_java
java_cpp_enum("content_setting_javagen") {
  sources = [
    "../components/content_settings/core/common/content_settings.h"
  ]
  outputs = [
    "org/chromium/chrome/browser/ContentSetting.java",
  ]
}

# GYP: //chrome/chrome.gyp:content_settings_type_java
java_cpp_enum("content_settings_type_javagen") {
  sources = [
    "../components/content_settings/core/common/content_settings_types.h"
  ]
  outputs = [
    "org/chromium/chrome/browser/ContentSettingsType.java",
  ]
}

# GYP: //chrome/chrome.gyp:page_info_connection_type_java
java_cpp_enum("page_info_connection_type_javagen") {
  sources = [
    "browser/ui/android/website_settings_popup_android.h"
  ]
  outputs = [
    "org/chromium/chrome/browser/PageInfoConnectionType.java",
  ]
}

# GYP: //chrome/chrome_android.gypi:chrome_android_core
static_library("chrome_android_core") {
  sources = [
    "app/android/chrome_android_initializer.cc",
    "app/android/chrome_android_initializer.h",
    "app/android/chrome_main_delegate_android.cc",
    "app/android/chrome_main_delegate_android.h",
    "app/chrome_main_delegate.cc",
    "app/chrome_main_delegate.h",
  ]

  include_dirs = [
    android_ndk_include_dir,
  ]

  libs = [
    "android",
    "jnigraphics",
  ]

  deps = [
    "//chrome/browser",
    "//chrome/browser/ui",
    "//chrome/plugin",
    "//chrome/renderer",
    "//chrome/utility",
    "//components/enhanced_bookmarks",
    "//content/public/app:browser",
  ]
}

}
