[build][gradle] switch to gradle-4.7
This commit is contained in:
@@ -15,15 +15,23 @@
|
||||
*/
|
||||
|
||||
buildscript {
|
||||
apply from: "$rootDir/gradle/kotlinGradlePlugin.gradle"
|
||||
}
|
||||
ext.rootBuildDirectory = file('../..')
|
||||
|
||||
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
|
||||
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-stdlib:$buildKotlinVersion"
|
||||
classpath "org.jetbrains.kotlin:kotlin-native-shared:$konanVersion"
|
||||
}
|
||||
}
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: org.jetbrains.kotlin.NativeInteropPlugin
|
||||
|
||||
apply plugin: 'c'
|
||||
apply plugin: 'cpp'
|
||||
|
||||
import org.jetbrains.kotlin.konan.target.ClangArgs
|
||||
|
||||
final Project libclangextProject = project(":libclangext")
|
||||
final String libclangextTask = libclangextProject.path + ":build"
|
||||
File libclangextDir = new File(libclangextProject.buildDir, "libs/clangext/static")
|
||||
@@ -82,20 +90,11 @@ model {
|
||||
}
|
||||
}
|
||||
|
||||
/* HACK over gradle 4.4, it adds /usr/include, that affects our --sysroot flag */
|
||||
toolChains {
|
||||
clang(Clang) {
|
||||
eachPlatform {
|
||||
cppCompiler.withArguments { args ->
|
||||
args.remove "/usr/include"
|
||||
if (isLinux())
|
||||
args.remove "/usr/include/x86_64-linux-gnu"
|
||||
}
|
||||
cCompiler.withArguments { args ->
|
||||
args.remove "/usr/include"
|
||||
if (isLinux())
|
||||
args.remove "/usr/include/x86_64-linux-gnu"
|
||||
}
|
||||
cppCompiler.withArguments(ClangArgs.&filterGradleNativeSoftwareFlags)
|
||||
cCompiler.withArguments(ClangArgs.&filterGradleNativeSoftwareFlags)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,13 +14,22 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
buildscript {
|
||||
apply from: "$rootDir/gradle/kotlinGradlePlugin.gradle"
|
||||
}
|
||||
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'c'
|
||||
|
||||
buildscript {
|
||||
ext.rootBuildDirectory = file('../..')
|
||||
|
||||
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
|
||||
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-stdlib:$buildKotlinVersion"
|
||||
classpath "org.jetbrains.kotlin:kotlin-native-shared:$konanVersion"
|
||||
}
|
||||
}
|
||||
import org.jetbrains.kotlin.konan.target.ClangArgs
|
||||
|
||||
|
||||
model {
|
||||
components {
|
||||
callbacks(NativeLibrarySpec) {
|
||||
@@ -41,15 +50,10 @@ model {
|
||||
}
|
||||
}
|
||||
|
||||
/* HACK over gradle 4.4, it adds /usr/include, that affects our --sysroot flag */
|
||||
toolChains {
|
||||
clang(Clang) {
|
||||
eachPlatform {
|
||||
cCompiler.withArguments { args ->
|
||||
args.remove "/usr/include"
|
||||
if (isLinux())
|
||||
args.remove "/usr/include/x86_64-linux-gnu"
|
||||
}
|
||||
cCompiler.withArguments(ClangArgs.&filterGradleNativeSoftwareFlags)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-all.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
@@ -16,7 +16,17 @@
|
||||
|
||||
apply plugin: "cpp"
|
||||
apply plugin: "c"
|
||||
buildscript {
|
||||
ext.rootBuildDirectory = file('..')
|
||||
|
||||
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
|
||||
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-stdlib:$buildKotlinVersion"
|
||||
classpath "org.jetbrains.kotlin:kotlin-native-shared:$konanVersion"
|
||||
}
|
||||
}
|
||||
import org.jetbrains.kotlin.konan.target.ClangArgs
|
||||
ext.isEnabled = isMac()
|
||||
|
||||
model {
|
||||
@@ -40,15 +50,10 @@ model {
|
||||
}
|
||||
}
|
||||
|
||||
/* HACK over gradle 4.4, it adds /usr/include, that affects our --sysroot flag */
|
||||
toolChains {
|
||||
clang(Clang) {
|
||||
eachPlatform {
|
||||
cppCompiler.withArguments { args ->
|
||||
args.remove "/usr/include"
|
||||
if (isLinux())
|
||||
args.remove "/usr/include/x86_64-linux-gnu"
|
||||
}
|
||||
cppCompiler.withArguments(ClangArgs.&filterGradleNativeSoftwareFlags)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,18 @@
|
||||
apply plugin: "cpp"
|
||||
apply plugin: "c"
|
||||
|
||||
buildscript {
|
||||
ext.rootBuildDirectory = file('..')
|
||||
|
||||
apply from: "$rootBuildDirectory/gradle/kotlinGradlePlugin.gradle"
|
||||
|
||||
dependencies {
|
||||
classpath "org.jetbrains.kotlin:kotlin-stdlib:$buildKotlinVersion"
|
||||
classpath "org.jetbrains.kotlin:kotlin-native-shared:$konanVersion"
|
||||
}
|
||||
}
|
||||
import org.jetbrains.kotlin.konan.target.ClangArgs
|
||||
|
||||
model {
|
||||
components {
|
||||
debugInfo(NativeLibrarySpec) {
|
||||
@@ -34,15 +46,10 @@ model {
|
||||
}
|
||||
}
|
||||
|
||||
/* HACK over gradle 4.4, it adds /usr/include, that affects our --sysroot flag */
|
||||
toolChains {
|
||||
clang(Clang) {
|
||||
eachPlatform {
|
||||
cppCompiler.withArguments { args ->
|
||||
args.remove "/usr/include"
|
||||
if (isLinux())
|
||||
args.remove "/usr/include/x86_64-linux-gnu"
|
||||
}
|
||||
cppCompiler.withArguments(ClangArgs.&filterGradleNativeSoftwareFlags)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
||||
+1
-1
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.7-bin.zip
|
||||
|
||||
@@ -198,5 +198,22 @@ class ClangArgs(private val configurables: Configurables) : Configurables by con
|
||||
fun clangC(vararg userArgs: String) = targetClangCmd + userArgs.asList()
|
||||
|
||||
fun clangCXX(vararg userArgs: String) = targetClangXXCmd + userArgs.asList()
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun filterGradleNativeSoftwareFlags(args: MutableList<String>) {
|
||||
args.remove("/usr/include") // HACK: over gradle-4.4.
|
||||
when (HostManager.host) {
|
||||
KonanTarget.LINUX_X64 -> args.remove("/usr/include/x86_64-linux-gnu") // HACK: over gradle-4.4.
|
||||
KonanTarget.MACOS_X64 -> {
|
||||
val indexToRemove = args.indexOf(args.find { it.contains("MacOSX.platform")}) // HACK: over gradle-4.7.
|
||||
if (indexToRemove != -1) {
|
||||
args.removeAt(indexToRemove - 1) // drop -I.
|
||||
args.removeAt(indexToRemove - 1) // drop /Application/Xcode.app/...
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-5
@@ -28,6 +28,7 @@ import org.gradle.api.plugins.BasePlugin
|
||||
import org.gradle.api.publish.PublishingExtension
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.api.publish.maven.internal.publication.MavenPublicationInternal
|
||||
import org.gradle.language.cpp.internal.NativeVariantIdentity
|
||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||
import org.jetbrains.kotlin.gradle.plugin.KonanPlugin.Companion.COMPILE_ALL_TASK_NAME
|
||||
import org.jetbrains.kotlin.gradle.plugin.model.KonanToolingModelBuilder
|
||||
@@ -371,13 +372,13 @@ class KonanPlugin @Inject constructor(private val registry: ToolingModelBuilderR
|
||||
project.extensions.configure(PublishingExtension::class.java) {
|
||||
val publishing = it
|
||||
for (v in konanSoftwareComponent.variants) {
|
||||
// TODO: with gradle 4.7 don't forget to change to SoftwareComponentsWithCoordinates
|
||||
publishing.publications.create(v.name, MavenPublication::class.java) {
|
||||
it.artifactId = v.name
|
||||
it.groupId = project.group.toString()
|
||||
it.version = project.version.toString()
|
||||
val coordinates = (v as NativeVariantIdentity).coordinates
|
||||
project.logger.info("variant with coordiants(${coordinates}) and module: ${coordinates.module}")
|
||||
it.artifactId = coordinates.module.name
|
||||
it.groupId = coordinates.group
|
||||
it.version = coordinates.version
|
||||
it.from(v)
|
||||
(it as MavenPublicationInternal).publishWithOriginalFileName()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+34
-3
@@ -21,17 +21,25 @@ import org.gradle.api.Action
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.api.artifacts.DependencyConstraint
|
||||
import org.gradle.api.artifacts.ModuleDependency
|
||||
import org.gradle.api.artifacts.PublishArtifact
|
||||
import org.gradle.api.attributes.Attribute
|
||||
import org.gradle.api.attributes.AttributeContainer
|
||||
import org.gradle.api.attributes.Usage
|
||||
import org.gradle.api.capabilities.Capability
|
||||
import org.gradle.api.internal.component.UsageContext
|
||||
import org.gradle.api.internal.tasks.DefaultTaskDependency
|
||||
import org.gradle.api.tasks.*
|
||||
import org.gradle.language.cpp.CppBinary
|
||||
import org.gradle.language.cpp.internal.NativeVariant
|
||||
import org.gradle.language.cpp.internal.DefaultUsageContext
|
||||
import org.gradle.language.cpp.internal.NativeVariantIdentity
|
||||
import org.gradle.language.nativeplatform.internal.Names
|
||||
import org.gradle.nativeplatform.Linkage
|
||||
import org.gradle.nativeplatform.OperatingSystemFamily
|
||||
import org.gradle.util.ConfigureUtil
|
||||
import org.jetbrains.kotlin.gradle.plugin.*
|
||||
import org.jetbrains.kotlin.konan.target.Family
|
||||
import org.jetbrains.kotlin.konan.target.HostManager
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import java.io.File
|
||||
@@ -97,11 +105,12 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
||||
it.attribute(Attribute.of("org.gradle.native.kotlin.platform", String::class.java), target.name)
|
||||
}
|
||||
|
||||
val artifactNameWithoutSuffix = artifact.name.removeSuffix("$artifactSuffix")
|
||||
project.pluginManager.withPlugin("maven-publish") {
|
||||
if (!(project.getProperty(KonanPlugin.ProjectProperty.KONAN_PUBLICATION_ENABLED) as Boolean))
|
||||
return@withPlugin
|
||||
platformConfiguration.artifacts.add(object: PublishArtifact {
|
||||
override fun getName() = "${artifact.name.removeSuffix("$artifactSuffix")}/${target.name}"
|
||||
override fun getName(): String = artifactNameWithoutSuffix
|
||||
override fun getExtension() = if (artifactSuffix.startsWith('.')) artifactSuffix.substring(1) else artifactSuffix
|
||||
override fun getType() = artifactSuffix
|
||||
override fun getClassifier():String? = target.name
|
||||
@@ -113,7 +122,26 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
||||
val objectFactory = project.objects
|
||||
val linkUsage = objectFactory.named(Usage::class.java, Usage.NATIVE_LINK)
|
||||
val konanSoftwareComponent = config.mainVariant
|
||||
konanSoftwareComponent.addVariant(NativeVariant(Names.of("${artifact.name.removeSuffix("$artifactSuffix")}_${target.name}"), linkUsage, null, linkUsage, platformConfiguration))
|
||||
val variantName = "${artifactNameWithoutSuffix}_${target.name}"
|
||||
val context = DefaultUsageContext(object:UsageContext {
|
||||
override fun getUsage(): Usage = linkUsage
|
||||
override fun getName(): String = "${variantName}Link"
|
||||
override fun getCapabilities(): MutableSet<out Capability> = mutableSetOf()
|
||||
override fun getDependencies(): MutableSet<out ModuleDependency> = mutableSetOf()
|
||||
override fun getDependencyConstraints(): MutableSet<out DependencyConstraint> = mutableSetOf()
|
||||
override fun getArtifacts(): MutableSet<out PublishArtifact> = platformConfiguration.allArtifacts
|
||||
override fun getAttributes(): AttributeContainer = platformConfiguration.attributes
|
||||
}, platformConfiguration.allArtifacts, platformConfiguration)
|
||||
konanSoftwareComponent.addVariant(NativeVariantIdentity(
|
||||
variantName,
|
||||
project.provider{ artifactName },
|
||||
project.provider{ project.group.toString() },
|
||||
project.provider{ project.version.toString() },
|
||||
false,
|
||||
false,
|
||||
target.asOperatingSystemFamily(),
|
||||
context,
|
||||
null))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +158,9 @@ abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
||||
fun destinationDir(dir: Any) {
|
||||
destinationDir = project.file(dir)
|
||||
}
|
||||
|
||||
private fun KonanTarget.asOperatingSystemFamily(): OperatingSystemFamily = project.objects.named(OperatingSystemFamily::class.java, family.name)
|
||||
|
||||
}
|
||||
|
||||
/** Task building an artifact with libraries */
|
||||
|
||||
Reference in New Issue
Block a user