Skip to content

Commit

Permalink
Revert "Premakify publicsdk and build additional shared library on Li…
Browse files Browse the repository at this point in the history
…nux (#120)"

This reverts commit 486f46c.
  • Loading branch information
jushar committed Apr 1, 2017
1 parent 402e199 commit e999cca
Show file tree
Hide file tree
Showing 11 changed files with 630 additions and 100 deletions.
7 changes: 0 additions & 7 deletions .gitignore
Expand Up @@ -307,10 +307,3 @@ _Pvt_Extensions
Bin/
Build/
InstallFiles/

# publicsdk ignores
Shared/publicsdk/include/lauxlib.h
Shared/publicsdk/include/lua.h
Shared/publicsdk/include/luaconf.h
Shared/publicsdk/include/lualib.h
Shared/publicsdk/lib/
6 changes: 3 additions & 3 deletions Server/mods/deathmatch/premake5.lua
Expand Up @@ -31,7 +31,7 @@ project "Deathmatch"
}

links {
"pthread", "sqlite", "ehs", "cryptopp", "pme", "pcre", "json-c", "zip", "zlib"
"Lua_Server", "pthread", "sqlite", "ehs", "cryptopp", "pme", "pcre", "json-c", "zip", "zlib"
}

vpaths {
Expand All @@ -58,14 +58,14 @@ project "Deathmatch"
filter "system:windows"
includedirs { "../../../vendor/pthreads/include" }
buildoptions { "-Zm130" }
links { "ws2_32", "Lua_Server" }
links { "ws2_32" }

filter {"system:windows", "toolset:*120*"}
links { "Psapi.lib" }

filter "system:not windows"
buildoptions { "-Wno-narrowing" } -- We should fix the warnings at some point
links { "rt", "Lua_Server_Static" }
links { "rt" }

filter "platforms:x64"
targetdir(buildpath("server/x64"))
134 changes: 134 additions & 0 deletions Shared/publicsdk/CThread.cpp
@@ -0,0 +1,134 @@
/*********************************************************
*
* Multi Theft Auto: San Andreas - Deathmatch
*
* ml_base, External lua add-on module
*
* Copyright © 2003-2008 MTA. All Rights Reserved.
*
* Grand Theft Auto is © 2002-2003 Rockstar North
*
* THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT
* AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS
* OPEN SOURCE FILES. THESE FILES MAY BE USED AS LONG
* AS THE DEVELOPER AGREES TO THE LICENSE THAT IS
* PROVIDED WITH THIS PACKAGE.
*
*********************************************************/

#include "CThread.h"

CThread::CThread ( void )
{
m_pThreadData = NULL;
m_pArg = NULL;
#ifdef WIN32 // Win32 threads
m_hThread = NULL;
#endif
}


CThread::~CThread ( void )
{
Stop ();
}


bool CThread::Start ( CThreadData *pData )
{
if ( pData == NULL ) // pData HAS to be valid
return false;

Stop ();
Arg ( pData );

#ifdef WIN32 // Win32 threads
m_hThread = CreateThread ( NULL, 0, &CThread::EntryPoint, this, 0, NULL );
return m_hThread != NULL;
#else // POSIX threads
if ( pthread_create ( &m_hThread, NULL, CThread::EntryPoint, this ) )
{
// something bad happened
return false;
}
#endif
return true;
}


void CThread::Stop ( void )
{
if ( m_hThread )
{
// TerminateThread ( m_hThread, 0 );
if ( m_pThreadData != NULL )
m_pThreadData->bAbortThread = true;
}
}


bool CThread::TryLock ( ThreadMutex * Mutex )
{
#ifdef WIN32
if ( TryEnterCriticalSection ( Mutex ) != 0 )
return true;
#else
if ( pthread_mutex_trylock ( Mutex ) == 0 )
return true;
#endif
return false;
}


void CThread::Lock ( ThreadMutex * Mutex )
{
#ifdef WIN32 // Win32 threads
EnterCriticalSection ( Mutex );
#else // POSIX threads
pthread_mutex_lock ( Mutex );
#endif
}


void CThread::Unlock ( ThreadMutex * Mutex )
{
#ifdef WIN32 // Win32 threads
LeaveCriticalSection ( Mutex );
#else // POSIX threads
pthread_mutex_unlock ( Mutex );
#endif
}


int CThread::Run ( CThreadData* arg )
{
return Execute ( arg );
}


#ifdef WIN32 // Win32 threads
DWORD CThread::EntryPoint ( void* pThis )
{
CThread* pt = (CThread*)pThis;
return pt->Run ( pt->Arg () );
}
#else // POSIX threads
void* CThread::EntryPoint ( void* pThis )
{
CThread* pt = (CThread*)pThis;
pt->Run ( pt->Arg () );
return NULL;
}
#endif


CThreadData* CThread::Arg ( void ) const
{
return m_pThreadData;
}


void CThread::Arg ( CThreadData* pData )
{
m_pThreadData = pData;
}
75 changes: 75 additions & 0 deletions Shared/publicsdk/CThread.h
@@ -0,0 +1,75 @@
/*********************************************************
*
* Multi Theft Auto: San Andreas - Deathmatch
*
* ml_base, External lua add-on module
*
* Copyright © 2003-2008 MTA. All Rights Reserved.
*
* Grand Theft Auto is © 2002-2003 Rockstar North
*
* THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT
* AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS
* OPEN SOURCE FILES. THESE FILES MAY BE USED AS LONG
* AS THE DEVELOPER AGREES TO THE LICENSE THAT IS
* PROVIDED WITH THIS PACKAGE.
*
*********************************************************/

/** And remember.. threads on Win32 and POSIX are not similar at all. **/

#ifndef __CTHREAD_H
#define __CTHREAD_H

#ifdef WIN32 // Win32 threads
#define _WIN32_WINNT 0x400
#define WIN32_LEAN_AND_MEAN
#include <windows.h>

typedef HANDLE ThreadHandle;
typedef CRITICAL_SECTION ThreadMutex;
#else // POSIX threads
#include <stdio.h>
#include <pthread.h>

typedef pthread_t ThreadHandle;
typedef pthread_mutex_t ThreadMutex;
#endif

#include "CThreadData.h"

// Base thread class
class CThread
{
public:
CThread ( void );
virtual ~CThread ( void );

bool Start ( CThreadData *pData );
void Stop ( void );

static bool TryLock ( ThreadMutex * Mutex );
static void Lock ( ThreadMutex * Mutex );
static void Unlock ( ThreadMutex * Mutex );

protected:
int Run ( CThreadData* arg );

virtual int Execute ( CThreadData* pData ) = 0;

CThreadData* Arg ( void ) const;
void Arg ( CThreadData* pData );

#ifdef WIN32 // Win32 threads
static DWORD WINAPI EntryPoint ( void* );
#else // POSIX threads
static void* EntryPoint ( void* );
#endif

private:
void* m_pArg;
CThreadData* m_pThreadData;
ThreadHandle m_hThread;
};

#endif
42 changes: 42 additions & 0 deletions Shared/publicsdk/CThreadData.cpp
@@ -0,0 +1,42 @@
/*********************************************************
*
* Multi Theft Auto: San Andreas - Deathmatch
*
* ml_base, External lua add-on module
*
* Copyright © 2003-2008 MTA. All Rights Reserved.
*
* Grand Theft Auto is © 2002-2003 Rockstar North
*
* THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT
* AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS
* OPEN SOURCE FILES. THESE FILES MAY BE USED AS LONG
* AS THE DEVELOPER AGREES TO THE LICENSE THAT IS
* PROVIDED WITH THIS PACKAGE.
*
*********************************************************/

#include "CThreadData.h"

CThreadData::CThreadData ( void )
{
bAbortThread = false;

// Initialize the mutexes
#ifdef WIN32 // Win32 threads
InitializeCriticalSection ( &MutexPrimary );
InitializeCriticalSection ( &MutexLogical );
#else // POSIX threads
pthread_mutex_init ( &MutexPrimary, NULL );
pthread_mutex_init ( &MutexLogical, NULL );
#endif
}

CThreadData::~CThreadData ( void )
{
#ifdef WIN32
DeleteCriticalSection ( &MutexPrimary );
DeleteCriticalSection ( &MutexLogical );
#else
#endif
}
37 changes: 37 additions & 0 deletions Shared/publicsdk/CThreadData.h
@@ -0,0 +1,37 @@
/*********************************************************
*
* Multi Theft Auto: San Andreas - Deathmatch
*
* ml_base, External lua add-on module
*
* Copyright © 2003-2008 MTA. All Rights Reserved.
*
* Grand Theft Auto is © 2002-2003 Rockstar North
*
* THE FOLLOWING SOURCES ARE PART OF THE MULTI THEFT
* AUTO SOFTWARE DEVELOPMENT KIT AND ARE RELEASED AS
* OPEN SOURCE FILES. THESE FILES MAY BE USED AS LONG
* AS THE DEVELOPER AGREES TO THE LICENSE THAT IS
* PROVIDED WITH THIS PACKAGE.
*
*********************************************************/

class CThreadData;

#ifndef __CTHREADDATA_H
#define __CTHREADDATA_H

#include "CThread.h"

class CThreadData
{
public:
CThreadData ( void );
~CThreadData ( void );

bool bAbortThread;
ThreadMutex MutexPrimary; // primary mutex for suspend/resume operations
ThreadMutex MutexLogical; // logical mutex for proper CThreadData sync
};

#endif
19 changes: 19 additions & 0 deletions Shared/publicsdk/Makefile.am
@@ -0,0 +1,19 @@
noinst_LTLIBRARIES = libml_base.la

libml_base_la_SOURCES = \
CFunctions.cpp \
CThread.cpp \
CThreadData.cpp \
ml_base.cpp \
extra/CLuaArgument.cpp \
extra/CLuaArguments.cpp

#TODO:
# the windows project uses the internal LUA, why?

libml_base_la_CXXFLAGS = \
-I$(top_srcdir)/vendor/lua/src/ \
-I$(top_builddir)/vendor/lua/src/

libml_base_la_LIBADD = \
$(top_builddir)/vendor/lua/src/liblua.la
19 changes: 19 additions & 0 deletions Shared/publicsdk/ml_base.sln
@@ -0,0 +1,19 @@
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ml_base", "ml_base.vcproj", "{132A627F-058D-46F8-BCBB-63B6C8D2CC1A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{132A627F-058D-46F8-BCBB-63B6C8D2CC1A}.Debug|Win32.ActiveCfg = Debug|Win32
{132A627F-058D-46F8-BCBB-63B6C8D2CC1A}.Debug|Win32.Build.0 = Debug|Win32
{132A627F-058D-46F8-BCBB-63B6C8D2CC1A}.Release|Win32.ActiveCfg = Release|Win32
{132A627F-058D-46F8-BCBB-63B6C8D2CC1A}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

0 comments on commit e999cca

Please sign in to comment.