Skip to content
12 changes: 6 additions & 6 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Fri Jan 06 15:02:32 EST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
#Fri Jan 06 15:02:32 EST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-bin.zip
4 changes: 4 additions & 0 deletions subprojects/plugin/bin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/test/
/acceptanceTest/
*class
/main/

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@

public abstract class AbstractJavaccTask extends SourceTask {
protected Map<String, String> programArguments;
protected Language language = Language.Java;

private File inputDirectory;
private File outputDirectory;
Expand Down Expand Up @@ -80,6 +81,15 @@ public AbstractJavaccTask setOutputDirectory(File outputDirectory) {
return this;
}

public void setLanguage(Language language) {
this.language = language;
}

@Internal
protected Language getLanguage() {
return language;
}

@Internal
protected Configuration getClasspath() {
return classpath;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public void run() {
JavaccProgramInvoker javaccInvoker = new JavaccProgramInvoker(getProject(), getClasspath(), inputOutputDirectories.getTempOutputDirectory());
ProgramArguments arguments = new ProgramArguments();
arguments.addAll(getArguments());
SourceFileCompiler compiler = new JavaccSourceFileCompiler(javaccInvoker, arguments, inputOutputDirectories, getLogger());
SourceFileCompiler compiler = new JavaccSourceFileCompiler(language, javaccInvoker, arguments, inputOutputDirectories, getLogger());

compiler.createTempOutputDirectory();
compiler.compileSourceFilesToTempOutputDirectory();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public void run() {
JjdocProgramInvoker jjdocInvoker = new JjdocProgramInvoker(getProject(), getClasspath(), inputOutputDirectories.getTempOutputDirectory());
ProgramArguments arguments = new ProgramArguments();
arguments.addAll(getArguments());
SourceFileCompiler compiler = new JavaccSourceFileCompiler(jjdocInvoker, arguments, inputOutputDirectories, getLogger());
SourceFileCompiler compiler = new JavaccSourceFileCompiler(language, jjdocInvoker, arguments, inputOutputDirectories, getLogger());

compiler.createTempOutputDirectory();
compiler.compileSourceFilesToTempOutputDirectory();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public void run() {
JjtreeProgramInvoker jjtreeInvoker = new JjtreeProgramInvoker(getProject(), getClasspath(), inputOutputDirectories.getTempOutputDirectory());
ProgramArguments arguments = new ProgramArguments();
arguments.addAll(getArguments());
SourceFileCompiler compiler = new JavaccSourceFileCompiler(jjtreeInvoker, arguments, inputOutputDirectories, getLogger());
SourceFileCompiler compiler = new JavaccSourceFileCompiler(language, jjtreeInvoker, arguments, inputOutputDirectories, getLogger());

compiler.createTempOutputDirectory();
compiler.compileSourceFilesToTempOutputDirectory();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,55 +4,85 @@
import org.gradle.api.Project;
import org.gradle.api.tasks.TaskCollection;
import org.gradle.api.tasks.compile.JavaCompile;
import org.gradle.language.cpp.tasks.CppCompile;

public class JavaToJavaccDependencyAction implements Action<Project> {

@Override
public void execute(Project project) {
if (!project.getPlugins().hasPlugin("java")) {
return;
}

configureCompileJJTreeTask(project);
configureCompileJavaccTask(project);
}

private void configureCompileJJTreeTask(Project project) {
CompileJjtreeTask compileJjtreeTask = (CompileJjtreeTask) project.getTasks().findByName(CompileJjtreeTask.TASK_NAME_VALUE);
if (compileJjtreeTask == null) {
return;
}

if (!compileJjtreeTask.getSource().isEmpty()) {
addJJTreeDependencyToJavaccCompileTask(project.getTasks().withType(JavaCompile.class),
project.getTasks().withType(CompileJavaccTask.class), compileJjtreeTask);
}
}

private void configureCompileJavaccTask(Project project) {
CompileJavaccTask compileJavaccTask = (CompileJavaccTask) project.getTasks().findByName(CompileJavaccTask.TASK_NAME_VALUE);
if (compileJavaccTask != null) {
addJavaccDependencyToJavaCompileTask(project.getTasks().withType(JavaCompile.class), compileJavaccTask);
}
}

private void addJavaccDependencyToJavaCompileTask(TaskCollection<JavaCompile> javaCompilationTasks, CompileJavaccTask compileJavaccTask) {
for (JavaCompile task : javaCompilationTasks) {
task.dependsOn(compileJavaccTask);
task.source(compileJavaccTask.getOutputDirectory());
}
}

private void addJJTreeDependencyToJavaccCompileTask(TaskCollection<JavaCompile> javaCompilationTasks,
TaskCollection<CompileJavaccTask> javaccCompilationTasks, CompileJjtreeTask compileJjtreeTask) {
for (JavaCompile task : javaCompilationTasks) {
task.dependsOn(compileJjtreeTask);
task.source(compileJjtreeTask.getOutputDirectory());
}

for (CompileJavaccTask task : javaccCompilationTasks) {
task.dependsOn(compileJjtreeTask);
task.source(compileJjtreeTask.getOutputDirectory());
}
}
@Override
public void execute(Project project) {
if (project.getPlugins().hasPlugin("java") || project.getPlugins().hasPlugin("cpp")) {
configureCompileJJTreeTask(project);
configureCompileJavaccTask(project);
}
}

private void configureCompileJJTreeTask(Project project) {
CompileJjtreeTask compileJjtreeTask = (CompileJjtreeTask) project.getTasks().findByName(CompileJjtreeTask.TASK_NAME_VALUE);
if (compileJjtreeTask == null) {
return;
}

if (!compileJjtreeTask.getSource().isEmpty()) {
if (project.getPlugins().hasPlugin("java"))
addJJTreeDependencyToJavaccCompileTask(project.getTasks().withType(JavaCompile.class), project.getTasks().withType(CompileJavaccTask.class),
compileJjtreeTask);

if (project.getPlugins().hasPlugin("cpp"))
addJJTreeDependencyToCppCompileTask(project.getTasks().withType(CppCompile.class), project.getTasks().withType(CompileJavaccTask.class),
compileJjtreeTask);
}
}

private void configureCompileJavaccTask(Project project) {
CompileJavaccTask compileJavaccTask = (CompileJavaccTask) project.getTasks().findByName(CompileJavaccTask.TASK_NAME_VALUE);
if (compileJavaccTask != null) {
if (project.getPlugins().hasPlugin("java"))
addJavaccDependencyToJavaCompileTask(project.getTasks().withType(JavaCompile.class), compileJavaccTask);

if (project.getPlugins().hasPlugin("cpp"))
addJavaccDependencyToCppCompileTask(project.getTasks().withType(CppCompile.class), compileJavaccTask);

}
}

private void addJavaccDependencyToJavaCompileTask(TaskCollection<JavaCompile> javaCompilationTasks, CompileJavaccTask compileJavaccTask) {
for (JavaCompile task : javaCompilationTasks) {
task.dependsOn(compileJavaccTask);
task.source(compileJavaccTask.getOutputDirectory());
}
}

private void addJavaccDependencyToCppCompileTask(TaskCollection<CppCompile> cppCompilationTasks, CompileJavaccTask compileJavaccTask) {
for (CppCompile task : cppCompilationTasks) {
task.dependsOn(compileJavaccTask);
task.source(compileJavaccTask.getOutputDirectory());
}
}

private void addJJTreeDependencyToJavaccCompileTask(TaskCollection<JavaCompile> javaCompilationTasks, TaskCollection<CompileJavaccTask> javaccCompilationTasks,
CompileJjtreeTask compileJjtreeTask) {
for (JavaCompile task : javaCompilationTasks) {
task.dependsOn(compileJjtreeTask);
task.source(compileJjtreeTask.getOutputDirectory());
}

for (CompileJavaccTask task : javaccCompilationTasks) {
task.dependsOn(compileJjtreeTask);
task.source(compileJjtreeTask.getOutputDirectory());
}
}

private void addJJTreeDependencyToCppCompileTask(TaskCollection<CppCompile> cppCompilationTasks, TaskCollection<CompileJavaccTask> javaccCompilationTasks,
CompileJjtreeTask compileJJTreeTask) {

for (CppCompile task : cppCompilationTasks) {
task.dependsOn(compileJJTreeTask);
task.source(compileJJTreeTask.getOutputDirectory());
}

for (CompileJavaccTask task : javaccCompilationTasks) {
task.dependsOn(compileJJTreeTask);
task.source(compileJJTreeTask.getOutputDirectory());
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package ca.coglinc.gradle.plugins.javacc;

public enum Language {
Java, Cpp
}
Loading