updated sdk

added linux support

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40360
This commit is contained in:
David Anderson 2007-01-25 20:34:27 +00:00
parent 7c76226230
commit 4a0712545e
5 changed files with 128 additions and 1 deletions

View File

@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#define GEOIPDATADIR ""
#include "GeoIP.h" #include "GeoIP.h"
#ifndef _WIN32 #ifndef _WIN32

91
extensions/geoip/Makefile Normal file
View File

@ -0,0 +1,91 @@
#(C)2004-2006 SourceMM Development Team
# Makefile written by David "BAILOPAN" Anderson
SMSDK = ../..
SRCDS = ~/srcds
SOURCEMM = ../../../../sourcemm
#####################################
### EDIT BELOW FOR OTHER PROJECTS ###
#####################################
PROJECT = geoip
#Uncomment for SourceMM-enabled extensions
#LINK_HL2 = $(HL2LIB)/tier1_i486.a vstdlib_i486.so tier0_i486.so
OBJECTS = extension.cpp smsdk_ext.cpp GeoIP.c
##############################################
### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
##############################################
C_OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
C_DEBUG_FLAGS = -g -ggdb3
CPP_GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden
CPP = gcc-4.1
HL2PUB = $(HL2SDK)/public
HL2LIB = $(HL2SDK)/linux_sdk
HL2SDK = $(SOURCEMM)/hl2sdk
SMM_TRUNK = $(SOURCEMM)/trunk
LINK = $(LINK_HL2) -static-libgcc
INCLUDE = -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
-I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(SMM_TRUNK) -I$(SMM_TRUNK)/sourcehook -I$(SMM_TRUNK)/sourcemm \
-I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions \
CFLAGS = -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -fPIC -msse -DSOURCEMOD_BUILD
CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
################################################
### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
################################################
ifeq "$(DEBUG)" "true"
BIN_DIR = Debug
CFLAGS = $(C_DEBUG_FLAGS)
else
BIN_DIR = Release
CFLAGS = $(C_OPT_FLAGS)
endif
GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
ifeq "$(GCC_VERSION)" "4"
CPPFLAGS += $(CPP_GCC4_FLAGS)
endif
BINARY = $(PROJECT).ext.so
OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
OBJ_LINUX := $(OBJECTS:%.c=$(BIN_DIR)/%.o)
$(BIN_DIR)/%.o: %.cpp
$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
$(BIN_DIR)/%.o: %.c
$(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $<
all:
mkdir -p $(BIN_DIR)
ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
$(MAKE) extension
rm -rf $(BINARY)
extension: $(OBJ_LINUX)
$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) $(OBJ_LINUX) $(LINK) -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
debug:
$(MAKE) all DEBUG=true
default: all
clean:
rm -rf Release/*.o
rm -rf Release/$(BINARY)
rm -rf Debug/*.o
rm -rf Debug/$(BINARY)

View File

@ -93,4 +93,5 @@ const sp_nativeinfo_t geoip_natives[] =
{"GeoipCode3", sm_Geoip_Code3}, {"GeoipCode3", sm_Geoip_Code3},
{"GeoipCountry", sm_Geoip_Country}, {"GeoipCountry", sm_Geoip_Country},
{NULL, NULL}, {NULL, NULL},
}; };

View File

@ -1,10 +1,12 @@
#include <stdio.h> #include <stdio.h>
#include <malloc.h>
#include "smsdk_ext.h" #include "smsdk_ext.h"
IShareSys *g_pShareSys = NULL; IShareSys *g_pShareSys = NULL;
IExtension *myself = NULL; IExtension *myself = NULL;
IHandleSys *g_pHandleSys = NULL; IHandleSys *g_pHandleSys = NULL;
ISourceMod *g_pSM = NULL; ISourceMod *g_pSM = NULL;
IForwardManager *g_pForwards = NULL;
PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI() PLATFORM_EXTERN_C IExtensionInterface *GetSMExtAPI()
{ {
@ -40,6 +42,7 @@ bool SDKExtension::OnExtensionLoad(IExtension *me, IShareSys *sys, char *error,
SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys); SM_GET_IFACE(HANDLESYSTEM, g_pHandleSys);
SM_GET_IFACE(SOURCEMOD, g_pSM); SM_GET_IFACE(SOURCEMOD, g_pSM);
SM_GET_IFACE(FORWARDMANAGER, g_pForwards);
if (SDK_OnLoad(error, err_max, late)) if (SDK_OnLoad(error, err_max, late))
{ {
@ -277,3 +280,31 @@ bool SDKExtension::SDK_OnMetamodPauseChange(bool paused, char *error, size_t err
} }
#endif #endif
/* Overload a few things to prevent libstdc++ linking */
#if defined __linux__
extern "C" void __cxa_pure_virtual(void)
{
}
void *operator new(size_t size)
{
return malloc(size);
}
void *operator new[](size_t size)
{
return malloc(size);
}
void operator delete(void *ptr)
{
free(ptr);
}
void operator delete[](void * ptr)
{
free(ptr);
}
#endif

View File

@ -7,6 +7,7 @@
#include <sp_vm_api.h> #include <sp_vm_api.h>
#include <sm_platform.h> #include <sm_platform.h>
#include <ISourceMod.h> #include <ISourceMod.h>
#include <IForwardSys.h>
#if defined SMEXT_CONF_METAMOD #if defined SMEXT_CONF_METAMOD
#include <ISmmPlugin.h> #include <ISmmPlugin.h>
@ -123,6 +124,7 @@ extern IShareSys *g_pShareSys;
extern IExtension *myself; extern IExtension *myself;
extern IHandleSys *g_pHandleSys; extern IHandleSys *g_pHandleSys;
extern ISourceMod *g_pSM; extern ISourceMod *g_pSM;
extern IForwardManager *g_pForwards;
#if defined SMEXT_CONF_METAMOD #if defined SMEXT_CONF_METAMOD
PLUGIN_GLOBALVARS(); PLUGIN_GLOBALVARS();