diff --git a/build.sh b/build.sh index 167dc12..59d9c3a 100644 --- a/build.sh +++ b/build.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -g++ -o bld build_tool/main.cpp -g +g++ -o bld build_tool/main.cpp -g ./bld diff --git a/build_file.cpp b/build_file.cpp index c8a4732..8743660 100644 --- a/build_file.cpp +++ b/build_file.cpp @@ -53,12 +53,14 @@ int main(int argc, char **argv) { } #endif { - S8_String cc = is_cpp ? "clang++" : "clang"; + S8_String cc = "clang"; Array flags = {scratch}; flags += "-g -Wno-write-strings"; flags += "-fdiagnostics-absolute-paths"; - flags += "-fsanitize=address"; + flags += "-fno-exceptions"; + if (is_cpp) flags += "-fno-rtti"; + if (is_cpp) flags += "-fsanitize=address"; if (is_cpp) flags += "-std=c++11"; flags += Fmt("-o %.*s", S8_Expand(exe)); @@ -69,10 +71,12 @@ int main(int argc, char **argv) { } #if OS_LINUX { - S8_String cc = is_cpp ? "g++" : "gcc"; + S8_String cc = "gcc"; Array flags = {scratch}; flags += "-g -Wno-write-strings"; flags += "-fsanitize=address"; + if (is_cpp) flags += "-fno-exceptions"; + if (is_cpp) flags += "-fno-rtti"; if (is_cpp) flags += "-std=c++11"; flags += Fmt("-o %.*s", S8_Expand(exe)); diff --git a/build_tool/main.cpp b/build_tool/main.cpp index 958aae9..007247c 100644 --- a/build_tool/main.cpp +++ b/build_tool/main.cpp @@ -56,6 +56,8 @@ int main(int argument_count, char **arguments) { flags += "-std=c++11 -g"; flags += "-fdiagnostics-absolute-paths"; flags += "-Wno-writable-strings"; + flags += "-fno-exceptions"; + flags += "-fno-rtti"; flags += Fmt("-o %.*s", S8_Expand(exe_name)); result = Run(cc + build_file + flags); } @@ -65,6 +67,8 @@ int main(int argument_count, char **arguments) { Array flags = {Perm}; flags += "-std=c++11 -g"; flags += "-Wno-write-strings"; + flags += "-fno-exceptions"; + flags += "-fno-rtti"; flags += Fmt("-o %.*s", S8_Expand(exe_name)); result = Run(cc + build_file + flags); } @@ -80,6 +84,7 @@ int main(int argument_count, char **arguments) { // Run the build file double time = OS_GetTime(); if (build_file.str) { + exe_name = OS_GetAbsolutePath(Perm, exe_name); int result = Run(exe_name + cmd); if (result != 0) { IO_Printf("FAILED execution of the build file!\n"); diff --git a/standalone_libraries/io.h b/standalone_libraries/io.h index f794f0f..29a34b9 100644 --- a/standalone_libraries/io.h +++ b/standalone_libraries/io.h @@ -15,10 +15,10 @@ typedef enum IO_ErrorResult { IO_ErrorResult_Exit, } IO_ErrorResult; -#ifdef _WIN32 +#if defined(_MSC_VER) #define IO_DebugBreak() (__debugbreak(), 0) #else - #define IO_DebugBreak() (IO_Exit(1), 0) + #define IO_DebugBreak() (__builtin_trap(), 0) #endif #if defined(__has_attribute)