[*] Succesfully built on Linux for the first time in a very long time

This commit is contained in:
Reece Wilson 2021-10-02 17:07:33 +01:00
parent 540c5826d8
commit 97d6c96712
31 changed files with 1012 additions and 135 deletions

View File

@ -255,7 +255,7 @@ namespace Aurora::Async
std::function<void()> callback; std::function<void()> callback;
std::function<void()> shutdown; std::function<void()> shutdown;
BasicWorkStdFunc(std::function<void()> &&callback, std::function<void()> &&error) : callback(std::move(callback)), shutdown(std::move(shutdown)) BasicWorkStdFunc(std::function<void()> &&callback, std::function<void()> &&error) : callback(std::move(callback)), shutdown(std::move(error))
{} {}
BasicWorkStdFunc(std::function<void()> &&callback) : callback(std::move(callback)) BasicWorkStdFunc(std::function<void()> &&callback) : callback(std::move(callback))
@ -516,8 +516,8 @@ namespace Aurora::Async
} }
}; };
#define ASYNC_ERROR(exp) if constexpr (std::is_same_v<T, bool>) { SysPushErrorGen(exp); return {}; } else { throw std::string(exp); } #define ASYNC_ERROR(exp) { if constexpr (std::is_same_v<T, bool>) { SysPushErrorGen(exp); return {}; } else { throw std::string(exp); } }
#define ASYNC_FINISH if constexpr (std::is_same_v<T, bool>) { return true; } #define ASYNC_FINISH { if constexpr (std::is_same_v<T, bool>) { return true; } }
template<typename T = void, typename... Args, AU_TEMPLATE_ENABLE_WHEN(std::is_same_v<T, bool> || std::is_void<T>::value)> template<typename T = void, typename... Args, AU_TEMPLATE_ENABLE_WHEN(std::is_same_v<T, bool> || std::is_void<T>::value)>
static std::function<T(Args&&...)> TranslateAsyncFunctionToDispatcherWithThread(WorkerId_t id, std::function<void(Args...)> func) static std::function<T(Args&&...)> TranslateAsyncFunctionToDispatcherWithThread(WorkerId_t id, std::function<void(Args...)> func)
@ -587,4 +587,4 @@ namespace Aurora::Async
#endif #endif
#pragma endregion EASE_OF_READING #pragma endregion EASE_OF_READING
} }

View File

@ -121,7 +121,7 @@ namespace Aurora::Data
case DataType::kTypeStructInt32: return 4; case DataType::kTypeStructInt32: return 4;
case DataType::kTypeStructUInt64: return 8; case DataType::kTypeStructUInt64: return 8;
case DataType::kTypeStructInt64: return 8; case DataType::kTypeStructInt64: return 8;
default: static_assert(false, "invalid datatype"); default: return 0;//static_assert(false, "invalid datatype");
} }
} }
@ -146,4 +146,4 @@ namespace Aurora::Data
} }
} }
#endif #endif
} }

View File

@ -22,8 +22,10 @@ namespace Aurora::Debug
#if defined(AURORA_COMPILER_MSVC) #if defined(AURORA_COMPILER_MSVC)
#pragma optimize("", off) #pragma optimize("", off)
#define _FREECOMPILER_OPTIMIZE_OFF #define _FREECOMPILER_OPTIMIZE_OFF
#elif defined(AURORA_COMPILER_CLANG)
#define _FREECOMPILER_OPTIMIZE_OFF __attribute__((optnone))
#else #else
#define _FREECOMPILER_OPTIMIZE_OFF [[gnu::optimize(0)]] #define _FREECOMPILER_OPTIMIZE_OFF __attribute__((optimize("0")))
#endif #endif
static AU_NOINLINE void ErrorMakeNested() _FREECOMPILER_OPTIMIZE_OFF static AU_NOINLINE void ErrorMakeNested() _FREECOMPILER_OPTIMIZE_OFF
@ -168,4 +170,4 @@ namespace Aurora::Debug
#define SysPushErrorDisconnectedDbg(...) #define SysPushErrorDisconnectedDbg(...)
#define SysPushErrorUninitializedDbg(...) #define SysPushErrorUninitializedDbg(...)
#endif #endif

View File

@ -72,13 +72,13 @@ namespace Aurora::Memory
template<typename T> template<typename T>
T FRealloc(T in, Types::size_t length) T FRealloc(T in, Types::size_t length)
{ {
return reinterpret_cast<T>(_SRealloc(reinterpret_cast<void *>(in), length)); return reinterpret_cast<T>(_FRealloc(reinterpret_cast<void *>(in), length));
} }
template<typename T> template<typename T>
T FRealloc(T in, Types::size_t length, Types::size_t alloc) T FRealloc(T in, Types::size_t length, Types::size_t alloc)
{ {
return reinterpret_cast<T>(_SRealloc(reinterpret_cast<void *>(in), length), alloc); return reinterpret_cast<T>(_FRealloc(reinterpret_cast<void *>(in), length), alloc);
} }
template<typename T> template<typename T>
@ -136,4 +136,4 @@ namespace Aurora::Memory
@return a heap backed by allocated memory @return a heap backed by allocated memory
*/ */
AUKN_SHARED_API(AllocHeap, Heap, AuUInt size); AUKN_SHARED_API(AllocHeap, Heap, AuUInt size);
} }

View File

