diff options
author | Joshua Nichols <nichoj@gentoo.org> | 2007-07-27 13:01:38 +0000 |
---|---|---|
committer | Joshua Nichols <nichoj@gentoo.org> | 2007-07-27 13:01:38 +0000 |
commit | c7f1481a8b0ae33a535682436b49a374bca290b3 (patch) | |
tree | 05ca95b069a9188abc0e51fa46fda05fc4374fed /dev-java | |
parent | Prune unused version. (diff) | |
download | gentoo-2-c7f1481a8b0ae33a535682436b49a374bca290b3.tar.gz gentoo-2-c7f1481a8b0ae33a535682436b49a374bca290b3.tar.bz2 gentoo-2-c7f1481a8b0ae33a535682436b49a374bca290b3.zip |
Version bump imported from gcj-overlay.
(Portage version: 2.1.3_rc8)
Diffstat (limited to 'dev-java')
-rw-r--r-- | dev-java/eclipse-ecj/ChangeLog | 8 | ||||
-rw-r--r-- | dev-java/eclipse-ecj/eclipse-ecj-3.3.0.ebuild | 74 | ||||
-rw-r--r-- | dev-java/eclipse-ecj/files/digest-eclipse-ecj-3.3.0 | 3 | ||||
-rw-r--r-- | dev-java/eclipse-ecj/files/ecj-3.3 | 10 | ||||
-rw-r--r-- | dev-java/eclipse-ecj/files/eclipse-ecj-3.3.0-gcj.patch | 509 |
5 files changed, 603 insertions, 1 deletions
diff --git a/dev-java/eclipse-ecj/ChangeLog b/dev-java/eclipse-ecj/ChangeLog index 4666fe174b2d..ab611004f524 100644 --- a/dev-java/eclipse-ecj/ChangeLog +++ b/dev-java/eclipse-ecj/ChangeLog @@ -1,6 +1,12 @@ # ChangeLog for dev-java/eclipse-ecj # Copyright 1999-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-java/eclipse-ecj/ChangeLog,v 1.19 2007/05/08 14:33:26 armin76 Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-java/eclipse-ecj/ChangeLog,v 1.20 2007/07/27 13:01:38 nichoj Exp $ + +*eclipse-ecj-3.3.0 (27 Jul 2007) + + 27 Jul 2007; Joshua Nichols <nichoj@gentoo.org> +files/ecj-3.3, + +files/eclipse-ecj-3.3.0-gcj.patch, +eclipse-ecj-3.3.0.ebuild: + Version bump imported from gcj-overlay. 08 May 2007; Raúl Porcel <armin76@gentoo.org> eclipse-ecj-3.2.2.ebuild: Add ~ia64 wrt #177466 diff --git a/dev-java/eclipse-ecj/eclipse-ecj-3.3.0.ebuild b/dev-java/eclipse-ecj/eclipse-ecj-3.3.0.ebuild new file mode 100644 index 000000000000..0f08831c77bb --- /dev/null +++ b/dev-java/eclipse-ecj/eclipse-ecj-3.3.0.ebuild @@ -0,0 +1,74 @@ +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-java/eclipse-ecj/eclipse-ecj-3.3.0.ebuild,v 1.1 2007/07/27 13:01:38 nichoj Exp $ + +inherit eutils java-utils-2 + +MY_PN="ecj" +DMF="R-${PV}-200706251500" +S="${WORKDIR}" + +DESCRIPTION="Eclipse Compiler for Java" +HOMEPAGE="http://www.eclipse.org/" +SRC_URI="http://download.eclipse.org/eclipse/downloads/drops/${DMF/.0}/${MY_PN}src.zip" + +LICENSE="EPL-1.0" +KEYWORDS="~amd64 ~ppc ~x86" +SLOT="3.3" +IUSE="" + +RDEPEND=">=virtual/jre-1.4" +DEPEND=">=virtual/jdk-1.4 + sys-apps/findutils" + +src_unpack() { + unpack ${A} + cd ${S} + + # own package + rm -f org/eclipse/jdt/core/JDTCompilerAdapter.java + rm -fr org/eclipse/jdt/internal/antadapter + + # what the heck...?! java6 + rm -fr org/eclipse/jdt/internal/compiler/tool/ \ + org/eclipse/jdt/internal/compiler/apt/ + + # gcj feature + epatch ${FILESDIR}/${P}-gcj.patch +} + +src_compile() { + local javac="javac" java="java" jar="jar" + + mkdir -p bootstrap + cp -a org bootstrap + + einfo "bootstrapping ${MY_PN} with javac" + + cd ${S}/bootstrap + ${javac} $(find org/ -name '*.java') || die "${MY_PN} bootstrap failed!" + + find org/ -name '*.class' -o -name '*.properties' -o -name '*.rsc' | \ + xargs ${jar} cf ${MY_PN}.jar + + einfo "build ${MY_PN} with bootstrapped ${MY_PN}" + + cd ${S} + ${java} -classpath bootstrap/${MY_PN}.jar \ + org.eclipse.jdt.internal.compiler.batch.Main -encoding ISO-8859-1 org \ + || die "${MY_PN} build failed!" + find org/ -name '*.class' -o -name '*.properties' -o -name '*.rsc' | \ + xargs ${jar} cf ${MY_PN}.jar +} + +src_install() { + java-pkg_dojar ${MY_PN}.jar + + exeinto /usr/bin + doexe ${FILESDIR}/${MY_PN}-${SLOT} +} + +pkg_postinst() { + ewarn "to get the compiler adapter of ecj for ant do" + ewarn " # emerge ant-eclipse-ecj" +} diff --git a/dev-java/eclipse-ecj/files/digest-eclipse-ecj-3.3.0 b/dev-java/eclipse-ecj/files/digest-eclipse-ecj-3.3.0 new file mode 100644 index 000000000000..d8f2e5bbad7a --- /dev/null +++ b/dev-java/eclipse-ecj/files/digest-eclipse-ecj-3.3.0 @@ -0,0 +1,3 @@ +MD5 9e1fc1c86c85e72df5e141069b82041d ecjsrc.zip 1215250 +RMD160 938320ae54050e322bbb98c78b0e86d241862153 ecjsrc.zip 1215250 +SHA256 f41194a9580023afd11d18b82f6815b064af83c4f9ca407a40cd8d960bd112cc ecjsrc.zip 1215250 diff --git a/dev-java/eclipse-ecj/files/ecj-3.3 b/dev-java/eclipse-ecj/files/ecj-3.3 new file mode 100644 index 000000000000..42af19f7c4dc --- /dev/null +++ b/dev-java/eclipse-ecj/files/ecj-3.3 @@ -0,0 +1,10 @@ +#! /bin/sh +# +# Copyright (c) 2005, Karl Trygve Kalleberg <karltk@gentoo.org> +# Copyright (c) 2005, Gentoo Foundation +# +# Licensed under the GNU General Public License, v2 + +cp=$(java-config -p eclipse-ecj-3.3) + +$(java-config --java) -cp ${cp} org.eclipse.jdt.internal.compiler.batch.Main $@ diff --git a/dev-java/eclipse-ecj/files/eclipse-ecj-3.3.0-gcj.patch b/dev-java/eclipse-ecj/files/eclipse-ecj-3.3.0-gcj.patch new file mode 100644 index 000000000000..e87aa4f893fa --- /dev/null +++ b/dev-java/eclipse-ecj/files/eclipse-ecj-3.3.0-gcj.patch @@ -0,0 +1,509 @@ +--- org/eclipse/jdt/internal/compiler/batch/messages.properties 8 Feb 2007 15:04:43 -0000 1.546.2.23 ++++ org/eclipse/jdt/internal/compiler/batch/messages.properties 26 Feb 2007 18:21:06 -0000 +@@ -249,3 +249,8 @@ + template.restrictedAccess.constructor = The constructor {0} is not accessible due to restriction on classpath entry {1} + template.restrictedAccess.field = The field {0} from the type {1} is not accessible due to restriction on classpath entry {2} + template.restrictedAccess.method = The method {0} from the type {1} is not accessible due to restriction on classpath entry {2} ++ ++# GCCMain messages. ++gcc.zipArg=-fzip-target requires argument ++gcc.zipDepArg=-fzip-dependency requires argument ++gcc.noClasspath=no classpath specified +--- /dev/null 1 Jan 1970 00:00:00 -0000 ++++ org/eclipse/jdt/internal/compiler/batch/GCCMain.java 1 Jan 1970 00:00:00 -0000 +@@ -0,0 +1,495 @@ ++/** ++ * ++ */ ++package org.eclipse.jdt.internal.compiler.batch; ++ ++import java.io.BufferedOutputStream; ++import java.io.BufferedReader; ++import java.io.ByteArrayInputStream; ++import java.io.File; ++import java.io.FileOutputStream; ++import java.io.FileReader; ++import java.io.IOException; ++import java.io.InputStreamReader; ++import java.io.OutputStream; ++import java.io.PrintWriter; ++import java.io.UnsupportedEncodingException; ++import java.util.ArrayList; ++import java.util.HashSet; ++import java.util.Iterator; ++import java.util.Map; ++import java.util.StringTokenizer; ++import java.util.zip.CRC32; ++import java.util.zip.ZipEntry; ++import java.util.zip.ZipOutputStream; ++ ++import org.eclipse.jdt.core.compiler.InvalidInputException; ++import org.eclipse.jdt.internal.compiler.ClassFile; ++import org.eclipse.jdt.internal.compiler.CompilationResult; ++import org.eclipse.jdt.internal.compiler.env.AccessRule; ++import org.eclipse.jdt.internal.compiler.env.AccessRuleSet; ++import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; ++import org.eclipse.jdt.internal.compiler.util.Messages; ++import org.eclipse.jdt.internal.compiler.util.SuffixConstants; ++ ++/** ++ * This is an alternate entry point for the command-line compiler which ++ * is simpler to integrate into GCC. In particular the option processing ++ * is more GNU-like and the recognized options are similar to those supported ++ * by other GCC front ends. ++ */ ++public class GCCMain extends Main { ++ ++ // All the compilation units specified on the command line. ++ private HashSet commandLineCompilationUnits = new HashSet(); ++ // True if we are only checking syntax. ++ private boolean syntaxOnly; ++ // If not null, the name of the output zip file. ++ // If null, we are generating class files in the file system, ++ // not a zip file. ++ private String zipDestination; ++ // The zip stream to which we're writing, or null if it hasn't been opened. ++ private ZipOutputStream zipStream; ++ ++ // If not null, the name of the zip file to which dependency class files ++ // should be written. ++ private String zipDependencyDestination; ++ // The zip stream to which dependency files should be written. ++ private ZipOutputStream zipDependencyStream; ++ ++ public GCCMain(PrintWriter outWriter, PrintWriter errWriter, ++ boolean systemExitWhenFinished) { ++ super(outWriter, errWriter, systemExitWhenFinished); ++ this.logger.setEmacs(); ++ } ++ ++ public GCCMain(PrintWriter outWriter, PrintWriter errWriter, ++ boolean systemExitWhenFinished, Map customDefaultOptions) { ++ super(outWriter, errWriter, systemExitWhenFinished, ++ customDefaultOptions); ++ this.logger.setEmacs(); ++ } ++ ++ private void fail(Exception t) { ++ this.logger.logException(t); ++ System.exit(1); ++ } ++ ++ public CompilationUnit[] getCompilationUnits() throws InvalidInputException { ++ CompilationUnit[] units = super.getCompilationUnits(); ++ for (int i = 0; i < units.length; ++i) ++ this.commandLineCompilationUnits.add(units[i]); ++ return units; ++ } ++ ++ private String combine(char[] one, char[] two) { ++ StringBuffer b = new StringBuffer(); ++ b.append(one); ++ b.append(two); ++ return b.toString(); ++ } ++ ++ private ZipOutputStream getZipOutput() throws IOException { ++ if (this.zipDestination != null && this.zipStream == null) { ++ OutputStream os; ++ if ("-".equals(this.zipDestination)) { //$NON-NLS-1$ ++ os = System.out; ++ } else { ++ os = new FileOutputStream(this.zipDestination); ++ } ++ zipStream = new ZipOutputStream(new BufferedOutputStream(os)); ++ zipStream.setMethod(ZipOutputStream.STORED); ++ } ++ return zipStream; ++ } ++ ++ private ZipOutputStream getDependencyOutput() throws IOException { ++ if (this.zipDependencyDestination != null && this.zipDependencyStream == null) { ++ OutputStream os = new FileOutputStream(zipDependencyDestination); ++ zipDependencyStream = new ZipOutputStream(new BufferedOutputStream(os)); ++ zipDependencyStream.setMethod(ZipOutputStream.STORED); ++ } ++ return zipDependencyStream; ++ } ++ ++ public void outputClassFiles(CompilationResult unitResult) { ++ if (this.syntaxOnly) { ++ return; ++ } ++ if (this.zipDestination == null) { ++ // Nothing special to do here. ++ super.outputClassFiles(unitResult); ++ return; ++ } ++ if (unitResult == null || unitResult.hasErrors()) { ++ return; ++ } ++ ++ // If we are compiling with indirect dispatch, we don't need ++ // any dependent classes. If we are using the C++ ABI, then we ++ // do need the dependencies in order to do proper layout. ++ boolean gcjCompile = this.commandLineCompilationUnits.contains(unitResult.getCompilationUnit()); ++ if (this.zipDependencyDestination == null && !gcjCompile) { ++ return; ++ } ++ ++ try { ++ ZipOutputStream dest = gcjCompile ? getZipOutput() : getDependencyOutput(); ++ ClassFile[] classFiles = unitResult.getClassFiles(); ++ for (int i = 0; i < classFiles.length; ++i) { ++ ClassFile classFile = classFiles[i]; ++ String filename = combine(classFile.fileName(), SuffixConstants.SUFFIX_class); ++ if (this.verbose) ++ this.out.println( ++ Messages.bind( ++ Messages.compilation_write, ++ new String[] { ++ String.valueOf(this.exportedClassFilesCounter+1), ++ filename ++ })); ++ ZipEntry entry = new ZipEntry(filename); ++ byte[] contents = classFile.getBytes(); ++ CRC32 crc = new CRC32(); ++ crc.update(contents); ++ entry.setSize(contents.length); ++ entry.setCrc(crc.getValue()); ++ dest.putNextEntry(entry); ++ dest.write(contents); ++ dest.closeEntry(); ++ } ++ } catch (IOException err) { ++ fail(err); ++ } ++ } ++ ++ private String getArgument(String option) { ++ int index = option.indexOf('='); ++ return option.substring(index + 1); ++ } ++ ++ private void addPath(ArrayList result, String currentClasspathName) { ++ String customEncoding = null; ++ AccessRule[] accessRules = new AccessRule[0]; ++ String templates[] = new String[AccessRuleSet.MESSAGE_TEMPLATES_LENGTH]; ++ templates[0] = this.bind( ++ "template.restrictedAccess.type", //$NON-NLS-1$ ++ new String[] {"{0}", currentClasspathName}); //$NON-NLS-1$ ++ templates[1] = this.bind( ++ "template.restrictedAccess.constructor", //$NON-NLS-1$ ++ new String[] {"{0}", currentClasspathName}); //$NON-NLS-1$ ++ templates[2] = this.bind( ++ "template.restrictedAccess.method", //$NON-NLS-1$ ++ new String[] {"{0}", "{1}", currentClasspathName}); //$NON-NLS-1$ //$NON-NLS-2$ ++ templates[3] = this.bind( ++ "template.restrictedAccess.field", //$NON-NLS-1$ ++ new String[] {"{0}", "{1}", currentClasspathName}); //$NON-NLS-1$ //$NON-NLS-2$ ++ AccessRuleSet accessRuleSet = new AccessRuleSet(accessRules, templates); ++ FileSystem.Classpath currentClasspath = FileSystem ++ .getClasspath(currentClasspathName, ++ customEncoding, accessRuleSet); ++ if (currentClasspath != null) { ++ result.add(currentClasspath); ++ } ++ } ++ ++ private void parsePath(ArrayList result, String path) { ++ StringTokenizer iter = new StringTokenizer(path, File.pathSeparator); ++ while (iter.hasMoreTokens()) { ++ addPath(result, iter.nextToken()); ++ } ++ } ++ ++ protected void handleWarningToken(String token, boolean isEnabling, ++ boolean useEnableJavadoc) throws InvalidInputException { ++ // Recognize this for compatibility with older versions of gcj. ++ if ("deprecated".equals(token)) //$NON-NLS-1$ ++ token = "deprecation"; //$NON-NLS-1$ ++ else if ("static-access".equals(token) //$NON-NLS-1$ ++ || "dep-ann".equals(token) //$NON-NLS-1$ ++ || "over-ann".equals(token)) { //$NON-NLS-1$ ++ // Some exceptions to the warning naming rule. ++ } else if ("extraneous-semicolon".equals(token)) { //$NON-NLS-1$ ++ // Compatibility with earlier versions of gcj. ++ token = "semicolon"; //$NON-NLS-1$ ++ } else { ++ // Turn "foo-bar-baz" into eclipse-style "fooBarBaz". ++ StringBuffer newToken = new StringBuffer(token.length()); ++ StringTokenizer t = new StringTokenizer(token, "-"); //$NON-NLS-1$ ++ boolean first = true; ++ while (t.hasMoreTokens()) { ++ String next = t.nextToken(); ++ if (first) { ++ newToken.append(next); ++ first = false; ++ } else { ++ newToken.append(Character.toUpperCase(next.charAt(0))); ++ newToken.append(next.substring(1)); ++ } ++ } ++ token = newToken.toString(); ++ } ++ super.handleWarningToken(token, isEnabling, useEnableJavadoc); ++ } ++ ++ private void turnWarningsToErrors() { ++ Object[] entries = this.options.entrySet().toArray(); ++ for (int i = 0, max = entries.length; i < max; i++) { ++ Map.Entry entry = (Map.Entry) entries[i]; ++ if (!(entry.getKey() instanceof String)) ++ continue; ++ if (!(entry.getValue() instanceof String)) ++ continue; ++ if (((String) entry.getValue()).equals(CompilerOptions.WARNING)) { ++ this.options.put(entry.getKey(), CompilerOptions.ERROR); ++ } ++ } ++ } ++ ++ /** ++ * Set the debug level to the indicated value. The level should be ++ * between 0 and 2, inclusive, but this is not checked. ++ * @param level the debug level ++ */ ++ private void setDebugLevel(int level) { ++ this.options.put( ++ CompilerOptions.OPTION_LocalVariableAttribute, ++ level > 1 ? CompilerOptions.GENERATE : CompilerOptions.DO_NOT_GENERATE); ++ this.options.put( ++ CompilerOptions.OPTION_LineNumberAttribute, ++ level > 0 ? CompilerOptions.GENERATE : CompilerOptions.DO_NOT_GENERATE); ++ this.options.put( ++ CompilerOptions.OPTION_SourceFileAttribute, ++ CompilerOptions.GENERATE); ++ } ++ ++ private void readFileList(String file, ArrayList result) { ++ try { ++ BufferedReader b = new BufferedReader(new FileReader(file)); ++ String line; ++ while ((line = b.readLine()) != null) { ++ if (line.endsWith(SUFFIX_STRING_java)) ++ result.add(line); ++ } ++ b.close(); ++ } catch (IOException err) { ++ fail(err); ++ } ++ } ++ ++ private void readAllFileListFiles(ArrayList fileList, ArrayList result) { ++ Iterator it = fileList.iterator(); ++ while (it.hasNext()) { ++ readFileList((String) it.next(), result); ++ } ++ } ++ ++ private void handleWall(boolean enable) throws InvalidInputException { ++ // A somewhat arbitrary list. We use the GCC names ++ // here, and the local handleWarningToken translates ++ // for us. ++ handleWarningToken("constructor-name", enable, false); ++ handleWarningToken("pkg-default-method", enable, false); ++ handleWarningToken("masked-catch-block", enable, false); ++ handleWarningToken("all-deprecation", enable, false); ++ handleWarningToken("unused-local", enable, false); ++ handleWarningToken("unused-label", enable, false); ++ handleWarningToken("static-receiver", enable, false); ++ handleWarningToken("indirect-static", enable, false); ++ handleWarningToken("no-effect-assign", enable, false); ++ handleWarningToken("char-concat", enable, false); ++ handleWarningToken("useless-type-check", enable, false); ++ handleWarningToken("final-bound", enable, false); ++ handleWarningToken("assert-identifier", enable, false); ++ handleWarningToken("enum-identifier", enable, false); ++ handleWarningToken("finally", enable, false); ++ handleWarningToken("varargs-cast", enable, false); ++ handleWarningToken("unused", enable, false); ++ handleWarningToken("forbidden", enable, false); ++ } ++ ++ public void configure(String[] argv) throws InvalidInputException { ++ if ((argv == null) || (argv.length == 0)) { ++ // This is a "can't happen". ++ System.exit(1); ++ } ++ ++ ArrayList files = new ArrayList(); ++ ArrayList otherFiles = new ArrayList(); ++ String classpath = null; ++ boolean haveFileList = false; ++ boolean inhibitAllWarnings = false; ++ boolean treatWarningsAsErrors = false; ++ ++ for (int i = 0; i < argv.length; ++i) { ++ String currentArg = argv[i]; ++ ++ if (currentArg.startsWith("-fencoding=")) { //$NON-NLS-1$ ++ // Simply accept the last one. ++ String encoding = getArgument(currentArg); ++ try { // ensure encoding is supported ++ new InputStreamReader(new ByteArrayInputStream(new byte[0]), encoding); ++ } catch (UnsupportedEncodingException e) { ++ throw new InvalidInputException( ++ this.bind("configure.unsupportedEncoding", encoding)); //$NON-NLS-1$ ++ } ++ this.options.put(CompilerOptions.OPTION_Encoding, encoding); ++ } else if (currentArg.startsWith("-foutput-class-dir=")) { //$NON-NLS-1$ ++ String arg = getArgument(currentArg); ++ if (this.destinationPath != null) { ++ StringBuffer errorMessage = new StringBuffer(); ++ errorMessage.append("-d"); //$NON-NLS-1$ ++ errorMessage.append(' '); ++ errorMessage.append(arg); ++ throw new InvalidInputException( ++ this.bind("configure.duplicateOutputPath", errorMessage.toString())); //$NON-NLS-1$ ++ } ++ this.destinationPath = arg; ++ //this.generatePackagesStructure = true; ++ } else if (currentArg.startsWith("-fbootclasspath=")) { //$NON-NLS-1$ ++ classpath = getArgument(currentArg); ++ } else if (currentArg.equals("-fzip-target")) { //$NON-NLS-1$ ++ ++i; ++ if (i >= argv.length) ++ throw new InvalidInputException(this.bind("gcc.zipArg")); //$NON-NLS-1$ ++ this.zipDestination = argv[i]; ++ } else if (currentArg.equals("-fzip-dependency")) { //$NON-NLS-1$ ++ ++i; ++ if (i >= argv.length) ++ throw new InvalidInputException(this.bind("gcc.zipDepArg")); //$NON-NLS-1$ ++ this.zipDependencyDestination = argv[i]; ++ } else if (currentArg.startsWith("-g")) { //$NON-NLS-1$ ++ if (currentArg.equals("-g0")) { //$NON-NLS-1$ ++ setDebugLevel(0); ++ } else if (currentArg.equals("-g2") || currentArg.equals("-g3") //$NON-NLS-1$ //$NON-NLS-2$ ++ || currentArg.equals("-g")) { //$NON-NLS-1$ ++ setDebugLevel(2); ++ } else { ++ // Handle -g1 but also things like -gstabs. ++ setDebugLevel(1); ++ } ++ } else if (currentArg.equals("-Werror")) { //$NON-NLS-1$ ++ treatWarningsAsErrors = true; ++ } else if (currentArg.equals("-Wno-error")) { //$NON-NLS-1$ ++ treatWarningsAsErrors = false; ++ } else if (currentArg.equals("-Wall")) { //$NON-NLS-1$ ++ handleWall(true); ++ } else if (currentArg.equals("-Wno-all")) { //$NON-NLS-1$ ++ handleWall(false); ++ } else if (currentArg.startsWith("-Wno-")) { //$NON-NLS-1$ ++ handleWarningToken(currentArg.substring(5), false, false); ++ } else if (currentArg.startsWith("-W")) { //$NON-NLS-1$ ++ handleWarningToken(currentArg.substring(2), true, false); ++ } else if (currentArg.equals("-w")) { //$NON-NLS-1$ ++ inhibitAllWarnings = true; ++ } else if (currentArg.startsWith("-O")) { //$NON-NLS-1$ ++ // Ignore. ++ } else if (currentArg.equals("-v")) { //$NON-NLS-1$ ++ this.verbose = true; ++ } else if (currentArg.equals("-fsyntax-only")) { //$NON-NLS-1$ ++ this.syntaxOnly = true; ++ } else if (currentArg.startsWith("-fsource=")) { //$NON-NLS-1$ ++ currentArg = getArgument(currentArg); ++ if (currentArg.equals("1.3")) { //$NON-NLS-1$ ++ this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_3); ++ } else if (currentArg.equals("1.4")) { //$NON-NLS-1$ ++ this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_4); ++ } else if (currentArg.equals("1.5") || currentArg.equals("5") || currentArg.equals("5.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ ++ this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_5); ++ } else if (currentArg.equals("1.6") || currentArg.equals("6") || currentArg.equals("6.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ ++ this.options.put(CompilerOptions.OPTION_Source, CompilerOptions.VERSION_1_6); ++ } else { ++ throw new InvalidInputException(this.bind("configure.source", currentArg)); //$NON-NLS-1$ ++ } ++ } else if (currentArg.startsWith("-ftarget=")) { //$NON-NLS-1$ ++ currentArg = getArgument(currentArg); ++ if (currentArg.equals("1.1")) { //$NON-NLS-1$ ++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_1); ++ } else if (currentArg.equals("1.2")) { //$NON-NLS-1$ ++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_2); ++ } else if (currentArg.equals("1.3")) { //$NON-NLS-1$ ++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_3); ++ } else if (currentArg.equals("1.4")) { //$NON-NLS-1$ ++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_4); ++ } else if (currentArg.equals("1.5") || currentArg.equals("5") || currentArg.equals("5.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ ++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_5); ++ } else if (currentArg.equals("1.6") || currentArg.equals("6") || currentArg.equals("6.0")) { //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ ++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_1_6); ++ } else if (currentArg.equals("jsr14")) { //$NON-NLS-1$ ++ this.options.put(CompilerOptions.OPTION_TargetPlatform, CompilerOptions.VERSION_JSR14); ++ } else { ++ throw new InvalidInputException(this.bind("configure.targetJDK", currentArg)); //$NON-NLS-1$ ++ } ++ } else if (currentArg.equals("-ffilelist-file")) { //$NON-NLS-1$ ++ haveFileList = true; ++ } else if (currentArg.endsWith(SuffixConstants.SUFFIX_STRING_java)) { ++ files.add(currentArg); ++ } else if (currentArg.charAt(0) == '-'){ ++ // FIXME: error if not a file? ++ } else { ++ otherFiles.add(currentArg); ++ } ++ } ++ ++ // Read the file list file. We read them all, but really there ++ // will only be one. ++ if (haveFileList) ++ readAllFileListFiles(otherFiles, files); ++ ++ this.filenames = (String[]) files.toArray(new String[0]); ++ this.encodings = new String[this.filenames.length]; ++ this.destinationPaths = new String[this.filenames.length]; ++ for (int i = 0; i < this.filenames.length; ++i) ++ this.destinationPaths[i] = this.destinationPath; ++ ++ // Classpath processing. ++ ArrayList result = new ArrayList(); ++ if (classpath == null) ++ throw new InvalidInputException(this.bind("gcc.noClasspath")); //$NON-NLS-1$ ++ parsePath(result, classpath); ++ ++ // We must always create both output files, even if one is not used. ++ // That way we will always pass valid zip file on to jc1. ++ try { ++ getZipOutput(); ++ getDependencyOutput(); ++ } catch (IOException err) { ++ fail(err); ++ } ++ ++ if (inhibitAllWarnings) ++ disableWarnings(); ++ if (treatWarningsAsErrors) ++ turnWarningsToErrors(); ++ ++ this.checkedClasspaths = new FileSystem.Classpath[result.size()]; ++ result.toArray(this.checkedClasspaths); ++ ++ this.logger.logCommandLineArguments(argv); ++ this.logger.logOptions(this.options); ++ this.logger.logClasspath(this.checkedClasspaths); ++ ++ this.repetitions = 1; ++ } ++ ++ public boolean compile(String[] argv) { ++ boolean result = super.compile(argv); ++ try { ++ if (zipStream != null) { ++ zipStream.finish(); ++ zipStream.close(); ++ } ++ if (zipDependencyStream != null) { ++ zipDependencyStream.finish(); ++ zipDependencyStream.close(); ++ } ++ } catch (IOException err) { ++ fail(err); ++ } ++ return result; ++ } ++ ++ public static void main(String[] argv) { ++ boolean result = new GCCMain(new PrintWriter(System.out), new PrintWriter(System.err), false).compile(argv); ++ System.exit(result ? 0 : 1); ++ } ++} |