mirror of
https://github.com/corda/corda.git
synced 2024-12-30 17:57:02 +00:00
324 lines
7.6 KiB
Groovy
324 lines
7.6 KiB
Groovy
|
buildscript {
|
||
|
repositories {
|
||
|
jcenter()
|
||
|
}
|
||
|
|
||
|
dependencies {
|
||
|
classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:2.2.4'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
apply plugin: 'native-component'
|
||
|
apply plugin: 'ivy-publish'
|
||
|
apply plugin: 'java'
|
||
|
apply plugin: 'artifactory-publish'
|
||
|
|
||
|
enum SupportedOS implements OperatingSystem {
|
||
|
LINUX, WINDOWS, MACOSX;
|
||
|
|
||
|
public static final SupportedOS CURRENT;
|
||
|
|
||
|
static {
|
||
|
String p = System.properties['os.name']
|
||
|
switch(p.replaceAll(' ', '').toLowerCase()) {
|
||
|
case ~/.*linux.*/: CURRENT = LINUX; break;
|
||
|
case ~/.*darwin.*/: CURRENT = MACOSX; break;
|
||
|
case ~/.*osx.*/: CURRENT = MACOSX; break;
|
||
|
case ~/.*win.*/: CURRENT = WINDOWS; break;
|
||
|
default:
|
||
|
String m = "SupportedOS: unrecognized platform: ${p}"
|
||
|
println(m)
|
||
|
throw new IllegalArgumentException(m)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public String getName() {
|
||
|
return toString().toLowerCase()
|
||
|
}
|
||
|
|
||
|
public String getDisplayName() {
|
||
|
return getName()
|
||
|
}
|
||
|
public boolean isCurrent() { return this == CURRENT }
|
||
|
public boolean isFreeBSD() { return false }
|
||
|
public boolean isLinux() { return this == LINUX }
|
||
|
public boolean isMacOsX() { return this == MACOSX }
|
||
|
public boolean isSolaris() { return false }
|
||
|
public boolean isWindows() { return this == WINDOWS }
|
||
|
|
||
|
}
|
||
|
|
||
|
public String adjustArch(String arch) {
|
||
|
switch(arch) {
|
||
|
case ~/.*64.*/: return 'x86_64'
|
||
|
default: return 'i386'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ext {
|
||
|
currentPlatform = SupportedOS.CURRENT.getName()
|
||
|
currentArch = adjustArch(System.properties['os.arch'])
|
||
|
currentPlatformArch = "${currentPlatform}-${currentArch}"
|
||
|
|
||
|
platform = project.hasProperty('platform') ? platform : currentPlatform
|
||
|
arch = project.hasProperty('arch') ? arch : currentArch
|
||
|
platformArch = "${platform}-${arch}"
|
||
|
|
||
|
java_home = System.properties.'java.home'
|
||
|
if(java_home.endsWith("/jre")) {
|
||
|
java_home = java_home.substring(0, java_home.length() - "/jre".length())
|
||
|
}
|
||
|
java_home = java_home
|
||
|
|
||
|
libDir = "${buildDir}/lib"
|
||
|
lzmaDir = "${libDir}/lzma"
|
||
|
|
||
|
buildOptions = ['', '-lzma']
|
||
|
}
|
||
|
|
||
|
repositories {
|
||
|
ivy {
|
||
|
name "ivyLocal"
|
||
|
url "${System.env.HOME}/.ivy2/local"
|
||
|
layout 'maven'
|
||
|
}
|
||
|
|
||
|
ivy {
|
||
|
name "jcenter"
|
||
|
if(version.contains("SNAPSHOT")) {
|
||
|
url "http://oss.jfrog.org/artifactory/oss-snapshot-local"
|
||
|
} else {
|
||
|
url "http://oss.jfrog.org/artifactory/oss-release-local"
|
||
|
}
|
||
|
layout 'maven'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
configurations {
|
||
|
create('windows-i386')
|
||
|
create('windows-x86_64')
|
||
|
}
|
||
|
|
||
|
dependencies {
|
||
|
'windows-i386' "com.readytalk:win32:1.0.0-SNAPSHOT"
|
||
|
'windows-x86_64' "com.readytalk:win64:1.0.0-SNAPSHOT"
|
||
|
}
|
||
|
|
||
|
model {
|
||
|
platforms {
|
||
|
create(platformArch) {
|
||
|
operatingSystem SupportedOS.valueOf(platform.toUpperCase())
|
||
|
architecture "${arch}"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
tasks {
|
||
|
buildOptions.each { buildOption ->
|
||
|
platforms.each { platform ->
|
||
|
if(platform.operatingSystem.name == "windows") {
|
||
|
def artifactName = platform.architecture.name == "i386" ? 'win32' : 'win64'
|
||
|
|
||
|
task "extract${platform.name}${buildOption}"(type: Copy) {
|
||
|
from {
|
||
|
tarTree(configurations."${platform.name}".find { it.name =~ artifactName })
|
||
|
}
|
||
|
into "${libDir}/tools"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
task "build${platform.name}${buildOption}"(type: Exec) {
|
||
|
executable "make"
|
||
|
args "platform=${platform.operatingSystem.name}",
|
||
|
"arch=${platform.architecture.name}"
|
||
|
|
||
|
if(buildOption == "-lzma") {
|
||
|
dependsOn 'extractLzma'
|
||
|
args "lzma=${lzmaDir}"
|
||
|
}
|
||
|
|
||
|
if(platform.operatingSystem.name == "windows") {
|
||
|
dependsOn "extract${platform.name}${buildOption}"
|
||
|
args "win32=${libDir}/tools/win32",
|
||
|
"win64=${libDir}/tools/win64"
|
||
|
}
|
||
|
environment JAVA_HOME: java_home
|
||
|
}
|
||
|
|
||
|
assemble {
|
||
|
dependsOn "build${platform.name}${buildOption}"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
tasks.withType(JavaCompile) {
|
||
|
sourceCompatibility = "1.6"
|
||
|
targetCompatibility = "1.6"
|
||
|
|
||
|
options.with {
|
||
|
encoding = "UTF-8"
|
||
|
bootClasspath = sourceSets.main.output.classesDir
|
||
|
}
|
||
|
}
|
||
|
|
||
|
sourceSets {
|
||
|
main {
|
||
|
java {
|
||
|
srcDir 'classpath'
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
javadoc {
|
||
|
title = "Avian v${version} Class Library API"
|
||
|
}
|
||
|
|
||
|
task javadocJar(type: Jar) {
|
||
|
dependsOn javadoc
|
||
|
classifier = 'javadoc'
|
||
|
from {
|
||
|
javadoc.destinationDir
|
||
|
}
|
||
|
}
|
||
|
|
||
|
jar {
|
||
|
baseName "classpath-avian"
|
||
|
}
|
||
|
|
||
|
task downloadLzma(type: Exec) {
|
||
|
commandLine "curl"
|
||
|
args "--create-dirs", "-o", "${lzmaDir}/lzma920.tar.bz2", "-f", "http://oss.readytalk.com/avian-web/lzma920.tar.bz2"
|
||
|
}
|
||
|
|
||
|
task extractLzma(type: Copy) {
|
||
|
dependsOn downloadLzma
|
||
|
from {
|
||
|
tarTree(resources.bzip2("${lzmaDir}/lzma920.tar.bz2"))
|
||
|
}
|
||
|
into lzmaDir
|
||
|
}
|
||
|
|
||
|
task install {
|
||
|
dependsOn assemble, publish
|
||
|
}
|
||
|
|
||
|
publishing {
|
||
|
repositories {
|
||
|
add(project.repositories."ivyLocal")
|
||
|
}
|
||
|
|
||
|
publications {
|
||
|
|
||
|
ivy(IvyPublication) {
|
||
|
from components.java
|
||
|
|
||
|
artifact(javadocJar)
|
||
|
|
||
|
artifact("vm.pro") {
|
||
|
name "vm"
|
||
|
type "proguard"
|
||
|
extension "pro"
|
||
|
}
|
||
|
|
||
|
module "classpath-avian"
|
||
|
}
|
||
|
|
||
|
create("tools-avian-${currentPlatformArch}", IvyPublication) {
|
||
|
module "tools-avian-${currentPlatformArch}"
|
||
|
|
||
|
def publishBinSuffix = currentPlatform == "windows" ? "exe" : "bin"
|
||
|
def binSuffix = currentPlatform == "windows" ? ".exe" : ""
|
||
|
artifact("${buildDir}/${currentPlatform}-${currentArch}/binaryToObject/binaryToObject${binSuffix}") {
|
||
|
name "binaryToObject"
|
||
|
type publishBinSuffix
|
||
|
extension publishBinSuffix
|
||
|
}
|
||
|
}
|
||
|
|
||
|
buildOptions.each { buildOption ->
|
||
|
platforms.each { platform ->
|
||
|
def binSuffix=""
|
||
|
def publishBinSuffix="bin"
|
||
|
|
||
|
create("${platform.name}${buildOption}", IvyPublication) {
|
||
|
def nativeBuildDir = "${buildDir}/${platform.operatingSystem.name}-${platform.architecture.name}${buildOption}"
|
||
|
|
||
|
if(platform.operatingSystem.name == "windows") {
|
||
|
publishBinSuffix = "exe"
|
||
|
binSuffix = ".${publishBinSuffix}"
|
||
|
}
|
||
|
|
||
|
module "runtime-avian${buildOption}-${platform.name}"
|
||
|
|
||
|
artifact("${nativeBuildDir}/avian${binSuffix}") {
|
||
|
name "avian"
|
||
|
type publishBinSuffix
|
||
|
extension publishBinSuffix
|
||
|
}
|
||
|
|
||
|
artifact("${nativeBuildDir}/libavian.a") {
|
||
|
name "libavian"
|
||
|
type "a"
|
||
|
extension "a"
|
||
|
}
|
||
|
|
||
|
if (buildOption == "-lzma") {
|
||
|
artifact("${nativeBuildDir}/libavian-lzma.a") {
|
||
|
name "libavian-lzma"
|
||
|
type "a"
|
||
|
extension "a"
|
||
|
}
|
||
|
|
||
|
artifact("${nativeBuildDir}/lzma/lzma${binSuffix}") {
|
||
|
name "lzma"
|
||
|
type publishBinSuffix
|
||
|
extension publishBinSuffix
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
artifactoryPublish {
|
||
|
onlyIf {
|
||
|
// TRAVIS_BRANCH reports master if it is a master build or a PR going to master
|
||
|
// TRAVIS_PULL_REQUEST reports false if not a pull request and the PR number if it is
|
||
|
System.env.'TRAVIS_BRANCH' == "master" && System.env.'TRAVIS_PULL_REQUEST' == "false"
|
||
|
}
|
||
|
dependsOn assemble
|
||
|
}
|
||
|
|
||
|
artifactory {
|
||
|
contextUrl = "http://oss.jfrog.org"
|
||
|
|
||
|
resolve {
|
||
|
repository {
|
||
|
repoKey = 'libs-releases'
|
||
|
}
|
||
|
}
|
||
|
|
||
|
publish {
|
||
|
repository {
|
||
|
repoKey = 'oss-snapshot-local'
|
||
|
username = System.env.BINTRAY_USER
|
||
|
password = System.env.BINTRAY_API_KEY
|
||
|
ivy {
|
||
|
ivyLayout = "[organisation]/[module]/[revision]/ivy-[revision].xml"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
defaults {
|
||
|
platforms.each {
|
||
|
publications it.name
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
task wrapper(type: Wrapper) {
|
||
|
distributionUrl = 'http://services.gradle.org/distributions/gradle-2.0-bin.zip'
|
||
|
}
|