From 3dd41cf46a7f0a1118b20bda32892c7cf7e44649 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Sun, 23 Nov 2014 20:28:26 +0000 Subject: [PATCH] Gradle build file uses pre-built binaries by specifying nonexistent cpp source directory --- build.gradle | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 build.gradle diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..2da254c --- /dev/null +++ b/build.gradle @@ -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 +} \ No newline at end of file