/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Process.cpp Date: 2021-8-20 Author: Reece ***/ #include #include "Process.hpp" #if defined(AURORA_IS_POSIX_DERIVED) #include #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 {}; } 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; #endif } }