# Copyright (c) 2023, the R8 project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8
kotlin.daemon.jvmargs=-Xmx3g -Dkotlin.js.compiler.legacy.force_enabled=true
systemProp.file.encoding=UTF-8

# Enable new incremental compilation
kotlin.incremental.useClasspathSnapshot=true

org.gradle.parallel=true
org.gradle.caching=false
org.gradle.configuration-cache=true

# Do not download any jdks or detect them. We provide them.
org.gradle.java.installations.auto-detect=false
org.gradle.java.installations.auto-download=false
# Configure Java toolchains
#
# Would have liked to include third_party/openjdk/jdk8/linux-x86, but Gradle
# does not fully recognize it as a JDK-8.
#
# Run
#   tools/gradle.py -q javaToolchains
# to check the actual JDK's picked up by Gradle.
#
# NOTE: Gradle will ignore directories which does not exist, as will be the
# case for JDK's for platforms different from the one this is running on
# when using the default downloadDeps setup.
org.gradle.java.installations.paths=\
../third_party/openjdk/jdk-11/linux,\
../third_party/openjdk/jdk-17/linux,\
../third_party/openjdk/jdk-21/linux,\
../third_party/openjdk/jdk-22/linux,\
../third_party/openjdk/jdk-11/osx,\
../third_party/openjdk/jdk-17/osx,\
../third_party/openjdk/jdk-21/osx,\
../third_party/openjdk/jdk-22/osx,\
../third_party/openjdk/jdk-11/windows,\
../third_party/openjdk/jdk-17/windows,\
../third_party/openjdk/jdk-21/windows,\
../third_party/openjdk/jdk-22/windows
