...
This commit is contained in:
@@ -48,39 +48,13 @@ Directory.CreateDirectory(".build");
|
||||
|
||||
var typedModules = modules.Select(x => (x.Key, TypedModule.FromModule(x.Key, x.Value, modules))).ToDictionary();
|
||||
|
||||
var moduleHeaders = new List<string>();
|
||||
|
||||
var commonHeaderOut = Path.Combine(".build", "runtime.h");
|
||||
|
||||
File.WriteAllText(commonHeaderOut, """
|
||||
#include <stddef.h>
|
||||
|
||||
void *rc_alloc(size_t size, void (*destructor)(void *self));
|
||||
void rc_retain(void *obj);
|
||||
void rc_release(void *obj);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned long long length;
|
||||
char *data;
|
||||
} nub_string;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned long long length;
|
||||
void *data;
|
||||
} nub_slice;
|
||||
""");
|
||||
|
||||
moduleHeaders.Add(commonHeaderOut);
|
||||
Directory.CreateDirectory(Path.Combine(".build", "modules"));
|
||||
|
||||
foreach (var typedModule in typedModules)
|
||||
{
|
||||
var header = HeaderGenerator.Generate(typedModule.Key, typedModule.Value);
|
||||
var headerOut = Path.Combine(".build", "modules", typedModule.Key + ".h");
|
||||
Directory.CreateDirectory(Path.Combine(".build", "modules"));
|
||||
var headerOut = Path.Combine(Path.Combine(".build", "modules"), typedModule.Key + ".h");
|
||||
File.WriteAllText(headerOut, header);
|
||||
moduleHeaders.Add(headerOut);
|
||||
}
|
||||
|
||||
for (var i = 0; i < args.Length; i++)
|
||||
@@ -106,7 +80,7 @@ foreach (var cPath in cPaths)
|
||||
{
|
||||
var objectPath = Path.ChangeExtension(cPath, "o");
|
||||
using var compileProcess = Process.Start("clang", [
|
||||
..moduleHeaders.SelectMany(x => new[] { "-include", x }),
|
||||
"-I.build",
|
||||
"-ffreestanding", "-std=c23",
|
||||
"-g", "-c",
|
||||
"-o", objectPath,
|
||||
|
||||
Reference in New Issue
Block a user