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