#include "src/build_tool/library.cpp" struct Library { Array sources; Array objects; S8_String include_path; }; Library BuildZLib() { Library l = {}; l.sources.add("../src/external/zlib-1.3.1/adler32.c"); l.sources.add("../src/external/zlib-1.3.1/compress.c"); l.sources.add("../src/external/zlib-1.3.1/crc32.c"); l.sources.add("../src/external/zlib-1.3.1/deflate.c"); l.sources.add("../src/external/zlib-1.3.1/gzclose.c"); l.sources.add("../src/external/zlib-1.3.1/gzlib.c"); l.sources.add("../src/external/zlib-1.3.1/gzread.c"); l.sources.add("../src/external/zlib-1.3.1/gzwrite.c"); l.sources.add("../src/external/zlib-1.3.1/inflate.c"); l.sources.add("../src/external/zlib-1.3.1/infback.c"); l.sources.add("../src/external/zlib-1.3.1/inftrees.c"); l.sources.add("../src/external/zlib-1.3.1/inffast.c"); l.sources.add("../src/external/zlib-1.3.1/trees.c"); l.sources.add("../src/external/zlib-1.3.1/uncompr.c"); l.sources.add("../src/external/zlib-1.3.1/zutil.c"); l.include_path = "../src/external/zlib-1.3.1/"; l.objects.add("adler32.obj"); l.objects.add("compress.obj"); l.objects.add("crc32.obj"); l.objects.add("deflate.obj"); l.objects.add("gzclose.obj"); l.objects.add("gzlib.obj"); l.objects.add("gzread.obj"); l.objects.add("gzwrite.obj"); l.objects.add("inflate.obj"); l.objects.add("infback.obj"); l.objects.add("inftrees.obj"); l.objects.add("inffast.obj"); l.objects.add("trees.obj"); l.objects.add("uncompr.obj"); l.objects.add("zutil.obj"); if (!OS_FileExists(l.objects[0])) { Array cmd = {}; cmd.add("cl.exe -c -nologo -Zi -MP -FC "); cmd.add(S8_Format(Perm, "-I %.*s ", S8_Expand(l.include_path))); cmd += l.sources; Run(cmd); } return l; } void AddCommonFlags(Array *cmd, bool debug = true) { cmd->add("/MP /Zi /FC /nologo"); cmd->add("/WX /W3 /wd4200 /diagnostics:column"); cmd->add("/Oi"); cmd->add("-D_CRT_SECURE_NO_WARNINGS"); if (debug) { cmd->add("-DDEBUG_BUILD=1"); cmd->add("-DRELEASE_BUILD=0"); // cmd->add("-D_DEBUG /MDd"); } else { cmd->add("-DDEBUG_BUILD=0"); cmd->add("-DRELEASE_BUILD=1"); cmd->add("/O2 /MT /DNDEBUG /GL"); } } int main() { MA_InitScratch(); SRC_InitCache(Perm, "pdf_browser.cache"); int result = 0; if (0) { Array cmd = {}; cmd.add("cl.exe"); cmd.add("-Fe:transcript_browser.exe"); cmd.add("-Fd:transcript_browser.pdb"); cmd.add("-std:c++20"); // semaphore AddCommonFlags(&cmd); cmd.add("-I ../src/external/raylib/include"); cmd.add("../src/transcript_browser/main.cpp"); cmd.add("../src/basic/win32.cpp"); cmd.add("/link"); cmd.add("../src/external/raylib/raylib.lib"); cmd.add("opengl32.lib kernel32.lib user32.lib gdi32.lib winmm.lib msvcrt.lib shell32.lib"); cmd.add("/NODEFAULTLIB:LIBCMT"); cmd.add("/incremental:no"); OS_DeleteFile("transcript_browser.pdb"); result += Run(cmd); } if (1) { Array cmd = {}; cmd.add("cl.exe"); cmd.add("-Fe:text_editor.exe"); cmd.add("-Fd:text_editor.pdb"); cmd.add("-std:c++20"); // semaphore AddCommonFlags(&cmd); cmd.add("-I ../src/external/raylib/include"); cmd.add("../src/text_editor/main.cpp"); cmd.add("../src/basic/win32.cpp"); cmd.add("/link"); cmd.add("../src/external/raylib/raylib.lib"); cmd.add("opengl32.lib kernel32.lib user32.lib gdi32.lib winmm.lib shell32.lib"); cmd.add("/NODEFAULTLIB:LIBCMT"); cmd.add("/incremental:no"); OS_DeleteFile("text_editor.pdb"); result += Run(cmd); } if (result != 0) { OS_DeleteFile("pdf_browser.cache"); return result; } SRC_SaveCache(); return 0; }