import org.gradle.api.GradleException; import org.gradle.api.Plugin; import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.file.FileTree; import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.language.base.internal.ProjectLayout; import org.gradle.language.base.plugins.ComponentModelBasePlugin; import org.gradle.language.nativeplatform.tasks.AbstractNativeSourceCompileTask; import org.gradle.model.ModelMap; import org.gradle.internal.os.OperatingSystem import edu.wpi.first.toolchain.ToolchainExtension import org.gradle.model.Mutate; import org.gradle.api.plugins.ExtensionContainer; import org.gradle.nativeplatform.test.googletest.GoogleTestTestSuiteBinarySpec; import org.gradle.model.RuleSource; import org.gradle.model.Validate; import org.gradle.nativeplatform.test.tasks.RunTestExecutable import org.gradle.nativeplatform.NativeExecutableBinarySpec import org.gradle.nativeplatform.NativeBinarySpec; import org.gradle.nativeplatform.NativeComponentSpec; import org.gradle.nativeplatform.NativeLibrarySpec; import org.gradle.nativeplatform.SharedLibraryBinarySpec; import org.gradle.nativeplatform.StaticLibraryBinarySpec; import org.gradle.nativeplatform.platform.internal.NativePlatformInternal; import org.gradle.nativeplatform.toolchain.NativeToolChain; import org.gradle.nativeplatform.toolchain.NativeToolChainRegistry; import org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider; import org.gradle.nativeplatform.toolchain.internal.ToolType; import org.gradle.nativeplatform.toolchain.internal.gcc.AbstractGccCompatibleToolChain; import org.gradle.nativeplatform.toolchain.internal.msvcpp.VisualCppToolChain; import org.gradle.nativeplatform.toolchain.internal.tools.ToolRegistry; import org.gradle.platform.base.BinarySpec; import org.gradle.platform.base.ComponentSpec; import org.gradle.platform.base.ComponentSpecContainer; import org.gradle.platform.base.BinaryContainer; import org.gradle.platform.base.ComponentType; import org.gradle.platform.base.TypeBuilder; import org.gradle.nativeplatform.tasks.ObjectFilesToBinary; import groovy.transform.CompileStatic; import groovy.transform.CompileDynamic import org.gradle.nativeplatform.BuildTypeContainer @CompileStatic class MultiBuilds implements Plugin { @CompileStatic public void apply(Project project) { } @CompileStatic static class Rules extends RuleSource { @CompileDynamic private static void setBuildableFalseDynamically(NativeBinarySpec binary) { binary.buildable = false } @Mutate @CompileStatic void disableReleaseGoogleTest(BinaryContainer binaries, ProjectLayout projectLayout) { def project = (Project) projectLayout.projectIdentifier if (project.hasProperty('testOther')) { return } def check_string = 'release' if (project.hasProperty('buildServer') && !OperatingSystem.current().isWindows()) { check_string = 'debug' } binaries.withType(GoogleTestTestSuiteBinarySpec) { oSpec -> GoogleTestTestSuiteBinarySpec spec = (GoogleTestTestSuiteBinarySpec) oSpec if (spec.buildType.name == check_string) { Rules.setBuildableFalseDynamically(spec) } } } } }