summaryrefslogtreecommitdiff
path: root/src/main/groovy/frege/gradle
diff options
context:
space:
mode:
authorMark Perry <maperry78+github@gmail.com>2015-09-16 15:49:24 +1000
committerMark Perry <maperry78+github@gmail.com>2015-09-16 15:49:24 +1000
commit06a945f188b24a43f2a451d85a110deff3fd799c (patch)
treee68851a85e6844e1d17fee64d9c0b73d4cfbbaa2 /src/main/groovy/frege/gradle
parent492ec7d5a1856672800b51c898099678bb95ac62 (diff)
downloadfrege-gradle-plugin-06a945f188b24a43f2a451d85a110deff3fd799c.tar.gz
frege-gradle-plugin-06a945f188b24a43f2a451d85a110deff3fd799c.tar.bz2
frege-gradle-plugin-06a945f188b24a43f2a451d85a110deff3fd799c.zip
Use internal compilation, fails with thread pool issue
Diffstat (limited to 'src/main/groovy/frege/gradle')
-rw-r--r--src/main/groovy/frege/gradle/CompileTask.groovy48
1 files changed, 45 insertions, 3 deletions
diff --git a/src/main/groovy/frege/gradle/CompileTask.groovy b/src/main/groovy/frege/gradle/CompileTask.groovy
index d0a5e21..5201cd1 100644
--- a/src/main/groovy/frege/gradle/CompileTask.groovy
+++ b/src/main/groovy/frege/gradle/CompileTask.groovy
@@ -1,11 +1,15 @@
package frege.gradle
+import frege.compiler.Main
+import frege.prelude.PreludeBase
+import frege.runtime.Lambda
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.tasks.*
import org.gradle.process.internal.DefaultJavaExecAction
import org.gradle.process.internal.JavaExecAction
import org.gradle.api.internal.file.FileResolver
+import fj.data.Option
class CompileTask extends DefaultTask {
@@ -15,6 +19,8 @@ class CompileTask extends DefaultTask {
static String DEFAULT_TEST_CLASSES_DIR = "classes/test"
static String DEFAULT_TEST_SRC_DIR = "src/test/frege"
+ static Boolean USE_EXTERNAl = false
+
Boolean help = false
@Optional @Input
@@ -80,6 +86,7 @@ class CompileTask extends DefaultTask {
@TaskAction
void executeCompile() {
+
if (! outputDir.exists() ) {
logger.info "Creating output directory '${outputDir.absolutePath}'."
outputDir.mkdirs()
@@ -90,6 +97,9 @@ class CompileTask extends DefaultTask {
FileResolver fileResolver = getServices().get(FileResolver.class)
JavaExecAction action = new DefaultJavaExecAction(fileResolver)
action.setMain("frege.compiler.Main")
+ def pf = project.files(project.configurations.compile)
+ def path = pf.getAsPath()
+ logger.info("Compile configuation as path: $path")
action.setClasspath(project.files(project.configurations.compile))
def args = []
@@ -105,7 +115,38 @@ class CompileTask extends DefaultTask {
logger.info("Calling Frege compiler with args: '$args'")
action.args(args)
- action.execute()
+
+ if (USE_EXTERNAl) {
+ action.execute()
+ } else {
+ def args2 = args as String[]
+// frege.compiler.Main.main(args2)
+ compile(args2)
+// frege.compiler.Main.runCompiler(args2)
+ }
+ }
+
+ void compile(String[] paramArrayOfString) {
+ long l1 = System.nanoTime();
+// Main.IJ._mainƒd0fa0028
+ Integer localInteger = frege.runtime.Runtime.runMain(
+ PreludeBase.TST.performUnsafe(
+// (Lambda)Main.?._main�d0fa0028.inst.apply(PreludeBase._toList(paramArrayOfString)).forced()));
+ (Lambda)Main.IJ._mainƒd0fa0028.inst.apply(PreludeBase._toList(paramArrayOfString)).forced()
+ )
+ );
+ long l2 = System.nanoTime();
+ ((PrintWriter)frege.runtime.Runtime.stderr.get()).println("runtime " + (l2 - l1 + 500000L) / 1000000L / 1000.0D + " wallclock seconds.");
+ if (localInteger != null) {
+// System.exit(localInteger.intValue());
+ }
+ }
+
+ List<String> totalFregeClasspath(Project p, List<String> fp) {
+ def result = []
+ result.addAll(project.files(project.configurations.compile).getFiles().toList().collect { File f -> f.absolutePath })
+ result.addAll(fp)
+ result
}
protected List assembleArguments() {
@@ -129,9 +170,10 @@ class CompileTask extends DefaultTask {
args << "-d"
args << outputDir
- if (!fregePackageDirs.isEmpty()) {
+ def fp = USE_EXTERNAl ? fregePackageDirs : totalFregeClasspath(project, fregePackageDirs)
+ if (!fp.isEmpty()) {
args << "-fp"
- args << fregePackageDirs.join(";")
+ args << fp.join(";")
}
if (!module && !extraArgs) {