Squashed 'third_party/allwpilib_2019/' content from commit bd05dfa1c
Change-Id: I2b1c2250cdb9b055133780c33593292098c375b7
git-subtree-dir: third_party/allwpilib_2019
git-subtree-split: bd05dfa1c7cca74c4fac451e7b9d6a37e7b53447
diff --git a/buildSrc/src/main/groovy/MultiBuilds.groovy b/buildSrc/src/main/groovy/MultiBuilds.groovy
new file mode 100644
index 0000000..aa1a225
--- /dev/null
+++ b/buildSrc/src/main/groovy/MultiBuilds.groovy
@@ -0,0 +1,95 @@
+
+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.model.Mutate;
+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 MultiBuilds implements Plugin<Project> {
+ @CompileStatic
+ public void apply(Project project) {
+
+ }
+
+ @CompileStatic
+ static class Rules extends RuleSource {
+ @Mutate
+ void setupBuildTypes(BuildTypeContainer buildTypes, ProjectLayout projectLayout) {
+ def project = (Project) projectLayout.projectIdentifier
+ if (project.hasProperty('releaseBuild')) {
+ buildTypes.create('debug')
+ } else {
+ buildTypes.create('release')
+ }
+ }
+
+ @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('testRelease')) {
+ return
+ }
+ binaries.withType(GoogleTestTestSuiteBinarySpec) { oSpec ->
+ GoogleTestTestSuiteBinarySpec spec = (GoogleTestTestSuiteBinarySpec) oSpec
+ if (spec.buildType.name == 'release') {
+ Rules.setBuildableFalseDynamically(spec)
+ }
+ }
+ // def crossCompileConfigs = []
+ // for (BuildConfig config : configs) {
+ // if (!BuildConfigRulesBase.isCrossCompile(config)) {
+ // continue
+ // }
+ // crossCompileConfigs << config.architecture
+ // }
+ // if (!crossCompileConfigs.empty) {
+ // binaries.withType(GoogleTestTestSuiteBinarySpec) { oSpec ->
+ // GoogleTestTestSuiteBinarySpec spec = (GoogleTestTestSuiteBinarySpec) oSpec
+ // if (crossCompileConfigs.contains(spec.targetPlatform.architecture.name)) {
+ // setBuildableFalseDynamically(spec)
+ // }
+ // }
+ // }
+ }
+ }
+}