Skip to content

Commit e8a0105

Browse files
author
mgricken
committed
Working on refactored compiler interface, adding NextGen compiler.
git-svn-id: file:///tmp/test-svn/branches/drjava-compilers@5306 fe72c1cf-3628-48e9-8b72-1c46755d3cff
1 parent b3945c9 commit e8a0105

File tree

13 files changed

+558
-191
lines changed

13 files changed

+558
-191
lines changed

drjava/lib/platform.jar

4.4 KB
Binary file not shown.

drjava/src/edu/rice/cs/drjava/model/JarJDKToolsLibrary.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,8 @@ public static Iterable<JarJDKToolsLibrary> search(GlobalModel model) {
482482
if (lib.isValid()) {
483483
FullVersion v = lib.version();
484484
Map<FullVersion, Iterable<JarJDKToolsLibrary>> mapToAddTo = results;
485-
if (v.vendor().equals(JavaVersion.VendorType.UNKNOWN)) { mapToAddTo = compoundResults; }
485+
if (v.vendor().equals(JavaVersion.VendorType.UNKNOWN) ||
486+
((desc!=null)&&(desc.isCompound()))) { mapToAddTo = compoundResults; }
486487

487488
if (mapToAddTo.containsKey(v)) { mapToAddTo.put(v, IterUtil.compose(lib, mapToAddTo.get(v))); }
488489
else { mapToAddTo.put(v, IterUtil.singleton(lib)); }
Lines changed: 65 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,65 @@
1-
/*BEGIN_COPYRIGHT_BLOCK
2-
*
3-
* Copyright (c) 2001-2010, JavaPLT group at Rice University (drjava@rice.edu)
4-
* All rights reserved.
5-
*
6-
* Redistribution and use in source and binary forms, with or without
7-
* modification, are permitted provided that the following conditions are met:
8-
* * Redistributions of source code must retain the above copyright
9-
* notice, this list of conditions and the following disclaimer.
10-
* * Redistributions in binary form must reproduce the above copyright
11-
* notice, this list of conditions and the following disclaimer in the
12-
* documentation and/or other materials provided with the distribution.
13-
* * Neither the names of DrJava, the JavaPLT group, Rice University, nor the
14-
* names of its contributors may be used to endorse or promote products
15-
* derived from this software without specific prior written permission.
16-
*
17-
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18-
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19-
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20-
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21-
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22-
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23-
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24-
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25-
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26-
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27-
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28-
*
29-
* This software is Open Source Initiative approved Open Source Software.
30-
* Open Source Initative Approved is a trademark of the Open Source Initiative.
31-
*
32-
* This file is part of DrJava. Download the current version of this project
33-
* from http://www.drjava.org/ or http://sourceforge.net/projects/drjava/
34-
*
35-
* END_COPYRIGHT_BLOCK*/
36-
37-
package edu.rice.cs.drjava.model.compiler.descriptors;
38-
39-
import java.io.File;
40-
import java.util.Set;
41-
import edu.rice.cs.plt.reflect.JavaVersion;
42-
43-
/** A description of a JDK. */
44-
public interface JDKDescriptor {
45-
public String getName();
46-
47-
/** Packages to shadow when loading a new tools.jar. If we don't shadow these classes, we won't
48-
* be able to load distinct versions for each tools.jar library. These should be verified whenever
49-
* a new Java version is released. (We can't just shadow *everything* because some classes, at
50-
* least in OS X's classes.jar, can only be loaded by the JVM.)
51-
*/
52-
public Set<String> getToolsPackages();
53-
54-
public Iterable<File> getSearchDirectories();
55-
public Iterable<File> getSearchFiles();
56-
57-
public String getAdapterForCompiler();
58-
public String getAdapterForDebugger();
59-
60-
public boolean containsCompiler(File f);
61-
62-
public JavaVersion getMinimumMajorVersion();
63-
}
1+
/*BEGIN_COPYRIGHT_BLOCK
2+
*
3+
* Copyright (c) 2001-2010, JavaPLT group at Rice University (drjava@rice.edu)
4+
* All rights reserved.
5+
*
6+
* Redistribution and use in source and binary forms, with or without
7+
* modification, are permitted provided that the following conditions are met:
8+
* * Redistributions of source code must retain the above copyright
9+
* notice, this list of conditions and the following disclaimer.
10+
* * Redistributions in binary form must reproduce the above copyright
11+
* notice, this list of conditions and the following disclaimer in the
12+
* documentation and/or other materials provided with the distribution.
13+
* * Neither the names of DrJava, the JavaPLT group, Rice University, nor the
14+
* names of its contributors may be used to endorse or promote products
15+
* derived from this software without specific prior written permission.
16+
*
17+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
21+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28+
*
29+
* This software is Open Source Initiative approved Open Source Software.
30+
* Open Source Initative Approved is a trademark of the Open Source Initiative.
31+
*
32+
* This file is part of DrJava. Download the current version of this project
33+
* from http://www.drjava.org/ or http://sourceforge.net/projects/drjava/
34+
*
35+
* END_COPYRIGHT_BLOCK*/
36+
37+
package edu.rice.cs.drjava.model.compiler.descriptors;
38+
39+
import java.io.File;
40+
import java.util.Set;
41+
import edu.rice.cs.plt.reflect.JavaVersion;
42+
43+
/** A description of a JDK. */
44+
public interface JDKDescriptor {
45+
public String getName();
46+
47+
/** Packages to shadow when loading a new tools.jar. If we don't shadow these classes, we won't
48+
* be able to load distinct versions for each tools.jar library. These should be verified whenever
49+
* a new Java version is released. (We can't just shadow *everything* because some classes, at
50+
* least in OS X's classes.jar, can only be loaded by the JVM.)
51+
*/
52+
public Set<String> getToolsPackages();
53+
54+
public Iterable<File> getSearchDirectories();
55+
public Iterable<File> getSearchFiles();
56+
57+
public boolean isCompound();
58+
59+
public String getAdapterForCompiler();
60+
public String getAdapterForDebugger();
61+
62+
public boolean containsCompiler(File f);
63+
64+
public JavaVersion getMinimumMajorVersion();
65+
}

platform/build.xml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
<property name="java6-home" value="${env.JAVA6_HOME}" />
4141
<property name="openjdk6-home" value="${env.OPENJDK6_HOME}" />
4242
<property name="mint-home" value="${env.MINT_HOME}" />
43+
<property name="nextgen-home" value="${env.NGC_HOME}" />
4344

4445
<property name="is-development" value="yes" /> <!-- Development or stable release -->
4546
<property name="tag-append" value="" /> <!-- "stable", "beta", or none -->
@@ -86,6 +87,7 @@
8687
<echo message="JAVA6_HOME: Home folder of the Java 6 JDK" />
8788
<echo message="OPENJDK6_HOME: Home folder of the OpenJDK 6" />
8889
<echo message="MINT_HOME: Home folder of the Mint distribution" />
90+
<echo message="NEXTGEN_HOME: Home folder of the NextGen distribution" />
8991
<echo message="" />
9092
<echo message="For control over the version of Java used to run Ant, set JAVA_HOME." />
9193
<echo message="Ant may also require ANT_HOME to be set. Note that the value of " />
@@ -188,6 +190,16 @@
188190
</antcall>
189191
</target>
190192

193+
<target name="compile-nextgen" depends="resolve-java6-runtime, resolve-nextgen-tools"
194+
description="Compile the 'nextgen' sources">
195+
<antcall target="do-compile">
196+
<param name="platform-tag" value="nextgen" />
197+
<param name="source-version" value="1.6" />
198+
<param name="runtime-jar" value="${java6-runtime}" />
199+
<param name="extra-classpath" value="${nextgen-tools}" />
200+
</antcall>
201+
</target>
202+
191203
<target name="compile-eclipse" depends="resolve-java6-runtime, resolve-java6-tools, unjar-libs"
192204
description="Compile the 'eclipse' sources">
193205
<antcall target="do-compile">
@@ -350,6 +362,16 @@
350362
</antcall>
351363
</target>
352364

365+
<target name="test-nextgen" depends="compile-nextgen, resolve-java6-exec, resolve-nextgen-exec, resolve-nextgen-tools"
366+
description="Run all 'nextgen' tests (after compiling); use -Dtest-spec=... to filter">
367+
<antcall target="iterate-tests">
368+
<param name="platform-tag" value="nextgen" />
369+
<param name="extra-classpath" value="${nextgen-tools}" />
370+
<!-- <param name="test-jvm" value="${nextgen-exec}" /> --> <!-- TODO -->
371+
<param name="test-jvm" value="${java6-exec}" />
372+
</antcall>
373+
</target>
374+
353375
<target name="test-eclipse" depends="compile-eclipse, resolve-java6-exec, resolve-java6-tools"
354376
description="Run all 'eclipse' tests (after compiling); use -Dtest-spec=... to filter">
355377
<antcall target="iterate-tests">
@@ -512,6 +534,7 @@
512534
<fileset dir="classes/base-jdk6" />
513535
<fileset dir="classes/base-openjdk6" />
514536
<fileset dir="classes/base-mint" />
537+
<fileset dir="classes/base-nextgen" />
515538
<fileset dir="classes/base-eclipse" />
516539
<fileset dir="classes/base-mac" />
517540
<fileset dir="classes/base-windows" />
@@ -530,6 +553,7 @@
530553
<fileset dir="classes/base-jdk6" />
531554
<fileset dir="classes/base-openjdk6" />
532555
<fileset dir="classes/base-mint" />
556+
<fileset dir="classes/base-nextgen" />
533557
<fileset dir="classes/base-eclipse" />
534558
<fileset dir="classes/base-mac" />
535559
<fileset dir="classes/base-windows" />
@@ -554,6 +578,7 @@
554578
<delete dir="classes/test-jdk6" failonerror="${clean-can-fail}" />
555579
<delete dir="classes/test-openjdk6" failonerror="${clean-can-fail}" />
556580
<delete dir="classes/test-mint" failonerror="${clean-can-fail}" />
581+
<delete dir="classes/test-nextgen" failonerror="${clean-can-fail}" />
557582
<delete dir="classes/test-eclipse" failonerror="${clean-can-fail}" />
558583
<delete dir="classes/test-mac" failonerror="${clean-can-fail}" />
559584
<delete dir="classes/test-windows" failonerror="${clean-can-fail}" />
@@ -972,6 +997,41 @@
972997
<fail message="Can't find classes.jar in the Mint home: ${mint-home}" unless="mint-tools" />
973998
</target>
974999

1000+
<!-- No resolve-nextgen-runtime, use resolve-java6-runtime -->
1001+
1002+
<target name="resolve-nextgen-exec">
1003+
<!-- We rely on "location" to generate a platform-specific path -->
1004+
1005+
<property name="nextgen-exec-1" location="${nextgen-home}/bin/nextgen.bat" />
1006+
<condition property="nextgen-exec" value="${nextgen-exec-1}">
1007+
<and>
1008+
<available file="${nextgen-exec-1}" />
1009+
<os family="windows" />
1010+
</and>
1011+
</condition>
1012+
1013+
<if>
1014+
<not><isset property="nextgen-exec" /></not>
1015+
<then>
1016+
<property name="nextgen-exec-2" location="${nextgen-home}/langtools/bin/nextgen" />
1017+
<available property="nextgen-exec" value="${nextgen-exec-2}" file="${nextgen-exec-2}" />
1018+
</then>
1019+
</if>
1020+
1021+
<fail message="Can't find the java executable in the Nextgen home: ${nextgen-home}" unless="nextgen-exec" />
1022+
<echo message="${nextgen-exec}"/>
1023+
</target>
1024+
1025+
<target name="resolve-nextgen-tools">
1026+
<!-- We rely on "location" to generate a platform-specific path; note that properties
1027+
are immutable and so nextgen-tools will only be set the *first* time. -->
1028+
1029+
<property name="nextgen-tools-1" location="${nextgen-home}/nextgen2.jar" />
1030+
<available property="nextgen-tools" value="${nextgen-tools-1}" file="${nextgen-tools-1}" />
1031+
1032+
<fail message="Can't find nextgen2.jar in the Nextgen home: ${nextgen-home}" unless="nextgen-tools" />
1033+
</target>
1034+
9751035
<target name="assert-jar-exists">
9761036
<available property="jar-exists" file="${ant.project.name}.jar" />
9771037
<fail message="Can't find ${ant.project.name}.jar" unless="jar-exists" />
Binary file not shown.
Binary file not shown.
Binary file not shown.

0 commit comments

Comments
 (0)