mirror of
https://github.com/fluencelabs/asmble
synced 2025-03-16 03:00:51 +00:00
134 lines
3.6 KiB
Groovy
134 lines
3.6 KiB
Groovy
group 'asmble'
|
|
version '0.1.0'
|
|
|
|
buildscript {
|
|
ext.kotlin_version = '1.1.51'
|
|
ext.asm_version = '5.2'
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven {
|
|
url "https://plugins.gradle.org/m2/"
|
|
}
|
|
}
|
|
dependencies {
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
classpath 'me.champeau.gradle:jmh-gradle-plugin:0.4.4'
|
|
}
|
|
}
|
|
|
|
allprojects {
|
|
apply plugin: 'java'
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
}
|
|
|
|
project(':emscripten-runtime') {
|
|
dependencies {
|
|
compile project(':annotations')
|
|
}
|
|
}
|
|
|
|
project(':compiler') {
|
|
apply plugin: 'kotlin'
|
|
apply plugin: 'application'
|
|
|
|
applicationName = "asmble"
|
|
mainClassName = "asmble.cli.MainKt"
|
|
|
|
distTar.archiveName = 'asmble.tar'
|
|
distZip.archiveName = 'asmble.zip'
|
|
|
|
dependencies {
|
|
compile project(':emscripten-runtime')
|
|
|
|
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
|
|
compile "org.ow2.asm:asm-tree:$asm_version"
|
|
compile "org.ow2.asm:asm-util:$asm_version"
|
|
testCompile 'junit:junit:4.12'
|
|
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
|
|
testCompile "org.ow2.asm:asm-debug-all:$asm_version"
|
|
}
|
|
}
|
|
|
|
project(':examples') {
|
|
subprojects {
|
|
dependencies {
|
|
compileOnly project(':compiler')
|
|
}
|
|
|
|
ext.rustBuildRelease = true
|
|
|
|
task rustToWasm(type: Exec) {
|
|
if (rustBuildRelease) {
|
|
commandLine 'cargo', 'build', '--release'
|
|
} else {
|
|
commandLine 'cargo', 'build'
|
|
}
|
|
}
|
|
|
|
ext.wasmFileName = { ->
|
|
def buildType = rustBuildRelease ? 'release' : 'debug'
|
|
def wasmFiles = fileTree(dir: "target/wasm32-unknown-unknown/$buildType", includes: ['*.wasm']).files
|
|
if (wasmFiles.size() != 1) throw new GradleException('Expected single WASM file, got ' + wasmFiles.size())
|
|
return wasmFiles.iterator().next()
|
|
}
|
|
|
|
task wasmFile() {
|
|
dependsOn rustToWasm
|
|
doFirst {
|
|
println 'File: ' + wasmFileName()
|
|
}
|
|
}
|
|
|
|
task showWast(type: JavaExec) {
|
|
dependsOn rustToWasm
|
|
classpath configurations.compileClasspath
|
|
main = 'asmble.cli.MainKt'
|
|
doFirst {
|
|
args 'translate', wasmFileName()
|
|
}
|
|
}
|
|
|
|
task compileWasm(type: JavaExec) {
|
|
dependsOn rustToWasm
|
|
classpath configurations.compileClasspath
|
|
main = 'asmble.cli.MainKt'
|
|
doFirst {
|
|
// args 'help', 'compile'
|
|
def outFile = 'build/wasm-classes/' + wasmCompiledClassName.replace('.', '/') + '.class'
|
|
file(outFile).parentFile.mkdirs()
|
|
args 'compile', wasmFileName(), wasmCompiledClassName, '-out', outFile
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
project(':examples:rust-simple') {
|
|
apply plugin: 'application'
|
|
ext.wasmCompiledClassName = 'asmble.generated.RustSimple'
|
|
dependencies {
|
|
compile files('build/wasm-classes')
|
|
}
|
|
compileJava {
|
|
dependsOn compileWasm
|
|
}
|
|
|
|
mainClassName = 'asmble.examples.rustsimple.Main'
|
|
}
|
|
|
|
project(':examples:rust-string') {
|
|
apply plugin: 'application'
|
|
ext.wasmCompiledClassName = 'asmble.generated.RustString'
|
|
dependencies {
|
|
compile files('build/wasm-classes')
|
|
}
|
|
compileJava {
|
|
dependsOn compileWasm
|
|
}
|
|
|
|
mainClassName = 'asmble.examples.ruststring.Main'
|
|
} |