@ -38,14 +38,14 @@ namespace Aurora::Memory
template<typename T> template<typename T>
T ZAlloc(Types::size_t length) T ZAlloc(Types::size_t length)
{ {
static_assert(!std::is_class<std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes"); static_assert(!std::is_class<typename std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes");
return reinterpret_cast<T>(_ZAlloc(length)); return reinterpret_cast<T>(_ZAlloc(length));
} }
template<typename T> template<typename T>
T ZAlloc(Types::size_t length, Types::size_t align) T ZAlloc(Types::size_t length, Types::size_t align)
{ {
static_assert(!std::is_class<std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes"); static_assert(!std::is_class<typename std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes");
return reinterpret_cast<T>(_ZAlloc(length, align)); return reinterpret_cast<T>(_ZAlloc(length, align));
} }
@ -66,7 +66,7 @@ namespace Aurora::Memory
template<typename T> template<typename T>
AuSPtr<T> AllocateFastArray(Types::size_t length, Types::size_t align = sizeof(T)) AuSPtr<T> AllocateFastArray(Types::size_t length, Types::size_t align = sizeof(T))
{ {
static_assert(!std::is_class<std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes"); static_assert(!std::is_class<typename std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes");
return AuSPtr<T>(reinterpret_cast<T *>(_FAlloc(length)), [](T *ptr) return AuSPtr<T>(reinterpret_cast<T *>(_FAlloc(length)), [](T *ptr)
{ {
_Free(ptr); _Free(ptr);
@ -102,14 +102,14 @@ namespace Aurora::Memory
template<typename T> template<typename T>
T FAlloc(Types::size_t length) T FAlloc(Types::size_t length)
{ {
static_assert(!std::is_class<std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes"); static_assert(!std::is_class<typename std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes");
return reinterpret_cast<T>(_FAlloc(length)); return reinterpret_cast<T>(_FAlloc(length));
} }
template<typename T> template<typename T>
T FAlloc(Types::size_t length, Types::size_t align) T FAlloc(Types::size_t length, Types::size_t align)
{ {
static_assert(!std::is_class<std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes"); static_assert(!std::is_class<typename std::remove_pointer<T>::type>::value, "Do not use heap/kmem apis with classes");
return reinterpret_cast<T>(_FAlloc(length, align)); return reinterpret_cast<T>(_FAlloc(length, align));
} }
@ -146,4 +146,4 @@ namespace Aurora::Memory
} }
#include "Array.hpp" #include "Array.hpp"
#include "ByteBuffer.hpp" #include "ByteBuffer.hpp"

View File

@ -39,7 +39,7 @@ namespace Aurora::Memory
MemoryView(T &list) MemoryView(T &list)
{ {
this->ptr = list.data(); this->ptr = list.data();
this->length = list.size() * sizeof(T::value_type); this->length = list.size() * sizeof(typename T::value_type);
} }
MemoryView(const AuString &str) MemoryView(const AuString &str)
@ -173,4 +173,4 @@ namespace Aurora::Memory
using MemoryViewStreamRead = MemoryViewStream<true>; using MemoryViewStreamRead = MemoryViewStream<true>;
using MemoryViewStreamWrite = MemoryViewStream<false>; using MemoryViewStreamWrite = MemoryViewStream<false>;
} }

View File

@ -29,6 +29,8 @@ namespace Aurora::Time
*/ */
AUKN_SYM time_t MSToCTime(AuInt64 time); AUKN_SYM time_t MSToCTime(AuInt64 time);
AUKN_SYM AuInt64 CTimeToMS(time_t time);
/** /**
Converts milliseconds from the Aurora epoch to a civil timestamp structure Converts milliseconds from the Aurora epoch to a civil timestamp structure
similar to or of std::tm similar to or of std::tm
@ -111,4 +113,4 @@ namespace Aurora::Time
Retrieves the freqency of jiffies per second Retrieves the freqency of jiffies per second
*/ */
AUKN_SYM AuUInt64 ClockJiffies(); AUKN_SYM AuUInt64 ClockJiffies();
} }

View File

@ -72,7 +72,7 @@ static inline void __declspec(noreturn) SysPanic(T... args);
template<typename Z, typename T> template<typename Z, typename T>
static void inline SafeDelete(T *in) static void inline SafeDelete(T *in)
{ {
static_assert(std::is_base_of<T, std::remove_pointer<Z>::type>::value, "Couldn't not safe delete from type T because it is not derived from Z"); static_assert(std::is_base_of<T, typename std::remove_pointer<Z>::type>::value, "Couldn't not safe delete from type T because it is not derived from Z");
auto cast = dynamic_cast<Z>(in); auto cast = dynamic_cast<Z>(in);
if (cast == nullptr) if (cast == nullptr)
{ {
@ -87,7 +87,7 @@ static void inline SafeDelete(T *in)
template<typename Z, typename T> template<typename Z, typename T>
static void inline SafeDelete(T *in) static void inline SafeDelete(T *in)
{ {
static_assert(std::is_base_of<T, std::remove_pointer<Z>::type>::value, "Couldn't not safe delete from type T because it is not derived from Z"); static_assert(std::is_base_of<T, typename std::remove_pointer<Z>::type>::value, "Couldn't not safe delete from type T because it is not derived from Z");
delete static_cast<Z>(in); delete static_cast<Z>(in);
} }

771
Makefile Normal file
View File

@ -0,0 +1,771 @@
# Alternative GNU Make project makefile autogenerated by Premake
ifndef config
config=debug_x86_64
endif
ifndef verbose
SILENT = @
endif
.PHONY: clean prebuild
SHELLTYPE := posix
ifeq (.exe,$(findstring .exe,$(ComSpec)))
SHELLTYPE := msdos
endif
# Configurations
# #############################################
INCLUDES += -I../../Include -I. -ISource -IInclude -I../../Vendor/mimalloc/include -I../../Vendor/stduuid/include -I../../Vendor/fmt/include -I../../Vendor/nlohmannjson/single_include -I../../Vendor/bzip2 -I../../Vendor/libtomcrypt/src/headers -I../../Vendor/o1heap -I../../Vendor/zstd/lib -I../../Vendor/zlib -I../../Vendor/lz4/lib -I../../Vendor/mbedtls/include
FORCE_INCLUDE +=
ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES)
ALL_RESFLAGS += $(RESFLAGS) $(DEFINES) $(INCLUDES)
LINKCMD = $(CXX) -o "$@" $(OBJECTS) $(RESOURCES) $(ALL_LDFLAGS) $(LIBS)
define PREBUILDCMDS
endef
define PRELINKCMDS
endef
ifeq ($(config),debug_x86_64)
ifeq ($(origin CC), default)
CC = clang
endif
ifeq ($(origin CXX), default)
CXX = clang++
endif
ifeq ($(origin AR), default)
AR = ar
endif
TARGETDIR = ../../Build_CompilerWorkingDirectory/Bin/Debug
TARGET = $(TARGETDIR)/AuroraRuntime.debug.linux.x86_64.so
OBJDIR = ../../Build_CompilerWorkingDirectory/AuroraRuntime/x86_64/Debug
DEFINES += -DDEBUG -D_AU_HAS_ATOMIC_INTRINS -D_ITERATOR_DEBUG_LEVEL=0 -D_LINUX_AURORA_PREPROCESSOR -D_AUHAS_MIMALLOC=1 -D_AUHAS_UUID=1 -DFMT_HEADER_ONLY -D_AUHAS_FMT=1 -D_AUHAS_JSON=1 -DBZ_NOEXPORT -D_AUHAS_BZIP2=1 -D_AUHAS_LTC=1 -DUSE_LTM -DLTC_NO_PROTOTYPES -D_AUHAS_LIBTOMCRYPT=1 -D_AUHAS_O1HEAP=1 -DZSTD_MULTITHREAD -D_AUHAS_ZSTD=1 -D_AUHAS_ZLIB=1 -DLZ4_STATIC_LINKING_ONLY -D_AUHAS_LZ4=1 -D_AUHAS_MBEDTLS=1 -DAURORA_ENGINE_KERNEL -DAURORA_ENGINE_KERNEL_EXPORT
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -fPIC -g -Wno-unused-result -Wno-unused-value -Wno-unknown-warning-option -fms-extensions
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -fPIC -g -std=c++20 -fvisibility=hidden -Wno-unused-result -Wno-unused-value -Wno-unknown-warning-option -fms-extensions
LIBS += ../../Build_CompilerWorkingDirectory/Bin/Debug/mimalloc.a ../../Build_CompilerWorkingDirectory/Bin/Debug/bzip2.a ../../Build_CompilerWorkingDirectory/Bin/Debug/ltc.a ../../Build_CompilerWorkingDirectory/Bin/Debug/ltm.a ../../Build_CompilerWorkingDirectory/Bin/Debug/o1heap.a ../../Build_CompilerWorkingDirectory/Bin/Debug/zstd.a ../../Build_CompilerWorkingDirectory/Bin/Debug/zlib.a ../../Build_CompilerWorkingDirectory/Bin/Debug/lz4.a ../../Build_CompilerWorkingDirectory/Bin/Debug/mbedtls.a
LDDEPS += ../../Build_CompilerWorkingDirectory/Bin/Debug/mimalloc.a ../../Build_CompilerWorkingDirectory/Bin/Debug/bzip2.a ../../Build_CompilerWorkingDirectory/Bin/Debug/ltc.a ../../Build_CompilerWorkingDirectory/Bin/Debug/ltm.a ../../Build_CompilerWorkingDirectory/Bin/Debug/o1heap.a ../../Build_CompilerWorkingDirectory/Bin/Debug/zstd.a ../../Build_CompilerWorkingDirectory/Bin/Debug/zlib.a ../../Build_CompilerWorkingDirectory/Bin/Debug/lz4.a ../../Build_CompilerWorkingDirectory/Bin/Debug/mbedtls.a
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib64 -m64 -shared -Wl,-soname=AuroraRuntime.debug.linux.x86_64.so
define POSTBUILDCMDS
@echo Running postbuild commands
mkdir -p "/home/reece/source/AuroraSmallExample/Build_Develop/"
cp -rf "../../Build_CompilerWorkingDirectory/Bin/Debug/libAuroraRuntime.debug.linux.x86_64.so" "/home/reece/source/AuroraSmallExample/Build_Develop/libAuroraRuntime.debug.linux.x86_64.so"
endef
else ifeq ($(config),release_x86_64)
ifeq ($(origin CC), default)
CC = clang
endif
ifeq ($(origin CXX), default)
CXX = clang++
endif
ifeq ($(origin AR), default)
AR = ar
endif
TARGETDIR = ../../Build_CompilerWorkingDirectory/Bin/Release
TARGET = $(TARGETDIR)/AuroraRuntime.release.linux.x86_64.so
OBJDIR = ../../Build_CompilerWorkingDirectory/AuroraRuntime/x86_64/Release
DEFINES += -DNDEBUG -DSTAGING -D_AU_HAS_ATOMIC_INTRINS -D_ITERATOR_DEBUG_LEVEL=0 -D_LINUX_AURORA_PREPROCESSOR -D_AUHAS_MIMALLOC=1 -D_AUHAS_UUID=1 -DFMT_HEADER_ONLY -D_AUHAS_FMT=1 -D_AUHAS_JSON=1 -DBZ_NOEXPORT -D_AUHAS_BZIP2=1 -D_AUHAS_LTC=1 -DUSE_LTM -DLTC_NO_PROTOTYPES -D_AUHAS_LIBTOMCRYPT=1 -D_AUHAS_O1HEAP=1 -DZSTD_MULTITHREAD -D_AUHAS_ZSTD=1 -D_AUHAS_ZLIB=1 -DLZ4_STATIC_LINKING_ONLY -D_AUHAS_LZ4=1 -D_AUHAS_MBEDTLS=1 -DAURORA_ENGINE_KERNEL -DAURORA_ENGINE_KERNEL_EXPORT
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -O3 -fPIC -g -Wno-unused-result -Wno-unused-value -Wno-unknown-warning-option -fms-extensions
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -O3 -fPIC -g -std=c++20 -fvisibility=hidden -Wno-unused-result -Wno-unused-value -Wno-unknown-warning-option -fms-extensions
LIBS += ../../Build_CompilerWorkingDirectory/Bin/Release/mimalloc.a ../../Build_CompilerWorkingDirectory/Bin/Release/bzip2.a ../../Build_CompilerWorkingDirectory/Bin/Release/ltc.a ../../Build_CompilerWorkingDirectory/Bin/Release/ltm.a ../../Build_CompilerWorkingDirectory/Bin/Release/o1heap.a ../../Build_CompilerWorkingDirectory/Bin/Release/zstd.a ../../Build_CompilerWorkingDirectory/Bin/Release/zlib.a ../../Build_CompilerWorkingDirectory/Bin/Release/lz4.a ../../Build_CompilerWorkingDirectory/Bin/Release/mbedtls.a
LDDEPS += ../../Build_CompilerWorkingDirectory/Bin/Release/mimalloc.a ../../Build_CompilerWorkingDirectory/Bin/Release/bzip2.a ../../Build_CompilerWorkingDirectory/Bin/Release/ltc.a ../../Build_CompilerWorkingDirectory/Bin/Release/ltm.a ../../Build_CompilerWorkingDirectory/Bin/Release/o1heap.a ../../Build_CompilerWorkingDirectory/Bin/Release/zstd.a ../../Build_CompilerWorkingDirectory/Bin/Release/zlib.a ../../Build_CompilerWorkingDirectory/Bin/Release/lz4.a ../../Build_CompilerWorkingDirectory/Bin/Release/mbedtls.a
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib64 -m64 -shared -Wl,-soname=AuroraRuntime.release.linux.x86_64.so
define POSTBUILDCMDS
@echo Running postbuild commands
mkdir -p "/home/reece/source/AuroraSmallExample/Build_Stage/"
cp -rf "../../Build_CompilerWorkingDirectory/Bin/Release/libAuroraRuntime.release.linux.x86_64.so" "/home/reece/source/AuroraSmallExample/Build_Stage/libAuroraRuntime.release.linux.x86_64.so"
endef
else ifeq ($(config),ship_x86_64)
ifeq ($(origin CC), default)
CC = clang
endif
ifeq ($(origin CXX), default)
CXX = clang++
endif
ifeq ($(origin AR), default)
AR = llvm-ar
endif
TARGETDIR = ../../Build_CompilerWorkingDirectory/Bin/Ship
TARGET = $(TARGETDIR)/AuroraRuntime.ship.linux.x86_64.so
OBJDIR = ../../Build_CompilerWorkingDirectory/AuroraRuntime/x86_64/Ship
DEFINES += -DNDEBUG -DSHIP -D_AU_HAS_ATOMIC_INTRINS -D_ITERATOR_DEBUG_LEVEL=0 -D_LINUX_AURORA_PREPROCESSOR -D_AUHAS_MIMALLOC=1 -D_AUHAS_UUID=1 -DFMT_HEADER_ONLY -D_AUHAS_FMT=1 -D_AUHAS_JSON=1 -DBZ_NOEXPORT -D_AUHAS_BZIP2=1 -D_AUHAS_LTC=1 -DUSE_LTM -DLTC_NO_PROTOTYPES -D_AUHAS_LIBTOMCRYPT=1 -D_AUHAS_O1HEAP=1 -DZSTD_MULTITHREAD -D_AUHAS_ZSTD=1 -D_AUHAS_ZLIB=1 -DLZ4_STATIC_LINKING_ONLY -D_AUHAS_LZ4=1 -D_AUHAS_MBEDTLS=1 -DAURORA_ENGINE_KERNEL -DAURORA_ENGINE_KERNEL_EXPORT
ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -m64 -flto -O3 -fPIC -g -Wno-unused-result -Wno-unused-value -Wno-unknown-warning-option -fms-extensions
ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -m64 -flto -O3 -fPIC -g -std=c++20 -fvisibility=hidden -Wno-unused-result -Wno-unused-value -Wno-unknown-warning-option -fms-extensions
LIBS += ../../Build_CompilerWorkingDirectory/Bin/Ship/mimalloc.a ../../Build_CompilerWorkingDirectory/Bin/Ship/bzip2.a ../../Build_CompilerWorkingDirectory/Bin/Ship/ltc.a ../../Build_CompilerWorkingDirectory/Bin/Ship/ltm.a ../../Build_CompilerWorkingDirectory/Bin/Ship/o1heap.a ../../Build_CompilerWorkingDirectory/Bin/Ship/zstd.a ../../Build_CompilerWorkingDirectory/Bin/Ship/zlib.a ../../Build_CompilerWorkingDirectory/Bin/Ship/lz4.a ../../Build_CompilerWorkingDirectory/Bin/Ship/mbedtls.a
LDDEPS += ../../Build_CompilerWorkingDirectory/Bin/Ship/mimalloc.a ../../Build_CompilerWorkingDirectory/Bin/Ship/bzip2.a ../../Build_CompilerWorkingDirectory/Bin/Ship/ltc.a ../../Build_CompilerWorkingDirectory/Bin/Ship/ltm.a ../../Build_CompilerWorkingDirectory/Bin/Ship/o1heap.a ../../Build_CompilerWorkingDirectory/Bin/Ship/zstd.a ../../Build_CompilerWorkingDirectory/Bin/Ship/zlib.a ../../Build_CompilerWorkingDirectory/Bin/Ship/lz4.a ../../Build_CompilerWorkingDirectory/Bin/Ship/mbedtls.a
ALL_LDFLAGS += $(LDFLAGS) -L/usr/lib64 -m64 -flto -shared -Wl,-soname=AuroraRuntime.ship.linux.x86_64.so
define POSTBUILDCMDS
@echo Running postbuild commands
mkdir -p "/home/reece/source/AuroraSmallExample/Build_Ship/"
cp -rf "../../Build_CompilerWorkingDirectory/Bin/Ship/libAuroraRuntime.ship.linux.x86_64.so" "/home/reece/source/AuroraSmallExample/Build_Ship/libAuroraRuntime.ship.linux.x86_64.so"
endef
endif
# Per File Configurations
# #############################################
PERFILE_FLAGS_0 = $(ALL_CXXFLAGS) -stdlib=libc++
# File sets
# #############################################
GENERATED :=
OBJECTS :=
GENERATED += $(OBJDIR)/Aes.o
GENERATED += $(OBJDIR)/Alloc.o
GENERATED += $(OBJDIR)/Async.Linux.o
GENERATED += $(OBJDIR)/Async.Unix.o
GENERATED += $(OBJDIR)/Async.o
GENERATED += $(OBJDIR)/AsyncApp.o
GENERATED += $(OBJDIR)/Base32.o
GENERATED += $(OBJDIR)/Base64.o
GENERATED += $(OBJDIR)/BlackBoxSerial.o
GENERATED += $(OBJDIR)/BlackBoxWriter.o
GENERATED += $(OBJDIR)/BlockCompressor.o
GENERATED += $(OBJDIR)/BlockDecompressor.o
GENERATED += $(OBJDIR)/ByteBuffer.o
GENERATED += $(OBJDIR)/CA.o
GENERATED += $(OBJDIR)/Clock.o
GENERATED += $(OBJDIR)/Commands.o
GENERATED += $(OBJDIR)/CommonDigests.o
GENERATED += $(OBJDIR)/Compression.o
GENERATED += $(OBJDIR)/ConditionEx.o
GENERATED += $(OBJDIR)/ConditionMutex.Generic.o
GENERATED += $(OBJDIR)/ConditionMutex.Unix.o
GENERATED += $(OBJDIR)/ConditionVariable.Generic.o
GENERATED += $(OBJDIR)/ConditionVariable.Unix.o
GENERATED += $(OBJDIR)/Console.o
GENERATED += $(OBJDIR)/ConsoleFIO.o
GENERATED += $(OBJDIR)/ConsoleMessage.o
GENERATED += $(OBJDIR)/ConsoleStd.o
GENERATED += $(OBJDIR)/ConsoleWxWidgets.o
GENERATED += $(OBJDIR)/ConvertInternal.o
GENERATED += $(OBJDIR)/CpuInfo.o
GENERATED += $(OBJDIR)/CriticalSection.o
GENERATED += $(OBJDIR)/Crypto.o
GENERATED += $(OBJDIR)/Crypto1.o
GENERATED += $(OBJDIR)/Debug.o
GENERATED += $(OBJDIR)/DefaultHeap.o
GENERATED += $(OBJDIR)/ECC.o
GENERATED += $(OBJDIR)/ECCCurves.o
GENERATED += $(OBJDIR)/ECCGeneric.o
GENERATED += $(OBJDIR)/ECCX25519.o
GENERATED += $(OBJDIR)/ECCx25519Utils.o
GENERATED += $(OBJDIR)/EncoderAdapter.o
GENERATED += $(OBJDIR)/EncoderIConv.o
GENERATED += $(OBJDIR)/EncoderNSL.o
GENERATED += $(OBJDIR)/Encoding.o
GENERATED += $(OBJDIR)/ExceptionWatcher.Linux.o
GENERATED += $(OBJDIR)/FS.Generic.o
GENERATED += $(OBJDIR)/FS.Unix.o
GENERATED += $(OBJDIR)/FS.o
GENERATED += $(OBJDIR)/FileStream.Generic.o
GENERATED += $(OBJDIR)/FileStream.Unix.o
GENERATED += $(OBJDIR)/FileWriter.o
GENERATED += $(OBJDIR)/Flusher.o
GENERATED += $(OBJDIR)/GenericWaitable.o
GENERATED += $(OBJDIR)/HWInfo.o
GENERATED += $(OBJDIR)/HashStream.o
GENERATED += $(OBJDIR)/Hashing.o
GENERATED += $(OBJDIR)/Heap.o
GENERATED += $(OBJDIR)/Hex.o
GENERATED += $(OBJDIR)/Hooks.o
GENERATED += $(OBJDIR)/LSCondition.o
GENERATED += $(OBJDIR)/LSHandle.o
GENERATED += $(OBJDIR)/LSMutex.Generic.o
GENERATED += $(OBJDIR)/LSMutex.Linux.o
GENERATED += $(OBJDIR)/LSSemaphore.Generic.o
GENERATED += $(OBJDIR)/LSSemaphore.Linux.o
GENERATED += $(OBJDIR)/LSTimer.Generic.o
GENERATED += $(OBJDIR)/LSTimer.Linux.o
GENERATED += $(OBJDIR)/LTC.o
GENERATED += $(OBJDIR)/LTCEccEx.o
GENERATED += $(OBJDIR)/LTCExport.o
GENERATED += $(OBJDIR)/LTCImportEx.o
GENERATED += $(OBJDIR)/LTM.o
GENERATED += $(OBJDIR)/LZMA.o
GENERATED += $(OBJDIR)/LibCurl.o
GENERATED += $(OBJDIR)/Locale.o
GENERATED += $(OBJDIR)/Loop.Unix.o
GENERATED += $(OBJDIR)/Loop.o
GENERATED += $(OBJDIR)/MBedTLS.o
GENERATED += $(OBJDIR)/Memory.o
GENERATED += $(OBJDIR)/Mutex.Generic.o
GENERATED += $(OBJDIR)/Mutex.Unix.o
GENERATED += $(OBJDIR)/Net.o
GENERATED += $(OBJDIR)/OSThread.o
GENERATED += $(OBJDIR)/Open.Linux.o
GENERATED += $(OBJDIR)/PEM.o
GENERATED += $(OBJDIR)/Panic.o
GENERATED += $(OBJDIR)/Parser.o
GENERATED += $(OBJDIR)/Paths.o
GENERATED += $(OBJDIR)/PrivateECCImpl.o
GENERATED += $(OBJDIR)/Process.Linux.o
GENERATED += $(OBJDIR)/Process.o
GENERATED += $(OBJDIR)/ProcessMap.Linux.o
GENERATED += $(OBJDIR)/Processes.o
GENERATED += $(OBJDIR)/PublicECCImpl.o
GENERATED += $(OBJDIR)/RNG.o
GENERATED += $(OBJDIR)/RSAPrivate.o
GENERATED += $(OBJDIR)/RSAPublic.o
GENERATED += $(OBJDIR)/RWLock.o
GENERATED += $(OBJDIR)/RamInfo.o
GENERATED += $(OBJDIR)/RandomDevice.o
GENERATED += $(OBJDIR)/Registry.o
GENERATED += $(OBJDIR)/Resources.o
GENERATED += $(OBJDIR)/Schedular.o
GENERATED += $(OBJDIR)/Semaphore.Generic.o
GENERATED += $(OBJDIR)/Semaphore.Unix.o
GENERATED += $(OBJDIR)/Sleep.o
GENERATED += $(OBJDIR)/SpinLock.o
GENERATED += $(OBJDIR)/StreamCompression.o
GENERATED += $(OBJDIR)/TLSView.o
GENERATED += $(OBJDIR)/Telemetry.o
GENERATED += $(OBJDIR)/ThreadHandles.o
GENERATED += $(OBJDIR)/Threads.o
GENERATED += $(OBJDIR)/WELL.o
GENERATED += $(OBJDIR)/WaitFor.o
GENERATED += $(OBJDIR)/WorkItem.o
GENERATED += $(OBJDIR)/mtwister.o
GENERATED += $(OBJDIR)/x509.o
OBJECTS += $(OBJDIR)/Aes.o
OBJECTS += $(OBJDIR)/Alloc.o
OBJECTS += $(OBJDIR)/Async.Linux.o
OBJECTS += $(OBJDIR)/Async.Unix.o
OBJECTS += $(OBJDIR)/Async.o
OBJECTS += $(OBJDIR)/AsyncApp.o
OBJECTS += $(OBJDIR)/Base32.o
OBJECTS += $(OBJDIR)/Base64.o
OBJECTS += $(OBJDIR)/BlackBoxSerial.o
OBJECTS += $(OBJDIR)/BlackBoxWriter.o
OBJECTS += $(OBJDIR)/BlockCompressor.o
OBJECTS += $(OBJDIR)/BlockDecompressor.o
OBJECTS += $(OBJDIR)/ByteBuffer.o
OBJECTS += $(OBJDIR)/CA.o
OBJECTS += $(OBJDIR)/Clock.o
OBJECTS += $(OBJDIR)/Commands.o
OBJECTS += $(OBJDIR)/CommonDigests.o
OBJECTS += $(OBJDIR)/Compression.o
OBJECTS += $(OBJDIR)/ConditionEx.o
OBJECTS += $(OBJDIR)/ConditionMutex.Generic.o
OBJECTS += $(OBJDIR)/ConditionMutex.Unix.o
OBJECTS += $(OBJDIR)/ConditionVariable.Generic.o
OBJECTS += $(OBJDIR)/ConditionVariable.Unix.o
OBJECTS += $(OBJDIR)/Console.o
OBJECTS += $(OBJDIR)/ConsoleFIO.o
OBJECTS += $(OBJDIR)/ConsoleMessage.o
OBJECTS += $(OBJDIR)/ConsoleStd.o
OBJECTS += $(OBJDIR)/ConsoleWxWidgets.o
OBJECTS += $(OBJDIR)/ConvertInternal.o
OBJECTS += $(OBJDIR)/CpuInfo.o
OBJECTS += $(OBJDIR)/CriticalSection.o
OBJECTS += $(OBJDIR)/Crypto.o
OBJECTS += $(OBJDIR)/Crypto1.o
OBJECTS += $(OBJDIR)/Debug.o
OBJECTS += $(OBJDIR)/DefaultHeap.o
OBJECTS += $(OBJDIR)/ECC.o
OBJECTS += $(OBJDIR)/ECCCurves.o
OBJECTS += $(OBJDIR)/ECCGeneric.o
OBJECTS += $(OBJDIR)/ECCX25519.o
OBJECTS += $(OBJDIR)/ECCx25519Utils.o
OBJECTS += $(OBJDIR)/EncoderAdapter.o
OBJECTS += $(OBJDIR)/EncoderIConv.o
OBJECTS += $(OBJDIR)/EncoderNSL.o
OBJECTS += $(OBJDIR)/Encoding.o
OBJECTS += $(OBJDIR)/ExceptionWatcher.Linux.o
OBJECTS += $(OBJDIR)/FS.Generic.o
OBJECTS += $(OBJDIR)/FS.Unix.o
OBJECTS += $(OBJDIR)/FS.o
OBJECTS += $(OBJDIR)/FileStream.Generic.o
OBJECTS += $(OBJDIR)/FileStream.Unix.o
OBJECTS += $(OBJDIR)/FileWriter.o
OBJECTS += $(OBJDIR)/Flusher.o
OBJECTS += $(OBJDIR)/GenericWaitable.o
OBJECTS += $(OBJDIR)/HWInfo.o
OBJECTS += $(OBJDIR)/HashStream.o
OBJECTS += $(OBJDIR)/Hashing.o
OBJECTS += $(OBJDIR)/Heap.o
OBJECTS += $(OBJDIR)/Hex.o
OBJECTS += $(OBJDIR)/Hooks.o
OBJECTS += $(OBJDIR)/LSCondition.o
OBJECTS += $(OBJDIR)/LSHandle.o
OBJECTS += $(OBJDIR)/LSMutex.Generic.o
OBJECTS += $(OBJDIR)/LSMutex.Linux.o
OBJECTS += $(OBJDIR)/LSSemaphore.Generic.o
OBJECTS += $(OBJDIR)/LSSemaphore.Linux.o
OBJECTS += $(OBJDIR)/LSTimer.Generic.o
OBJECTS += $(OBJDIR)/LSTimer.Linux.o
OBJECTS += $(OBJDIR)/LTC.o
OBJECTS += $(OBJDIR)/LTCEccEx.o
OBJECTS += $(OBJDIR)/LTCExport.o
OBJECTS += $(OBJDIR)/LTCImportEx.o
OBJECTS += $(OBJDIR)/LTM.o
OBJECTS += $(OBJDIR)/LZMA.o
OBJECTS += $(OBJDIR)/LibCurl.o
OBJECTS += $(OBJDIR)/Locale.o
OBJECTS += $(OBJDIR)/Loop.Unix.o
OBJECTS += $(OBJDIR)/Loop.o
OBJECTS += $(OBJDIR)/MBedTLS.o
OBJECTS += $(OBJDIR)/Memory.o
OBJECTS += $(OBJDIR)/Mutex.Generic.o
OBJECTS += $(OBJDIR)/Mutex.Unix.o
OBJECTS += $(OBJDIR)/Net.o
OBJECTS += $(OBJDIR)/OSThread.o
OBJECTS += $(OBJDIR)/Open.Linux.o
OBJECTS += $(OBJDIR)/PEM.o
OBJECTS += $(OBJDIR)/Panic.o
OBJECTS += $(OBJDIR)/Parser.o
OBJECTS += $(OBJDIR)/Paths.o
OBJECTS += $(OBJDIR)/PrivateECCImpl.o
OBJECTS += $(OBJDIR)/Process.Linux.o
OBJECTS += $(OBJDIR)/Process.o
OBJECTS += $(OBJDIR)/ProcessMap.Linux.o
OBJECTS += $(OBJDIR)/Processes.o
OBJECTS += $(OBJDIR)/PublicECCImpl.o
OBJECTS += $(OBJDIR)/RNG.o
OBJECTS += $(OBJDIR)/RSAPrivate.o
OBJECTS += $(OBJDIR)/RSAPublic.o
OBJECTS += $(OBJDIR)/RWLock.o
OBJECTS += $(OBJDIR)/RamInfo.o
OBJECTS += $(OBJDIR)/RandomDevice.o
OBJECTS += $(OBJDIR)/Registry.o
OBJECTS += $(OBJDIR)/Resources.o
OBJECTS += $(OBJDIR)/Schedular.o
OBJECTS += $(OBJDIR)/Semaphore.Generic.o
OBJECTS += $(OBJDIR)/Semaphore.Unix.o
OBJECTS += $(OBJDIR)/Sleep.o
OBJECTS += $(OBJDIR)/SpinLock.o
OBJECTS += $(OBJDIR)/StreamCompression.o
OBJECTS += $(OBJDIR)/TLSView.o
OBJECTS += $(OBJDIR)/Telemetry.o
OBJECTS += $(OBJDIR)/ThreadHandles.o
OBJECTS += $(OBJDIR)/Threads.o
OBJECTS += $(OBJDIR)/WELL.o
OBJECTS += $(OBJDIR)/WaitFor.o
OBJECTS += $(OBJDIR)/WorkItem.o
OBJECTS += $(OBJDIR)/mtwister.o
OBJECTS += $(OBJDIR)/x509.o
# Rules
# #############################################
all: $(TARGET)
@:
$(TARGET): $(GENERATED) $(OBJECTS) $(LDDEPS) | $(TARGETDIR)
$(PRELINKCMDS)
@echo Linking AuroraRuntime
$(SILENT) $(LINKCMD)
$(POSTBUILDCMDS)
$(TARGETDIR):
@echo Creating $(TARGETDIR)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(TARGETDIR)
else
$(SILENT) mkdir $(subst /,\\,$(TARGETDIR))
endif
$(OBJDIR):
@echo Creating $(OBJDIR)
ifeq (posix,$(SHELLTYPE))
$(SILENT) mkdir -p $(OBJDIR)
else
$(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif
clean:
@echo Cleaning AuroraRuntime
ifeq (posix,$(SHELLTYPE))
$(SILENT) rm -f $(TARGET)
$(SILENT) rm -rf $(GENERATED)
$(SILENT) rm -rf $(OBJDIR)
else
$(SILENT) if exist $(subst /,\\,$(TARGET)) del $(subst /,\\,$(TARGET))
$(SILENT) if exist $(subst /,\\,$(GENERATED)) rmdir /s /q $(subst /,\\,$(GENERATED))
$(SILENT) if exist $(subst /,\\,$(OBJDIR)) rmdir /s /q $(subst /,\\,$(OBJDIR))
endif
prebuild: | $(OBJDIR)
$(PREBUILDCMDS)
ifneq (,$(PCH))
$(OBJECTS): $(GCH) | $(PCH_PLACEHOLDER)
$(GCH): $(PCH) | prebuild
@echo $(notdir $<)
$(SILENT) $(CXX) -x c++-header $(ALL_CXXFLAGS) -o "$@" -MF "$(@:%.gch=%.d)" -c "$<"
$(PCH_PLACEHOLDER): $(GCH) | $(OBJDIR)
ifeq (posix,$(SHELLTYPE))
$(SILENT) touch "$@"
else
$(SILENT) echo $null >> "$@"
endif
else
$(OBJECTS): | prebuild
endif
# File Rules
# #############################################
$(OBJDIR)/Alloc.o: Source/Alloc.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Async.o: Source/Async/Async.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/AsyncApp.o: Source/Async/AsyncApp.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Schedular.o: Source/Async/Schedular.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/WorkItem.o: Source/Async/WorkItem.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/BlockCompressor.o: Source/Compression/BlockCompressor.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/BlockDecompressor.o: Source/Compression/BlockDecompressor.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Compression.o: Source/Compression/Compression.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/StreamCompression.o: Source/Compression/StreamCompression.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Commands.o: Source/Console/Commands/Commands.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Console.o: Source/Console/Console.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConsoleFIO.o: Source/Console/ConsoleFIO/ConsoleFIO.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConsoleMessage.o: Source/Console/ConsoleMessage.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConsoleStd.o: Source/Console/ConsoleStd/ConsoleStd.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConsoleWxWidgets.o: Source/Console/ConsoleWxWidgets/ConsoleWxWidgets.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Flusher.o: Source/Console/Flusher.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Hooks.o: Source/Console/Hooks/Hooks.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Crypto.o: Source/Crypto.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Aes.o: Source/Crypto/AES/Aes.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/CA.o: Source/Crypto/CA/CA.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Crypto1.o: Source/Crypto/Crypto.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ECC.o: Source/Crypto/ECC/ECC.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ECCCurves.o: Source/Crypto/ECC/ECCCurves.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ECCGeneric.o: Source/Crypto/ECC/ECCGeneric.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ECCX25519.o: Source/Crypto/ECC/ECCX25519.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ECCx25519Utils.o: Source/Crypto/ECC/ECCx25519Utils.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/PrivateECCImpl.o: Source/Crypto/ECC/PrivateECCImpl.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/PublicECCImpl.o: Source/Crypto/ECC/PublicECCImpl.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/PEM.o: Source/Crypto/PEM/PEM.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/RSAPrivate.o: Source/Crypto/RSA/RSAPrivate.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/RSAPublic.o: Source/Crypto/RSA/RSAPublic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/x509.o: Source/Crypto/X509/x509.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Debug.o: Source/Debug/Debug.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ExceptionWatcher.Linux.o: Source/Debug/ExceptionWatcher.Linux.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Panic.o: Source/Debug/Panic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LibCurl.o: Source/Extensions/CURL/LibCurl.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LTC.o: Source/Extensions/LTC/LTC.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LTCEccEx.o: Source/Extensions/LTC/LTCEccEx.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LTCExport.o: Source/Extensions/LTC/LTCExport.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LTCImportEx.o: Source/Extensions/LTC/LTCImportEx.c
@echo $(notdir $<)
$(SILENT) $(CC) $(ALL_CFLAGS) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LTM.o: Source/Extensions/LTM/LTM.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LZMA.o: Source/Extensions/LZMA/LZMA.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/MBedTLS.o: Source/Extensions/MBedTls/MBedTLS.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/CpuInfo.o: Source/HWInfo/CpuInfo.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/HWInfo.o: Source/HWInfo/HWInfo.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/RamInfo.o: Source/HWInfo/RamInfo.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/CommonDigests.o: Source/Hashing/CommonDigests.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/HashStream.o: Source/Hashing/HashStream.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Hashing.o: Source/Hashing/Hashing.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Async.Linux.o: Source/IO/FS/Async.Linux.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Async.Unix.o: Source/IO/FS/Async.Unix.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/FS.Generic.o: Source/IO/FS/FS.Generic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/FS.Unix.o: Source/IO/FS/FS.Unix.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/FS.o: Source/IO/FS/FS.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/FileStream.Generic.o: Source/IO/FS/FileStream.Generic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/FileStream.Unix.o: Source/IO/FS/FileStream.Unix.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Resources.o: Source/IO/FS/Resources.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Net.o: Source/IO/Net/Net.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConvertInternal.o: Source/Locale/Encoding/ConvertInternal.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/EncoderAdapter.o: Source/Locale/Encoding/EncoderAdapter.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/EncoderIConv.o: Source/Locale/Encoding/EncoderIConv.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/EncoderNSL.o: Source/Locale/Encoding/EncoderNSL.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Encoding.o: Source/Locale/Encoding/Encoding.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Locale.o: Source/Locale/Locale.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/GenericWaitable.o: Source/Loop/GenericWaitable.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LSCondition.o: Source/Loop/LSCondition.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LSHandle.o: Source/Loop/LSHandle.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LSMutex.Generic.o: Source/Loop/LSMutex.Generic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LSMutex.Linux.o: Source/Loop/LSMutex.Linux.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LSSemaphore.Generic.o: Source/Loop/LSSemaphore.Generic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LSSemaphore.Linux.o: Source/Loop/LSSemaphore.Linux.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LSTimer.Generic.o: Source/Loop/LSTimer.Generic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/LSTimer.Linux.o: Source/Loop/LSTimer.Linux.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Loop.Unix.o: Source/Loop/Loop.Unix.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Loop.o: Source/Loop/Loop.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ByteBuffer.o: Source/Memory/ByteBuffer.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/DefaultHeap.o: Source/Memory/DefaultHeap.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Heap.o: Source/Memory/Heap.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Memory.o: Source/Memory/Memory.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Base32.o: Source/Parse/Base32.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Base64.o: Source/Parse/Base64.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Hex.o: Source/Parse/Hex.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Parser.o: Source/Parse/Parser.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Paths.o: Source/Process/Paths.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Process.o: Source/Process/Process.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ProcessMap.Linux.o: Source/Process/ProcessMap.Linux.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Open.Linux.o: Source/Processes/Open.Linux.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Process.Linux.o: Source/Processes/Process.Linux.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Processes.o: Source/Processes/Processes.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/RNG.o: Source/RNG/RNG.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/RandomDevice.o: Source/RNG/RandomDevice.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/WELL.o: Source/RNG/WELL.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/mtwister.o: Source/RNG/mtwister.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Registry.o: Source/Registry/Registry.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/BlackBoxSerial.o: Source/Telemetry/BlackBoxSerial.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/BlackBoxWriter.o: Source/Telemetry/BlackBoxWriter.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/FileWriter.o: Source/Telemetry/FileWriter.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Telemetry.o: Source/Telemetry/Telemetry.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConditionEx.o: Source/Threading/Primitives/ConditionEx.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConditionMutex.Generic.o: Source/Threading/Primitives/ConditionMutex.Generic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConditionMutex.Unix.o: Source/Threading/Primitives/ConditionMutex.Unix.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConditionVariable.Generic.o: Source/Threading/Primitives/ConditionVariable.Generic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ConditionVariable.Unix.o: Source/Threading/Primitives/ConditionVariable.Unix.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/CriticalSection.o: Source/Threading/Primitives/CriticalSection.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Mutex.Generic.o: Source/Threading/Primitives/Mutex.Generic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Mutex.Unix.o: Source/Threading/Primitives/Mutex.Unix.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/RWLock.o: Source/Threading/Primitives/RWLock.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Semaphore.Generic.o: Source/Threading/Primitives/Semaphore.Generic.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Semaphore.Unix.o: Source/Threading/Primitives/Semaphore.Unix.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/SpinLock.o: Source/Threading/Primitives/SpinLock.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Sleep.o: Source/Threading/Sleep.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/OSThread.o: Source/Threading/Threads/OSThread.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/TLSView.o: Source/Threading/Threads/TLSView.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/ThreadHandles.o: Source/Threading/Threads/ThreadHandles.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Threads.o: Source/Threading/Threads/Threads.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/WaitFor.o: Source/Threading/WaitFor.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
$(OBJDIR)/Clock.o: Source/Time/Clock.cpp
@echo $(notdir $<)
$(SILENT) $(CXX) $(PERFILE_FLAGS_0) $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"
-include $(OBJECTS:%.o=%.d)
ifneq (,$(PCH))
-include $(PCH_PLACEHOLDER).d
endif

View File

@ -112,7 +112,7 @@ namespace Aurora::Console::ConsoleStd
{ {
AuString slow; AuString slow;
slow.resize(writeLine.size() * 4); slow.resize(writeLine.size() * 4);
auto len = Locale::Encoding::EncodeUTF8(writeLine, reinterpret_cast<AuUInt8 *>(slow.data()), slow.size(), Locale::ECodePage::eSysUnk); auto len = Locale::Encoding::EncodeUTF8(writeLine, Aurora::Memory::MemoryViewWrite {slow.data(), slow.size()}, Locale::ECodePage::eSysUnk);
if (len.first != 0) if (len.first != 0)
{ {
WriteStdOut(slow.data(), len.second); WriteStdOut(slow.data(), len.second);
@ -534,4 +534,4 @@ namespace Aurora::Console::ConsoleStd
{ {
} }
#endif #endif
} }

View File

@ -7,9 +7,9 @@
***/ ***/
#include <Source/RuntimeInternal.hpp> #include <Source/RuntimeInternal.hpp>
#include "ECC.hpp" #include "ECC.hpp"
#include "ECCx25519.hpp" //#include "ECCx25519.hpp"
namespace Aurora::Crypto::ECC namespace Aurora::Crypto::ECC
{ {
} }

View File

@ -8,7 +8,7 @@
#include <Source/RuntimeInternal.hpp> #include <Source/RuntimeInternal.hpp>
#include "Debug.hpp" #include "Debug.hpp"
#include "Panic.hpp" #include "Panic.hpp"
#include <intrin.h> //#include <intrin.h>
#include <Source/Console/ConsoleFIO/ConsoleFIO.hpp> #include <Source/Console/ConsoleFIO/ConsoleFIO.hpp>
namespace Aurora::Debug namespace Aurora::Debug
@ -26,7 +26,7 @@ namespace Aurora::Debug
#elif defined(DEBUG) #elif defined(DEBUG)
#if defined(AURORA_COMPILER_MSVC) #if defined(AURORA_COMPILER_MSVC)
__debugbreak(); __debugbreak();
#elif defined(__has_builtin) && __has_builtin(__builtin_debugtrap)) #elif (defined(__has_builtin) && __has_builtin(__builtin_debugtrap))
__builtin_debugtrap(); __builtin_debugtrap();
#elif defined(AURORA_COMPILER_GCC) || defined(AURORA_COMPILER_CLANG) #elif defined(AURORA_COMPILER_GCC) || defined(AURORA_COMPILER_CLANG)
// GCC is a terrible compiler, msvc is annoying at best, and LLVM + cpp frontend seems great, whats new? // GCC is a terrible compiler, msvc is annoying at best, and LLVM + cpp frontend seems great, whats new?
@ -92,4 +92,4 @@ namespace Aurora::Debug
#endif #endif
#endif #endif
} }
} }

View File

@ -19,6 +19,10 @@
#include <sys/sysinfo.h> #include <sys/sysinfo.h>
#endif #endif
#if defined(AURORA_COMPILER_CLANG) || defined(AURORA_IS_POSIX_DERIVED)
#include <cpuid.h>
#endif
namespace Aurora::HWInfo namespace Aurora::HWInfo
{ {
static CpuInfo gCpuInfo; static CpuInfo gCpuInfo;
@ -459,7 +463,7 @@ namespace Aurora::HWInfo
gCpuInfo.socket = 1; gCpuInfo.socket = 1;
gCpuInfo.cores = 1; gCpuInfo.cores = 1;
gCpuInfo.threads = get_nprocs(void); gCpuInfo.threads = get_nprocs();
#elif defined(AURORA_IS_POSIX_DERIVED) #elif defined(AURORA_IS_POSIX_DERIVED)
@ -476,4 +480,4 @@ namespace Aurora::HWInfo
SetCpuId(); SetCpuId();
SetCpuTopology(); SetCpuTopology();
} }
} }

View File

@ -19,6 +19,7 @@
#if defined(AURORA_IS_LINUX_DERIVED) #if defined(AURORA_IS_LINUX_DERIVED)
#include <sys/sysinfo.h> #include <sys/sysinfo.h>
#include <sys/resource.h>
#endif #endif
#if defined(AURORA_IS_MODERNNT_DERIVED) #if defined(AURORA_IS_MODERNNT_DERIVED)
@ -124,4 +125,4 @@ namespace Aurora::HWInfo
{ {
gMemStartup = GetMemStatSystem(); gMemStartup = GetMemStatSystem();
} }
} }

