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>
|
Tue May 26 11:59:08 2009 Minero Aoki <aamine@loveruby.net>
|
||||||
|
|
||||||
* net/loveruby/cflat/compiler/Options.java: allow --verbose-asm
|
* net/loveruby/cflat/compiler/Options.java: allow --verbose-asm
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class Compiler {
|
||||||
}
|
}
|
||||||
catch (OptionParseError err) {
|
catch (OptionParseError err) {
|
||||||
errorHandler.error(err.getMessage());
|
errorHandler.error(err.getMessage());
|
||||||
errorHandler.error("Try cbc --help for option usage");
|
errorHandler.error("Try \"cbc --help\" for usage");
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
return null; // never reach
|
return null; // never reach
|
||||||
}
|
}
|
||||||
|
|
|
@ -176,8 +176,8 @@ class Options {
|
||||||
}
|
}
|
||||||
genOptions.setOptimizationLevel(type.equals("0") ? 0 : 1);
|
genOptions.setOptimizationLevel(type.equals("0") ? 0 : 1);
|
||||||
}
|
}
|
||||||
else if (arg.equals("--verbose-asm")
|
else if (arg.equals("-fverbose-asm")
|
||||||
|| arg.equals("-fverbose-asm")) {
|
|| arg.equals("--verbose-asm")) {
|
||||||
genOptions.generateVerboseAsm();
|
genOptions.generateVerboseAsm();
|
||||||
}
|
}
|
||||||
else if (arg.startsWith("-Wa,")) {
|
else if (arg.startsWith("-Wa,")) {
|
||||||
|
@ -263,6 +263,11 @@ class Options {
|
||||||
if (sourceFiles.isEmpty()) {
|
if (sourceFiles.isEmpty()) {
|
||||||
parseError("no input file");
|
parseError("no input file");
|
||||||
}
|
}
|
||||||
|
for (SourceFile src : sourceFiles) {
|
||||||
|
if (! src.isKnownFileType()) {
|
||||||
|
parseError("unknown file type: " + src.path());
|
||||||
|
}
|
||||||
|
}
|
||||||
if (outputFileName != null
|
if (outputFileName != null
|
||||||
&& sourceFiles.size() > 1
|
&& sourceFiles.size() > 1
|
||||||
&& ! isLinkRequired()) {
|
&& ! isLinkRequired()) {
|
||||||
|
@ -334,6 +339,12 @@ class Options {
|
||||||
out.println(" --version Shows compiler version and quit.");
|
out.println(" --version Shows compiler version and quit.");
|
||||||
out.println(" --help Prints this message and quit.");
|
out.println(" --help Prints this message and quit.");
|
||||||
out.println("");
|
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("Parser Options:");
|
||||||
out.println(" -I PATH Adds PATH as import file directory.");
|
out.println(" -I PATH Adds PATH as import file directory.");
|
||||||
out.println(" --debug-parser Dumps parsing process.");
|
out.println(" --debug-parser Dumps parsing process.");
|
||||||
|
@ -347,7 +358,7 @@ class Options {
|
||||||
out.println(" -fpic Equivalent to -fPIC.");
|
out.println(" -fpic Equivalent to -fPIC.");
|
||||||
out.println(" -fPIE Generates PIE assembly.");
|
out.println(" -fPIE Generates PIE assembly.");
|
||||||
out.println(" -fpie Equivalent to -fPIE.");
|
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("");
|
||||||
out.println("Assembler Options:");
|
out.println("Assembler Options:");
|
||||||
out.println(" -Wa,OPT Passes OPT to the assembler (as).");
|
out.println(" -Wa,OPT Passes OPT to the assembler (as).");
|
||||||
|
|
|
@ -2,7 +2,23 @@ package net.loveruby.cflat.compiler;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
class SourceFile implements LdArg {
|
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;
|
private String currentName;
|
||||||
|
|
||||||
SourceFile(String name) {
|
SourceFile(String name) {
|
||||||
|
@ -30,36 +46,44 @@ class SourceFile implements LdArg {
|
||||||
this.currentName = name;
|
this.currentName = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean isKnownFileType() {
|
||||||
|
String ext = extName(originalName);
|
||||||
|
for (String e : KNOWN_EXTENSIONS) {
|
||||||
|
if (e.equals(ext)) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
boolean isCflatSource() {
|
boolean isCflatSource() {
|
||||||
return extName(currentName).equals(".cb");
|
return extName(currentName).equals(EXT_CFLAT_SOURCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isAssemblySource() {
|
boolean isAssemblySource() {
|
||||||
return extName(currentName).equals(".s");
|
return extName(currentName).equals(EXT_ASSEMBLY_SOURCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isObjectFile() {
|
boolean isObjectFile() {
|
||||||
return extName(currentName).equals(".o");
|
return extName(currentName).equals(EXT_OBJECT_FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isSharedLibrary() {
|
boolean isSharedLibrary() {
|
||||||
return extName(currentName).equals(".so");
|
return extName(currentName).equals(EXT_SHARED_LIBRARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isStaticLibrary() {
|
boolean isStaticLibrary() {
|
||||||
return extName(currentName).equals(".a");
|
return extName(currentName).equals(EXT_STATIC_LIBRARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean isExecutable() {
|
boolean isExecutable() {
|
||||||
return extName(currentName).equals("");
|
return extName(currentName).equals(EXT_EXECUTABLE_FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
String asmFileName() {
|
String asmFileName() {
|
||||||
return replaceExt(".s");
|
return replaceExt(EXT_ASSEMBLY_SOURCE);
|
||||||
}
|
}
|
||||||
|
|
||||||
String objFileName() {
|
String objFileName() {
|
||||||
return replaceExt(".o");
|
return replaceExt(EXT_OBJECT_FILE);
|
||||||
}
|
}
|
||||||
|
|
||||||
String linkedFileName(String newExt) {
|
String linkedFileName(String newExt) {
|
||||||
|
|
Loading…
Reference in New Issue