From 810175b6c99f66f578df7dfaa925b27b57152737 Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Sat, 30 Mar 2024 22:48:33 -0400 Subject: [PATCH] Object files have platform specific extensions --- compiler/filetype.go | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/compiler/filetype.go b/compiler/filetype.go index b7c9e8a..5f76580 100644 --- a/compiler/filetype.go +++ b/compiler/filetype.go @@ -29,7 +29,7 @@ func FiletypeFromString (ext string) (Filetype, bool) { // 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 targetObjExt(target): return FiletypeObject, true case targetSoExt(target): return FiletypeLibrary, true case ".s": return FiletypeAssembly, true case ".ll": return FiletypeIR, true @@ -55,7 +55,7 @@ func (filetype Filetype) String () string { func (filetype Filetype) Ext (target generator.Target) string { switch filetype { case FiletypeUnknown: return "" - case FiletypeObject: return ".o" + case FiletypeObject: return targetObjExt(target) case FiletypeLibrary: return targetSoExt(target) case FiletypeAssembly: return ".s" case FiletypeIR: return ".ll" @@ -77,6 +77,15 @@ func targetSoExt (target generator.Target) string { } } +func targetObjExt (target generator.Target) string { + // TODO: more research is required here + switch target.OS { + case "win32": return ".obj" + default: return ".o" + } +} + + func targetExeExt (target generator.Target) string { // TODO: more research is required here switch target.OS {