# 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.

# Due to Gradle composite project isolation this file is duplicated in each
# composite project. Please update the one in the repo root and duplicate.
#
# find d8_r8 -name gradle.properties -exec cp gradle.properties {} \;

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

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

# 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
#
# 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.
# These paths are provided by tools/gradle.py and tools/test.py, but kept here
# to allow for direct gradle invocations.
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-25/linux,\
third_party/openjdk/jdk-11/osx,\
third_party/openjdk/jdk-17/osx,\
third_party/openjdk/jdk-21/osx,\
third_party/openjdk/jdk-25/osx,\
third_party/openjdk/jdk-11/windows,\
third_party/openjdk/jdk-17/windows,\
third_party/openjdk/jdk-21/windows,\
third_party/openjdk/jdk-25/windows
