/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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
 *
 *     http://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.
 */

// Configure Java project defaults.

allprojects {
  plugins.withType(JavaPlugin) {
    sourceCompatibility = project.minJavaVersion
    targetCompatibility = project.minJavaVersion
    // Use 'release' flag instead of 'source' and 'target'
    tasks.withType(JavaCompile) {
      compileTestJava {
        sourceCompatibility = project.minJavaTestVersion
        targetCompatibility = project.minJavaTestVersion
        options.compilerArgs += ["--release", project.minJavaTestVersion.toString()]
      }
      compileJava {
        options.compilerArgs += ["--release", project.minJavaVersion.toString()]
      }
    }
    // Configure warnings.
    tasks.withType(JavaCompile) {
      options.encoding = "UTF-8"
      options.compilerArgs += [
        "-Xlint:-deprecation",
        "-Xlint:-serial",
        "-Xlint:cast",
        "-Xlint:classfile",
        "-Xlint:dep-ann",
        "-Xlint:divzero",
        "-Xlint:empty",
        "-Xlint:fallthrough",
        "-Xlint:finally",
        "-Xlint:options",
        "-Xlint:overrides",
        "-Xlint:processing",
        "-Xlint:rawtypes",
        "-Xlint:static",
        "-Xlint:try",
        "-Xlint:unchecked",
        "-Xlint:varargs",
        "-Xdoclint:all/protected",
        "-Xdoclint:-missing",
        "-Xdoclint:-accessibility",
        "-Xlint:synchronization",
        "-Xlint:text-blocks",
        "-proc:none",  // proc:none was added because of LOG4J2-1925 / JDK-8186647
        "-Xlint:removal",
        "--should-stop=ifError=FLOW" // error-prone 2.41
      ]

      if (propertyOrDefault("javac.failOnWarnings", true).toBoolean()) {
        options.compilerArgs += "-Werror"
      }
    }
  }
}

configure(project(":solr:benchmark")) {
  plugins.withType(JavaPlugin) {
    tasks.named('compileJava').configure {
      options.compilerArgs -= [ "-Werror", "-proc:none" ]
      options.compilerArgs += "-Xlint:none"
    }
  }
}
