diff --git a/build.gradle.kts b/build.gradle.kts index a4c379ef6d..f6dbe79f75 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -28,7 +28,7 @@ buildscript { allprojects { group = "hu.bme.mit.theta" - version = "5.0.4" + version = "5.0.5" apply(from = rootDir.resolve("gradle/shared-with-buildSrc/mirrors.gradle.kts")) } diff --git a/subprojects/frontends/llvm/build.gradle.kts b/subprojects/frontends/llvm/build.gradle.kts index 9029a1476a..2d93c23af0 100644 --- a/subprojects/frontends/llvm/build.gradle.kts +++ b/subprojects/frontends/llvm/build.gradle.kts @@ -53,7 +53,30 @@ val llvmConfigBinary = try { } } -val taskEnabled = current().isLinux && llvmConfigBinary != null +val clangBinary = try { + val output = runCommandForOutput("clang", "--version") + var version: List = listOf(output.joinToString(" ")) + for (token in output) { + val tryVersion = token.split('.') + if (tryVersion.size == 3 && tryVersion.all { it.all(Char::isDigit) }) { + version = tryVersion + break + } + } + + val major = version[0] + if (major == "15") { + "clang" + } else { + println("clang does not point to clang-15, not building native library. Found version: $version") + null + } +} catch (e: IOException) { + println("clang-15 not installed , not building native library.") + null +} + +val taskEnabled = current().isLinux && llvmConfigBinary != null && clangBinary != null fun runCommandForOutput(vararg args: String): Array { val process = ProcessBuilder(*args).start() @@ -62,7 +85,7 @@ fun runCommandForOutput(vararg args: String): Array { process.waitFor() val ret = outputStream.toString() .trim() - .split(" ") + .split(" ", "\n", "\r") .filter { it.length > 1 } .map { it.trim() } .toTypedArray() @@ -102,9 +125,9 @@ library { "-fpic", *jniConfigFlags(), *llvmConfigFlags("--cxxflags"))) - onlyIf { + if (!taskEnabled) { println("CppCompile is enabled: $taskEnabled") - this@Build_gradle.taskEnabled + enabled = false } } @@ -113,9 +136,9 @@ library { "-rdynamic", *llvmConfigFlags("--cxxflags", "--ldflags", "--libs", "core", "bitreader"), "-ldl")) - onlyIf { + if (!taskEnabled) { println("LinkSharedLibrary is enabled: $taskEnabled") - this@Build_gradle.taskEnabled + enabled = false } } } \ No newline at end of file diff --git a/subprojects/xcfa/llvm2xcfa/build.gradle.kts b/subprojects/xcfa/llvm2xcfa/build.gradle.kts index 3a64f8681a..1888b50a11 100644 --- a/subprojects/xcfa/llvm2xcfa/build.gradle.kts +++ b/subprojects/xcfa/llvm2xcfa/build.gradle.kts @@ -30,9 +30,12 @@ dependencies { tasks.test { if (OperatingSystem.current().isLinux) { val nativeLibTasks = project(":theta-llvm").tasks - dependsOn(nativeLibTasks.build) - - val linkTask = nativeLibTasks.withType(LinkSharedLibrary::class).first() + val task = nativeLibTasks.withType(LinkSharedLibrary::class) + if (task.any { !it.enabled }) { + enabled = false + } + val linkTask = task.first() + dependsOn(linkTask) systemProperty("java.library.path", linkTask.linkedFile.get().asFile.parent + ":/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib") }