Skip to content

Commit d813fe9

Browse files
committed
build: move native build to subproject
1 parent 23e3c1d commit d813fe9

File tree

3 files changed

+100
-83
lines changed

3 files changed

+100
-83
lines changed

build.gradle.kts

Lines changed: 12 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,6 @@
1-
import dev.silenium.libs.jni.NativePlatform
21
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
32
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
43

5-
buildscript {
6-
repositories {
7-
maven("https://reposilite.silenium.dev/releases") {
8-
name = "silenium-releases"
9-
}
10-
}
11-
dependencies {
12-
classpath(libs.jni.utils)
13-
}
14-
}
15-
164
plugins {
175
alias(libs.plugins.kotlin)
186
`maven-publish`
@@ -33,60 +21,6 @@ dependencies {
3321
}
3422

3523
val deployKotlin = (findProperty("deploy.kotlin") as String?)?.toBoolean() ?: true
36-
val deployNative = (findProperty("deploy.native") as String?)?.toBoolean() ?: true
37-
val withGPL: Boolean = findProperty("ffmpeg.gpl").toString().toBoolean()
38-
val platformExtension = "-gpl".takeIf { withGPL }.orEmpty()
39-
val platform = NativePlatform.platform(platformExtension)
40-
41-
val compileNative = if(deployNative) {
42-
tasks.register<Exec>("compileNative") {
43-
enabled = deployNative
44-
commandLine(
45-
"bash",
46-
layout.projectDirectory.file("cppbuild.sh").asFile.absolutePath,
47-
"-extension", platform.extension,
48-
"-platform", platform.osArch,
49-
"install", "ffmpeg",
50-
)
51-
workingDir(layout.projectDirectory.asFile)
52-
53-
inputs.property("platform", platform)
54-
inputs.files(layout.projectDirectory.files("cppbuild.sh"))
55-
inputs.files(layout.projectDirectory.files("detect-platform.sh"))
56-
inputs.files(layout.projectDirectory.files("ffmpeg/cppbuild.sh"))
57-
inputs.files(layout.projectDirectory.files("ffmpeg/*.patch"))
58-
inputs.files(layout.projectDirectory.files("ffmpeg/*.diff"))
59-
outputs.dir(layout.projectDirectory.dir("ffmpeg/cppbuild/${platform}"))
60-
outputs.cacheIf { true }
61-
}
62-
} else null
63-
64-
val nativesJar = if (deployNative) {
65-
tasks.register<Jar>("nativesJar") {
66-
val platform = NativePlatform.platform(platformExtension)
67-
68-
from(compileNative!!.get().outputs.files) {
69-
include("lib/*.so")
70-
include("lib/*.dll")
71-
include("lib/*.dylib")
72-
eachFile {
73-
path = "natives/$platform/$name"
74-
}
75-
into("natives/$platform/")
76-
}
77-
}
78-
} else null
79-
80-
val zipBuild = if (deployNative) {
81-
tasks.register<Zip>("zipBuild") {
82-
from(compileNative!!.get().outputs.files) {
83-
include("bin/**/*")
84-
include("include/**/*")
85-
include("lib/**/*")
86-
include("share/**/*")
87-
}
88-
}
89-
} else null
9024

9125
kotlin {
9226
compilerOptions {
@@ -100,23 +34,7 @@ java {
10034
withSourcesJar()
10135
}
10236

103-
publishing {
104-
publications {
105-
if (deployNative) {
106-
create<MavenPublication>("native${platform.capitalized}") {
107-
artifact(nativesJar)
108-
artifact(zipBuild)
109-
artifactId = "ffmpeg-natives-${platform}"
110-
}
111-
}
112-
if (deployKotlin) {
113-
create<MavenPublication>("kotlin") {
114-
from(components["java"])
115-
artifactId = "ffmpeg-natives"
116-
}
117-
}
118-
}
119-
37+
allprojects {
12038
repositories {
12139
maven(System.getenv("REPOSILITE_URL") ?: "https://reposilite.silenium.dev/snapshots") {
12240
name = "reposilite"
@@ -129,3 +47,14 @@ publishing {
12947
}
13048
}
13149
}
50+
51+
publishing {
52+
publications {
53+
if (deployKotlin) {
54+
create<MavenPublication>("kotlin") {
55+
from(components["java"])
56+
artifactId = "ffmpeg-natives"
57+
}
58+
}
59+
}
60+
}

ffmpeg/build.gradle.kts

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import dev.silenium.libs.jni.NativePlatform
2+
3+
buildscript {
4+
repositories {
5+
maven("https://reposilite.silenium.dev/releases") {
6+
name = "silenium-releases"
7+
}
8+
}
9+
dependencies {
10+
classpath(libs.jni.utils)
11+
}
12+
}
13+
14+
plugins {
15+
base
16+
`maven-publish`
17+
}
18+
19+
group = "dev.silenium.libs.ffmpeg"
20+
version = findProperty("deploy.version") as String? ?: "0.0.0-SNAPSHOT"
21+
22+
val deployNative = (findProperty("deploy.native") as String?)?.toBoolean() ?: true
23+
24+
val withGPL: Boolean = findProperty("ffmpeg.gpl").toString().toBoolean()
25+
val platformExtension = "-gpl".takeIf { withGPL }.orEmpty()
26+
val platform = NativePlatform.platform(platformExtension)
27+
28+
val compileNative = if(deployNative) {
29+
tasks.register<Exec>("compileNative") {
30+
enabled = deployNative
31+
commandLine(
32+
"bash",
33+
rootProject.layout.projectDirectory.file("cppbuild.sh").asFile.absolutePath,
34+
"-extension", platform.extension,
35+
"-platform", platform.osArch,
36+
"install", "ffmpeg",
37+
)
38+
workingDir(rootProject.layout.projectDirectory.asFile)
39+
40+
inputs.property("platform", platform)
41+
inputs.files(rootProject.layout.projectDirectory.files("cppbuild.sh"))
42+
inputs.files(layout.projectDirectory.files("cppbuild.sh"))
43+
inputs.files(layout.projectDirectory.files("*.patch"))
44+
inputs.files(layout.projectDirectory.files("*.diff"))
45+
outputs.dir(layout.projectDirectory.dir("cppbuild/${platform}"))
46+
outputs.cacheIf { true }
47+
}
48+
} else null
49+
50+
val nativesJar = if (deployNative) {
51+
tasks.register<Jar>("nativesJar") {
52+
val platform = NativePlatform.platform(platformExtension)
53+
54+
from(compileNative!!.get().outputs.files) {
55+
include("lib/*.so")
56+
include("lib/*.dll")
57+
include("lib/*.dylib")
58+
eachFile {
59+
path = "natives/$platform/$name"
60+
}
61+
into("natives/$platform/")
62+
}
63+
}
64+
} else null
65+
66+
val zipBuild = if (deployNative) {
67+
tasks.register<Zip>("zipBuild") {
68+
from(compileNative!!.get().outputs.files) {
69+
include("bin/**/*")
70+
include("include/**/*")
71+
include("lib/**/*")
72+
include("share/**/*")
73+
}
74+
}
75+
} else null
76+
77+
publishing {
78+
publications {
79+
if (deployNative) {
80+
create<MavenPublication>("native${platform.capitalized}") {
81+
artifact(nativesJar)
82+
artifact(zipBuild)
83+
artifactId = "ffmpeg-natives-${platform}"
84+
}
85+
}
86+
}
87+
}

settings.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
rootProject.name = "ffmpeg-static"
2+
include(":ffmpeg")

0 commit comments

Comments
 (0)