Success running on linux

This commit is contained in:
Karol Krzosa
2025-05-17 08:22:27 +02:00
parent 76d52d9e1c
commit 720fdd9f34
16 changed files with 408 additions and 122 deletions

View File

@@ -5,32 +5,44 @@ enum {
PROFILE_RELEASE,
};
int Profile = PROFILE_DEBUG;
#if OS_WINDOWS
S8_String Compiler = "cl.exe";
#else
S8_String Compiler = "clang";
#endif
void AddCommonFlags(Array<S8_String> *cmd) {
if (Compiler == "cl.exe") {
cmd->add("/MP");
}
cmd->add("/Zi /FC /nologo");
cmd->add("/WX /W3 /wd4200 /diagnostics:column");
if (Compiler == "clang-cl.exe") {
cmd->add("-fdiagnostics-absolute-paths");
cmd->add("-Wno-missing-braces");
cmd->add("-Wno-writable-strings");
cmd->add("-Wno-unused-function");
}
cmd->add("/Oi");
cmd->add("-D_CRT_SECURE_NO_WARNINGS");
if (Profile == PROFILE_DEBUG) {
cmd->add("-DDEBUG_BUILD=1");
cmd->add("-DRELEASE_BUILD=0");
// cmd->add("-fsanitize=address");
// cmd->add("-DUSE_ADDRESS_SANITIZER");
// cmd->add("/MDd");
if (Compiler == "clang") {
cmd->add("-g");
cmd->add("-Wno-writable-strings");
cmd->add("-fdiagnostics-absolute-paths");
cmd->add("-nostdlib++");
cmd->add("-fno-exceptions");
} else {
cmd->add("-DDEBUG_BUILD=0");
cmd->add("-DRELEASE_BUILD=1");
cmd->add("/O2 /MT /DNDEBUG /GL");
if (Compiler == "cl.exe") {
cmd->add("/MP");
}
cmd->add("/Zi /FC /nologo");
cmd->add("/WX /W3 /wd4200 /diagnostics:column");
if (Compiler == "clang-cl.exe") {
cmd->add("-fdiagnostics-absolute-paths");
cmd->add("-Wno-missing-braces");
cmd->add("-Wno-writable-strings");
cmd->add("-Wno-unused-function");
}
cmd->add("/Oi");
cmd->add("-D_CRT_SECURE_NO_WARNINGS");
if (Profile == PROFILE_DEBUG) {
cmd->add("-DDEBUG_BUILD=1");
cmd->add("-DRELEASE_BUILD=0");
// cmd->add("-fsanitize=address");
// cmd->add("-DUSE_ADDRESS_SANITIZER");
// cmd->add("/MDd");
} else {
cmd->add("-DDEBUG_BUILD=0");
cmd->add("-DRELEASE_BUILD=1");
cmd->add("/O2 /MT /DNDEBUG /GL");
}
}
}
@@ -70,18 +82,6 @@ Library PrepareSDLDynamic() {
return l;
}
Library PrepareRaylib() {
Library l = {};
l.include_paths.add("../src/external/raylib/include");
if (0) {
l.objects.add("../src/external/raylib/lib/raylib.lib");
} else {
l.objects.add("../src/external/raylib/lib/raylibdll.lib");
OS_CopyFile("../src/external/raylib/lib/raylib.dll", "./raylib.dll", false);
}
return l;
}
Library PrepareLua() {
Library l = {};
l.include_paths.add("../src/external/lua/src");
@@ -93,7 +93,7 @@ Library PrepareLua() {
if (S8_EndsWith(it.filename, ".c", true)) {
l.sources.add(it.absolute_path);
S8_String file = S8_ChopLastPeriod(it.filename);
l.objects.add(Fmt("%.*s.obj", S8_Expand(file)));
l.objects.add(Fmt("%.*s" IF_WINDOWS_ELSE(".obj", ".o"), S8_Expand(file)));
}
}
@@ -113,7 +113,11 @@ Library PrepareGlad() {
Library l = {};
l.sources.add("../src/external/glad/glad.c");
l.include_paths.add("../src/external/glad/");
#if OS_WINDOWS
l.objects.add("glad.obj");
#else
l.objects.add("glad.o");
#endif
if (!OS_FileExists(l.objects[0])) {
Array<S8_String> cmd = {};
cmd.add(Compiler);
@@ -126,6 +130,33 @@ Library PrepareGlad() {
return l;
}
int CompileTextEditorLinux() {
Array<S8_String> cmd = {};
Array<Library> libs = {};
libs.add(PrepareLua());
libs.add(PrepareGlad());
cmd.add("clang");
cmd.add("../src/text_editor/text_editor.cpp");
cmd.add("../src/basic/unix.cpp");
cmd.add("-o te_linux.exe");
cmd.add("-I../src");
// cmd.add("-Wall");
AddCommonFlags(&cmd);
For2(lib, libs) For(lib.include_paths) cmd.add(Fmt("-I %.*s", S8_Expand(it)));
For2(lib, libs) For(lib.defines) cmd.add(it);
// cmd.add("-L../src/external/SDL/build/");
cmd.add("-I../src/external/SDL/build/include");
cmd.add("-lm");
cmd.add("../src/external/SDL/build/libSDL3.a");
For2(lib, libs) For(lib.link) cmd.add(it);
For(libs) For2(o, it.objects) cmd.add(o);
int result = Run(cmd);
return result;
}
int CompileTextEditor() {
int result = 0;
@@ -354,7 +385,12 @@ int main() {
GenerateLuaApi();
GenerateConfig();
#if OS_WINDOWS
int result = CompileTextEditor();
#else
int result = CompileTextEditorLinux();
#endif
// int result = CompileNewPlatform();
if (result != 0) {