diff --git a/build.gradle b/build.gradle index 2b250b0..04f125e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,152 +1,150 @@ -apply plugin: 'java' -apply plugin: 'c' -apply plugin: 'maven' -apply plugin: 'eclipse' - -repositories { - maven { - url 'https://github.com/Boukefalos/jlibloader/raw/mvn-repo/' - } -} - -dependencies { - compile 'com.github.boukefalos:jlibloader:0.2' -} - -group = 'com.github.boukefalos' -project.archivesBaseName = 'jlibpipe' -version = '0.1' - -task wrapper(type: Wrapper) { - gradleVersion = '1.12' -} - - - -model { - platforms { - windows_i386 { - architecture 'i386' - operatingSystem 'windows' - } - windows_amd64 { - architecture 'amd64' - operatingSystem 'windows' - } - } - toolChains { - gcc(Gcc) { - addPlatformConfiguration(new TargetPlatformConfiguration() { - boolean supportsPlatform(Platform platform) { - platform.operatingSystem.current && platform.operatingSystem.name == 'windows' && - platform.architecture.name == 'amd64' - } - List getCppCompilerArgs() { ['-m64', '-fpermissive'] } - List getCCompilerArgs() { ['-m64'] } - List getObjectiveCCompilerArgs() { ['-m64'] } - List getObjectiveCppCompilerArgs() { ['-m64'] } - List getAssemblerArgs() { ['--64'] } - List getLinkerArgs() { ['-m64'] } - List getStaticLibraryArchiverArgs() { [] } - }) - } - } -} - -def jniHeadersDir = file("$buildDir/headers") - -task jniHeaders(dependsOn: compileJava) { - def outputFile = file("$jniHeadersDir/pipe.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 'pipe.Pipe' - } -} - -libraries { - main { - baseName project.archivesBaseName - } - all { - binaries.all { - cCompiler.args '-I' + jniHeadersDir - cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include" - cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32" - linker.args '-Wl,--kill-at', '-static-libgcc', '-static-libstdc++' - tasks.withType(CCompile) { 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 - def libraryDirectory = project.group.replace('.', '/') + "/${project.archivesBaseName}/${variantName}" - nativeJar.into(libraryDirectory) { 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.2') -} - -jar { - from sourceSets.main.allSource +apply plugin: 'java' +apply plugin: 'c' +apply plugin: 'maven' +apply plugin: 'eclipse' + +repositories { + maven { + url 'https://github.com/Boukefalos/jlibloader/raw/mvn-repo/' + } +} + +dependencies { + compile 'com.github.boukefalos:jlibloader:0.2' +} + +group = 'com.github.boukefalos' +project.archivesBaseName = 'jlibpipe' +version = '0.1' + +task wrapper(type: Wrapper) { + gradleVersion = '1.12' +} + +model { + platforms { + windows_i386 { + architecture 'i386' + operatingSystem 'windows' + } + windows_amd64 { + architecture 'amd64' + operatingSystem 'windows' + } + } + toolChains { + gcc(Gcc) { + addPlatformConfiguration(new TargetPlatformConfiguration() { + boolean supportsPlatform(Platform platform) { + platform.operatingSystem.current && platform.operatingSystem.name == 'windows' && + platform.architecture.name == 'amd64' + } + List getCppCompilerArgs() { ['-m64', '-fpermissive'] } + List getCCompilerArgs() { ['-m64'] } + List getObjectiveCCompilerArgs() { ['-m64'] } + List getObjectiveCppCompilerArgs() { ['-m64'] } + List getAssemblerArgs() { ['--64'] } + List getLinkerArgs() { ['-m64'] } + List getStaticLibraryArchiverArgs() { [] } + }) + } + } +} + +def jniHeadersDir = file("$buildDir/headers") + +task jniHeaders(dependsOn: compileJava) { + def outputFile = file("$jniHeadersDir/pipe.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 'pipe.Pipe' + } +} + +libraries { + main { + baseName project.archivesBaseName + } + all { + binaries.all { + cCompiler.args '-I' + jniHeadersDir + cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include" + cCompiler.args "-I${org.gradle.internal.jvm.Jvm.current().javaHome}/include/win32" + linker.args '-Wl,--kill-at', '-static-libgcc', '-static-libstdc++' + tasks.withType(CCompile) { 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 + def libraryDirectory = project.group.replace('.', '/') + "/${project.archivesBaseName}/${variantName}" + nativeJar.into(libraryDirectory) { 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.2') +} + +jar { + from sourceSets.main.allSource } \ No newline at end of file