Files
wasm_transcript_browser/build_file.c
2025-01-03 14:01:32 +01:00

102 lines
3.2 KiB
C

#include "src/core/core_inc.h"
#include "src/core/core_inc.c"
#define BUILD_TOOL_LIB
#define S8_String s8_t
#include "src/meta/build_tool.c"
#include "src/meta/parser.c"
#include "src/meta/serialize.c"
#include "src/app/app.meta.c"
void list_files_recursive(sb8_t *sb, s8_t path) {
for (OS_FileIter iter = OS_IterateFiles(&Perm, path); OS_IsValid(iter); OS_Advance(&iter)) {
if (iter.is_directory) {
list_files_recursive(sb, iter.absolute_path);
} else {
sb8_append(sb, iter.absolute_path);
}
}
}
int main(int argc, char **argv) {
int ok = 0;
ma_arena_t *arena = ma_create(ma_default_reserve_size);
meta_app(arena);
bool execute_python_snippets = true; // make sure to not abuse just for quick maths
bool run_server = false;
bool core_test_target = false;
bool wasm_target = true;
bool win32_target = true;
if (execute_python_snippets) {
sb8_t *sb = sb8_serial_begin(arena);
list_files_recursive(sb, s8_lit(".."));
for (sb8_node_t *it = sb->first; it; it = it->next) {
s8_t abs = it->string;
bool is_c_file = s8_ends_with(abs, s8_lit(".c"), true) || s8_ends_with(abs, s8_lit(".cpp"), true) || s8_ends_with(abs, s8_lit(".h"), true) || s8_ends_with(abs, s8_lit(".hpp"), true);
if (!is_c_file) {
continue;
}
bool is_build_file = s8_ends_with(abs, s8_lit("build_file.c"), true);
if (is_build_file) {
continue;
}
s8_t file = OS_ReadFile(&Perm, abs);
i64 idx = s8_find(file, s8_lit("/*#"), 0);
if (idx != -1) {
os_systemf("\"D:\\dev\\apps\\bin\\pyorun.bat\" %s", abs.str);
}
}
}
if (run_server) {
os_systemf("start /D ..\\package ..\\package\\run_server.bat");
}
if (win32_target) {
os_delete_file(s8_lit("win32_app.pdb"));
ok = os_systemf(
"cl ../src/app/app_win32.c -Fe:win32_app.exe -Fd:win32_app.pdb"
" -I ../src"
" /Zi /FC /nologo /Oi"
" /WX /W3 /wd4200 /diagnostics:column"
" /link /incremental:no"
);
if (ok != 0) return ok;
}
if (core_test_target) {
os_delete_file(s8_lit("core_test.pdb"));
ok = os_systemf(
"cl ../src/core_test/core_test_entry.c -Fe:core_test.exe -Fd:core_test.pdb"
" -I ../src"
" /Zi /FC /nologo /Oi /O2"
" /WX /W3 /wd4200 /diagnostics:column"
" /link /incremental:no"
);
if (ok != 0) return ok;
os_systemf("core_test.exe");
}
if (wasm_target) {
ok = os_systemf(
"clang.exe ../src/wasm_app/main.c -o main.wasm"
" -Oz -g -I../src"
" -Wall -Wno-missing-braces"
" -fdiagnostics-absolute-paths -fdiagnostics-format=msvc"
" --target=wasm32 -nostdlib -mbulk-memory -msimd128"
" -Wl,-export-dynamic,--allow-undefined,--import-memory,--no-entry,--initial-memory=131072000,--max-memory=4294967296"
);
os_copy("main.wasm", "../package/main.wasm", os_copy_overwrite);
if (ok != 0) return ok;
}
return ok;
}