Runtime.cpp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "il2cpp-config.h"
  2. #include "os/Path.h"
  3. #include "os/Environment.h"
  4. #include "utils/Runtime.h"
  5. #include "utils/PathUtils.h"
  6. #include "utils/StringUtils.h"
  7. #include "utils/Environment.h"
  8. #ifndef IL2CPP_DEFAULT_DATA_DIR_PATH
  9. #define IL2CPP_DEFAULT_DATA_DIR_PATH Data
  10. #endif
  11. #define IL2CPP_DEFAULT_DATA_DIR_PATH_STR MAKE_STRING(STRINGIZE, IL2CPP_DEFAULT_DATA_DIR_PATH)
  12. namespace il2cpp
  13. {
  14. namespace utils
  15. {
  16. NORETURN void Runtime::Abort()
  17. {
  18. os::Environment::Abort();
  19. }
  20. static std::string s_DataDirFallback;
  21. static std::string s_DataDir;
  22. void Runtime::SetDataDir(const char *path)
  23. {
  24. s_DataDir = path;
  25. }
  26. std::string Runtime::GetDataDir()
  27. {
  28. #if !RUNTIME_TINY
  29. // use explicit value if set
  30. if (s_DataDir.size() > 0)
  31. return s_DataDir;
  32. std::string applicationFolder = os::Path::GetApplicationFolder();
  33. if (!applicationFolder.empty())
  34. return PathUtils::Combine(applicationFolder, StringView<char>(IL2CPP_DEFAULT_DATA_DIR_PATH_STR));
  35. if (s_DataDirFallback.size() == 0 && Environment::GetNumMainArgs() > 0)
  36. {
  37. std::string main = StringUtils::Utf16ToUtf8(Environment::GetMainArgs()[0]);
  38. s_DataDirFallback = PathUtils::DirectoryName(main);
  39. }
  40. return s_DataDirFallback;
  41. #else
  42. return std::string();
  43. #endif
  44. }
  45. } // utils
  46. } // il2cpp