Add an executable filetype
This commit is contained in:
parent
cd396952f2
commit
2caed5b4ae
@ -10,51 +10,56 @@ type Filetype int; const (
|
||||
FiletypeLibrary
|
||||
FiletypeAssembly
|
||||
FiletypeIR
|
||||
FiletypeExecutable
|
||||
)
|
||||
|
||||
// FiletypeFromString returns a filetype based on the given name.
|
||||
func FiletypeFromString (ext string) (Filetype, bool) {
|
||||
switch ext {
|
||||
case "": return FiletypeUnknown, true
|
||||
case "obj": return FiletypeObject, true
|
||||
case "lib": return FiletypeLibrary, true
|
||||
case "asm": return FiletypeAssembly, true
|
||||
case "ir": return FiletypeIR, true
|
||||
default: return FiletypeUnknown, false
|
||||
case "": return FiletypeUnknown, true
|
||||
case "obj": return FiletypeObject, true
|
||||
case "lib": return FiletypeLibrary, true
|
||||
case "asm": return FiletypeAssembly, true
|
||||
case "ir": return FiletypeIR, true
|
||||
case "exe": return FiletypeExecutable, true
|
||||
default: return FiletypeUnknown, false
|
||||
}
|
||||
}
|
||||
|
||||
// FiletypeFromExt returns a filetype based on the given filename extension.
|
||||
func FiletypeFromExt (target generator.Target, ext string) (Filetype, bool) {
|
||||
switch ext {
|
||||
case ".o": return FiletypeObject, true
|
||||
case targetSoExt(target): return FiletypeLibrary, true
|
||||
case ".s": return FiletypeAssembly, true
|
||||
case ".ll": return FiletypeIR, true
|
||||
default: return FiletypeUnknown, false
|
||||
case ".o": return FiletypeObject, true
|
||||
case targetSoExt(target): return FiletypeLibrary, true
|
||||
case ".s": return FiletypeAssembly, true
|
||||
case ".ll": return FiletypeIR, true
|
||||
case targetExeExt(target): return FiletypeExecutable, true
|
||||
default: return FiletypeUnknown, false
|
||||
}
|
||||
}
|
||||
|
||||
// String returns a string representation of the filetype.
|
||||
func (filetype Filetype) String () string {
|
||||
switch filetype {
|
||||
case FiletypeUnknown: return ""
|
||||
case FiletypeObject: return "obj"
|
||||
case FiletypeLibrary: return "lib"
|
||||
case FiletypeAssembly: return "asm"
|
||||
case FiletypeIR: return "ir"
|
||||
default: return fmt.Sprintf("Filetype(%d)", filetype)
|
||||
case FiletypeUnknown: return ""
|
||||
case FiletypeObject: return "obj"
|
||||
case FiletypeLibrary: return "lib"
|
||||
case FiletypeAssembly: return "asm"
|
||||
case FiletypeIR: return "ir"
|
||||
case FiletypeExecutable: return "exe"
|
||||
default: return fmt.Sprintf("Filetype(%d)", filetype)
|
||||
}
|
||||
}
|
||||
|
||||
// Ext returns the standard filename extension of the filetype.
|
||||
func (filetype Filetype) Ext (target generator.Target) string {
|
||||
switch filetype {
|
||||
case FiletypeUnknown: return ""
|
||||
case FiletypeObject: return ".o"
|
||||
case FiletypeLibrary: return targetSoExt(target)
|
||||
case FiletypeAssembly: return ".s"
|
||||
case FiletypeIR: return ".ll"
|
||||
case FiletypeUnknown: return ""
|
||||
case FiletypeObject: return ".o"
|
||||
case FiletypeLibrary: return targetSoExt(target)
|
||||
case FiletypeAssembly: return ".s"
|
||||
case FiletypeIR: return ".ll"
|
||||
case FiletypeExecutable: return targetExeExt(target)
|
||||
default: return ""
|
||||
}
|
||||
}
|
||||
@ -71,3 +76,11 @@ func targetSoExt (target generator.Target) string {
|
||||
default: return ".so"
|
||||
}
|
||||
}
|
||||
|
||||
func targetExeExt (target generator.Target) string {
|
||||
// TODO: more research is required here
|
||||
switch target.OS {
|
||||
case "windows": return ".exe"
|
||||
default: return ""
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user