< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/main/Option.java

Print this page
rev 2973 : JDK-8058150

@@ -30,27 +30,32 @@
 import java.io.PrintWriter;
 import java.util.Collections;
 import java.util.EnumSet;
 import java.util.LinkedHashMap;
 import java.util.Map;
+import java.util.ServiceLoader;
 import java.util.Set;
+import java.util.TreeSet;
 
 import javax.lang.model.SourceVersion;
 
 import com.sun.tools.doclint.DocLint;
 import com.sun.tools.javac.code.Lint;
 import com.sun.tools.javac.code.Lint.LintCategory;
 import com.sun.tools.javac.code.Source;
 import com.sun.tools.javac.code.Type;
 import com.sun.tools.javac.jvm.Profile;
 import com.sun.tools.javac.jvm.Target;
+import com.sun.tools.javac.platform.PlatformProvider;
+import com.sun.tools.javac.platform.PlatformProviderFactory;
 import com.sun.tools.javac.processing.JavacProcessingEnvironment;
 import com.sun.tools.javac.util.Log;
 import com.sun.tools.javac.util.Log.PrefixKind;
 import com.sun.tools.javac.util.Log.WriterKind;
 import com.sun.tools.javac.util.Options;
 import com.sun.tools.javac.util.StringUtils;
+
 import static com.sun.tools.javac.main.Option.ChoiceKind.*;
 import static com.sun.tools.javac.main.Option.OptionGroup.*;
 import static com.sun.tools.javac.main.Option.OptionKind.*;
 
 /**

@@ -262,10 +267,41 @@
             }
             return super.process(helper, option, operand);
         }
     },
 
+    PLATFORM("-platform", "opt.arg.platform", "opt.platform", STANDARD, BASIC) {
+        @Override
+        void help(Log log, OptionKind kind) {
+            if (this.kind != kind)
+                return;
+
+            Iterable<PlatformProviderFactory> factories =
+                    ServiceLoader.load(PlatformProviderFactory.class, Arguments.class.getClassLoader());
+            Set<String> platforms = new TreeSet<>();
+
+            for (PlatformProviderFactory factory : factories) {
+                for (PlatformProvider platform : factory.createPlatformProviders()) {
+                    platforms.add(platform.getName());
+                }
+            }
+
+            StringBuilder targets = new StringBuilder();
+            String delim = "";
+            for (String platform : platforms) {
+                targets.append(delim);
+                targets.append(platform);
+                delim = ", ";
+            }
+
+            log.printRawLines(WriterKind.NOTICE,
+                    String.format(HELP_LINE_FORMAT,
+                        super.helpSynopsis(log),
+                        log.localize(PrefixKind.JAVAC, descrKey, targets.toString())));
+        }
+    },
+
     PROFILE("-profile", "opt.arg.profile", "opt.profile", STANDARD, BASIC) {
         @Override
         public boolean process(OptionHelper helper, String option, String operand) {
             Profile profile = Profile.lookup(operand);
             if (profile == null) {
< prev index next >