| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- /*
- * Copyright 2010-2017 Branimir Karadzic. All rights reserved.
- * License: https://github.com/bkaradzic/bx#license-bsd-2-clause
- */
- #include <bx/bx.h>
- #if BX_PLATFORM_ANDROID
- # include <android/log.h>
- #elif BX_PLATFORM_WINDOWS || BX_PLATFORM_WINRT || BX_PLATFORM_XBOX360 || BX_PLATFORM_XBOXONE
- extern "C" __declspec(dllimport) void __stdcall OutputDebugStringA(const char* _str);
- #elif BX_PLATFORM_IOS || BX_PLATFORM_OSX
- # if defined(__OBJC__)
- # import <Foundation/NSObjCRuntime.h>
- # else
- # include <CoreFoundation/CFString.h>
- extern "C" void NSLog(CFStringRef _format, ...);
- # endif // defined(__OBJC__)
- #elif 0 // BX_PLATFORM_EMSCRIPTEN
- # include <emscripten.h>
- #else
- # include <stdio.h>
- #endif // BX_PLATFORM_WINDOWS
- namespace bx
- {
- void debugBreak()
- {
- #if BX_COMPILER_MSVC
- __debugbreak();
- #elif BX_CPU_ARM
- __builtin_trap();
- // asm("bkpt 0");
- #elif !BX_PLATFORM_NACL && BX_CPU_X86 && (BX_COMPILER_GCC || BX_COMPILER_CLANG)
- // NaCl doesn't like int 3:
- // NativeClient: NaCl module load failed: Validation failure. File violates Native Client safety rules.
- __asm__ ("int $3");
- #else // cross platform implementation
- int* int3 = (int*)3L;
- *int3 = 3;
- #endif // BX
- }
- void debugOutput(const char* _out)
- {
- #if BX_PLATFORM_ANDROID
- # ifndef BX_ANDROID_LOG_TAG
- # define BX_ANDROID_LOG_TAG ""
- # endif // BX_ANDROID_LOG_TAG
- __android_log_write(ANDROID_LOG_DEBUG, BX_ANDROID_LOG_TAG, _out);
- #elif BX_PLATFORM_WINDOWS || BX_PLATFORM_WINRT || BX_PLATFORM_XBOX360 || BX_PLATFORM_XBOXONE
- OutputDebugStringA(_out);
- #elif BX_PLATFORM_IOS || BX_PLATFORM_OSX
- # if defined(__OBJC__)
- NSLog(@"%s", _out);
- # else
- NSLog(__CFStringMakeConstantString("%s"), _out);
- # endif // defined(__OBJC__)
- #elif 0 // BX_PLATFORM_EMSCRIPTEN
- emscripten_log(EM_LOG_CONSOLE, "%s", _out);
- #else
- fputs(_out, stdout);
- fflush(stdout);
- #endif // BX_PLATFORM_
- }
- } // namespace bx
|