From 83282342ae59d966295cc0088d392686b9f2a12d Mon Sep 17 00:00:00 2001 From: Cedric Beust Date: Tue, 9 Feb 2016 01:38:17 +0400 Subject: [PATCH] Compiler flag fixes. --- .../src/main/kotlin/com/beust/kobalt/Variant.kt | 2 +- .../com/beust/kobalt/api/CompilerActionInfo.kt | 1 + .../beust/kobalt/api/ICompilerFlagContributor.kt | 3 ++- .../com/beust/kobalt/internal/BaseJvmPlugin.kt | 6 +++--- .../kotlin/com/beust/kobalt/internal/JvmCompiler.kt | 2 +- .../com/beust/kobalt/internal/JvmCompilerPlugin.kt | 2 +- .../kotlin/com/beust/kobalt/plugin/apt/AptPlugin.kt | 3 ++- .../com/beust/kobalt/plugin/java/JavaPlugin.kt | 11 ++++++----- .../beust/kobalt/plugin/kotlin/KotlinCompiler.kt | 2 +- .../com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt | 13 ++++++++----- 10 files changed, 26 insertions(+), 19 deletions(-) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt index fe12ba62..ad0aa3ad 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/Variant.kt @@ -149,7 +149,7 @@ class Variant(val initialProductFlavor: ProductFlavorConfig? = null, // that directory will be added when trying to find recursively all the sources in it generatedSourceDirectory = File(result.relativeTo(File(project.directory)).absolutePath) val outputGeneratedSourceDirectory = File(result, pkg.replace('.', File.separatorChar)) - val outputDir = File(outputGeneratedSourceDirectory, "BuildConfig" + contributor.buildConfigSuffix) + val outputDir = File(outputGeneratedSourceDirectory, "BuildConfig." + contributor.buildConfigSuffix) KFiles.saveFile(outputDir, code) log(2, "Generated ${outputDir.path}") return result diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/CompilerActionInfo.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/CompilerActionInfo.kt index 9a1d374d..480e5a38 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/CompilerActionInfo.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/CompilerActionInfo.kt @@ -8,6 +8,7 @@ import java.io.File data class CompilerActionInfo(val directory: String?, val dependencies: List, val sourceFiles: List, + val suffixesBeingCompiled: List, val outputDir: File, val compilerArgs: List) diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/ICompilerFlagContributor.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/ICompilerFlagContributor.kt index 8e82cbfe..5962e9fb 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/ICompilerFlagContributor.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/api/ICompilerFlagContributor.kt @@ -4,7 +4,8 @@ package com.beust.kobalt.api * Plugins that add compiler flags. */ interface ICompilerFlagContributor : IContributor { - fun flagsFor(project: Project, context: KobaltContext, currentFlags: List): List + fun flagsFor(project: Project, context: KobaltContext, currentFlags: List, + suffixesBeingCompiled: List): List val flagPriority: Int get() = DEFAULT_FLAG_PRIORITY diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/BaseJvmPlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/BaseJvmPlugin.kt index 0253125d..89e20af1 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/BaseJvmPlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/BaseJvmPlugin.kt @@ -2,7 +2,6 @@ package com.beust.kobalt.internal import com.beust.kobalt.api.ConfigPlugin import com.beust.kobalt.api.ICompilerFlagContributor -import com.beust.kobalt.api.Project /** * Base class for JVM language plug-ins. @@ -13,8 +12,9 @@ abstract class BaseJvmPlugin : ConfigPlugin(), ICompilerFlagContributor { val FLAG_CONTRIBUTOR_PRIORITY = ICompilerFlagContributor.DEFAULT_FLAG_PRIORITY - 10 } - protected fun maybeCompilerArgs(project: Project, args: List) - = if (accept(project)) args else emptyList() + protected fun maybeCompilerArgs(sourceSuffixes: List, suffixesBeingCompiled: List, + args: List) + = if (sourceSuffixes.any { suffixesBeingCompiled.contains(it) }) args else emptyList() override val flagPriority = FLAG_CONTRIBUTOR_PRIORITY diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompiler.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompiler.kt index 1c15c048..ba330537 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompiler.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompiler.kt @@ -34,7 +34,7 @@ class JvmCompiler @Inject constructor(val dependencyManager: DependencyManager) val contributors = context.pluginInfo.compilerFlagContributors contributors.sortBy { it.flagPriority } context.pluginInfo.compilerFlagContributors.forEach { - currentFlags.addAll(it.flagsFor(project, context, currentFlags)) + currentFlags.addAll(it.flagsFor(project, context, currentFlags, info.suffixesBeingCompiled)) } currentFlags } else { diff --git a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt index e4293868..41020931 100644 --- a/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt +++ b/modules/kobalt-plugin-api/src/main/kotlin/com/beust/kobalt/internal/JvmCompilerPlugin.kt @@ -293,7 +293,7 @@ open class JvmCompilerPlugin @Inject constructor( // Finally, alter the info with the compiler interceptors before returning it val initialActionInfo = CompilerActionInfo(projectDirectory.path, classpath, sourceFiles + extraSourceFiles, - buildDirectory, emptyList() /* the flags will be provided by flag contributors */) + sourceSuffixes, buildDirectory, emptyList() /* the flags will be provided by flag contributors */) val result = context.pluginInfo.compilerInterceptors.fold(initialActionInfo, { ai, interceptor -> interceptor.intercept(project, context, ai) }) diff --git a/src/main/kotlin/com/beust/kobalt/plugin/apt/AptPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/apt/AptPlugin.kt index 7cf40947..d69d136e 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/apt/AptPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/apt/AptPlugin.kt @@ -31,7 +31,8 @@ public class AptPlugin @Inject constructor(val depFactory: DepFactory) context.variant.toIntermediateDir()) // ICompilerFlagContributor - override fun flagsFor(project: Project, context: KobaltContext, currentFlags: List) : List { + override fun flagsFor(project: Project, context: KobaltContext, currentFlags: List, + suffixesBeingCompiled: List) : List { val result = arrayListOf() configurationFor(project)?.let { config -> aptDependencies[project.name]?.let { aptDependencies -> diff --git a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt index 783efe2f..d6f3998f 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/java/JavaPlugin.kt @@ -39,12 +39,13 @@ class JavaPlugin @Inject constructor(val javaCompiler: JavaCompiler) } // ICompilerFlagsContributor - // ICompilerFlagsContributor - override fun flagsFor(project: Project, context: KobaltContext, currentFlags: List) - = maybeCompilerArgs(project, configurationFor(project)?.compilerArgs ?: listOf()) + override fun flagsFor(project: Project, context: KobaltContext, currentFlags: List, + suffixesBeingCompiled: List) = + maybeCompilerArgs(sourceSuffixes, suffixesBeingCompiled, + configurationFor(project)?.compilerArgs ?: listOf()) // ICompilerContributor - override val sourceSuffixes = listOf(".java") + override val sourceSuffixes = listOf("java") override fun compile(project: Project, context: KobaltContext, info: CompilerActionInfo) : TaskResult { val result = @@ -64,7 +65,7 @@ class JavaPlugin @Inject constructor(val javaCompiler: JavaCompiler) // IBuildConfigContributor override fun affinity(project: Project) = if (project.projectExtra.suffixesFound.contains("java")) 1 else 0 - override val buildConfigSuffix = ".java" + override val buildConfigSuffix = sourceSuffixes[0] override fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String, variant: Variant, buildConfigs: List): String { diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt index 75a41e22..49f27020 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinCompiler.kt @@ -129,7 +129,7 @@ class KotlinCompiler @Inject constructor( // .map { FileDependency(it) } val dependencies = compileDependencies + otherClasspath.map { FileDependency(it) } - val info = CompilerActionInfo(project?.directory, dependencies, sourceFiles, outputDir, args) + val info = CompilerActionInfo(project?.directory, dependencies, sourceFiles, listOf("kt"), outputDir, args) return jvmCompiler.doCompile(project, context, compilerAction, info) } } diff --git a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt index 48e2b44d..ace3f6f1 100644 --- a/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt +++ b/src/main/kotlin/com/beust/kobalt/plugin/kotlin/KotlinPlugin.kt @@ -37,9 +37,12 @@ class KotlinPlugin @Inject constructor(val executors: KobaltExecutors) } // ICompilerFlagsContributor - override fun flagsFor(project: Project, context: KobaltContext, currentFlags: List) - = maybeCompilerArgs(project, (configurationFor(project)?.compilerArgs ?: listOf()) + - listOf("-no-stdlib")) + override fun flagsFor(project: Project, context: KobaltContext, currentFlags: List, + suffixesBeingCompiled: List) : List { + val result = maybeCompilerArgs(sourceSuffixes, suffixesBeingCompiled, + configurationFor(project)?.compilerArgs ?: listOf()) + return result + } // override fun generateDoc(project: Project, context: KobaltContext, info: CompilerActionInfo) : TaskResult { // val configs = dokkaConfigurations[project.name] @@ -101,7 +104,7 @@ class KotlinPlugin @Inject constructor(val executors: KobaltExecutors) // ICompilerContributor - override val sourceSuffixes = listOf(".kt") + override val sourceSuffixes = listOf("kt") override fun compile(project: Project, context: KobaltContext, info: CompilerActionInfo) : TaskResult { val result = @@ -129,7 +132,7 @@ class KotlinPlugin @Inject constructor(val executors: KobaltExecutors) // IBuildConfigContributor override fun affinity(project: Project) = if (project.projectExtra.suffixesFound.contains("kotlin")) 2 else 0 - override val buildConfigSuffix = ".kt" + override val buildConfigSuffix = "kt" override fun generateBuildConfig(project: Project, context: KobaltContext, packageName: String, variant: Variant, buildConfigs: List): String {