self.toolcontext.info(command, 2)
var res
- if self.toolcontext.verbose_level >= 3 then
+ if self.toolcontext.verbose_level >= 3 or is_windows then
res = sys.system("{command} 2>&1")
else
res = sys.system("{command} 2>&1 >/dev/null")
self.header.add_decl(" #include <libkern/OSByteOrder.h>")
self.header.add_decl(" #define be32toh(x) OSSwapBigToHostInt32(x)")
self.header.add_decl("#endif")
+ self.header.add_decl("#ifdef _WIN32")
+ self.header.add_decl(" #define be32toh(val) _byteswap_ulong(val)")
+ self.header.add_decl("#endif")
self.header.add_decl("#ifdef __pnacl__")
self.header.add_decl(" #define be16toh(val) (((val) >> 8) | ((val) << 8))")
self.header.add_decl(" #define be32toh(val) ((be16toh((val) << 16) | (be16toh((val) >> 16))))")
v.add "\}"
end
+ # Hook to add specif piece of code before the the main C function.
+ #
+ # Is called by `compile_main_function`
+ fun compile_before_main(v: VISITOR)
+ do
+ end
+
+ # Hook to add specif piece of code at the begin on the main C function.
+ #
+ # Is called by `compile_main_function`
+ fun compile_begin_main(v: VISITOR)
+ do
+ end
+
# Generate the main C function.
#
# This function:
v.add_decl("\}")
v.add_decl("void sig_handler(int signo)\{")
+ v.add_decl "#ifdef _WIN32"
+ v.add_decl "PRINT_ERROR(\"Caught signal : %s\\n\", signo);"
+ v.add_decl "#else"
v.add_decl("PRINT_ERROR(\"Caught signal : %s\\n\", strsignal(signo));")
+ v.add_decl "#endif"
v.add_decl("show_backtrace();")
# rethrows
v.add_decl("signal(signo, SIG_DFL);")
+ v.add_decl "#ifndef _WIN32"
v.add_decl("kill(getpid(), signo);")
+ v.add_decl "#endif"
v.add_decl("\}")
v.add_decl("void fatal_exit(int status) \{")
v.add_decl("exit(status);")
v.add_decl("\}")
+ compile_before_main(v)
+
if no_main then
v.add_decl("int nit_main(int argc, char** argv) \{")
else
v.add_decl("int main(int argc, char** argv) \{")
end
+ compile_begin_main(v)
+
v.add "#if !defined(__ANDROID__) && !defined(TARGET_OS_IPHONE)"
v.add("signal(SIGABRT, sig_handler);")
v.add("signal(SIGFPE, sig_handler);")
v.add("signal(SIGTERM, sig_handler);")
v.add("signal(SIGSEGV, sig_handler);")
v.add "#endif"
+ v.add "#ifndef _WIN32"
v.add("signal(SIGPIPE, SIG_IGN);")
+ v.add "#endif"
v.add("glob_argc = argc; glob_argv = argv;")
v.add("catchStack.cursor = -1;")