chore(build): migrate to system lib

This commit is contained in:
fallenoak 2020-12-02 20:04:02 -06:00
parent aa616b75b5
commit 6ac442e473
No known key found for this signature in database
GPG key ID: 7628F8E61AEA070D
16 changed files with 54 additions and 60 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "lib/system"]
path = lib/system
url = https://github.com/whoahq/system

View file

@ -18,24 +18,8 @@ project(storm)
set(CMAKE_CXX_STANDARD 11)
# Arch defines
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(WHOA_ARCH_64 1)
elseif(CMAKE_SIZEOF_VOID_P EQUAL 4)
set(WHOA_ARCH_32 1)
endif()
# OS defines
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
set(WHOA_PLATFORM_WIN 1)
add_definitions(-DWHOA_PLATFORM_WIN)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(WHOA_PLATFORM_LINUX 1)
add_definitions(-DWHOA_PLATFORM_LINUX)
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(WHOA_PLATFORM_MAC 1)
add_definitions(-DWHOA_PLATFORM_MAC)
endif()
include(lib/system/cmake/system.cmake)
add_subdirectory(lib)
add_subdirectory(storm)
add_subdirectory(test)

1
lib/CMakeLists.txt Normal file
View file

@ -0,0 +1 @@
add_subdirectory(system)

1
lib/system Submodule

@ -0,0 +1 @@
Subproject commit f886ab5bc35b2e0d968baa8dec3faaccf385fbc3

View file

