@@ -4,13 +4,25 @@ import org.gradle.kotlin.dsl.support.useToRun
44import org.jetbrains.dokka.gradle.tasks.DokkaGeneratePublicationTask
55import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
66import org.jetbrains.kotlin.gradle.dsl.JvmTarget
7+ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
78import org.jetbrains.kotlin.gradle.tasks.CInteropProcess
89import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
9- import org.jetbrains.kotlin.konan.target.PlatformManager
1010
1111inline val File .unixPath: String
1212 get() = if (! os.isWindows) path else path.replace(" \\ " , " /" )
1313
14+ fun KotlinNativeTarget.treesitter () {
15+ compilations.configureEach {
16+ cinterops.create(" treesitter" ) {
17+ val srcDir = treesitterDir.resolve(" lib/src" )
18+ val includeDir = treesitterDir.resolve(" lib/include" )
19+ includeDirs.allHeaders(srcDir, includeDir)
20+ includeDirs.headerFilterOnly(includeDir)
21+ extraOpts(" -libraryPath" , libsDir.dir(konanTarget.name))
22+ }
23+ }
24+ }
25+
1426val os: OperatingSystem = OperatingSystem .current()
1527val libsDir = layout.buildDirectory.get().dir(" libs" )
1628val treesitterDir = rootDir.resolve(" tree-sitter" )
@@ -40,30 +52,15 @@ kotlin {
4052 publishLibraryVariants(" release" )
4153 }
4254
43- when {
44- os.isLinux -> listOf (linuxX64(), linuxArm64())
45- os.isWindows -> listOf (mingwX64())
46- os.isMacOsX -> listOf (
47- macosArm64(),
48- macosX64(),
49- iosArm64(),
50- iosSimulatorArm64()
51- )
52- else -> {
53- val arch = System .getProperty(" os.arch" )
54- throw GradleException (" Unsupported platform: $os ($arch )" )
55- }
56- }.forEach { target ->
57- target.compilations.configureEach {
58- cinterops.create(" treesitter" ) {
59- val srcDir = treesitterDir.resolve(" lib/src" )
60- val includeDir = treesitterDir.resolve(" lib/include" )
61- includeDirs.allHeaders(srcDir, includeDir)
62- includeDirs.headerFilterOnly(includeDir)
63- extraOpts(" -libraryPath" , libsDir.dir(konanTarget.name))
64- }
65- }
66- }
55+ linuxX64 { treesitter() }
56+ linuxArm64 { treesitter() }
57+ mingwX64 { treesitter() }
58+ macosArm64 { treesitter() }
59+ macosX64 { treesitter() }
60+ iosArm64 { treesitter() }
61+ iosSimulatorArm64 { treesitter() }
62+
63+ applyDefaultHierarchyTemplate()
6764
6865 jvmToolchain(17 )
6966
@@ -274,11 +271,8 @@ tasks.withType<CInteropProcess>().configureEach {
274271 " ${konanTarget.family.staticPrefix} tree-sitter.${konanTarget.family.staticSuffix} "
275272 ).asFile
276273 val objectFile = treesitterDir.resolve(" lib.o" )
277- val loader = PlatformManager (konanHome.get(), false , konanDataDir.orNull).loader(konanTarget)
278274
279275 doFirst {
280- if (! File (loader.absoluteTargetToolchain).isDirectory) loader.downloadDependencies()
281-
282276 val argsFile = File .createTempFile(" args" , null )
283277 argsFile.deleteOnExit()
284278 argsFile.writer().useToRun {
0 commit comments