build.gradle revision 7d1263a4ff78ce92b2008e4664fb855f7d03da87
13f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianconfigurations {
23f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    antlr3
33f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
43f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    jflex
53f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
63f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
73f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianext.antlrSource = 'src/main/antlr3'
83f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianext.antlrOutput =  file(new File(buildDir, '/generated-sources/antlr3'))
93f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
103f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianext.jflexSource = "src/main/jflex"
113f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianext.jflexOutput = file(new File(buildDir, '/generated-sources/jflex'))
123f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
133f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianext.testAntlrSource = 'src/test/antlr3'
143f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopianext.testAntlrOutput = file(new File(buildDir, '/generated-test-sources/antlr3'))
153f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
163f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopiansourceSets.main.java.srcDir antlrOutput
173f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopiansourceSets.main.java.srcDir jflexOutput
183f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
193f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopiansourceSets.test.java.srcDir testAntlrOutput
20458197de008be8fe561286b09f4edddb2f5c540aMathias Agopian
213f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopiandependencies {
22c18790018be5d7ea7061ccbc81f3044e74adc823Dan Stoza    compile project(':util')
23c18790018be5d7ea7061ccbc81f3044e74adc823Dan Stoza    compile project(':dexlib')
243f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    compile 'org.antlr:antlr-runtime:3.2'
253f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    compile 'commons-cli:commons-cli:1.2'
263f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
273f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    testCompile 'junit:junit:4.6'
28c3ebe66b49cfba035e1fd0e160a13db38eb81b0eRiley Andrews
29c3ebe66b49cfba035e1fd0e160a13db38eb81b0eRiley Andrews    antlr3 'org.antlr:antlr:3.2'
303f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    jflex 'de.jflex:jflex:1.4.3'
313f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
323f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
333f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopiantask generateAntlrSource {
343f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    inputs.dir file(antlrSource)
353f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    outputs.dir file(antlrOutput)
3649457ac092071a8f964f7f69156093657ccdc3d0Mathias Agopian    doLast {
373f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mkdir(antlrOutput)
383f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
393f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        def grammars = fileTree(antlrSource).include('**/*.g')
403f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
413f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        ant.java(classname: 'org.antlr.Tool', classpath: configurations.antlr3.asPath, fork: true) {
42ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian            arg(line: '-fo ' + antlrOutput + '/org/jf/smali')
43ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian            arg(line: grammars.files.join(" "))
443f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        }
453f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    }
463f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
473f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
483f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopiantask generateTestAntlrSource {
493f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    inputs.dir file(testAntlrSource)
503f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    outputs.dir file(testAntlrOutput)
513f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    doLast {
523f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        mkdir(testAntlrOutput)
533f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
543f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        def grammars = fileTree(testAntlrSource).include('**/*.g')
553f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
563f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        ant.java(classname: 'org.antlr.Tool', classpath: configurations.antlr3.asPath, fork: true) {
57c6f216955966e93ea983ba800e651af3de6c90e3Andy McFadden            arg(line: '-fo ' + testAntlrOutput + '/org/jf/smali')
583f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian            arg(line: grammars.files.join(" "))
593f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        }
603f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    }
613f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
623f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
633f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopiantask generateJflexSource {
643f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    inputs.dir file(jflexSource)
653f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    outputs.dir file(jflexOutput)
66ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian    doLast {
67ff2ed70fa30f04b90dd1a2c06ec2319e157152d7Mathias Agopian        mkdir(jflexOutput)
683f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
693f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        def grammars = fileTree(jflexSource).include('**/*.flex')
703f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
713f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        ant.java(classname: 'JFlex.Main', classpath: configurations.jflex.asPath, fork: true) {
723f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian            arg(line: '-d ' + jflexOutput + '/org/jf/smali')
733f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian            arg(line: grammars.files.join(" "))
743f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian        }
753f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian    }
763f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian}
773f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
783f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopiancompileJava.dependsOn generateAntlrSource, generateJflexSource
793f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopiancompileTestJava.dependsOn generateTestAntlrSource
803f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias Agopian
813f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopianprocessResources.inputs.properties('version': { -> version})
823f84483382be2d528918cc1a6fbc6a7d68e0b181Mathias AgopianprocessResources.expand('version': { -> version})