mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2024-12-23 01:59:43 +08:00
Add reverse-engineered code for SrcDS launcher.
This commit is contained in:
parent
ec8aa94c92
commit
86892164eb
72
dedicated_main/dedicated_main.rc
Normal file
72
dedicated_main/dedicated_main.rc
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
//Microsoft Developer Studio generated resource script.
|
||||||
|
//
|
||||||
|
#include "resource.h"
|
||||||
|
|
||||||
|
#define APSTUDIO_READONLY_SYMBOLS
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 2 resource.
|
||||||
|
//
|
||||||
|
#include "winres.h"
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// English (U.S.) resources
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||||
|
#ifdef _WIN32
|
||||||
|
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||||
|
#pragma code_page(1252)
|
||||||
|
#endif //_WIN32
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Icon
|
||||||
|
//
|
||||||
|
|
||||||
|
// Icon with lowest ID value placed first to ensure application icon
|
||||||
|
// remains consistent on all systems.
|
||||||
|
IDI_DEDICATED ICON DISCARDABLE "srcds.ico"
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// TEXTINCLUDE
|
||||||
|
//
|
||||||
|
|
||||||
|
1 TEXTINCLUDE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"resource.h\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
2 TEXTINCLUDE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"#include ""afxres.h""\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
3 TEXTINCLUDE DISCARDABLE
|
||||||
|
BEGIN
|
||||||
|
"\r\n"
|
||||||
|
"\0"
|
||||||
|
END
|
||||||
|
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
#endif // English (U.S.) resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef APSTUDIO_INVOKED
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Generated from the TEXTINCLUDE 3 resource.
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#endif // not APSTUDIO_INVOKED
|
||||||
|
|
20
dedicated_main/dedicated_main.sln
Normal file
20
dedicated_main/dedicated_main.sln
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
||||||
|
# Visual Studio 2010
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dedicated_main", "dedicated_main.vcxproj", "{E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Win32 = Debug|Win32
|
||||||
|
Release|Win32 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
134
dedicated_main/dedicated_main.vcxproj
Normal file
134
dedicated_main/dedicated_main.vcxproj
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectName>dedicated_main</ProjectName>
|
||||||
|
<ProjectGuid>{E1DA8DB8-FB4C-4B14-91A6-98BCED6B9720}</ProjectGuid>
|
||||||
|
<RootNamespace>tier1</RootNamespace>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||||
|
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||||
|
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
|
||||||
|
<CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
|
||||||
|
<CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||||
|
<CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">srcds</TargetName>
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">srcds</TargetName>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<PreBuildEvent>
|
||||||
|
<Command>
|
||||||
|
</Command>
|
||||||
|
</PreBuildEvent>
|
||||||
|
<ClCompile>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<AdditionalIncludeDirectories>..\public;..\public\tier0;..\public\tier1;..\public\interfaces;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<PreprocessorDefinitions>_HAS_ITERATOR_DEBUGGING=0;_ALLOW_RUNTIME_LIBRARY_MISMATCH;_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;_ALLOW_MSC_VER_MISMATCH;_ITERATOR_DEBUG_LEVEL=0;WIN32;_WIN32;COMPILER_MSVC;COMPILER_MSVC32;_DEBUG;DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<StringPooling>true</StringPooling>
|
||||||
|
<MinimalRebuild>true</MinimalRebuild>
|
||||||
|
<ExceptionHandling>
|
||||||
|
</ExceptionHandling>
|
||||||
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
<FloatingPointModel>Fast</FloatingPointModel>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<AssemblerOutput>
|
||||||
|
</AssemblerOutput>
|
||||||
|
<BrowseInformation>
|
||||||
|
</BrowseInformation>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
</ClCompile>
|
||||||
|
<PreLinkEvent>
|
||||||
|
<Command>
|
||||||
|
</Command>
|
||||||
|
</PreLinkEvent>
|
||||||
|
<Lib>
|
||||||
|
<AdditionalDependencies>Rpcrt4.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
</Lib>
|
||||||
|
<Xdcmake>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
</Xdcmake>
|
||||||
|
<Bscmake />
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<PreBuildEvent>
|
||||||
|
<Command>
|
||||||
|
</Command>
|
||||||
|
</PreBuildEvent>
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalIncludeDirectories>..\public;..\public\tier0;..\public\tier1;..\public\interfaces;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<PreprocessorDefinitions>_HAS_ITERATOR_DEBUGGING=0;_ALLOW_RUNTIME_LIBRARY_MISMATCH;_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;_ALLOW_MSC_VER_MISMATCH;WIN32;_WIN32;COMPILER_MSVC;COMPILER_MSVC32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<StringPooling>true</StringPooling>
|
||||||
|
<ExceptionHandling>
|
||||||
|
</ExceptionHandling>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<PrecompiledHeader>
|
||||||
|
</PrecompiledHeader>
|
||||||
|
<AssemblerOutput>
|
||||||
|
</AssemblerOutput>
|
||||||
|
<BrowseInformation>
|
||||||
|
</BrowseInformation>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FloatingPointModel>Fast</FloatingPointModel>
|
||||||
|
<InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
||||||
|
</ClCompile>
|
||||||
|
<PreLinkEvent>
|
||||||
|
<Command>
|
||||||
|
</Command>
|
||||||
|
</PreLinkEvent>
|
||||||
|
<Lib>
|
||||||
|
<AdditionalDependencies>
|
||||||
|
</AdditionalDependencies>
|
||||||
|
</Lib>
|
||||||
|
<Xdcmake>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
</Xdcmake>
|
||||||
|
<Bscmake />
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="main.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="resource.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="dedicated_main.rc" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
26
dedicated_main/dedicated_main.vcxproj.filters
Normal file
26
dedicated_main/dedicated_main.vcxproj.filters
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{aba1d919-d95c-4c3f-a495-be0375bab184}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cxx;rc;def;r;odl;idl;hpj;bat</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{0295d938-2af6-4393-9785-4b7b122313c9}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hpp;hxx;hm;inl</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="main.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="resource.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ResourceCompile Include="dedicated_main.rc" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
201
dedicated_main/main.cpp
Normal file
201
dedicated_main/main.cpp
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
//===== Copyright © 1996-2005, Valve Corporation, All rights reserved. ======//
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
//===========================================================================//
|
||||||
|
|
||||||
|
#if defined(WIN32)
|
||||||
|
#define WIN32_LEAN_AND_MEAN
|
||||||
|
#include <windows.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#else
|
||||||
|
#include <dlfcn.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Reverse engineered file
|
||||||
|
|
||||||
|
// Entry point of dedicated binary
|
||||||
|
#if defined(WIN32)
|
||||||
|
typedef int (*DedicatedMain_t)(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
|
||||||
|
#else
|
||||||
|
typedef int (*DedicatedMain_t)(int argc, char **argv);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WIN32)
|
||||||
|
#define ENGINE_BIN(x) "bin\\" #x ".dll"
|
||||||
|
#elif defined(LINUX)
|
||||||
|
#define ENGINE_BIN(x) "bin/" #x "_srv.so"
|
||||||
|
#define ENGINE_BIN_ALT(x) "bin/" #x ".so"
|
||||||
|
#define LIB_PATH "LD_LIBRARY_PATH"
|
||||||
|
#elif defined(OSX)
|
||||||
|
#define ENGINE_BIN(x) "bin/" #x ".dylib"
|
||||||
|
#define LIB_PATH "DYLD_LIBRARY_PATH"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WANTS_DEBUGSTR_HACK) && !defined(WIN32)
|
||||||
|
|
||||||
|
#if !defined(PAGE_SIZE)
|
||||||
|
#define PAGE_SIZE 4096
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define ALIGN(ar) ((long)ar & ~(PAGE_SIZE-1))
|
||||||
|
|
||||||
|
void BlockDebugString()
|
||||||
|
{
|
||||||
|
void *tier0;
|
||||||
|
void *func;
|
||||||
|
void *addr;
|
||||||
|
int ret;
|
||||||
|
const uint8_t OP_RET = 0xC3;
|
||||||
|
|
||||||
|
tier0 = dlopen(ENGINE_BIN(libtier0), RTLD_NOW);
|
||||||
|
|
||||||
|
#if defined(ENGINE_BIN_ALT)
|
||||||
|
if (!tier0)
|
||||||
|
tier0 = dlopen(ENGINE_BIN_ALT(libtier0), RTLD_NOW);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!tier0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
func = dlsym(tier0, "Plat_DebugString");
|
||||||
|
dlclose(tier0);
|
||||||
|
if (!func)
|
||||||
|
return;
|
||||||
|
|
||||||
|
addr = (void *)ALIGN(func);
|
||||||
|
ret = mprotect(addr, sysconf(_SC_PAGESIZE), PROT_READ|PROT_WRITE|PROT_EXEC);
|
||||||
|
if (ret != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
*(uint8_t *)func = OP_RET;
|
||||||
|
|
||||||
|
mprotect(addr, sysconf(_SC_PAGESIZE), PROT_READ|PROT_EXEC);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(WIN32)
|
||||||
|
static const char *GetBaseDir(const char *file)
|
||||||
|
{
|
||||||
|
static char basedir[MAX_PATH];
|
||||||
|
|
||||||
|
strcpy(basedir, file);
|
||||||
|
|
||||||
|
char *rslash = strrchr(basedir, '\\');
|
||||||
|
|
||||||
|
if (rslash)
|
||||||
|
*(rslash + 1) = '\0';
|
||||||
|
|
||||||
|
return basedir;
|
||||||
|
}
|
||||||
|
|
||||||
|
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
|
||||||
|
{
|
||||||
|
char exeName[MAX_PATH];
|
||||||
|
char pathBuf[4096];
|
||||||
|
|
||||||
|
char *path = getenv("PATH");
|
||||||
|
|
||||||
|
if (!GetModuleFileName(hInstance, exeName, sizeof(exeName)))
|
||||||
|
{
|
||||||
|
MessageBox(0, "Failed calling GetModuleFileName", "Launcher Error", MB_OK);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char *root = GetBaseDir(exeName);
|
||||||
|
|
||||||
|
_snprintf(pathBuf, sizeof(pathBuf) - 1, "PATH=%s\\bin\\;%s", root, path);
|
||||||
|
_putenv(pathBuf);
|
||||||
|
|
||||||
|
HMODULE dedicated = LoadLibrary(ENGINE_BIN(dedicated));
|
||||||
|
|
||||||
|
if (!dedicated)
|
||||||
|
{
|
||||||
|
char *error;
|
||||||
|
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||||
|
NULL,
|
||||||
|
GetLastError(),
|
||||||
|
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
|
||||||
|
(LPTSTR)&error,
|
||||||
|
0,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
char msg[1024];
|
||||||
|
_snprintf(msg, sizeof(msg) - 1, "Failed to load the launcher DLL:\n\n%s", error);
|
||||||
|
MessageBox(0, msg, "Launcher Error", MB_OK);
|
||||||
|
|
||||||
|
LocalFree(error);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DedicatedMain_t main = (DedicatedMain_t)GetProcAddress(dedicated, "DedicatedMain");
|
||||||
|
|
||||||
|
int ret = main(hInstance, hPrevInstance, lpCmdLine, nCmdShow);
|
||||||
|
|
||||||
|
FreeLibrary(dedicated);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
char cwd[PATH_MAX];
|
||||||
|
char pathBuf[4096];
|
||||||
|
|
||||||
|
char *path = getenv(LIB_PATH);
|
||||||
|
|
||||||
|
if (!getcwd(cwd, sizeof(cwd)))
|
||||||
|
{
|
||||||
|
printf("getcwd failed (%s)\n", strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(pathBuf, sizeof(pathBuf), LIB_PATH "=%s/bin:%s", cwd, path);
|
||||||
|
if (putenv(pathBuf) != 0)
|
||||||
|
{
|
||||||
|
printf("%s\n", strerror(errno));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *dedicated = dlopen(ENGINE_BIN(dedicated), RTLD_NOW);
|
||||||
|
|
||||||
|
#if defined(ENGINE_BIN_ALT)
|
||||||
|
if (!dedicated)
|
||||||
|
dedicated = dlopen(ENGINE_BIN_ALT(dedicated), RTLD_NOW);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!dedicated)
|
||||||
|
{
|
||||||
|
printf("Failed to open %s (%s)\n", ENGINE_BIN(dedicated), dlerror());
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(WANTS_DEBUGSTR_HACK)
|
||||||
|
BlockDebugString();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DedicatedMain_t main = (DedicatedMain_t)dlsym(dedicated, "DedicatedMain");
|
||||||
|
if (!main)
|
||||||
|
{
|
||||||
|
printf("Failed to find dedicated server entry point (%s)\n", dlerror());
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int ret = main(argc, argv);
|
||||||
|
|
||||||
|
dlclose(dedicated);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
#endif
|
23
dedicated_main/resource.h
Normal file
23
dedicated_main/resource.h
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
|
||||||
|
//
|
||||||
|
// Purpose:
|
||||||
|
//
|
||||||
|
// $NoKeywords: $
|
||||||
|
//
|
||||||
|
//=============================================================================//
|
||||||
|
//{{NO_DEPENDENCIES}}
|
||||||
|
// Microsoft Developer Studio generated include file.
|
||||||
|
// Used by dedicated_main.rc
|
||||||
|
//
|
||||||
|
#define IDI_DEDICATED 101
|
||||||
|
|
||||||
|
// Next default values for new objects
|
||||||
|
//
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
#define _APS_NEXT_RESOURCE_VALUE 102
|
||||||
|
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||||
|
#define _APS_NEXT_CONTROL_VALUE 1000
|
||||||
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
|
#endif
|
||||||
|
#endif
|
BIN
dedicated_main/srcds.ico
Normal file
BIN
dedicated_main/srcds.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 29 KiB |
@ -81,6 +81,7 @@ ARCH_CFLAGS = -mtune=i686 -march=pentium3 -mmmx -msse -msse2 -m32
|
|||||||
|
|
||||||
ifeq "$(OS)" "Darwin"
|
ifeq "$(OS)" "Darwin"
|
||||||
DEFINES = -D_OSX -DOSX
|
DEFINES = -D_OSX -DOSX
|
||||||
|
ARCH_CFLAGS += -mmacosx-version-min=10.7
|
||||||
else
|
else
|
||||||
DEFINES = -D_LINUX -DLINUX
|
DEFINES = -D_LINUX -DLINUX
|
||||||
endif
|
endif
|
||||||
@ -117,6 +118,7 @@ BASE_DEFINES = CC=$(CC) AR=$(AR) CPLUS=$(CPLUS) CPP_LIB=$(CPP_LIB) DEBUG=$(DEBUG
|
|||||||
# Project Makefile
|
# Project Makefile
|
||||||
MAKE_SERVER = Makefile.server
|
MAKE_SERVER = Makefile.server
|
||||||
MAKE_VCPM = Makefile.vcpm
|
MAKE_VCPM = Makefile.vcpm
|
||||||
|
MAKE_SRCDS = Makefile.srcds
|
||||||
MAKE_PLUGIN = Makefile.plugin
|
MAKE_PLUGIN = Makefile.plugin
|
||||||
MAKE_TIER1 = Makefile.tier1
|
MAKE_TIER1 = Makefile.tier1
|
||||||
MAKE_MATH = Makefile.mathlib
|
MAKE_MATH = Makefile.mathlib
|
||||||
@ -143,6 +145,9 @@ mod: check vcpm
|
|||||||
./vcpm $(MOD_PROJ)
|
./vcpm $(MOD_PROJ)
|
||||||
$(MAKE) -f $(MAKE_SERVER) $(BASE_DEFINES)
|
$(MAKE) -f $(MAKE_SERVER) $(BASE_DEFINES)
|
||||||
|
|
||||||
|
srcds:
|
||||||
|
$(MAKE) -f $(MAKE_SRCDS) $(BASE_DEFINES)
|
||||||
|
|
||||||
plugin: check
|
plugin: check
|
||||||
$(MAKE) -f $(MAKE_PLUGIN) $(BASE_DEFINES)
|
$(MAKE) -f $(MAKE_PLUGIN) $(BASE_DEFINES)
|
||||||
|
|
||||||
@ -167,6 +172,7 @@ installrelease:
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
$(MAKE) -f $(MAKE_VCPM) $(BASE_DEFINES) clean
|
$(MAKE) -f $(MAKE_VCPM) $(BASE_DEFINES) clean
|
||||||
|
$(MAKE) -f $(MAKE_SRCDS) $(BASE_DEFINES) clean
|
||||||
$(MAKE) -f $(MAKE_PLUGIN) $(BASE_DEFINES) clean
|
$(MAKE) -f $(MAKE_PLUGIN) $(BASE_DEFINES) clean
|
||||||
$(MAKE) -f $(MAKE_SERVER) $(BASE_DEFINES) clean
|
$(MAKE) -f $(MAKE_SERVER) $(BASE_DEFINES) clean
|
||||||
$(MAKE) -f $(MAKE_TIER1) $(BASE_DEFINES) clean
|
$(MAKE) -f $(MAKE_TIER1) $(BASE_DEFINES) clean
|
||||||
|
52
linux_sdk/Makefile.srcds
Normal file
52
linux_sdk/Makefile.srcds
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#
|
||||||
|
# Source Dedicated Server Main Executable
|
||||||
|
#
|
||||||
|
# November 2004, alfred@valvesoftware.com
|
||||||
|
#
|
||||||
|
|
||||||
|
SRCDS_SRC_DIR = $(SRC_DIR)/dedicated_main
|
||||||
|
SRCDS_OBJ_DIR = $(BUILD_OBJ_DIR)/srcds
|
||||||
|
|
||||||
|
INCLUDEDIRS =
|
||||||
|
LDFLAGS_SRCDS = -lm -ldl
|
||||||
|
|
||||||
|
DO_CC = $(CPLUS) $(INCLUDEDIRS) -DARCH=$(ARCH)
|
||||||
|
|
||||||
|
ifeq "$(DEBUG)" "true"
|
||||||
|
DO_CC += -DWANTS_DEBUGSTR_HACK $(DBG_DEFINES) $(DBG_CFLAGS)
|
||||||
|
else
|
||||||
|
DO_CC += -DWANTS_DEBUGSTR_HACK -DNDEBUG $(CFLAGS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
DO_CC += -o $@ -c $<
|
||||||
|
|
||||||
|
#####################################################################
|
||||||
|
|
||||||
|
OS := $(shell uname -s)
|
||||||
|
|
||||||
|
ifeq "$(OS)" "Darwin"
|
||||||
|
SRCDS_BIN = srcds_osx
|
||||||
|
LDFLAGS_SRCDS += -mmacosx-version-min=10.7
|
||||||
|
else
|
||||||
|
SRCDS_BIN = srcds_linux
|
||||||
|
endif
|
||||||
|
|
||||||
|
SRCDS_OBJS = \
|
||||||
|
$(SRCDS_OBJ_DIR)/main.o \
|
||||||
|
|
||||||
|
all: dirs srcds
|
||||||
|
|
||||||
|
dirs:
|
||||||
|
-mkdir -p $(BUILD_OBJ_DIR)
|
||||||
|
-mkdir -p $(SRCDS_OBJ_DIR)
|
||||||
|
|
||||||
|
srcds: $(SRCDS_OBJS)
|
||||||
|
$(CLINK) -m32 -o $(BUILD_DIR)/$(SRCDS_BIN) $(SRCDS_OBJS) $(LDFLAGS_SRCDS)
|
||||||
|
|
||||||
|
$(SRCDS_OBJ_DIR)/%.o: $(SRCDS_SRC_DIR)/%.cpp
|
||||||
|
$(DO_CC)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-rm -rf $(SRCDS_OBJ_DIR)
|
||||||
|
-rm -f $(SRCDS_BIN)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user