Moved clang flags out of the root build.gardle.

Collected clang args in ClangArgs.kt
Switched dependencies/build.gradle to KonanTarget.
Introduced KonanProperties to take care of target specific properties.
This commit is contained in:
Alexander Gorshenev
2017-07-06 12:39:02 +03:00
committed by alexander-gorshenev
parent 1d532729a8
commit 55c4966203
30 changed files with 432 additions and 343 deletions
+28 -50
View File
@@ -15,6 +15,10 @@
*/
import static DependencyTaskKind.*
import org.jetbrains.kotlin.konan.target.*
import static org.jetbrains.kotlin.konan.target.KonanTarget.*
import org.jetbrains.kotlin.konan.properties.KonanProperties
import org.jetbrains.kotlin.konan.properties.*
buildscript {
repositories {
@@ -30,10 +34,6 @@ buildscript {
apply plugin: 'com.jfrog.bintray'
rootProject.ext.konanPropertiesFile = project(':backend.native').file('konan.properties')
rootProject.ext.konanProperties = new Properties()
rootProject.konanProperties.load(new FileInputStream(rootProject.konanPropertiesFile))
configurations {
kotlin_compiler_jar
kotlin_compiler_pom
@@ -106,20 +106,7 @@ task update_kotlin_compiler(type: DefaultTask) {
}
abstract class NativeDep extends DefaultTask {
private String getCurrentHostTarget() {
if (project.isMac() && project.isAmd64()) {
return 'darwin-macos'
} else if (project.isLinux() && project.isAmd64()) {
return 'linux-x86-64'
} else if (project.isWindows() && project.isAmd64()) {
return 'windows-x86-64'
} else {
throw project.unsupportedPlatformException()
}
}
protected final String host = getCurrentHostTarget();
protected final String hostSystem = TargetManager.longerSystemName();
String baseUrl = "https://jetbrains.bintray.com/kotlin-native-dependencies"
@Input
@@ -130,7 +117,7 @@ abstract class NativeDep extends DefaultTask {
}
protected File getBaseOutDir() {
final File res = project.rootProject.file("dist/dependencies")
final File res = project.rootProject.ext.dependenciesDir
res.mkdirs()
return res
}
@@ -193,15 +180,6 @@ class HelperNativeDep extends TgzNativeDep {
}
}
static String substituteName(String name) {
switch (name) {
case "macbook": return "osx"
case "iphone": return "ios"
case "iphoneSim": return "ios_sim"
}
return name
}
enum DependencyTaskKind {
LIBFFI("Libffi"), SYSROOT("Sysroot")
@@ -213,22 +191,23 @@ enum DependencyTaskKind {
String toString() { return name }
}
void dependencyTask(String target, DependencyTaskKind kind) {
void dependencyTask(KonanTarget target, DependencyTaskKind kind) {
String dependencyBaseName
def properties = rootProject.konanProperties
def properties = rootProject.ext.konanProperties
def dirs = new KonanProperties(target, properties, null)
switch (kind) {
case LIBFFI:
dependencyBaseName = properties.getProperty("libffiDir.${substituteName(target)}")
dependencyBaseName = dirs.libffiDir
break
case SYSROOT:
dependencyBaseName = properties.getProperty("targetSysRoot.${substituteName(target)}")
dependencyBaseName = dirs.targetSysRoot
break
}
if (dependencyBaseName == null) {
throw project.unsupportedPlatformException()
}
task "${target}${kind}"(type: HelperNativeDep) {
task "${target.userName}${kind}"(type: HelperNativeDep) {
baseName = dependencyBaseName
}
}
@@ -236,37 +215,36 @@ void dependencyTask(String target, DependencyTaskKind kind) {
if (isLinux()) {
// The gcc toolchain contains the sysroot for linux platform.
task gccToolchain(type: HelperNativeDep) {
baseName = "target-gcc-toolchain-3-$host"
baseName = "target-gcc-toolchain-3-$hostSystem"
}
dependencyTask("linux", LIBFFI)
dependencyTask("raspberrypi", SYSROOT)
dependencyTask("raspberrypi", LIBFFI)
dependencyTask(LINUX, LIBFFI)
dependencyTask(RASPBERRYPI, SYSROOT)
dependencyTask(RASPBERRYPI, LIBFFI)
} else if (isWindows()) {
task mingwWithLlvm(type: HelperNativeDep) {
baseName = "msys2-mingw-w64-x86_64-gcc-6.3.0-clang-llvm-3.9.1-$host"
baseName = "msys2-mingw-w64-x86_64-gcc-6.3.0-clang-llvm-3.9.1-$hostSystem"
}
dependencyTask("mingw", LIBFFI)
dependencyTask(MINGW, LIBFFI)
} else {
dependencyTask("macbook", SYSROOT)
dependencyTask("macbook", LIBFFI)
dependencyTask("iphone", SYSROOT)
dependencyTask("iphone", LIBFFI)
dependencyTask(MACBOOK, SYSROOT)
dependencyTask(MACBOOK, LIBFFI)
dependencyTask(IPHONE, SYSROOT)
dependencyTask(IPHONE, LIBFFI)
// TODO: re-enable when we known how to bring the simulator sysroot to dependencies.
// dependencyTask("iphoneSim", SYSROOT)
// dependencyTask(IPHONE_SIM, SYSROOT)
}
if (isLinux() || isMac()) {
task llvm(type: HelperNativeDep) {
baseName = "clang-llvm-$llvmVersion-$host"
baseName = "clang-llvm-$llvmVersion-$hostSystem"
}
dependencyTask("android_arm32", SYSROOT)
dependencyTask("android_arm32", LIBFFI)
dependencyTask("android_arm64", SYSROOT)
dependencyTask("android_arm64", LIBFFI)
dependencyTask(ANDROID_ARM32, SYSROOT)
dependencyTask(ANDROID_ARM32, LIBFFI)
dependencyTask(ANDROID_ARM64, SYSROOT)
dependencyTask(ANDROID_ARM64, LIBFFI)
}
task update(type: Copy) {