313 lines
7.0 KiB
Groovy
313 lines
7.0 KiB
Groovy
buildscript {
|
|
repositories { mavenCentral() }
|
|
dependencies { classpath 'org.ajoberstar:gradle-git:0.2.3' }
|
|
}
|
|
|
|
plugins {
|
|
id 'eclipse'
|
|
}
|
|
|
|
eclipse.project.natures 'org.eclipse.pde.PluginNature'
|
|
|
|
sourceSets.test.java.srcDirs = ['src']
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// download and extract kawa 3.0 "kawa.jar"
|
|
//
|
|
|
|
task downloadKawa(type: Exec) {
|
|
commandLine "wget", "ftp://ftp.gnu.org/pub/gnu/kawa/kawa-3.0.zip"
|
|
workingDir "$temporaryDir"
|
|
def destination = file("$temporaryDir/kawa-3.0.zip")
|
|
enabled = !destination.exists() //to clone only once
|
|
}
|
|
|
|
task extractKawa(type: Copy, dependsOn: downloadKawa) {
|
|
from(zipTree("${downloadKawa.temporaryDir}/kawa-3.0.zip")) {
|
|
include "kawa-3.0/lib/kawa.jar"
|
|
eachFile {
|
|
relativePath new RelativePath(!directory, relativePath.lastName)
|
|
}
|
|
}
|
|
into projectDir
|
|
includeEmptyDirs false
|
|
outputs.file "kawa.jar"
|
|
}
|
|
|
|
task cleanExtractKawa(type: Delete) {
|
|
delete files(extractKawa)[0]
|
|
}
|
|
|
|
clean.dependsOn cleanExtractKawa
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// build kawa chess
|
|
//
|
|
import org.ajoberstar.gradle.git.tasks.*
|
|
|
|
task getKawaChess(type: GitClone) {
|
|
def destination = file("$temporaryDir/kawachess")
|
|
uri = "https://github.com/ttu-fpclub/kawa-chess"
|
|
destinationPath = destination
|
|
bare = false
|
|
enabled = !destination.exists() //to clone only once
|
|
}
|
|
|
|
task compileChessFiles(type: JavaExec) {
|
|
def kawaImg = file('kawa-chess/img.scm')
|
|
def kawaPos = file('kawa-chess/pos.scm')
|
|
def kawaChess = file('kawa-chess/chess.scm')
|
|
def kawaGui = file('kawa-chess/gui.scm')
|
|
inputs.file kawaImg
|
|
inputs.file kawaPos
|
|
inputs.file kawaChess
|
|
inputs.file kawaGui
|
|
|
|
workingDir = file('kawa-chess')
|
|
|
|
def kawaJar = new File("kawa.jar")
|
|
inputs.file kawaJar
|
|
classpath kawaJar
|
|
|
|
main 'kawa.repl'
|
|
args '-C', kawaImg, kawaPos, kawaChess, kawaGui
|
|
}
|
|
|
|
compileChessFiles.dependsOn extractKawa
|
|
compileChessFiles.dependsOn getKawaChess
|
|
|
|
task compileChessMain(type: JavaExec, dependsOn: compileChessFiles) {
|
|
def kawaMain = file('kawa-chess/main.scm')
|
|
inputs.file kawaMain
|
|
|
|
workingDir = file('kawa-chess')
|
|
|
|
def kawaJar = new File("kawa.jar")
|
|
inputs.file kawaJar
|
|
classpath kawaJar
|
|
|
|
main 'kawa.repl'
|
|
args '--main', '-C', kawaMain
|
|
}
|
|
|
|
task buildChessJar(type: Jar, dependsOn: compileChessMain) {
|
|
from file('kawa-chess')
|
|
baseName 'kawachess'
|
|
version null
|
|
destinationDir projectDir
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// build the kawa test jar
|
|
//
|
|
|
|
task compileKawaTestMain(type: JavaExec, dependsOn: extractKawa) {
|
|
def kawaMain = file('kawasrc/test.scm')
|
|
inputs.file kawaMain
|
|
|
|
workingDir = file('kawasrc')
|
|
|
|
def kawaJar = new File("kawa.jar")
|
|
inputs.file kawaJar
|
|
classpath kawaJar
|
|
|
|
main 'kawa.repl'
|
|
args '--main', '-C', kawaMain
|
|
}
|
|
|
|
task buildKawaTestJar(type: Jar, dependsOn: compileKawaTestMain) {
|
|
from file('kawasrc')
|
|
baseName 'kawatest'
|
|
version null
|
|
destinationDir projectDir
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// download and extract "bcel-5.2.jar"
|
|
//
|
|
|
|
task downloadBcel(type: VerifiedDownload) {
|
|
ext.version = '5.2'
|
|
def archive = "bcel-${version}.tar.gz"
|
|
src "http://archive.apache.org/dist/jakarta/bcel/binaries/$archive"
|
|
dest "$temporaryDir/$archive"
|
|
checksum '19bffd7f217b0eae415f1ef87af2f0bc'
|
|
useETag false
|
|
}
|
|
|
|
task extractBcel(type: Copy, dependsOn: downloadBcel) {
|
|
from(tarTree(downloadBcel.dest)) {
|
|
include "bcel-${downloadBcel.version}/bcel-${downloadBcel.version}.jar"
|
|
eachFile {
|
|
relativePath new RelativePath(!directory, relativePath.lastName)
|
|
}
|
|
}
|
|
into projectDir
|
|
includeEmptyDirs false
|
|
outputs.file "bcel-${downloadBcel.version}.jar"
|
|
}
|
|
|
|
task cleanExtractBcel(type: Delete) {
|
|
delete files(extractBcel)[0]
|
|
}
|
|
|
|
clean.dependsOn cleanExtractBcel
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// download "java-cup-11a.jar"
|
|
//
|
|
|
|
task downloadJavaCup(type: VerifiedDownload) {
|
|
def archive = 'java-cup-11a.jar'
|
|
src "http://www2.cs.tum.edu/projects/cup/$archive"
|
|
dest "$projectDir/$archive"
|
|
checksum '2bda8c40abd0cbc295d3038643d6e4ec'
|
|
}
|
|
|
|
task cleanDownloadJavaCup(type: Delete) {
|
|
delete downloadJavaCup
|
|
}
|
|
|
|
clean.dependsOn cleanDownloadJavaCup
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// collect "JLex.jar"
|
|
//
|
|
|
|
task collectJLex(type: Jar) {
|
|
from project(':com.ibm.wala.cast.java.test.data').compileTestJava
|
|
include 'JLex/'
|
|
baseName 'JLex'
|
|
version null
|
|
destinationDir projectDir
|
|
}
|
|
|
|
task cleanCollectJLex(type: Delete) {
|
|
delete collectJLex
|
|
}
|
|
|
|
clean.dependsOn cleanCollectJLex
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// generate "hello_hash.jar"
|
|
//
|
|
|
|
task downloadOcamlJava(type: VerifiedDownload) {
|
|
def version = '2.0-alpha1'
|
|
ext.basename = "ocamljava-$version"
|
|
def archive = "${basename}.tar.gz"
|
|
src "http://www.ocamljava.org/downloads/download.php?version=$version-bin"
|
|
dest "$temporaryDir/$archive"
|
|
checksum '45feec6e3889f5073a39c2c4c84878d1'
|
|
}
|
|
|
|
task unpackOcamlJava(type: Sync, dependsOn: downloadOcamlJava) {
|
|
from tarTree(downloadOcamlJava.dest)
|
|
into temporaryDir
|
|
}
|
|
|
|
task generateHelloHashJar(type: JavaExec, dependsOn: unpackOcamlJava) {
|
|
def ocamlSource = file('ocaml/hello_hash.ml')
|
|
inputs.file ocamlSource
|
|
|
|
def jarTarget = file('hello_hash.jar')
|
|
outputs.file jarTarget
|
|
outputs.cacheIf { true }
|
|
|
|
def ocamlJavaJar = new File("$unpackOcamlJava.destinationDir/$downloadOcamlJava.basename/lib/ocamljava.jar")
|
|
inputs.file ocamlJavaJar
|
|
classpath ocamlJavaJar
|
|
|
|
main 'ocaml.compilers.ocamljavaMain'
|
|
args ocamlSource, '-o', jarTarget
|
|
}
|
|
|
|
task cleanGenerateHelloHashJar(type: Delete) {
|
|
delete generateHelloHashJar
|
|
delete fileTree('ocaml') {
|
|
exclude '*.ml'
|
|
exclude '.gitignore'
|
|
}
|
|
}
|
|
|
|
clean.dependsOn cleanGenerateHelloHashJar
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// collect "com.ibm.wala.core.testdata_1.0.0.jar"
|
|
//
|
|
|
|
task collectTestData(type: Jar) {
|
|
version '1.0.0'
|
|
archiveName "${baseName}_${version}.${extension}"
|
|
from compileTestJava
|
|
from 'classes'
|
|
includeEmptyDirs false
|
|
destinationDir projectDir
|
|
}
|
|
|
|
task cleanCollectTestData(type: Delete) {
|
|
delete collectTestData
|
|
}
|
|
|
|
clean.dependsOn cleanCollectTestData
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// collect "com.ibm.wala.core.testdata_1.0.0a.jar"
|
|
//
|
|
|
|
task collectTestDataA(type: Jar) {
|
|
version '1.0.0a'
|
|
archiveName "${baseName}_${version}.${extension}"
|
|
from compileTestJava
|
|
from 'classes'
|
|
includeEmptyDirs false
|
|
destinationDir projectDir
|
|
exclude (
|
|
'**/CodeDeleted.class',
|
|
'**/SortingExample.class',
|
|
'**/A.class',
|
|
)
|
|
}
|
|
|
|
task cleanColllectTestDataA(type: Delete) {
|
|
delete collectTestDataA
|
|
}
|
|
|
|
clean.dependsOn cleanCollectTestDataA
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// help Eclipse build these extra jars when needed
|
|
//
|
|
|
|
afterEclipseBuildshipImport {
|
|
dependsOn(
|
|
collectJLex,
|
|
collectTestData,
|
|
collectTestDataA,
|
|
downloadJavaCup,
|
|
extractBcel,
|
|
generateHelloHashJar,
|
|
buildChessJar,
|
|
buildKawaTestJar,
|
|
)
|
|
}
|