HL/C on Linux

This commit is contained in:
Josh Tynjala
2023-11-03 09:38:42 -07:00
parent 6e17c056dd
commit 6e19e26f45

View File

@@ -224,6 +224,23 @@ class LinuxPlatform extends PlatformTarget
if (noOutput) return;
HashlinkHelper.copyHashlink(project, targetDirectory, applicationDirectory, executablePath, is64);
if (project.targetFlags.exists("hlc"))
{
var command = ["gcc", "-O3", "-o", executablePath, "-std=c11", "-Wl,-rpath,$ORIGIN", "-I", Path.combine(targetDirectory, "obj"), Path.combine(targetDirectory, "obj/ApplicationMain.c"), "-L", applicationDirectory];
for (file in System.readDirectory(applicationDirectory))
{
switch Path.extension(file)
{
case "so", "hdll":
// ensure the executable knows about every library
command.push("-l:" + Path.withoutDirectory(file));
default:
}
}
command.push("-lm");
System.runCommand("", command.shift(), command);
}
}
else if (targetType == "nodejs")
{
@@ -350,7 +367,7 @@ class LinuxPlatform extends PlatformTarget
context.NEKO_FILE = targetDirectory + "/obj/ApplicationMain.n";
context.NODE_FILE = targetDirectory + "/bin/ApplicationMain.js";
context.HL_FILE = targetDirectory + "/obj/ApplicationMain.hl";
context.HL_FILE = targetDirectory + "/obj/ApplicationMain" + (project.defines.exists("hlc") ? ".c" : ".hl");
context.CPP_DIR = targetDirectory + "/obj/";
context.BUILD_DIR = project.app.path + "/linux" + (is64 ? "64" : "") + (isRaspberryPi ? "-rpi" : "");
context.WIN_ALLOW_SHADERS = false;