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 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.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 DisableBuildingGTest implements Plugin { @CompileStatic public void apply(Project project) { } @CompileStatic static class Rules extends RuleSource { @CompileDynamic private static void setBuildableFalseDynamically(NativeBinarySpec binary) { binary.buildable = false } @Validate @CompileStatic // TODO: Move this to tc plugin void disableCrossTests(BinaryContainer binaries, ExtensionContainer extContainer) { final ToolchainExtension ext = extContainer.getByType(ToolchainExtension.class); for (GoogleTestTestSuiteBinarySpec binary : binaries.withType(GoogleTestTestSuiteBinarySpec.class)) { if (ext.getCrossCompilers().findByName(binary.getTargetPlatform().getName()) != null) { setBuildableFalseDynamically(binary) } } } } }