# Copyright 2022 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

import("//build_overrides/pigweed.gni")

declare_args() {
  # Python tasks, such as running tests and Pylint, are done in a single GN
  # toolchain to avoid unnecessary duplication in the build.
  pw_build_PYTHON_TOOLCHAIN = "$dir_pw_build/python_toolchain:python"

  # Default gn build virtualenv target.
  pw_build_PYTHON_BUILD_VENV = "$dir_pw_env_setup:pigweed_build_venv"

  # DOCSTAG: [default-pip-gn-args]
  # Set pw_python_venv.vendor_wheel targets to download Python packages for all
  # platform combinations. This takes a significant amount of time.
  pw_build_PYTHON_PIP_DOWNLOAD_ALL_PLATFORMS = false

  # Adds '--require-hashes'. This option enforces hash checking on Python
  # package files.
  pw_build_PYTHON_PIP_INSTALL_REQUIRE_HASHES = false

  # Adds --no-index forcing pip to not reach out to the internet (pypi.org) to
  # download packages. Using this option requires setting
  # pw_build_PYTHON_PIP_INSTALL_FIND_LINKS as well.
  pw_build_PYTHON_PIP_INSTALL_OFFLINE = false

  # Adds '--no-cache-dir' forcing pip to ignore any previously cached Python
  # packages. On most systems this is located in ~/.cache/pip/
  pw_build_PYTHON_PIP_INSTALL_DISABLE_CACHE = false

  # List of paths to folders containing Python wheels (*.whl) or source tar
  # files (*.tar.gz). Pip will check each of these directories when looking for
  # potential install candidates. Each path will be passed to all 'pip install'
  # commands as '--find-links PATH'.
  pw_build_PYTHON_PIP_INSTALL_FIND_LINKS = []

  # General options passed to pip commands
  # https://pip.pypa.io/en/stable/cli/pip/#general-options
  pw_build_PYTHON_PIP_DEFAULT_OPTIONS = [ "--disable-pip-version-check" ]

  # DOCSTAG: [default-pip-gn-args]
}