View File

@ -17,9 +17,13 @@
#include <unistd.h> #include <unistd.h>
#include <fcntl.h> #include <fcntl.h>
#if defined(AURORA_IS_LINUX_DERIVED)
#include <sys/sendfile.h>
#endif
namespace Aurora::IO::FS namespace Aurora::IO::FS
{ {
bool _MkDir(const AuString &str) bool _MkDir(const AuString &path)
{ {
return mkdir(path.c_str(), 0760) == 0; return mkdir(path.c_str(), 0760) == 0;
} }
@ -34,13 +38,27 @@ namespace Aurora::IO::FS
return IterateDirEntriesSTL(string, false, dirs); return IterateDirEntriesSTL(string, false, dirs);
} }
AUKN_SYM bool WriteFile(const AuString &path, const void *data, size_t length) AUKN_SYM bool WriteFile(const AuString &path, const void *data, AuUInt length)
{ {
auto file = OpenWriteUnique(path); auto file = OpenWriteUnique(path);
SysCheckReturn(file, false); SysCheckReturn(file, false);
return file->Read(data, length) == length;
} AuUInt written = length;
if (!file->Write(Memory::MemoryViewStreamRead(data, written)))
{
SysPushErrorMem();
return false;
}
if (written != length)
{
SysPushErrorIO();
return false;
}
return false;
}
AUKN_SYM bool ReadFile(const AuString &path, AuList<uint8_t> &buffer) AUKN_SYM bool ReadFile(const AuString &path, AuList<uint8_t> &buffer)
{ {
auto file = OpenReadUnique(path); auto file = OpenReadUnique(path);
@ -53,7 +71,20 @@ namespace Aurora::IO::FS
return false; return false;
} }
return file->Read(buffer.data(), buffer.size()) == buffer.size(); AuUInt read;
if (!file->Read(Memory::MemoryViewStreamWrite {buffer, read}))
{
SysPushErrorIO();
return false;
}
if (read != buffer.size())
{
SysPushErrorIO();
return false;
}
return false;
} }
static bool UnixExists(const AuString &path, bool dir) static bool UnixExists(const AuString &path, bool dir)
@ -85,7 +116,7 @@ namespace Aurora::IO::FS
AUKN_SYM bool Remove(const AuString &path) AUKN_SYM bool Remove(const AuString &path)
{ {
return remove(RetPathHelper(path).c_str()) != -1; return remove(NormalizePathRet(path).c_str()) != -1;
} }
AUKN_SYM bool Relink(const AuString &src, const AuString &dest) AUKN_SYM bool Relink(const AuString &src, const AuString &dest)
@ -110,7 +141,7 @@ namespace Aurora::IO::FS
struct stat fileinfo = { 0 }; struct stat fileinfo = { 0 };
if (fstat(input, &fileinfo) != 0) if (fstat(input, &fileinfo) != 0)
{ {
close(input) close(input);
return false; return false;
} }
@ -178,7 +209,7 @@ namespace Aurora::IO::FS
auto path = NormalizePathRet(pathRel); auto path = NormalizePathRet(pathRel);
struct stat s; struct stat s;
auto err = stat(path.c_str(), &s); auto err = ::stat(path.c_str(), &s);
if (err == -1) if (err == -1)
{ {
@ -202,9 +233,9 @@ namespace Aurora::IO::FS
stat.size = s.st_size; stat.size = s.st_size;
stat.created = ConvertUnixTimespecToMs(s.st_ctime); stat.created = Time::CTimeToMS(s.st_ctime);
stat.modified = ConvertUnixTimespecToMs(s.st_mtime); stat.modified = Time::CTimeToMS(s.st_mtime);
stat.accessed = ConvertUnixTimespecToMs(s.st_atime); stat.accessed = Time::CTimeToMS(s.st_atime);
err = lstat(path.c_str(), &s); err = lstat(path.c_str(), &s);
if (err != -1) if (err != -1)
@ -215,4 +246,4 @@ namespace Aurora::IO::FS
return true; return true;
} }
} }
#endif #endif

