From 6ac442e473f187a2af8c3e9c0880edce71f670d7 Mon Sep 17 00:00:00 2001 From: fallenoak Date: Wed, 2 Dec 2020 20:04:02 -0600 Subject: [PATCH] chore(build): migrate to system lib --- .gitmodules | 3 +++ CMakeLists.txt | 20 ++------------------ lib/CMakeLists.txt | 1 + lib/system | 1 + storm/CMakeLists.txt | 9 +++++++-- storm/Error.hpp | 4 ++-- storm/String.cpp | 8 ++++---- storm/thread/CSRWLock.cpp | 8 ++++---- storm/thread/CSRWLock.hpp | 8 ++++---- storm/thread/SCritSect.cpp | 8 ++++---- storm/thread/SCritSect.hpp | 8 ++++---- storm/thread/SEvent.cpp | 12 ++++++------ storm/thread/SSyncObject.cpp | 8 ++++---- storm/thread/SSyncObject.hpp | 8 ++++---- storm/thread/SThread.cpp | 4 ++-- test/CMakeLists.txt | 4 ++-- 16 files changed, 54 insertions(+), 60 deletions(-) create mode 100644 .gitmodules create mode 100644 lib/CMakeLists.txt create mode 160000 lib/system diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..30abad7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "lib/system"] + path = lib/system + url = https://github.com/whoahq/system diff --git a/CMakeLists.txt b/CMakeLists.txt index 61a21f7..d254c0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt new file mode 100644 index 0000000..4cd46d9 --- /dev/null +++ b/lib/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(system) diff --git a/lib/system b/lib/system new file mode 160000 index 0000000..f886ab5 --- /dev/null +++ b/lib/system @@ -0,0 +1 @@ +Subproject commit f886ab5bc35b2e0d968baa8dec3faaccf385fbc3 diff --git a/storm/CMakeLists.txt b/storm/CMakeLists.txt index 8aa2b71..fe33bc9 100644 --- a/storm/CMakeLists.txt +++ b/storm/CMakeLists.txt @@ -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 +) diff --git a/storm/Error.hpp b/storm/Error.hpp index 0049dd3..81fa567 100644 --- a/storm/Error.hpp +++ b/storm/Error.hpp @@ -3,11 +3,11 @@ #include -#if defined(WHOA_PLATFORM_WIN) +#if defined(WHOA_SYSTEM_WIN) #include #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 diff --git a/storm/String.cpp b/storm/String.cpp index 89b41d9..dcda5e7 100644 --- a/storm/String.cpp +++ b/storm/String.cpp @@ -8,11 +8,11 @@ #include #include -#if defined(WHOA_PLATFORM_WIN) +#if defined(WHOA_SYSTEM_WIN) #include #endif -#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX) +#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX) #include #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 } diff --git a/storm/thread/CSRWLock.cpp b/storm/thread/CSRWLock.cpp index 65ea083..21e380d 100644 --- a/storm/thread/CSRWLock.cpp +++ b/storm/thread/CSRWLock.cpp @@ -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 } diff --git a/storm/thread/CSRWLock.hpp b/storm/thread/CSRWLock.hpp index accd501..bcdd5f2 100644 --- a/storm/thread/CSRWLock.hpp +++ b/storm/thread/CSRWLock.hpp @@ -3,22 +3,22 @@ #include -#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 #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 diff --git a/storm/thread/SCritSect.cpp b/storm/thread/SCritSect.cpp index ec9862a..360fa19 100644 --- a/storm/thread/SCritSect.cpp +++ b/storm/thread/SCritSect.cpp @@ -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 } diff --git a/storm/thread/SCritSect.hpp b/storm/thread/SCritSect.hpp index 4dd6226..6adae04 100644 --- a/storm/thread/SCritSect.hpp +++ b/storm/thread/SCritSect.hpp @@ -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 #endif -#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX) +#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX) #include #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 diff --git a/storm/thread/SEvent.cpp b/storm/thread/SEvent.cpp index 80202b6..6843ad2 100644 --- a/storm/thread/SEvent.cpp +++ b/storm/thread/SEvent.cpp @@ -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; diff --git a/storm/thread/SSyncObject.cpp b/storm/thread/SSyncObject.cpp index 11822f7..779d384 100644 --- a/storm/thread/SSyncObject.cpp +++ b/storm/thread/SSyncObject.cpp @@ -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 #include #include #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; diff --git a/storm/thread/SSyncObject.hpp b/storm/thread/SSyncObject.hpp index e9ea040..ef9c336 100644 --- a/storm/thread/SSyncObject.hpp +++ b/storm/thread/SSyncObject.hpp @@ -3,22 +3,22 @@ #include -#if defined(WHOA_PLATFORM_WIN) +#if defined(WHOA_SYSTEM_WIN) #include #endif -#if defined(WHOA_PLATFORM_MAC) || defined(WHOA_PLATFORM_LINUX) +#if defined(WHOA_SYSTEM_MAC) || defined(WHOA_SYSTEM_LINUX) #include #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; diff --git a/storm/thread/SThread.cpp b/storm/thread/SThread.cpp index 24c979d..92f8a07 100644 --- a/storm/thread/SThread.cpp +++ b/storm/thread/SThread.cpp @@ -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); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index cb00ea0..45b88b3 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -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