Gradle build file uses pre-built binaries by specifying nonexistent cpp source directory
This commit is contained in:
143
build.gradle
Normal file
143
build.gradle
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
apply plugin: 'java'
|
||||||
|
apply plugin: 'cpp'
|
||||||
|
apply plugin: 'maven'
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url 'https://github.com/Boukefalos/jlibloader/raw/mvn-repo/'
|
||||||
|
}
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
compile 'com.github.boukefalos:jlibloader:0.1'
|
||||||
|
testCompile 'junit:junit:3.8.1'
|
||||||
|
}
|
||||||
|
|
||||||
|
group = 'com.github.boukefalos'
|
||||||
|
project.archivesBaseName = 'jlibcom'
|
||||||
|
version = '1.18'
|
||||||
|
|
||||||
|
task wrapper(type: Wrapper) {
|
||||||
|
gradleVersion = '1.12'
|
||||||
|
}
|
||||||
|
|
||||||
|
model {
|
||||||
|
platforms {
|
||||||
|
windows_i386 {
|
||||||
|
architecture 'i386'
|
||||||
|
operatingSystem 'windows'
|
||||||
|
}
|
||||||
|
windows_amd64 {
|
||||||
|
architecture 'amd64'
|
||||||
|
operatingSystem 'windows'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def jniHeadersDir = file("$buildDir/headers")
|
||||||
|
|
||||||
|
task jniHeaders(dependsOn: compileJava) {
|
||||||
|
def outputFile = file("$jniHeadersDir/STA.h")
|
||||||
|
inputs.files sourceSets.main.output
|
||||||
|
outputs.file outputFile
|
||||||
|
exec {
|
||||||
|
executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
|
||||||
|
args '-o', outputFile
|
||||||
|
args '-classpath', sourceSets.main.output.classesDir
|
||||||
|
args '-classpath', file("$buildDir/../bin")
|
||||||
|
args 'com.jacob.com.STA'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sources {
|
||||||
|
main {
|
||||||
|
cpp {
|
||||||
|
source {
|
||||||
|
srcDir 'src/none'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
libraries {
|
||||||
|
main {
|
||||||
|
baseName project.archivesBaseName
|
||||||
|
}
|
||||||
|
all {
|
||||||
|
binaries.all {
|
||||||
|
cppCompiler.args '-I' + jniHeadersDir
|
||||||
|
cppCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include"
|
||||||
|
cppCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32"
|
||||||
|
linker.args '-Wl,--kill-at', '-static-libgcc', '-static-libstdc++'
|
||||||
|
tasks.withType(CppCompile) { task ->
|
||||||
|
task.dependsOn jniHeaders
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.withType(Upload) {
|
||||||
|
repositories {
|
||||||
|
mavenDeployer {
|
||||||
|
repository(url: uri('.maven'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
jni
|
||||||
|
}
|
||||||
|
|
||||||
|
def deployer = uploadJni.repositories.mavenDeployer
|
||||||
|
|
||||||
|
binaries.withType(SharedLibraryBinary) { binary ->
|
||||||
|
if (!buildable) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
def variantName = "${targetPlatform.operatingSystem.name}-${targetPlatform.architecture.name}"
|
||||||
|
def taskName = "jar-${variantName}"
|
||||||
|
def nativeJar = project.tasks.findByName(taskName)
|
||||||
|
if (nativeJar == null) {
|
||||||
|
nativeJar = project.task(taskName, type: Jar) {
|
||||||
|
baseName = "${project.archivesBaseName}-$variantName"
|
||||||
|
}
|
||||||
|
artifacts {
|
||||||
|
jni nativeJar
|
||||||
|
}
|
||||||
|
def jniPom = deployer.addFilter(variantName) { artifact, file ->
|
||||||
|
return file == nativeJar.archivePath
|
||||||
|
}
|
||||||
|
jniPom.groupId = project.group
|
||||||
|
jniPom.artifactId = nativeJar.baseName
|
||||||
|
jniPom.version = project.version
|
||||||
|
jniPom.scopeMappings.mappings.clear()
|
||||||
|
}
|
||||||
|
def builderTask = binary.tasks.builder
|
||||||
|
nativeJar.into(project.group.replace('.', '/') + '/' + variantName) { from builderTask.outputFile }
|
||||||
|
nativeJar.dependsOn builderTask
|
||||||
|
}
|
||||||
|
|
||||||
|
def mainPom = uploadArchives.repositories.mavenDeployer.pom
|
||||||
|
mainPom.groupId = project.group
|
||||||
|
mainPom.artifactId = jar.baseName
|
||||||
|
mainPom.version = project.version
|
||||||
|
mainPom.scopeMappings.mappings.clear()
|
||||||
|
mainPom.withXml { provider ->
|
||||||
|
def node = provider.asNode()
|
||||||
|
def deps = node.appendNode('dependencies')
|
||||||
|
['windows-amd64', 'windows-i386'].each { platform ->
|
||||||
|
def dep = deps.appendNode('dependency')
|
||||||
|
dep.appendNode('groupId', project.group)
|
||||||
|
dep.appendNode('artifactId', "${project.archivesBaseName}-${platform}")
|
||||||
|
dep.appendNode('version', project.version)
|
||||||
|
}
|
||||||
|
def dep = deps.appendNode('dependency')
|
||||||
|
dep.appendNode('groupId', 'com.github.boukefalos')
|
||||||
|
dep.appendNode('artifactId', 'jlibloader')
|
||||||
|
dep.appendNode('version', '0.1')
|
||||||
|
}
|
||||||
|
|
||||||
|
jar {
|
||||||
|
from sourceSets.main.allSource
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user