@ -5,7 +5,7 @@ file(GLOB STORM_SOURCES
"thread/*.cpp"
)
if(WHOA_PLATFORM_WIN)
if(WHOA_SYSTEM_WIN)
file(GLOB STORM_WIN_SOURCES
"win/*.cpp"
"thread/win/*.cpp"
@ -13,7 +13,7 @@ if(WHOA_PLATFORM_WIN)
list(APPEND STORM_SOURCES ${STORM_WIN_SOURCES})
endif()
if(WHOA_PLATFORM_MAC)
if(WHOA_SYSTEM_MAC)
file(GLOB STORM_MAC_SOURCES
"mac/*.cpp"
"mac/*.mm"
@ -31,3 +31,8 @@ target_include_directories(storm
PUBLIC
${PROJECT_SOURCE_DIR}
)
target_link_libraries(storm
PRIVATE
system
)

View file

@ -3,11 +3,11 @@
#include <cstdint>
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
#include <winerror.h>
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
#define ERROR_INVALID_PARAMETER 0x57
#endif

View file

@ -8,11 +8,11 @@
#include <cstdio>
#include <cstring>
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
#include <string.h>
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
#include <strings.h>
#endif
@ -243,11 +243,11 @@ int32_t SStrCmp(const char* string1, const char* string2, size_t maxchars) {
}
int32_t SStrCmpI(const char* string1, const char* string2, size_t maxchars) {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
return _strnicmp(string1, string2, maxchars);
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
return strncasecmp(string1, string2, maxchars);
#endif
}

View file

@ -1,11 +1,11 @@
#include "storm/thread/CSRWLock.hpp"
void CSRWLock::Enter(int32_t forwriting) {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
SRWLock::SURWLockEnter(&this->m_opaqueData, forwriting);
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
if (forwriting) {
pthread_rwlock_wrlock(&this->m_lock);
} else {
@ -15,11 +15,11 @@ void CSRWLock::Enter(int32_t forwriting) {
}
void CSRWLock::Leave(int32_t fromwriting) {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
SRWLock::SURWLockLeave(&this->m_opaqueData, fromwriting);
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_rwlock_unlock(&this->m_lock);
#endif
}

View file

@ -3,22 +3,22 @@
#include <cstdint>
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
#include "storm/thread/win/SRWLock.hpp"
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
#include <pthread.h>
#endif
class CSRWLock {
public:
// Member variables
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
SRWLock::SURWLOCK m_opaqueData;
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_rwlock_t m_lock;
#endif

View file

@ -1,21 +1,21 @@
#include "storm/thread/SCritSect.hpp"
void SCritSect::Enter() {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
EnterCriticalSection(&this->m_opaqueData);
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_lock(&this->m_mutex);
#endif
}
void SCritSect::Leave() {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
LeaveCriticalSection(&this->m_opaqueData);
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_unlock(&this->m_mutex);
#endif
}

View file

@ -1,22 +1,22 @@
#ifndef STORM_THREAD_S_CRIT_SECT_HPP
#define STORM_THREAD_S_CRIT_SECT_HPP
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
#include <windows.h>
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
#include <pthread.h>
#endif
class SCritSect {
public:
// Member variables
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
CRITICAL_SECTION m_opaqueData;
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_t m_mutex;
#endif

View file

@ -2,11 +2,11 @@
SEvent::SEvent(int32_t manualReset, int32_t initialValue)
: SSyncObject() {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
this->m_opaqueData = CreateEventA(nullptr, manualReset, initialValue, nullptr);
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
this->m_int0 = 2 - (manualReset >= 1);
this->m_value = initialValue;
@ -15,11 +15,11 @@ SEvent::SEvent(int32_t manualReset, int32_t initialValue)
}
int32_t SEvent::Reset() {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
return ResetEvent(this->m_opaqueData);
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_lock(&this->m_mutex);
this->m_value = 0;
pthread_mutex_unlock(&this->m_mutex);
@ -29,11 +29,11 @@ int32_t SEvent::Reset() {
}
int32_t SEvent::Set() {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
return SetEvent(this->m_opaqueData);
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_lock(&this->m_mutex);
this->m_value = 1;

View file

@ -1,23 +1,23 @@
#include "storm/thread/SSyncObject.hpp"
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
#include <cerrno>
#include <sys/time.h>
#include <unistd.h>
#endif
SSyncObject::SSyncObject() {
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
pthread_mutex_init(&this->m_mutex, 0);
#endif
}
uint32_t SSyncObject::Wait(uint32_t timeoutMs) {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
return WaitForSingleObject(this->m_opaqueData, timeoutMs);
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
if (this->m_int0 == 6) {
// WAIT_FAILED
return 0xFFFFFFFF;

View file

@ -3,22 +3,22 @@
#include <cstdint>
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
#include <windows.h>
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
#include <pthread.h>
#endif
class SSyncObject {
public:
// Member variables
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
HANDLE m_opaqueData = nullptr;
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
int32_t m_int0 = 6;
int32_t m_value;
pthread_cond_t m_cond;

View file

@ -2,12 +2,12 @@
#include "storm/Thread.hpp"
int32_t SThread::Create(uint32_t (*threadProc)(void*), void* param, SThread& thread, char* threadName, uint32_t a5) {
#if defined(WHOA_PLATFORM_WIN)
#if defined(WHOA_SYSTEM_WIN)
// TODO implement
return 0;
#endif
#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX)
#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX)
thread.m_int0 = 5;
thread.m_value = 0;
pthread_cond_init(&thread.m_cond, nullptr);

View file

@ -1,6 +1,6 @@
file(GLOB_RECURSE TEST_SOURCES "*.cpp")
if(WHOA_PLATFORM_MAC)
if(WHOA_SYSTEM_MAC)
set_source_files_properties(${TEST_SOURCES}
PROPERTIES COMPILE_FLAGS "-x objective-c++"
)
@ -16,7 +16,7 @@ if(WHOA_PLATFORM_MAC)
)
endif()
if(WHOA_PLATFORM_LINUX OR WHOA_PLATFORM_WIN)
if(WHOA_SYSTEM_LINUX OR WHOA_SYSTEM_WIN)
add_executable(StormTest ${TEST_SOURCES})
target_link_libraries(StormTest