chromium/components/optimization_guide/features.gni

# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

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

declare_args() {
  # This enables build with TFLite library.
  # TODO(b/269198471): Make sure the internal archive files for opt guide get
  #   updated when win arm64 gets added as a supported platform for TFLite.
  build_with_tflite_lib = is_android || is_win || is_linux || is_mac ||
                          is_chromeos || is_fuchsia || is_ios
}

if (is_ios) {
  declare_args() {
    # iOS is bring-your-own-model. If ios_on_device_llm_path is set to a
    # non-empty value, bundles the given model file. Paths can be absolute or
    # relative to the source root directory.
    ios_on_device_llm_path = ""
  }
}

declare_args() {
  # You can set the variable 'build_with_internal_optimization_guide' to true
  # even in a developer build in args.gn.  Setting this variable explicitly to true will
  # cause your build to fail if the internal files are missing.
  #
  # If changing the value of this, you MUST also update the following files depending on the
  # platform:
  # Android: Internal expectations files that verify the native libraries  are compiled into the Android binary.
  # ChromeOS: //lib/chrome_util.py in the Chromite repo (ex: https://crrev.com/c/3437291)
  # Linux: Internal archive files. //chrome/installer/linux/common/installer.include handles the
  # relevant files not being present.
  # Mac: //chrome/installer/mac/signing/parts.py
  # Windows: //chrome/installer/mini_installer/chrome.release and internal archive files
  if (is_fuchsia || is_android) {
    # Fuchsia and Android should work but is not included in the set we release for, so we do
    # not needlessly increase the binary size.
    build_with_internal_optimization_guide = false
  } else if (is_ios) {
    build_with_internal_optimization_guide = ios_on_device_llm_path != ""
  } else if (build_with_tflite_lib) {
    # When TFLite works for windows arm64, this lib should just work seamlessly.
    # Use is_chrome_branded as a proxy for "does src-internal exist".
    build_with_internal_optimization_guide = is_chrome_branded
  } else {
    build_with_internal_optimization_guide = false
  }
}