@@ -32,52 +32,61 @@ dependencies {
32
32
implementation(libs.jni.utils)
33
33
}
34
34
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()
36
38
val platformExtension = " -gpl" .takeIf { withGPL }.orEmpty()
37
39
val platform = NativePlatform .platform(platformExtension)
38
40
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)
48
52
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
58
63
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)
61
67
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 /" )
68
76
}
69
- into(" natives/$platform /" )
70
77
}
71
- }
78
+ } else null
72
79
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
+ }
79
88
}
80
- }
89
+ } else null
81
90
82
91
kotlin {
83
92
compilerOptions {
@@ -93,10 +102,18 @@ java {
93
102
94
103
publishing {
95
104
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
+ }
100
117
}
101
118
}
102
119
0 commit comments