@@ -32,52 +32,61 @@ dependencies {
3232 implementation(libs.jni.utils)
3333}
3434
35- val withGPL: Boolean = findProperty(" ffmpeg.gpl" )?.toString()?.toBoolean() ? : false
35+ 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()
3638val platformExtension = " -gpl" .takeIf { withGPL }.orEmpty()
3739val platform = NativePlatform .platform(platformExtension)
3840
39- val compileNative by tasks.registering(Exec ::class ) {
40- commandLine(
41- " bash" ,
42- layout.projectDirectory.file(" cppbuild.sh" ).asFile.absolutePath,
43- " -extension" , platform.extension,
44- " -platform" , platform.osArch,
45- " install" , " ffmpeg" ,
46- )
47- workingDir(layout.projectDirectory.asFile)
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)
4852
49- inputs.property(" platform" , platform)
50- inputs.files(layout.projectDirectory.files(" cppbuild.sh" ))
51- inputs.files(layout.projectDirectory.files(" detect-platform.sh" ))
52- inputs.files(layout.projectDirectory.files(" ffmpeg/cppbuild.sh" ))
53- inputs.files(layout.projectDirectory.files(" ffmpeg/*.patch" ))
54- inputs.files(layout.projectDirectory.files(" ffmpeg/*.diff" ))
55- outputs.dir(layout.projectDirectory.dir(" ffmpeg/cppbuild/${platform} " ))
56- outputs.cacheIf { true }
57- }
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
5863
59- tasks.processResources {
60- val platform = NativePlatform .platform(platformExtension)
64+ val nativesJar = if (deployNative) {
65+ tasks.register<Jar >(" nativesJar" ) {
66+ val platform = NativePlatform .platform(platformExtension)
6167
62- from(compileNative.get().outputs.files) {
63- include(" lib/*.so" )
64- include(" lib/*.dll" )
65- include(" lib/*.dylib" )
66- eachFile {
67- path = " natives/$platform /$name "
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 /" )
6876 }
69- into(" natives/$platform /" )
7077 }
71- }
78+ } else null
7279
73- val zipBuild by tasks.registering(Zip ::class ) {
74- from(compileNative.get().outputs.files) {
75- include(" bin/**/*" )
76- include(" include/**/*" )
77- include(" lib/**/*" )
78- include(" share/**/*" )
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+ }
7988 }
80- }
89+ } else null
8190
8291kotlin {
8392 compilerOptions {
@@ -93,10 +102,18 @@ java {
93102
94103publishing {
95104 publications {
96- create<MavenPublication >(" native${platform.capitalized} " ) {
97- from(components[" java" ])
98- artifact(zipBuild)
99- artifactId = " ffmpeg-natives-${platform} "
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+ }
100117 }
101118 }
102119
0 commit comments