View File

@ -40,9 +40,9 @@ namespace Aurora::IO::FS
try try
{ {
#if defined(NO_STD_FS) #if defined(NO_STD_FS)
stream_.open(RetPathHelper(str), std::ios_base::binary) stream_.open(NormalizePathRet(str), std::ios_base::binary)
#else #else
stream_.open(std::filesystem::u8path(RetPathHelper(str)), std::ios_base::binary); stream_.open(std::filesystem::u8path(NormalizePathRet(str)), std::ios_base::binary);
#endif #endif
} }
catch (...) catch (...)
@ -236,4 +236,4 @@ namespace Aurora::IO::FS
SafeDelete<StdWriteFS *>(that); SafeDelete<StdWriteFS *>(that);
} }
} }
#endif #endif

View File

@ -30,7 +30,7 @@ namespace Aurora::IO::FS
auto ret = lseek(fd, offset, whence); auto ret = lseek(fd, offset, whence);
#else #else
#error accient 32-bit posix operating systems require 64-bit file awareness #error accient 32-bit posix operating systems require 64-bit file awareness
#end #endif
if (ret < 0) if (ret < 0)
{ {
@ -147,7 +147,7 @@ namespace Aurora::IO::FS
return 0; return 0;
} }
return PosixSetOffset(handle_); return PosixSetOffset(handle_, offset);
} }
AuUInt64 PosixFileStream::GetLength() AuUInt64 PosixFileStream::GetLength()
@ -179,7 +179,7 @@ namespace Aurora::IO::FS
if (!PosixRead(handle_, &reinterpret_cast<char *>(parameters.ptr)[offset], blockSize, &read)) if (!PosixRead(handle_, &reinterpret_cast<char *>(parameters.ptr)[offset], blockSize, &read))
{ {
SysPushErrorNested("File Error: {}", path); SysPushErrorNested("File Error: {}", path_);
break; break;
} }
@ -219,14 +219,14 @@ namespace Aurora::IO::FS
if (!PosixWrite(handle_, &reinterpret_cast<const char *>(parameters.ptr)[offset], blockSize, &written)) if (!PosixWrite(handle_, &reinterpret_cast<const char *>(parameters.ptr)[offset], blockSize, &written))
{ {
SysPushErrorNested("File Error: {}", path); SysPushErrorNested("File Error: {}", path_);
return false; return false;
} }
if (written != blockSize) if (written != blockSize)
{ {
SysPushErrorIO(); SysPushErrorIO();
SysPushErrorNested("File Error: {}", path); SysPushErrorNested("File Error: {}", path_);
break; break;
} }
@ -307,4 +307,4 @@ namespace Aurora::IO::FS
SafeDelete<PosixFileStream *>(that); SafeDelete<PosixFileStream *>(that);
} }
} }
#endif #endif

View File

@ -11,18 +11,18 @@
namespace Aurora::IO::FS namespace Aurora::IO::FS
{ {
class PosixStream : public IFileStream class PosixFileStream : public IFileStream
{ {
public: public:
~PosixStream(); ~PosixFileStream();
void Init(int handle, const AuString &path); void Init(int handle, const AuString &path);
AuUInt64 GetOffset() override; AuUInt64 GetOffset() override;
bool SetOffset(AuUInt64 offset) override; bool SetOffset(AuUInt64 offset) override;
AuUInt64 GetLength() override; AuUInt64 GetLength() override;
AuUInt64 Read(void *in, AuUInt64 length) override; bool Read(const Memory::MemoryViewStreamWrite &parameters) override;
AuUInt64 Write(const void *out, AuUInt64 length) override; bool Write(const Memory::MemoryViewStreamRead & parameters) override;
void Close() override; void Close() override;
void Flush() override; void Flush() override;
@ -32,4 +32,4 @@ namespace Aurora::IO::FS
AuString path_; AuString path_;
}; };
} }
#endif #endif

View File

@ -57,12 +57,20 @@ namespace Aurora::Locale::Encoding
AuStreamReadWrittenPair_t Win32ConvertFromCPToUTF8(AuUInt32 cp, const void *in, AuUInt length, void *utf8, AuUInt32 utf8Len) AuStreamReadWrittenPair_t Win32ConvertFromCPToUTF8(AuUInt32 cp, const void *in, AuUInt length, void *utf8, AuUInt32 utf8Len)
{ {
#if !defined(AU_HAS_MSFT_NATIONALLANGSUPPORT)
return {};
#else
return Win32ConvertCpAToCPB(cp, CP_UTF8, in, length, utf8, utf8Len); return Win32ConvertCpAToCPB(cp, CP_UTF8, in, length, utf8, utf8Len);
#endif
} }
AuStreamReadWrittenPair_t Win32ConvertFromUTF8ToCp(AuUInt32 cp, const void *utf8, AuUInt utf8Length, void *cpBlob, AuUInt32 cpLen) AuStreamReadWrittenPair_t Win32ConvertFromUTF8ToCp(AuUInt32 cp, const void *utf8, AuUInt utf8Length, void *cpBlob, AuUInt32 cpLen)
{ {
#if !defined(AU_HAS_MSFT_NATIONALLANGSUPPORT)
return {};
#else
return Win32ConvertCpAToCPB(CP_UTF8, cp, utf8, utf8Length, cpBlob, cpLen); return Win32ConvertCpAToCPB(CP_UTF8, cp, utf8, utf8Length, cpBlob, cpLen);
#endif
} }
AuStreamReadWrittenPair_t Win32ConvertFromUTF16ToUTF8(const void *in, AuUInt32 inLength, void *utf8, AuUInt32 utf8Len) AuStreamReadWrittenPair_t Win32ConvertFromUTF16ToUTF8(const void *in, AuUInt32 inLength, void *utf8, AuUInt32 utf8Len)
@ -144,6 +152,7 @@ namespace Aurora::Locale::Encoding
{ {
AuStreamReadWrittenPair_t ret {}; AuStreamReadWrittenPair_t ret {};
#if defined(AU_HAS_MSFT_NATIONALLANGSUPPORT)
switch (page) switch (page)
{ {
default: default:
@ -174,6 +183,7 @@ namespace Aurora::Locale::Encoding
ret = Win32ConvertFromUTF16ToUTF8(in, length, utf8, utf8Max); ret = Win32ConvertFromUTF16ToUTF8(in, length, utf8, utf8Max);
break; break;
} }
#endif
return ret; return ret;
} }
@ -182,6 +192,7 @@ namespace Aurora::Locale::Encoding
{ {
AuStreamReadWrittenPair_t ret {}; AuStreamReadWrittenPair_t ret {};
#if defined(AU_HAS_MSFT_NATIONALLANGSUPPORT)
switch (page) switch (page)
{ {
default: default:
@ -212,6 +223,7 @@ namespace Aurora::Locale::Encoding
ret = Win32ConvertFromUTF16ToUTF8(in, length, utf8, utf8Max); ret = Win32ConvertFromUTF16ToUTF8(in, length, utf8, utf8Max);
break; break;
} }
#endif
return ret; return ret;
} }
@ -219,7 +231,8 @@ namespace Aurora::Locale::Encoding
AuStreamReadWrittenPair_t Win32UTF8ToCp(ECodePage page, const void *utf8, AuUInt32 utf8Length, void *cp, AuUInt32 cpLen) AuStreamReadWrittenPair_t Win32UTF8ToCp(ECodePage page, const void *utf8, AuUInt32 utf8Length, void *cp, AuUInt32 cpLen)
{ {
AuStreamReadWrittenPair_t ret {}; AuStreamReadWrittenPair_t ret {};
#if defined(AU_HAS_MSFT_NATIONALLANGSUPPORT)
switch (page) switch (page)
{ {
default: default:
@ -249,6 +262,7 @@ namespace Aurora::Locale::Encoding
break; break;
} }
#endif
return ret; return ret;
} }
} }

View File

@ -5,6 +5,7 @@
Date: 2021-6-11 Date: 2021-6-11
Author: Reece Author: Reece
***/ ***/
#define I_REALLY_NEED_WIDECHAR_PUBAPI
#include <Source/RuntimeInternal.hpp> #include <Source/RuntimeInternal.hpp>
#include "Locale.hpp" #include "Locale.hpp"
@ -222,7 +223,7 @@ namespace Aurora::Locale
auto parseTable = ParseLocaleString(locale); auto parseTable = ParseLocaleString(locale);
AuString *lc; AuString *lc;
if ((TryFind(parseTable, '!', lc)) && (lc->size())) if ((AuTryFind(parseTable, '!', lc)) && (lc->size()))
{ {
gLanguageCode = *lc; gLanguageCode = *lc;
} }
@ -234,7 +235,7 @@ namespace Aurora::Locale
} }
AuString *cc; AuString *cc;
if ((TryFind(parseTable, '_', cc)) && (cc->size())) if ((AuTryFind(parseTable, '_', cc)) && (cc->size()))
{ {
gCountryCode = *cc; gCountryCode = *cc;
} }
@ -244,7 +245,7 @@ namespace Aurora::Locale
} }
AuString *cs; AuString *cs;
if ((TryFind(parseTable, '.', cs)) && (cs->size())) if ((AuTryFind(parseTable, '.', cs)) && (cs->size()))
{ {
gCodeset = *cs; gCodeset = *cs;
} }
@ -361,4 +362,4 @@ namespace Aurora::Locale
gLockLocale = true; gLockLocale = true;
return LocalizationInfo(gLanguageCode, gCountryCode, gCodeset, gInternalCodePage); return LocalizationInfo(gLanguageCode, gCountryCode, gCodeset, gInternalCodePage);
} }
} }

View File

@ -7,6 +7,8 @@
***/ ***/
#pragma once #pragma once
#define I_REALLY_NEED_WIDECHAR_PUBAPI
#if defined (VENDOR_GENERIC_MICROSOFT) || defined(VENDOR_CONSOLE_MICROSOFT) #if defined (VENDOR_GENERIC_MICROSOFT) || defined(VENDOR_CONSOLE_MICROSOFT)
// https://docs.microsoft.com/en-us/gaming/gdk/_content/gc/system/overviews/localization/supported_nls_apis // https://docs.microsoft.com/en-us/gaming/gdk/_content/gc/system/overviews/localization/supported_nls_apis
#define AU_HAS_MSFT_NATIONALLANGSUPPORT #define AU_HAS_MSFT_NATIONALLANGSUPPORT
@ -54,4 +56,4 @@ namespace Aurora::Locale
/// bool DecodeStringToUTF8(AuUInt8 *readWriteHead, int length, AuString &decoded, ECodePage guess = ECodePage::eNotRead); /// bool DecodeStringToUTF8(AuUInt8 *readWriteHead, int length, AuString &decoded, ECodePage guess = ECodePage::eNotRead);
} }
#include "Encoding/Encoding.hpp" #include "Encoding/Encoding.hpp"

View File

@ -10,21 +10,39 @@
#include "Process.Linux.hpp" #include "Process.Linux.hpp"
#include <unistd.h> #include <unistd.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#include <sys/types.h>
#include <Source/Threading/Primitives/Semaphore.Unix.hpp>
static inline int sys_pidfd_send_signal(int pidfd, int sig, siginfo_t *info,
unsigned int flags)
{
return syscall(__NR_pidfd_send_signal, pidfd, sig, info, flags);
}
static inline int sys_pidfd_open(pid_t pid, unsigned int flags)
{
return syscall(__NR_pidfd_open, pid, flags);
}
#ifndef P_PIDFD
#define P_PIDFD 3
#endif
namespace Aurora::Processes namespace Aurora::Processes
{ {
class ProcessImpl : public IProcess class ProcessImpl : public IProcess
{ {
public: public:
ProcessImpl(AuString cmd, AuList<AuString> args) : module_(cmd), args_(args); ProcessImpl(AuString cmd, AuList<AuString> args);
~ProcessImpl(); ~ProcessImpl();
void ShutdownPipes(); void ShutdownPipes();
bool TryKill() override; bool TryKill() override;
bool Terminate() override; bool Terminate() override;
Aurora::Threading::IWaitable *AsWaitable() override; AuSPtr<Aurora::Threading::IWaitable> AsWaitable() override;
AuSInt GetExitCode() override; AuSInt GetExitCode() override;
@ -57,7 +75,7 @@ namespace Aurora::Processes
{ {
this->args_.insert(this->args_.begin(), cmd); this->args_.insert(this->args_.begin(), cmd);
for (const auto &arg : this->args_) for (auto &arg : this->args_)
{ {
this->cargs_.push_back(arg.c_str()); this->cargs_.push_back(arg.c_str());
this->windows_ += arg + " "; this->windows_ += arg + " ";
@ -124,7 +142,7 @@ namespace Aurora::Processes
return true; return true;
} }
Aurora::Threading::IWaitable *ProcessImpl::AsWaitable() AuSPtr<Aurora::Threading::IWaitable> ProcessImpl::AsWaitable()
{ {
if (!this->thread_) return nullptr; if (!this->thread_) return nullptr;
return this->thread_->AsWaitable(); return this->thread_->AsWaitable();
@ -143,10 +161,13 @@ namespace Aurora::Processes
bool ProcessImpl::Read(bool error, void *buffer, AuUInt32 &len) bool ProcessImpl::Read(bool error, void *buffer, AuUInt32 &len)
{ {
len = 0;
auto handle = error ? pipeStdErr_[0] : pipeStdOut_[0]; auto handle = error ? pipeStdErr_[0] : pipeStdOut_[0];
if (handle < 0) return false; if (handle < 0) return false;
len = read(handle, buffer, len); auto tmp = read(handle, buffer, len);
return ret; if (tmp < 0) return false;
len = tmp;
return true;
} }
bool ProcessImpl::Write(const void *buffer, AuUInt32 len) bool ProcessImpl::Write(const void *buffer, AuUInt32 len)
@ -163,7 +184,7 @@ namespace Aurora::Processes
if (type == ESpawnType::eSpawnAtomicOvermap) if (type == ESpawnType::eSpawnAtomicOvermap)
{ {
execv(this->module_.c_str(), this->cargs_.data()); execv(this->module_.c_str(), (char *const *)this->cargs_.data()); // https://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html
SysPushErrorGen("execv didn't overwrite the process map, given {} ({})", this->module_, this->windows_); SysPushErrorGen("execv didn't overwrite the process map, given {} ({})", this->module_, this->windows_);
return false; return false;
} }
@ -196,7 +217,7 @@ namespace Aurora::Processes
pid_t pid; pid_t pid;
{ {
Semaphore semaphore; Threading::Primitives::Semaphore semaphore;
pid = fork(); pid = fork();
if (pid == 0) if (pid == 0)
{ {
@ -220,12 +241,12 @@ namespace Aurora::Processes
close(std::exchange(pipeStdOut_[1], 0)); close(std::exchange(pipeStdOut_[1], 0));
} }
if (type != ESpawnType::eSpawnSubProcessWorker) if (type != ESpawnType::eSpawnChildProcessWorker)
{ {
setsid(); setsid();
} }
execv(this->module_.c_str(), this->cargs_.data()); execv(this->module_.c_str(), (char * const *)this->cargs_.data()); // https://pubs.opengroup.org/onlinepubs/9699919799/functions/exec.html
SysPushErrorGen("execv didn't overwrite the process map, given {} ({})", this->module_, this->windows_); SysPushErrorGen("execv didn't overwrite the process map, given {} ({})", this->module_, this->windows_);
return false; return false;
} }
@ -235,8 +256,8 @@ namespace Aurora::Processes
} }
else else
{ {
this->handle_ = pidfd_open(pid, 0); this->handle_ = sys_pidfd_open(pid, 0);
semaphore.unlock(); semaphore.Unlock();
} }
} }
@ -272,4 +293,4 @@ namespace Aurora::Processes
{ {
SafeDelete<ProcessImpl *>(process); SafeDelete<ProcessImpl *>(process);
} }
} }

View File

@ -36,11 +36,16 @@
#define AURORA_HAS_PTHREADS #define AURORA_HAS_PTHREADS
#define _FILE_OFFSET_BITS 64 #define _FILE_OFFSET_BITS 64
#define _LARGEFILE64_SOURCE #if !defined(_LARGEFILE64_SOURCE)
#define _LARGEFILE64_SOURCE
#endif
#include <pthread.h> #include <pthread.h>
#include <signal.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h>
#define stricmp strcasecmp
#endif #endif
#include <AuroraRuntime.hpp> #include <AuroraRuntime.hpp>

View File

@ -7,6 +7,7 @@
***/ ***/
#include <Source/RuntimeInternal.hpp> #include <Source/RuntimeInternal.hpp>
#include "ConditionVariable.Generic.hpp" #include "ConditionVariable.Generic.hpp"
#include <Source/Time/Time.hpp>
#if !defined(_AURUNTIME_GENERICCV) #if !defined(_AURUNTIME_GENERICCV)
@ -30,7 +31,7 @@ namespace Aurora::Threading::Primitives
bool ConditionVariableImpl::WaitForSignal(AuUInt32 timeout) bool ConditionVariableImpl::WaitForSignal(AuUInt32 timeout)
{ {
auto mutex = reinterpret_cast<pthread_mutex_t>(mutex_->GetOSHandle()); auto mutex = reinterpret_cast<pthread_mutex_t*>(mutex_->GetOSHandle());
if (timeout == 0) if (timeout == 0)
{ {
@ -42,7 +43,7 @@ namespace Aurora::Threading::Primitives
else else
{ {
struct timespec tspec; struct timespec tspec;
ms2ts(&tspec, timeout); Time::ms2ts(&tspec, timeout);
auto ret = pthread_cond_timedwait(&pthreadCv_, mutex, &tspec); auto ret = pthread_cond_timedwait(&pthreadCv_, mutex, &tspec);
@ -79,4 +80,4 @@ namespace Aurora::Threading::Primitives
} }
} }
#endif #endif

View File

@ -60,7 +60,7 @@ namespace Aurora::Threading::Primitives
else else
{ {
struct timespec tspec; struct timespec tspec;
ms2ts(&tspec, timeout); Time::ms2ts(&tspec, timeout);
auto ret = pthread_mutex_timedlock(&value_, &tspec); auto ret = pthread_mutex_timedlock(&value_, &tspec);
if (ret != 0) if (ret != 0)
@ -90,4 +90,4 @@ namespace Aurora::Threading::Primitives
} }
} }
#endif #endif

View File

@ -10,6 +10,45 @@
namespace Aurora::Threading::Primitives namespace Aurora::Threading::Primitives
{ {
template<bool isread>
void RWLockAccessView<isread>::Unlock()
{
if constexpr (isread)
{
parent_.UnlockRead();
}
else
{
parent_.UnlockWrite();
}
}
template<bool isread>
bool RWLockAccessView<isread>::Lock(AuUInt64 timeout)
{
if constexpr (isread)
{
return parent_.LockRead(timeout);
}
else
{
return parent_.LockWrite(timeout);
}
}
template<bool isread>
bool RWLockAccessView<isread>::TryLock()
{
if constexpr (isread)
{
return parent_.TryLockRead();
}
else
{
return parent_.TryLockWrite();
}
}
RWLockImpl::RWLockImpl() : read_(*this), write_(*this) RWLockImpl::RWLockImpl() : read_(*this), write_(*this)
{ {
@ -170,4 +209,4 @@ namespace Aurora::Threading::Primitives
{ {
SafeDelete<RWLockImpl *>(waitable); SafeDelete<RWLockImpl *>(waitable);
} }
} }

View File

@ -20,29 +20,9 @@ namespace Aurora::Threading::Primitives
} }
bool Lock(AuUInt64 timeout) override bool Lock(AuUInt64 timeout) override;
{
if constexpr (isread)
{
return parent_.LockRead(timeout);
}
else
{
return parent_.LockWrite(timeout);
}
}
bool TryLock() override bool TryLock() override;
{
if constexpr (isread)
{
return parent_.TryLockRead();
}
else
{
return parent_.TryLockWrite();
}
}
bool HasOSHandle(AuMach &mach) override bool HasOSHandle(AuMach &mach) override
{ {
@ -59,17 +39,7 @@ namespace Aurora::Threading::Primitives
SysAssert(Lock(0)); SysAssert(Lock(0));
} }
void Unlock() override void Unlock() override;
{
if constexpr (isread)
{
parent_.UnlockRead();
}
else
{
parent_.UnlockWrite();
}
}
private: private:
RWLockImpl &parent_; RWLockImpl &parent_;
@ -105,4 +75,4 @@ namespace Aurora::Threading::Primitives
std::atomic<int> state_; std::atomic<int> state_;
std::atomic<bool> elevaterPending_; std::atomic<bool> elevaterPending_;
}; };
} }

View File

@ -28,7 +28,7 @@ namespace Aurora::Threading::Primitives
bool Semaphore::HasOSHandle(AuMach &mach) bool Semaphore::HasOSHandle(AuMach &mach)
{ {
mach = reinterpret_cast<AuMach>(value_); mach = reinterpret_cast<AuMach>(&value_);
return true; return true;
} }
@ -39,7 +39,7 @@ namespace Aurora::Threading::Primitives
bool Semaphore::TryLock() bool Semaphore::TryLock()
{ {
return sem_trywait(&_value) == 0; return sem_trywait(&value_) == 0;
} }
bool Semaphore::Lock(AuUInt64 timeout) bool Semaphore::Lock(AuUInt64 timeout)
@ -53,7 +53,7 @@ namespace Aurora::Threading::Primitives
else else
{ {
struct timespec tspec; struct timespec tspec;
ms2ts(&tspec, timeout); Time::ms2ts(&tspec, timeout);
auto ret = sem_timedwait(&value_, &tspec); auto ret = sem_timedwait(&value_, &tspec);
if (ret != 0) if (ret != 0)
@ -96,4 +96,4 @@ namespace Aurora::Threading::Primitives
SafeDelete<Semaphore *>(waitable); SafeDelete<Semaphore *>(waitable);
} }
} }
#endif #endif

View File

@ -401,7 +401,7 @@ namespace Aurora::Threading::Threads
#elif defined(AURORA_HAS_PTHREADS) #elif defined(AURORA_HAS_PTHREADS)
pthread_setname_np(_handle, name_.c_str()); pthread_setname_np(handle_, name_.c_str());
#endif #endif
} }
@ -517,7 +517,7 @@ namespace Aurora::Threading::Threads
if (auto tid = unixThreadId_) if (auto tid = unixThreadId_)
{ {
setpriority(PRIO_PROCESS, tid, val); setpriority(PRIO_PROCESS, tid, *val);
} }
#endif #endif
} }
@ -620,4 +620,4 @@ namespace Aurora::Threading::Threads
} }
#endif #endif
} }
} }

View File

@ -52,10 +52,10 @@ namespace Aurora::Threading::Threads
} }
}; };
#if defined(AURORA_COMPILER_MSVC) #if defined(AURORA_COMPILER_MSVC) || defined(AURORA_COMPILER_CLANG)
#define DEFINE_SPEEDY_TLS(type, name) static thread_local type name; #define DEFINE_SPEEDY_TLS(type, name) static thread_local type name;
#elif defined(AURORA_COMPILER_CLANG) || defined(AURORA_COMPILER_GCC) #elif defined(AURORA_COMPILER_GCC)
#define DEFINE_SPEEDY_TLS(type, name) __thread type name __attribute__((tls_model("initial-exec"))); #define DEFINE_SPEEDY_TLS(type, name) __thread type name __attribute__((tls_model("initial-exec")));
#else #else
#define DEFINE_SPEEDY_TLS(type, name) static thread_local type name; #define DEFINE_SPEEDY_TLS(type, name) static thread_local type name;
#endif #endif
@ -111,4 +111,4 @@ namespace Aurora::Threading::Threads
{ {
return reinterpret_cast<AuThreadId_t>(GetThread()); return reinterpret_cast<AuThreadId_t>(GetThread());
} }
} }

View File

@ -57,7 +57,7 @@ static inline T DecodeEpoch(T auroraEpoch)
template<typename Clock_t, typename Duration_t> template<typename Clock_t, typename Duration_t>
static auto TimeFromDurationSinceEpoch(Duration_t in) static auto TimeFromDurationSinceEpoch(Duration_t in)
{ {
auto duration = std::chrono::duration_cast<Clock_t::duration>(in); auto duration = std::chrono::duration_cast<typename Clock_t::duration>(in);
return std::chrono::time_point<Clock_t>(DecodeEpoch(duration)); return std::chrono::time_point<Clock_t>(DecodeEpoch(duration));
} }
@ -99,6 +99,11 @@ namespace Aurora::Time
return std::chrono::duration_cast<std::chrono::nanoseconds>(NormalizeEpoch(sys_clock::now().time_since_epoch())).count(); return std::chrono::duration_cast<std::chrono::nanoseconds>(NormalizeEpoch(sys_clock::now().time_since_epoch())).count();
} }
AUKN_SYM AuInt64 CTimeToMS(time_t time)
{
return std::chrono::duration_cast<std::chrono::milliseconds>(NormalizeEpoch(sys_clock::from_time_t(time).time_since_epoch())).count();
}
AUKN_SYM AuUInt64 CurrentInternalClock() AUKN_SYM AuUInt64 CurrentInternalClock()
{ {
return high_res_clock::now().time_since_epoch().count(); return high_res_clock::now().time_since_epoch().count();
@ -194,7 +199,11 @@ namespace Aurora::Time
auto timet = MSToCTime(time); auto timet = MSToCTime(time);
if (UTC) if (UTC)
{ {
#if defined(AURORA_COMPILER_MSVC)
auto tm = gmtime_s(&ret, &timet); auto tm = gmtime_s(&ret, &timet);
#else
auto tm = gmtime_r(&timet, &ret);
#endif
#if defined(AURORA_COMPILER_MSVC) #if defined(AURORA_COMPILER_MSVC)
SysAssert(!tm, "couldn't convert civil time"); SysAssert(!tm, "couldn't convert civil time");
#else #else
@ -211,7 +220,11 @@ namespace Aurora::Time
#endif #endif
{ {
LogWarn("Couldn't convert local civil time"); LogWarn("Couldn't convert local civil time");
#if defined(AURORA_COMPILER_MSVC)
auto tm = gmtime_s(&ret, &timet); auto tm = gmtime_s(&ret, &timet);
#else
auto tm = gmtime_r(&timet, &ret);
#endif
#if defined(AURORA_COMPILER_MSVC) #if defined(AURORA_COMPILER_MSVC)
SysAssert(!tm, "couldn't convert civil time"); SysAssert(!tm, "couldn't convert civil time");
@ -247,4 +260,4 @@ namespace Aurora::Time
return std::chrono::duration_cast<std::chrono::milliseconds>(NormalizeEpoch(std::chrono::system_clock::from_time_t(timet).time_since_epoch())).count(); return std::chrono::duration_cast<std::chrono::milliseconds>(NormalizeEpoch(std::chrono::system_clock::from_time_t(timet).time_since_epoch())).count();
} }
} }