aboutsummaryrefslogtreecommitdiff
path: root/src/main/groovy
diff options
context:
space:
mode:
authorDierk Koenig <dierk.koenig@canoo.com>2020-06-23 11:57:12 +0200
committerDierk Koenig <dierk.koenig@canoo.com>2020-06-28 15:47:10 +0200
commit739d5007295f578e033209ddeb05351b81ae4dd0 (patch)
tree6201f355868dda09d838234e8f663bfad5c832f6 /src/main/groovy
parent874490ffa3dfb3380960b7c02923f1fac7a79b9a (diff)
downloadfrege-gradle-plugin-739d5007295f578e033209ddeb05351b81ae4dd0.tar.gz
frege-gradle-plugin-739d5007295f578e033209ddeb05351b81ae4dd0.tar.bz2
frege-gradle-plugin-739d5007295f578e033209ddeb05351b81ae4dd0.zip
compiles and runs with frege-3.25.84.jar and Gradle 5.0
Diffstat (limited to 'src/main/groovy')
-rw-r--r--src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java10
-rw-r--r--src/main/groovy/frege/gradle/plugins/FregePlugin.groovy2
-rw-r--r--src/main/groovy/frege/gradle/tasks/FregeCompile.groovy57
-rw-r--r--src/main/groovy/frege/gradle/tasks/FregeDoc.groovy2
-rw-r--r--src/main/groovy/frege/gradle/tasks/FregeNativeGen.groovy4
-rw-r--r--src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy5
-rw-r--r--src/main/groovy/frege/gradle/tasks/FregeRepl.groovy5
7 files changed, 71 insertions, 14 deletions
diff --git a/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java b/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java
index f45dae4..59fe46e 100644
--- a/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java
+++ b/src/main/groovy/frege/gradle/plugins/FregeBasePlugin.java
@@ -15,8 +15,10 @@ import org.gradle.api.plugins.JavaBasePlugin;
import org.gradle.api.plugins.JavaPluginConvention;
import org.gradle.api.specs.Spec;
import org.gradle.api.tasks.SourceSet;
+import org.gradle.internal.classpath.DefaultClassPath;
import javax.inject.Inject;
+import java.io.File;
import java.util.concurrent.Callable;
public class FregeBasePlugin implements Plugin<Project> {
@@ -63,16 +65,20 @@ public class FregeBasePlugin implements Plugin<Project> {
String compileTaskName = sourceSet.getCompileTaskName("frege");
FregeCompile compile = project.getTasks().create(compileTaskName, FregeCompile.class);
compile.setModule(project.file(defaultSourcePath).getAbsolutePath());
- javaBasePlugin.configureForSourceSet(sourceSet, compile);
+// javaBasePlugin.configureForSourceSet(sourceSet, compile);
compile.getConventionMapping().map("fregepath", new Callable() {
public Object call() throws Exception {
return sourceSet.getCompileClasspath();
}
});
-
compile.dependsOn(sourceSet.getCompileJavaTaskName());
compile.setDescription(String.format("Compiles the %s Frege source.", sourceSet.getName()));
compile.setSource(fregeSourceSet.getFrege());
+
+// compile.setClasspath(sourceSet.getCompileClasspath());
+// compile.setDestinationDir((File)null);
+
+
project.getTasks().getByName(sourceSet.getClassesTaskName()).dependsOn(compileTaskName);
sourceSet.compiledBy(compile);
}
diff --git a/src/main/groovy/frege/gradle/plugins/FregePlugin.groovy b/src/main/groovy/frege/gradle/plugins/FregePlugin.groovy
index b2ca074..3dd7ccc 100644
--- a/src/main/groovy/frege/gradle/plugins/FregePlugin.groovy
+++ b/src/main/groovy/frege/gradle/plugins/FregePlugin.groovy
@@ -37,7 +37,7 @@ class FregePlugin implements Plugin<Project> {
fregeDoc.group = 'frege'
fregeDoc.dependsOn "compileFrege" // TODO remove
SourceSet mainSourceSet = project.sourceSets.main
- fregeDoc.module = mainSourceSet.output.classesDir.absolutePath
+ fregeDoc.module = mainSourceSet.output.classesDirs.first().absolutePath
fregeDoc.classpath = mainSourceSet.runtimeClasspath
}
diff --git a/src/main/groovy/frege/gradle/tasks/FregeCompile.groovy b/src/main/groovy/frege/gradle/tasks/FregeCompile.groovy
index 1b32351..ffd6aa3 100644
--- a/src/main/groovy/frege/gradle/tasks/FregeCompile.groovy
+++ b/src/main/groovy/frege/gradle/tasks/FregeCompile.groovy
@@ -2,6 +2,7 @@ package frege.gradle.tasks
import groovy.transform.TypeChecked
import org.gradle.api.Action
+import org.gradle.api.file.Directory
import org.gradle.api.file.FileCollection
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFiles
@@ -10,6 +11,38 @@ import org.gradle.api.tasks.TaskAction
import org.gradle.api.tasks.compile.AbstractCompile
import org.gradle.process.JavaExecSpec
+/* Compiler flags as of 3.25.84
+
+-d directory target directory for *.java and *.class files
+-fp classpath where to find imported frege packages
+-enc charset charset for source code files, standard is UTF-8
+-enc DEFAULT platform default charset for source code files
+-target n.m generate code for java version n.m, also passed to javac
+-nocp exclude java classpath from -fp
+-hints print more detailed error messages and warnings
+-inline inline functions where possible
+-strict-pats check patterns in multi-argument functions strictly from left to right
+-comments generate commented code
+-explain i[-j] print some debugging output from type checker
+ regarding line(s) i (to j). May help to understand
+ inexplicable type errors better.
+-nowarn don't print warnings (not recommended)
+-v verbose mode on
+-make build outdated or missing imports
+-sp srcpath look for source files in srcpath, default is .
+-target x.y generate code for java version x.y, default is the
+ version of the JVM the compiler is running in.
+-j do not run the java compiler
+-ascii do not use →, ⇒, ∀ and ∷ when presenting types,
+ and use ascii characters for java generics variables
+-greek make greek type variables
+-fraktur make 𝖋𝖗𝖆𝖐𝖙𝖚𝖗 type variables
+-latin make latin type variables
+
+*/
+
+
+
@TypeChecked
class FregeCompile extends AbstractCompile {
@@ -24,6 +57,12 @@ class FregeCompile extends AbstractCompile {
@Input
boolean optimize = false
+ @Input
+ boolean strictPats = false
+
+ @Input
+ boolean excludeJavaClasspath = false
+
boolean verbose = false
@Input
@@ -60,6 +99,9 @@ class FregeCompile extends AbstractCompile {
FileCollection fregepath
@Input
+ File destinationDir
+
+ @Input
String mainClass = "frege.compiler.Main"
@Input
@@ -87,7 +129,7 @@ class FregeCompile extends AbstractCompile {
javaExecSpec.args = compilerArgs
javaExecSpec.classpath = FregeCompile.this.classpath
javaExecSpec.main = mainClass
- javaExecSpec.jvmArgs = jvmArgumentsToUse
+ javaExecSpec.jvmArgs = jvmArgumentsToUse as List<String>
javaExecSpec.errorOutput = System.err;
javaExecSpec.standardOutput = System.out;
}
@@ -114,15 +156,22 @@ class FregeCompile extends AbstractCompile {
}
if (inline & !optimize)
args << "-inline"
+ if (strictPats)
+ args << "-strict-pats"
+ if (excludeJavaClasspath)
+ args << "-nocp"
if (make)
args << "-make"
- if (!compileGeneratedJava) args << "-j"
+ if (!compileGeneratedJava)
+ args << "-j"
if (target != "") {
args << "-target"
args << target
}
- if (comments) args << "-comments"
- if (suppressWarnings) args << "-nowarn"
+ if (comments)
+ args << "-comments"
+ if (suppressWarnings)
+ args << "-nowarn"
if (explain != "") {
args << "-explain"
args << explain
diff --git a/src/main/groovy/frege/gradle/tasks/FregeDoc.groovy b/src/main/groovy/frege/gradle/tasks/FregeDoc.groovy
index 30f62c6..ddd7bca 100644
--- a/src/main/groovy/frege/gradle/tasks/FregeDoc.groovy
+++ b/src/main/groovy/frege/gradle/tasks/FregeDoc.groovy
@@ -1,6 +1,5 @@
package frege.gradle.tasks
-import org.apache.commons.io.output.TeeOutputStream
import org.gradle.api.Action
import org.gradle.api.DefaultTask
import org.gradle.api.GradleException
@@ -9,6 +8,7 @@ import org.gradle.api.tasks.Input
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
+import org.gradle.internal.impldep.org.apache.commons.io.output.TeeOutputStream
import org.gradle.process.JavaExecSpec
class FregeDoc extends DefaultTask {
diff --git a/src/main/groovy/frege/gradle/tasks/FregeNativeGen.groovy b/src/main/groovy/frege/gradle/tasks/FregeNativeGen.groovy
index 6f51218..02edefd 100644
--- a/src/main/groovy/frege/gradle/tasks/FregeNativeGen.groovy
+++ b/src/main/groovy/frege/gradle/tasks/FregeNativeGen.groovy
@@ -7,7 +7,7 @@ import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputFile
import org.gradle.api.tasks.TaskAction
-
+import org.gradle.process.internal.DefaultExecActionFactory
import org.gradle.process.internal.DefaultJavaExecAction
import org.gradle.process.internal.JavaExecAction
@@ -37,7 +37,7 @@ class FregeNativeGen extends DefaultTask {
void gen() {
FileResolver fileResolver = getServices().get(FileResolver.class)
- JavaExecAction action = new DefaultJavaExecAction(fileResolver)
+ JavaExecAction action = new DefaultExecActionFactory(fileResolver).newJavaExecAction()
action.setMain("frege.nativegen.Main")
action.workingDir = project.projectDir
action.standardInput = System.in
diff --git a/src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy b/src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy
index e06236f..afeacac 100644
--- a/src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy
+++ b/src/main/groovy/frege/gradle/tasks/FregeQuickCheck.groovy
@@ -2,6 +2,7 @@ package frege.gradle.tasks
import org.gradle.api.DefaultTask
import org.gradle.api.internal.file.FileResolver
import org.gradle.api.tasks.TaskAction
+import org.gradle.process.internal.DefaultExecActionFactory
import org.gradle.process.internal.DefaultJavaExecAction
import org.gradle.process.internal.JavaExecAction
@@ -60,7 +61,7 @@ class FregeQuickCheck extends DefaultTask {
void runQuickCheck() {
FileResolver fileResolver = getServices().get(FileResolver.class)
- JavaExecAction action = new DefaultJavaExecAction(fileResolver)
+ JavaExecAction action = new DefaultExecActionFactory(fileResolver).newJavaExecAction()
action.setMain("frege.tools.Quick")
action.standardInput = System.in
@@ -89,4 +90,4 @@ class FregeQuickCheck extends DefaultTask {
action.execute()
}
-} \ No newline at end of file
+}
diff --git a/src/main/groovy/frege/gradle/tasks/FregeRepl.groovy b/src/main/groovy/frege/gradle/tasks/FregeRepl.groovy
index 64e0186..693e076 100644
--- a/src/main/groovy/frege/gradle/tasks/FregeRepl.groovy
+++ b/src/main/groovy/frege/gradle/tasks/FregeRepl.groovy
@@ -3,6 +3,7 @@ package frege.gradle.tasks
import org.gradle.api.DefaultTask
import org.gradle.api.internal.file.FileResolver
import org.gradle.api.tasks.*
+import org.gradle.process.internal.DefaultExecActionFactory
import org.gradle.process.internal.DefaultJavaExecAction
import org.gradle.process.internal.JavaExecAction
@@ -27,7 +28,7 @@ class FregeRepl extends DefaultTask {
}
FileResolver fileResolver = getServices().get(FileResolver.class)
- JavaExecAction action = new DefaultJavaExecAction(fileResolver)
+ JavaExecAction action = new DefaultExecActionFactory(fileResolver).newJavaExecAction()
action.setMain("frege.repl.FregeRepl")
action.workingDir = sourceDir ?: project.projectDir
action.standardInput = System.in
@@ -36,4 +37,4 @@ class FregeRepl extends DefaultTask {
action.execute()
}
-} \ No newline at end of file
+}