blob: 31530b8a4e1ce921ebb785278ffd160cdd0dde6d [file] [log] [blame]
Brian Silverman8fce7482020-01-05 13:18: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.test.tasks.RunTestExecutable
19import org.gradle.nativeplatform.NativeExecutableBinarySpec
20import org.gradle.nativeplatform.NativeBinarySpec;
21import org.gradle.nativeplatform.NativeComponentSpec;
22import org.gradle.nativeplatform.NativeLibrarySpec;
23import org.gradle.nativeplatform.SharedLibraryBinarySpec;
24import org.gradle.nativeplatform.StaticLibraryBinarySpec;
25import org.gradle.nativeplatform.platform.internal.NativePlatformInternal;
26import org.gradle.nativeplatform.toolchain.NativeToolChain;
27import org.gradle.nativeplatform.toolchain.NativeToolChainRegistry;
28import org.gradle.nativeplatform.toolchain.internal.PlatformToolProvider;
29import org.gradle.nativeplatform.toolchain.internal.ToolType;
30import org.gradle.nativeplatform.toolchain.internal.gcc.AbstractGccCompatibleToolChain;
31import org.gradle.nativeplatform.toolchain.internal.msvcpp.VisualCppToolChain;
32import org.gradle.nativeplatform.toolchain.internal.tools.ToolRegistry;
33import org.gradle.platform.base.BinarySpec;
34import org.gradle.platform.base.ComponentSpec;
35import org.gradle.platform.base.ComponentSpecContainer;
36import org.gradle.platform.base.BinaryContainer;
37import org.gradle.platform.base.ComponentType;
38import org.gradle.platform.base.TypeBuilder;
39import org.gradle.nativeplatform.tasks.ObjectFilesToBinary;
40import groovy.transform.CompileStatic;
41import groovy.transform.CompileDynamic
42import org.gradle.nativeplatform.BuildTypeContainer
43
44@CompileStatic
45class MultiBuilds implements Plugin<Project> {
46 @CompileStatic
47 public void apply(Project project) {
48
49 }
50
51 @CompileStatic
52 static class Rules extends RuleSource {
53 @CompileDynamic
54 private static void setBuildableFalseDynamically(NativeBinarySpec binary) {
55 binary.buildable = false
56 }
57
58
59 @Mutate
60 @CompileStatic
61 void disableReleaseGoogleTest(BinaryContainer binaries, ProjectLayout projectLayout) {
62 def project = (Project) projectLayout.projectIdentifier
63 if (project.hasProperty('testRelease')) {
64 return
65 }
66 binaries.withType(GoogleTestTestSuiteBinarySpec) { oSpec ->
67 GoogleTestTestSuiteBinarySpec spec = (GoogleTestTestSuiteBinarySpec) oSpec
68 if (spec.buildType.name == 'release') {
69 Rules.setBuildableFalseDynamically(spec)
70 }
71 }
72 }
73 }
74}