Emscripten workarounds and llvm syntax fixes
[platform/core/uifw/dali-core.git] / dali / public-api / common / dali-common.cpp
index 9ef8a26..82a4b6c 100644 (file)
 #include <string>
 #include <cstdio>
 #include <execinfo.h>
-#include <cxxabi.h>
+
+#ifndef EMSCRIPTEN // cxxabi not supported
+# include <cxxabi.h>
+#endif
+
 #include <cstring>
 
 // INTERNAL INCLUDES
@@ -37,6 +41,8 @@ const size_t C_SYMBOL_LENGTH = 4096;
 namespace Dali
 {
 
+#ifndef EMSCRIPTEN
+
 std::string Demangle(const char* symbol)
 {
   std::string result;
@@ -87,6 +93,10 @@ std::string Demangle(const char* symbol)
   return result;
 }
 
+#endif // EMSCRIPTEN
+
+#ifndef EMSCRIPTEN
+
 DALI_EXPORT_API DaliException::DaliException(const char *location, const char* condition)
 : mLocation(location), mCondition(condition)
 {
@@ -110,6 +120,16 @@ DALI_EXPORT_API DaliException::DaliException(const char *location, const char* c
   free(symbols);
 }
 
+#else
+
+DALI_EXPORT_API DaliException::DaliException(const char *location, const char* condition)
+: mLocation(location), mCondition(condition)
+{
+  printf("Exception: \n%s\n thrown at %s\nSee dlog for backtrace\n", mCondition.c_str(), mLocation.c_str());
+}
+
+#endif // EMSCRIPTEN
+
 DALI_EXPORT_API void DaliAssertMessage(const char* condition, const char* file, int line)
 {
   DALI_LOG_ERROR_NOFN( "Assertion (%s) failed in: %s:%d\n", condition, file, line );