AuroraRuntime/Source/Process/Process.cpp

124 lines
2.9 KiB
C++
Raw Normal View History

/***
Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved.
File: Process.cpp
Date: 2021-8-20
Author: Reece
***/
2021-09-30 14:57:41 +00:00
#include <Source/RuntimeInternal.hpp>
2021-09-06 10:58:08 +00:00
#include "Process.hpp"
#if defined(AURORA_IS_POSIX_DERIVED)
#include <stdlib.h>
#endif
namespace Aurora::Process
{
static constexpr const char *GetPlatformString(Build::EPlatform platform)
{
switch (platform)
{
case Build::EPlatform::ePlatformWin32:
return ".Win32";
case Build::EPlatform::ePlatformLinux:
return ".Linux";
case Build::EPlatform::ePlatformAndroid:
return ".Android";
case Build::EPlatform::ePlatformApple:
return ".Mac";
case Build::EPlatform::ePlatformIos:
return ".IOS";
default:
return nullptr;
}
}
static constexpr const char *GetPlatformExt(Build::EPlatform platform)
{
switch (platform)
{
case Build::EPlatform::ePlatformWin32:
return ".dll";
case Build::EPlatform::ePlatformLinux:
case Build::EPlatform::ePlatformAndroid:
return ".so";
case Build::EPlatform::ePlatformApple:
case Build::EPlatform::ePlatformIos:
return ".dynlib";
default:
return nullptr;
}
}
static constexpr const char *GetArchString(Build::EArchitecture architecture)
{
switch (architecture)
{
case Build::EArchitecture::eX86_32:
return ".x86_32";
case Build::EArchitecture::eX86_64:
return ".x86_64";
case Build::EArchitecture::eAArch64:
return ".Arm";
default:
return nullptr;
}
}
static constexpr AuString ConstructAuDllSuffix()
{
auto platform = GetPlatformString(Build::kCurrentPlatform);
auto architecture = GetArchString(Build::kCurrentArchitecture);
auto ext = GetPlatformExt(Build::kCurrentPlatform);
AuString ret;
#if defined(DEBUG)
ret += ".Debug";
#elif defined(STAGING)
ret += ".Stage";
#elif defined(SHIP)
ret += ".Ship";
#endif
if (platform)
{
ret += platform;
}
if (architecture)
{
ret += architecture;
}
if (ext)
{
ret += ext;
}
return ret;
}
AUKN_SYM bool LoadModule(const ModuleLoadRequest &request)
{
return false;
}
AUKN_SYM AuMach GetProcAddress(AuString mod, AuString symbol)
{
return {};
}
2021-09-06 10:58:08 +00:00
AUKN_SYM void Exit(AuUInt32 exitcode)
{
#if defined(AURORA_IS_MODERNNT_DERIVED)
ExitProcess(exitcode);
#elif defined(AURORA_IS_POSIX_DERIVED)
exit(exitcode);
#else
// ???
*(AuUInt32 *)0 = exitcode;
*(AuUInt32 *)0xFFFF = exitcode;
*(AuUInt32 *)0xFFFFFFFF = exitcode;
2021-09-06 10:58:08 +00:00
#endif
}
}