blob: bdf46f7e8efc7a6d107a8746ec2b3bdb8408c265 [file] [log] [blame]
James Kuszmaul4f3ad3c2019-12-01 16:35:21 -08001
2import org.gradle.api.GradleException;
3import org.gradle.api.Plugin;
4import org.gradle.api.Project;
5import org.gradle.api.Task;
6import org.gradle.api.file.FileTree;
7import org.gradle.api.tasks.compile.JavaCompile;
8import org.gradle.language.base.internal.ProjectLayout;
9import org.gradle.language.base.plugins.ComponentModelBasePlugin;
10import org.gradle.language.nativeplatform.tasks.AbstractNativeSourceCompileTask;
11import org.gradle.model.ModelMap;
12import edu.wpi.first.toolchain.ToolchainExtension
13import org.gradle.model.Mutate;
14import org.gradle.api.plugins.ExtensionContainer;
15import org.gradle.nativeplatform.test.googletest.GoogleTestTestSuiteBinarySpec;
16import org.gradle.model.RuleSource;
17import org.gradle.model.Validate;
18import org.gradle.nativeplatform.NativeExecutableBinarySpec
19import org.gradle.nativeplatform.NativeBinarySpec;
20import org.gradle.nativeplatform.NativeComponentSpec;
21import org.gradle.nativeplatform.NativeLibrarySpec;
22import org.gradle.nativeplatform.SharedLibraryBinarySpec;
23import org.gradle.nativeplatform.StaticLibraryBinarySpec;
24import org.gradle.nativeplatform.platform.internal.NativePlatformInternal;
25import org.gradle.nativeplatform.toolchain.NativeToolChain;
26import org.gradle.nativeplatform.toolchain.NativeToolChainRegistry;
27import org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider;
28import org.gradle.nativeplatform.toolchain.internal.ToolType;
29import org.gradle.nativeplatform.toolchain.internal.gcc.AbstractGccCompatibleToolChain;
30import org.gradle.nativeplatform.toolchain.internal.msvcpp.VisualCppToolChain;
31import org.gradle.nativeplatform.toolchain.internal.tools.ToolRegistry;
32import org.gradle.platform.base.BinarySpec;
33import org.gradle.platform.base.ComponentSpec;
34import org.gradle.platform.base.ComponentSpecContainer;
35import org.gradle.platform.base.BinaryContainer;
36import org.gradle.platform.base.ComponentType;
37import org.gradle.platform.base.TypeBuilder;
38import org.gradle.nativeplatform.tasks.ObjectFilesToBinary;
39import groovy.transform.CompileStatic;
40import groovy.transform.CompileDynamic
41import org.gradle.nativeplatform.BuildTypeContainer
42
43@CompileStatic
44class DisableBuildingGTest implements Plugin<Project> {
45 @CompileStatic
46 public void apply(Project project) {
47
48 }
49
50 @CompileStatic
51 static class Rules extends RuleSource {
52 @CompileDynamic
53 private static void setBuildableFalseDynamically(NativeBinarySpec binary) {
54 binary.buildable = false
55 }
56
57 @Validate
58 @CompileStatic
59 // TODO: Move this to tc plugin
60 void disableCrossTests(BinaryContainer binaries, ExtensionContainer extContainer) {
61 final ToolchainExtension ext = extContainer.getByType(ToolchainExtension.class);
62
63 for (GoogleTestTestSuiteBinarySpec binary : binaries.withType(GoogleTestTestSuiteBinarySpec.class)) {
64 if (ext.getCrossCompilers().findByName(binary.getTargetPlatform().getName()) != null) {
65 setBuildableFalseDynamically(binary)
66 }
67 }
68 }
69 }
70}