refactor(libs): use local cmakelists in libc
This commit is contained in:
parent
2323a08de6
commit
67b778055a
|
|
@ -20,9 +20,9 @@ void Autorun(const std::string& absPath, bool toWindows) {
|
|||
const int rawCode = std::system(cmd.c_str());
|
||||
|
||||
if (toWindows) {
|
||||
std::cout << "Exit code: " << rawCode << '\n';
|
||||
std::cout << "\nExit code: " << rawCode << '\n';
|
||||
} else {
|
||||
std::cout << "Raw exit code: " << rawCode << "; Unpacked: " << (rawCode >> 8) << '\n';
|
||||
std::cout << "\nRaw exit code: " << rawCode << "; Unpacked: " << (rawCode >> 8) << '\n';
|
||||
}
|
||||
|
||||
std::cout << "\nPress Enter to exit...\n";
|
||||
|
|
|
|||
|
|
@ -15,7 +15,9 @@ if(MINGW)
|
|||
endif()
|
||||
|
||||
set(LIBC_DIR ${CMAKE_CURRENT_SOURCE_DIR}/prx/libc)
|
||||
add_library(libc SHARED EXCLUDE_FROM_ALL ${LIBC_DIR}/Export.cpp)
|
||||
add_library(libc SHARED EXCLUDE_FROM_ALL)
|
||||
set(LIBS_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
add_subdirectory(${LIBC_DIR} ${CMAKE_CURRENT_BINARY_DIR}/prx/libc)
|
||||
target_include_directories(libc PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
set(UNPATCHED_DIR ${CMAKE_CURRENT_BINARY_DIR}/libs/unpatched)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
target_sources(libc PRIVATE
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/Export.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/General.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/specifics/gcc/StackGuard.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/specifics/linux/DlIteratePhdr.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/Strings.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/Math.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/Time.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/FileAndHeap.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/JumpBuffer.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/Formatting.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/RuntimeSupport.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/LocaleSupport.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/Process.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/CxxAbiSupport.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/src/exception/Exports.cpp
|
||||
)
|
||||
|
||||
target_include_directories(libc PRIVATE
|
||||
${LIBS_INCLUDE_DIR}
|
||||
)
|
||||
|
|
@ -3,21 +3,6 @@
|
|||
#include "SceTypes.hpp"
|
||||
#include "prx/libc/include/General.hpp"
|
||||
|
||||
#include "src/General.cpp"
|
||||
#include "src/specifics/gcc/StackGuard.cpp"
|
||||
#include "src/specifics/linux/DlIteratePhdr.cpp"
|
||||
#include "src/Strings.cpp"
|
||||
#include "src/Math.cpp"
|
||||
#include "src/Time.cpp"
|
||||
#include "src/FileAndHeap.cpp"
|
||||
#include "src/JumpBuffer.cpp"
|
||||
#include "src/Formatting.cpp"
|
||||
#include "src/RuntimeSupport.cpp"
|
||||
#include "src/LocaleSupport.cpp"
|
||||
#include "src/Process.cpp"
|
||||
#include "src/CxxAbiSupport.cpp"
|
||||
#include "src/exception/Exports.cpp"
|
||||
|
||||
uint32_t Need_sceLibc = 1;
|
||||
|
||||
extern "C" {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
#ifndef CORE_LIBS_PRX_LIBC_INCLUDE_EXCEPTIONS_RUNTIME_HPP
|
||||
#define CORE_LIBS_PRX_LIBC_INCLUDE_EXCEPTIONS_RUNTIME_HPP
|
||||
|
||||
#include "prx/libc/include/exceptions/Unwind.hpp"
|
||||
#include <atomic>
|
||||
#include <typeinfo>
|
||||
|
||||
#include "prx/libc/include/exceptions/Unwind.hpp"
|
||||
#include "prx/libc/include/General.hpp"
|
||||
#include "prx/libc/include/specifics/itanium/CxxAbi.hpp"
|
||||
|
||||
namespace LibcException {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
#include "prx/libc/include/specifics/itanium/UnwindAbi.hpp"
|
||||
|
||||
struct _Unwind_Context {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
#ifndef _UNWIND_H
|
||||
#define _UNWIND_H
|
||||
#endif
|
||||
|
||||
#include <cxxabi.h>
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
|
|
@ -15,6 +16,9 @@
|
|||
#include <locale>
|
||||
#include <regex>
|
||||
#include <functional>
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
|
||||
extern "C" {
|
||||
|
||||
void* APS5_VABI __cxa_demangle_nid_postfix(const char* mangled, char* buf, std::size_t* len, int* status) {
|
||||
|
|
|
|||
|
|
@ -3,29 +3,31 @@
|
|||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <memory>
|
||||
#include "prx/libc/include/FileStream.hpp"
|
||||
#include <filesystem>
|
||||
|
||||
#include "prx/libc/include/FileStream.hpp"
|
||||
#include "prx/libc/include/General.hpp"
|
||||
|
||||
extern "C" {
|
||||
|
||||
[[noreturn]] void APS5_VABI _ZSt11_Xbad_allocv_nid_postfix();
|
||||
|
||||
FileStream* APS5_VABI fopen_nid_postfix(const char* filename, const char* mode) {
|
||||
if (!filename || !mode) throw std::runtime_error("fopen: null argument");
|
||||
std::unique_ptr<std::FILE, decltype(&std::fclose)> handle(std::fopen(filename, mode), std::fclose);
|
||||
if (!handle) {
|
||||
std::string msg = "fopen: open failed: \"";
|
||||
msg += filename;
|
||||
msg += "\": ";
|
||||
msg += std::strerror(errno);
|
||||
throw std::runtime_error(msg);
|
||||
}
|
||||
auto stream = std::make_unique<FileStream>(handle.get(), true);
|
||||
handle.release();
|
||||
FileStream* APS5_VABI fopen_nid_postfix(const char* filename, const char* mode) {
|
||||
if (!filename || !mode) throw std::runtime_error("fopen: null argument");
|
||||
std::unique_ptr<std::FILE, decltype(&std::fclose)> handle(std::fopen(filename, mode), std::fclose);
|
||||
if (!handle) {
|
||||
std::string msg = "fopen: open failed: \"";
|
||||
msg += std::filesystem::absolute(filename).string();
|
||||
msg += "\": ";
|
||||
msg += std::strerror(errno);
|
||||
throw std::runtime_error(msg);
|
||||
}
|
||||
auto stream = std::make_unique<FileStream>(handle.get(), true);
|
||||
handle.release();
|
||||
|
||||
APS5_LOG_OUT("success: \"%s\"", filename);
|
||||
return stream.release();
|
||||
}
|
||||
APS5_LOG_OUT("success: \"%s\"", filename);
|
||||
return stream.release();
|
||||
}
|
||||
|
||||
int APS5_VABI fclose_nid_postfix(FileStream* stream) {
|
||||
GetNativeStream(stream);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
#include <csetjmp>
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
|
||||
extern "C" {
|
||||
|
||||
int APS5_VABI setjmp_nid_postfix(std::jmp_buf env) {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#include <locale>
|
||||
#include <mutex>
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
|
||||
namespace {
|
||||
|
||||
std::mutex g_localeInitMutex;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
#include <cmath>
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
|
||||
extern "C" {
|
||||
|
||||
double cbrt_nid_postfix(double x) { return std::cbrt(x); }
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <cerrno>
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
#include "SceTypes.hpp"
|
||||
|
||||
extern "C" {
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@
|
|||
#include <mutex>
|
||||
#include <vector>
|
||||
#include <utility>
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
#include "prx/libc/include/specifics/gcc/AtomicOps.hpp"
|
||||
#include "prx/libc/include/FileStream.hpp"
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
#include <cstdlib>
|
||||
#include <cctype>
|
||||
#include <cwchar>
|
||||
#include <cstdio>
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
|
||||
extern "C" {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@
|
|||
#include <ctime>
|
||||
#include <cstring>
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
|
||||
extern "C" {
|
||||
|
||||
int64_t APS5_VABI libc_time_nid_postfix(int64_t* timer) {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
#include "GuardSupport.cpp"
|
||||
#include "Personality.cpp"
|
||||
|
||||
#include "prx/libc/include/General.hpp"
|
||||
#include "prx/libc/include/specifics/gcc/SymbolAlias.hpp"
|
||||
|
||||
extern "C" [[noreturn]] GCC_HIDDEN_FN void APS5_VABI LibcRuntimeAssertion(const char*, int, const char*, const char*) { std::abort(); }
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
#include "prx/libc/include/specifics/linux/ElfTypes.hpp"
|
||||
#include <cstddef>
|
||||
#include <stdexcept>
|
||||
|
||||
#include "prx/libc/include/specifics/linux/ElfTypes.hpp"
|
||||
#include "prx/libc/include/General.hpp"
|
||||
|
||||
extern "C" {
|
||||
|
||||
int APS5_VABI dl_iterate_phdr_nid_postfix(int (*callback)(dl_phdr_info*, std::size_t, void*), void* data) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue