Skip to content
Snippets Groups Projects
build.gradle 7.78 KiB
import org.jastadd.relast.plugin.RelastTest

apply plugin: 'java'
apply plugin: 'jastadd'
apply plugin: 'application'
apply plugin: "idea"
apply plugin: "org.jastadd.relast.plugin"

sourceCompatibility = 1.8

mainClassName = 'org.jastadd.relast.compiler.Compiler'

repositories {
    jcenter()
}

buildscript {
    repositories.jcenter()
    dependencies {
        classpath 'org.jastadd:jastaddgradle:1.13.3'
    }
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.0'
    testCompile 'org.assertj:assertj-core:3.12.1'
    compile 'com.fasterxml.jackson.core:jackson-core:2.9.8'
    compile 'com.fasterxml.jackson.core:jackson-databind:2.9.8'
    runtime 'org.jastadd:jastadd:2.3.2'
    compile group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0'
    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0'
}

sourceSets {
    main {
        java.srcDir "src/gen/java"
        java.srcDir "buildSrc/gen/java"
    }
    test {
        java.srcDir "src/test/java-gen"
    }
}

jar {
    manifest {
        attributes "Main-Class": 'org.jastadd.relast.compiler.Compiler'
    }

    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
}

jastadd {
    configureModuleBuild()
    modules {
        //noinspection GroovyAssignabilityCheck
        module("RelAst") {

            java {
                basedir "."
                include "src/main/**/*.java"
                include "src/gen/**/*.java"
            }

            jastadd {
                basedir "src/main/jastadd/"
                include "**/*.ast"
                include "**/*.jadd"
                include "**/*.jrag"
            }

            scanner {
                include "src/main/jastadd/RelAst.flex"
            }

            parser {
                include "src/main/jastadd/Preamble.parser"
                include "src/main/jastadd/RelAst.parser"
            }
        }
    }

    cleanGen.doFirst {
        delete "src/gen/java/org"
        delete "src/gen-res/BuildInfo.properties"
    }

    preprocessParser.doFirst {

        args += ["--no-beaver-symbol"]

    }

    module = "RelAst"

    astPackage = 'org.jastadd.relast.ast'

    parser.name = 'RelAstParser'

    genDir = 'src/gen/java'

    buildInfoDir = 'src/gen-res'

    scanner.genDir = "src/gen/java/org/jastadd/relast/scanner"
    parser.genDir = "src/gen/java/org/jastadd/relast/parser"

    jastaddOptions = ["--lineColumnNumbers", "--safeLazy", "--visitCheck=true", "--rewrite=cnta", "--cache=all"]
}

task preprocessRelationTest(type: JavaExec, group: 'verification') {

    doFirst {
        delete 'src/test/jastadd/relations/Relations.ast', 'src/test/jastadd/relations/Relations.jadd'
    }

    classpath = sourceSets.main.runtimeClasspath
    main = 'org.jastadd.relast.compiler.Compiler'
    //noinspection GroovyAssignabilityCheck
    args 'src/test/jastadd/relations/Relations.relast', '--quiet', '--useJastAddNames', '--file', '--grammarName=src/test/jastadd/relations/Relations'
}

task doublePreprocessRelationTest(type: JavaExec, group: 'verification') {

    doFirst {
        delete 'src/test/jastadd/relations/Relations2.ast', 'src/test/jastadd/relations/Relations2.jadd'
    }

    classpath = sourceSets.main.runtimeClasspath
    main = 'org.jastadd.relast.compiler.Compiler'
    //noinspection GroovyAssignabilityCheck
    args 'src/test/jastadd/relations/Relations.ast', '--quiet', '--useJastAddNames', '--file', '--grammarName=src/test/jastadd/relations/Relations2'
}

task compileRelationTest(type: JavaExec, group: 'verification') {

    doFirst {
        delete 'src/test/java-gen/relations'
    }

    classpath = sourceSets.main.runtimeClasspath
    main = 'org.jastadd.JastAdd'
    //noinspection GroovyAssignabilityCheck
    args '--o=src/test/java-gen/', '--package=relations.ast',
            'src/test/jastadd/relations/Relations.ast',
            'src/test/jastadd/relations/Relations.jadd',
            'src/test/jastadd/Utils.jadd'
}

