< prev index next >
src/jdk.jextract/share/classes/com/sun/tools/jextract/Main.java
Print this page
*** 25,34 ****
--- 25,35 ----
import jdk.internal.joptsimple.OptionException;
import jdk.internal.joptsimple.OptionParser;
import jdk.internal.joptsimple.OptionSet;
import jdk.internal.joptsimple.util.KeyValuePair;
+ import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.text.MessageFormat;
*** 102,135 ****
logger.setLevel(level);
log.setLevel(level);
logger.addHandler(log);
}
! private void printHelpAndExit(OptionParser parser) {
try {
parser.printHelpOn(System.err);
} catch (IOException ex) {
if (Main.DEBUG) {
ex.printStackTrace(System.err);
}
}
- System.exit(1);
}
! public void run(String[] args) {
OptionParser parser = new OptionParser();
parser.accepts("dry-run", format("help.dry_run"));
parser.accepts("I", format("help.I")).withRequiredArg();
parser.accepts("L", format("help.L")).withRequiredArg();
parser.accepts("l", format("help.l")).withRequiredArg();
parser.accepts("o", format("help.o")).withRequiredArg();
parser.accepts("t", format("help.t")).withRequiredArg();
parser.accepts("m", format("help.m")).withRequiredArg();
parser.accepts("h", format("help.h")).forHelp();
parser.accepts("help", format("help.h")).forHelp();
parser.accepts("C", format("help.C")).withRequiredArg();
parser.accepts("log", format("help.log")).withRequiredArg();
parser.accepts("?", format("help.h")).forHelp();
parser.nonOptions(format("help.non.option"));
OptionSet options = null;
try {
--- 103,139 ----
logger.setLevel(level);
log.setLevel(level);
logger.addHandler(log);
}
! private void printHelp(OptionParser parser) {
try {
parser.printHelpOn(System.err);
} catch (IOException ex) {
if (Main.DEBUG) {
ex.printStackTrace(System.err);
}
}
}
! public int run(String[] args) {
OptionParser parser = new OptionParser();
parser.accepts("dry-run", format("help.dry_run"));
parser.accepts("I", format("help.I")).withRequiredArg();
+ // FIXME: -L not yet implemented. This 'jextract time'
+ // option is expected to specify paths to load shared libraries
+ // to check & warn missing symbols.
parser.accepts("L", format("help.L")).withRequiredArg();
parser.accepts("l", format("help.l")).withRequiredArg();
parser.accepts("o", format("help.o")).withRequiredArg();
parser.accepts("t", format("help.t")).withRequiredArg();
parser.accepts("m", format("help.m")).withRequiredArg();
parser.accepts("h", format("help.h")).forHelp();
parser.accepts("help", format("help.h")).forHelp();
parser.accepts("C", format("help.C")).withRequiredArg();
parser.accepts("log", format("help.log")).withRequiredArg();
+ parser.accepts("rpath", format("help.rpath")).withRequiredArg();
parser.accepts("?", format("help.h")).forHelp();
parser.nonOptions(format("help.non.option"));
OptionSet options = null;
try {
*** 137,151 ****
} catch (OptionException oe) {
System.err.println(oe.getMessage());
if (Main.DEBUG) {
oe.printStackTrace(System.err);
}
! printHelpAndExit(parser);
}
if (args.length == 0 || options.has("h") || options.has("?") || options.has("help")) {
! printHelpAndExit(parser);
}
if (options.has("log")) {
setupLogging(Level.parse((String) options.valueOf("log")));
} else {
--- 141,157 ----
} catch (OptionException oe) {
System.err.println(oe.getMessage());
if (Main.DEBUG) {
oe.printStackTrace(System.err);
}
! printHelp(parser);
! return 1;
}
if (args.length == 0 || options.has("h") || options.has("?") || options.has("help")) {
! printHelp(parser);
! return 1;
}
if (options.has("log")) {
setupLogging(Level.parse((String) options.valueOf("log")));
} else {
*** 159,169 ****
if (options.has("C")) {
options.valuesOf("C").forEach(p -> ctx.clangArgs.add((String) p));
}
if (options.has("l")) {
! options.valuesOf("l").forEach(p -> ctx.libraries.add((String) p));
}
targetPackage = options.has("t") ? (String) options.valueOf("t") : "";
if (!targetPackage.isEmpty()) {
Validators.validPackageName(targetPackage);
--- 165,193 ----
if (options.has("C")) {
options.valuesOf("C").forEach(p -> ctx.clangArgs.add((String) p));
}
if (options.has("l")) {
! try {
! options.valuesOf("l").forEach(p -> {
! String lib = (String)p;
! if (lib.indexOf(File.separatorChar) != -1) {
! throw new IllegalArgumentException(format("l.name.should.not.be.path", lib));
! }
! ctx.libraries.add(lib);
! });
! } catch (IllegalArgumentException iae) {
! System.err.println(iae.getMessage());
! if (Main.DEBUG) {
! iae.printStackTrace(System.err);
! }
! return 1;
! }
! }
!
! if (options.has("rpath")) {
! options.valuesOf("rpath").forEach(p -> ctx.libraryPaths.add((String) p));
}
targetPackage = options.has("t") ? (String) options.valueOf("t") : "";
if (!targetPackage.isEmpty()) {
Validators.validPackageName(targetPackage);
*** 179,193 ****
} catch (RuntimeException re) {
System.err.println(re.getMessage());
if (Main.DEBUG) {
re.printStackTrace(System.err);
}
! System.exit(2);
}
if (options.has("dry-run")) {
! System.exit(0);
}
String outputName = options.has("o")? (String)options.valueOf("o") :
options.nonOptionArguments().get(0) + ".jar";
Path jar = Paths.get(outputName);
--- 203,217 ----
} catch (RuntimeException re) {
System.err.println(re.getMessage());
if (Main.DEBUG) {
re.printStackTrace(System.err);
}
! return 2;
}
if (options.has("dry-run")) {
! return 0;
}
String outputName = options.has("o")? (String)options.valueOf("o") :
options.nonOptionArguments().get(0) + ".jar";
Path jar = Paths.get(outputName);
*** 196,211 ****
} catch (IOException ex) {
System.err.println(format("cannot.write.jar.file", jar, ex));
if (Main.DEBUG) {
ex.printStackTrace(System.err);
}
! System.exit(3);
}
}
public static void main(String... args) {
Main instance = new Main(Context.getInstance());
! instance.run(args);
}
}
--- 220,237 ----
} catch (IOException ex) {
System.err.println(format("cannot.write.jar.file", jar, ex));
if (Main.DEBUG) {
ex.printStackTrace(System.err);
}
! return 3;
}
+
+ return 0;
}
public static void main(String... args) {
Main instance = new Main(Context.getInstance());
! System.exit(instance.run(args));
}
}
< prev index next >