From d17c19fe01ce7591a487359a0e6b73090d539f45 Mon Sep 17 00:00:00 2001 From: Ioannis Tsakpinis Date: Sun, 14 Sep 2014 22:04:51 +0300 Subject: [PATCH] Restored check that skips generation if the source template has not changed. Note that javac still always recompiles everything. This makes the build process slower than before (apt was using the already compiled templates as input). Will investigate some other time if this can be mitigated. --- .../org/lwjgl/util/generator/GeneratorProcessor.java | 1 - .../org/lwjgl/util/generator/GeneratorVisitor.java | 10 +++++++++- .../org/lwjgl/util/generator/JavaMethodsGenerator.java | 2 -- src/java/org/lwjgl/util/generator/TypeInfo.java | 1 - 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/java/org/lwjgl/util/generator/GeneratorProcessor.java b/src/java/org/lwjgl/util/generator/GeneratorProcessor.java index e9b1fc03..dc034047 100644 --- a/src/java/org/lwjgl/util/generator/GeneratorProcessor.java +++ b/src/java/org/lwjgl/util/generator/GeneratorProcessor.java @@ -77,7 +77,6 @@ public class GeneratorProcessor extends AbstractProcessor { } Element lastFile = null; - processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE, "annotations " + annotations.toString()); try { long generatorLM = getGeneratorLastModified(bin_path); TypeMap type_map = (TypeMap)(Class.forName(typemap_classname).newInstance()); diff --git a/src/java/org/lwjgl/util/generator/GeneratorVisitor.java b/src/java/org/lwjgl/util/generator/GeneratorVisitor.java index d1dcda7a..23903eb4 100644 --- a/src/java/org/lwjgl/util/generator/GeneratorVisitor.java +++ b/src/java/org/lwjgl/util/generator/GeneratorVisitor.java @@ -280,13 +280,21 @@ public class GeneratorVisitor extends ElementKindVisitor6 { @Override public Void visitTypeAsInterface(TypeElement e, Void p) { + final File input = new File("src/templates/" + e.getQualifiedName().toString().replace('.', '/') + ".java"); + final File outputJava = new File("src/generated/" + env.getElementUtils().getPackageOf(e).getQualifiedName().toString().replace('.', '/'), Utils.getSimpleClassName(e) + ".java"); + PrintWriter java_writer = null; try { final Collection methods = Utils.getMethods(e); if ( methods.isEmpty() && Utils.getFields(e).isEmpty() ) { return DEFAULT_VALUE; } - env.getMessager().printMessage(Kind.NOTE, "methods count : " + Utils.getMethods(e).size() + " fields count : " + Utils.getFields(e).size(), e); + + // Skip this class if the output exists and the input has not been modified. + if ( outputJava.exists() && Math.max(input.lastModified(), generatorLM) < outputJava.lastModified() ) + return DEFAULT_VALUE; + + //env.getMessager().printMessage(Kind.NOTE, "methods count : " + Utils.getMethods(e).size() + " fields count : " + Utils.getFields(e).size(), e); for ( final ExecutableElement method : methods ) { validateMethod(method); } diff --git a/src/java/org/lwjgl/util/generator/JavaMethodsGenerator.java b/src/java/org/lwjgl/util/generator/JavaMethodsGenerator.java index 554b2880..1d61fffc 100644 --- a/src/java/org/lwjgl/util/generator/JavaMethodsGenerator.java +++ b/src/java/org/lwjgl/util/generator/JavaMethodsGenerator.java @@ -135,8 +135,6 @@ public class JavaMethodsGenerator { if ( constant_annotation != null && constant_annotation.isNative() ) { continue; } - /*env.getMessager().printMessage(Diagnostic.Kind.NOTE, param.getAnnotationMirrors() - + " (" + typeinfos_instance.get(param).getType() + ")", param);*/ AnnotationMirror auto_annotation_mirror = Utils.getParameterAutoAnnotation(param); boolean hide_auto_parameter = mode == Mode.NORMAL && !native_stub && auto_annotation_mirror != null; if ( hide_auto_parameter ) { diff --git a/src/java/org/lwjgl/util/generator/TypeInfo.java b/src/java/org/lwjgl/util/generator/TypeInfo.java index db902d28..bb247cca 100644 --- a/src/java/org/lwjgl/util/generator/TypeInfo.java +++ b/src/java/org/lwjgl/util/generator/TypeInfo.java @@ -168,7 +168,6 @@ public class TypeInfo { NativeType native_type_annotation = NativeTypeTranslator.getAnnotation(annotation, NativeType.class); if ( native_type_annotation != null ) { Class annotation_type = NativeTypeTranslator.getClassFromType(annotation.getAnnotationType()); - /*env.getMessager().printMessage(Diagnostic.Kind.NOTE, "annotation_type " + annotation_type, param, annotation);*/ Signedness signedness = type_map.getSignednessFromType(annotation_type); Class inverse_type = type_map.getInverseType(annotation_type); String auto_type = type_map.getAutoTypeFromAnnotation(annotation);