test.dependsOn compileRelationTest
compileRelationTest.dependsOn doublePreprocessRelationTest
doublePreprocessRelationTest.dependsOn preprocessRelationTest

task compileDefaultNamesTest(type: RelastTest) {
    relastFiles 'src/test/jastadd/relations/Relations.relast'
    grammarName = 'src/test/jastadd/relations/Relations3'
    packageName = 'defaultnames.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd'
}

task compileDefaultNamesResolverTest(type: RelastTest) {
    relastFiles 'src/test/jastadd/resolver/Resolver.relast'
    grammarName = 'src/test/jastadd/resolver/Resolver2'
    resolverHelper = true
    packageName = 'defaultnames.resolver.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd',
                   'src/test/jastadd/resolver/ResolverUtils.jadd',
                   'src/test/jastadd/resolver/MyRefResolver.jadd'
}

task compileLowerBoundsTest(type: RelastTest) {
    relastFiles 'src/test/jastadd/lowerbounds/LowerBounds.relast'
    grammarName = 'src/test/jastadd/lowerbounds/LowerBounds'
    useJastAddNames = true
    packageName = 'lowerbounds.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd'
}

task compileMultipleTest(type: RelastTest) {
    relastFiles 'src/test/jastadd/multiple/Part1.relast',
                'src/test/jastadd/multiple/Part2.relast',
                'src/test/jastadd/multiple/Part3.relast'
    grammarName = 'src/test/jastadd/multiple/Multiple'
    useJastAddNames = true
    packageName = 'multiple.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd'
}

task compileMultipleMixedTest(type: RelastTest) {
    relastFiles 'src/test/jastadd/multiple-mixed/Part1.relast',
            'src/test/jastadd/multiple-mixed/Part2.relast',
            'src/test/jastadd/multiple-mixed/Part3.relast'
    grammarName = 'src/test/jastadd/multiple/Multiple'
    useJastAddNames = true
    packageName = 'mixed.multiple.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd'
}

task compileResolverTest(type: RelastTest) {
    relastFiles 'src/test/jastadd/resolver/Resolver.relast'
    grammarName = 'src/test/jastadd/resolver/Resolver'
    useJastAddNames = true
    resolverHelper = true
    packageName = 'resolver.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd',
            'src/test/jastadd/resolver/ResolverUtils.jadd',
            'src/test/jastadd/resolver/MyRefResolver.jadd'
}

task compileResolver2Test(type: RelastTest) {
    relastFiles 'src/test/jastadd/resolver2/Resolver.relast'
    grammarName = 'src/test/jastadd/resolver2/Resolver'
    useJastAddNames = true
    resolverHelper = true
    packageName = 'resolver2.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd',
            'src/test/jastadd/resolver2/ResolverUtils.jadd',
            'src/test/jastadd/resolver2/MyRefResolver.jadd'
}

task compileListNamesTest(type: RelastTest) {
    relastFiles 'src/test/jastadd/listnames/ListNames.relast'
    grammarName = 'src/test/jastadd/listnames/ListNames'
    useJastAddNames = true
    jastAddList = 'ListyMcListface'
    packageName = 'listnames.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd'
}

task compileSerializerTest(type: RelastTest) {
    relastFiles 'src/test/jastadd/serializer/Serializer.relast'
    grammarName = 'src/test/jastadd/serializer/Serializer'
    useJastAddNames = true
    serializer = 'jackson'
    packageName = 'serializer.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd'
}

task compileSerializerDefaultNamesTest(type: RelastTest) {
    relastFiles 'src/test/jastadd/serializer-names/Serializer.relast'
    grammarName = 'src/test/jastadd/serializer-names/Serializer'
    serializer = 'jackson'
    packageName = 'defaultnames.serializer.ast'
    moreInputFiles 'src/test/jastadd/Utils.jadd'
}

test {
    outputs.upToDateWhen { false }
    useJUnitPlatform()
}