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) | |
// } | |
// } | |
// } | |
} | |
} | |
} |