mirror of https://github.com/aamine/cbc
r4967@macbookpro: aamine | 2009-05-26 12:21:40 +0900
* net/loveruby/cflat/compiler/Options.java: check unknown file types. * net/loveruby/cflat/compiler/SourceFile.java: new method #isKnownFileType. git-svn-id: file:///Users/aamine/c/gitwork/public/cbc/trunk@4255 1b9489fe-b721-0410-924e-b54b9192deb8
This commit is contained in:
parent
e6b6f20d24
commit
7ce8034b0f
|
@ -1,3 +1,11 @@
|
|||
Tue May 26 12:21:18 2009 Minero Aoki <aamine@loveruby.net>
|
||||
|
||||
* net/loveruby/cflat/compiler/Options.java: check unknown file
|
||||
types.
|
||||
|
||||
* net/loveruby/cflat/compiler/SourceFile.java: new method
|
||||
#isKnownFileType.
|
||||
|
||||
Tue May 26 11:59:08 2009 Minero Aoki <aamine@loveruby.net>
|
||||
|
||||
* net/loveruby/cflat/compiler/Options.java: allow --verbose-asm
|
||||
|
|
|
@ -49,7 +49,7 @@ public class Compiler {
|
|||
}
|
||||
catch (OptionParseError err) {
|
||||
errorHandler.error(err.getMessage());
|
||||
errorHandler.error("Try cbc --help for option usage");
|
||||
errorHandler.error("Try \"cbc --help\" for usage");
|
||||
System.exit(1);
|
||||
return null; // never reach
|
||||
}
|
||||
|
|
|
@ -176,8 +176,8 @@ class Options {
|
|||
}
|
||||
genOptions.setOptimizationLevel(type.equals("0") ? 0 : 1);
|
||||
}
|
||||
else if (arg.equals("--verbose-asm")
|
||||
|| arg.equals("-fverbose-asm")) {
|
||||
else if (arg.equals("-fverbose-asm")
|
||||
|| arg.equals("--verbose-asm")) {
|
||||
genOptions.generateVerboseAsm();
|
||||
}
|
||||
else if (arg.startsWith("-Wa,")) {
|
||||
|
@ -263,6 +263,11 @@ class Options {
|
|||
if (sourceFiles.isEmpty()) {
|
||||
parseError("no input file");
|
||||
}
|
||||
for (SourceFile src : sourceFiles) {
|
||||
if (! src.isKnownFileType()) {
|
||||
parseError("unknown file type: " + src.path());
|
||||
}
|
||||
}
|
||||
if (outputFileName != null
|
||||
&& sourceFiles.size() > 1
|
||||
&& ! isLinkRequired()) {
|
||||
|
@ -334,6 +339,12 @@ class Options {
|
|||
out.println(" --version Shows compiler version and quit.");
|
||||
out.println(" --help Prints this message and quit.");
|
||||
out.println("");
|
||||
out.println("Optimization Options:");
|
||||
out.println(" -O Enables optimization.");
|
||||
out.println(" -O1, -O2, -O3 Equivalent to -O.");
|
||||
out.println(" -Os Equivalent to -O.");
|
||||
out.println(" -O0 Disables optimization (default).");
|
||||
out.println("");
|
||||
out.println("Parser Options:");
|
||||
out.println(" -I PATH Adds PATH as import file directory.");
|
||||
out.println(" --debug-parser Dumps parsing process.");
|
||||
|
@ -347,7 +358,7 @@ class Options {
|
|||
out.println(" -fpic Equivalent to -fPIC.");
|
||||
out.println(" -fPIE Generates PIE assembly.");
|
||||
out.println(" -fpie Equivalent to -fPIE.");
|
||||
out.println(" --verbose-asm Generate assembly with verbose comments.");
|
||||
out.println(" -fverbose-asm Generate assembly with verbose comments.");
|
||||
out.println("");
|
||||
out.println("Assembler Options:");
|
||||
out.println(" -Wa,OPT Passes OPT to the assembler (as).");
|
||||
|
|
|
@ -2,7 +2,23 @@ package net.loveruby.cflat.compiler;
|
|||
import java.io.File;
|
||||
|
||||
class SourceFile implements LdArg {
|
||||
private String originalName;
|
||||
static final String EXT_CFLAT_SOURCE = ".cb";
|
||||
static final String EXT_ASSEMBLY_SOURCE = ".s";
|
||||
static final String EXT_OBJECT_FILE = ".o";
|
||||
static final String EXT_STATIC_LIBRARY = ".a";
|
||||
static final String EXT_SHARED_LIBRARY = ".so";
|
||||
static final String EXT_EXECUTABLE_FILE = "";
|
||||
|
||||
static final String[] KNOWN_EXTENSIONS = {
|
||||
EXT_CFLAT_SOURCE,
|
||||
EXT_ASSEMBLY_SOURCE,
|
||||
EXT_OBJECT_FILE,
|
||||
EXT_STATIC_LIBRARY,
|
||||
EXT_SHARED_LIBRARY,
|
||||
EXT_EXECUTABLE_FILE
|
||||
};
|
||||
|
||||
private final String originalName;
|
||||
private String currentName;
|
||||
|
||||
SourceFile(String name) {
|
||||
|
@ -30,36 +46,44 @@ class SourceFile implements LdArg {
|
|||
this.currentName = name;
|
||||
}
|
||||
|
||||
boolean isKnownFileType() {
|
||||
String ext = extName(originalName);
|
||||
for (String e : KNOWN_EXTENSIONS) {
|
||||
if (e.equals(ext)) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean isCflatSource() {
|
||||
return extName(currentName).equals(".cb");
|
||||
return extName(currentName).equals(EXT_CFLAT_SOURCE);
|
||||
}
|
||||
|
||||
boolean isAssemblySource() {
|
||||
return extName(currentName).equals(".s");
|
||||
return extName(currentName).equals(EXT_ASSEMBLY_SOURCE);
|
||||
}
|
||||
|
||||
boolean isObjectFile() {
|
||||
return extName(currentName).equals(".o");
|
||||
return extName(currentName).equals(EXT_OBJECT_FILE);
|
||||
}
|
||||
|
||||
boolean isSharedLibrary() {
|
||||
return extName(currentName).equals(".so");
|
||||
return extName(currentName).equals(EXT_SHARED_LIBRARY);
|
||||
}
|
||||
|
||||
boolean isStaticLibrary() {
|
||||
return extName(currentName).equals(".a");
|
||||
return extName(currentName).equals(EXT_STATIC_LIBRARY);
|
||||
}
|
||||
|
||||
boolean isExecutable() {
|
||||
return extName(currentName).equals("");
|
||||
return extName(currentName).equals(EXT_EXECUTABLE_FILE);
|
||||
}
|
||||
|
||||
String asmFileName() {
|
||||
return replaceExt(".s");
|
||||
return replaceExt(EXT_ASSEMBLY_SOURCE);
|
||||
}
|
||||
|
||||
String objFileName() {
|
||||
return replaceExt(".o");
|
||||
return replaceExt(EXT_OBJECT_FILE);
|
||||
}
|
||||
|
||||
String linkedFileName(String newExt) {
|
||||
|
|
Loading…
Reference in New Issue