This commit is contained in:
nub31
2025-06-29 16:04:00 +02:00
parent ed8da26b98
commit 7501f1ed10
3 changed files with 20 additions and 18 deletions

4
example/.gitignore vendored
View File

@@ -1,2 +1,2 @@
bin
bin-int
out
out.a

View File

@@ -1,10 +1,10 @@
CFLAGS = -Wall -Werror -Wextra -g
OBJECTS := $(shell dotnet run --project ../src/compiler/CLI/CLI.csproj src/main.nub src/c.nub)
OBJECTS := $(shell )
example:
mkdir -p bin
gcc $(CFLAGS) -o bin/out lib/libruntime_x64.a $(OBJECTS)
dotnet run --project ../src/compiler/CLI/CLI.csproj src/main.nub src/c.nub
gcc $(CFLAGS) -o out lib/libruntime_x64.a out.a
clean:
rm -r bin bin-int
rm -r out.a out

View File

@@ -5,14 +5,13 @@ using Syntax.Diagnostics;
using Syntax.Parsing;
using Syntax.Tokenization;
using Syntax.Typing;
using Binder = Syntax.Typing.Binder;
const string OUT_DIR = "bin-int";
if (Directory.Exists(OUT_DIR))
{
Directory.Delete(OUT_DIR, true);
}
// const string OUT_DIR = "bin-int";
//
// if (Directory.Exists(OUT_DIR))
// {
// Directory.Delete(OUT_DIR, true);
// }
var files = new List<string>();
@@ -84,18 +83,21 @@ foreach (var file in files)
return 1;
}
var fileName = $"{StringRandomizer.GenerateUniqueHexString(8)}_{Path.GetFileNameWithoutExtension(file)}.o";
var objPath = Path.Combine(OUT_DIR, fileName);
var asmSuccess = await GCC.Assemble(asm, objPath);
var fileName = Path.GetTempFileName();
var asmSuccess = await GCC.Assemble(asm, fileName);
if (!asmSuccess)
{
return 1;
}
objectFiles.Add(objPath);
objectFiles.Add(fileName);
}
Console.Out.WriteLine(string.Join('\t', objectFiles));
var archiveResult = await Archive.Invoke("out.a", objectFiles);
if (!archiveResult)
{
return 1;
}
return 0;