Skip to content

Commit

Permalink
Manifest updates and compilation fixes for css, tf2, dods, hl2dm (#2268)
Browse files Browse the repository at this point in the history
* Initial attempt at compiling against tf2_sdk2013

* compilation fix for css

* Switch to AMTL platform arch defines

* Add CBasePlayer forward decl for dods and hl2dm as well

* Update hl2sdk-manifests

* Add dods to CI

* Actually include am-platform.h

---------

Co-authored-by: Kenzzer <[email protected]>
Co-authored-by: Nicholas Hastings <[email protected]>
  • Loading branch information
3 people authored Feb 20, 2025
1 parent 3b9c74c commit 2382453
Show file tree
Hide file tree
Showing 27 changed files with 71 additions and 84 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
runs-on: ${{ matrix.os }}
name: ${{ matrix.os_short }}-${{ matrix.compiler_cc }}
env:
SDKS: '["episode1","css","tf2","l4d2","csgo"]'
SDKS: '["episode1","css","tf2","l4d2","csgo","dods"]'
ARCH: x86,x86_64
DEPENDENCIES_FOLDER: dependencies
DEPENDENCIES_ROOT: ${{ github.workspace }}/dependencies
Expand Down
2 changes: 2 additions & 0 deletions AMBuildScript
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,8 @@ class SMConfig(object):
'-Wno-unused',
'-Wno-switch',
'-Wno-array-bounds',
'-Wno-unknown-pragmas',
'-Wno-dangling-else',
'-fvisibility=hidden',
]
if cxx.target.arch in ['x86', 'x86_64']:
Expand Down
4 changes: 2 additions & 2 deletions core/HalfLife2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -234,9 +234,9 @@ void CHalfLife2::InitLogicalEntData()
return;
}

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
g_EntList = *reinterpret_cast<void **>(addr + offset);
#elif defined PLATFORM_X64
#elif defined KE_ARCH_X64
int32_t varOffset = *reinterpret_cast<int32_t *>(addr + offset);
g_EntList = reinterpret_cast<void *>(addr + offset + sizeof(int32_t) + varOffset);
#endif
Expand Down
4 changes: 2 additions & 2 deletions core/logic/GameConfigs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ static const char *g_pParseEngine = NULL;
#define PSTATE_GAMEDEFS_ADDRESSES_ADDRESS 14
#define PSTATE_GAMEDEFS_ADDRESSES_ADDRESS_READ 15

#if defined PLATFORM_X86
#if defined KE_ARCH_X86
#define PLATFORM_ARCH_SUFFIX ""
#elif defined PLATFORM_X64
#elif defined KE_ARCH_X64
#define PLATFORM_ARCH_SUFFIX "64"
#endif

Expand Down
10 changes: 5 additions & 5 deletions core/logic/MemoryUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ void *MemoryUtils::ResolveSymbol(void *handle, const char *symbol)

#elif defined PLATFORM_LINUX

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
typedef Elf32_Ehdr ElfHeader;
typedef Elf32_Shdr ElfSHeader;
typedef Elf32_Sym ElfSymbol;
Expand Down Expand Up @@ -272,7 +272,7 @@ void *MemoryUtils::ResolveSymbol(void *handle, const char *symbol)

#elif defined PLATFORM_APPLE

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
typedef struct mach_header MachHeader;
typedef struct segment_command MachSegment;
typedef struct nlist MachSymbol;
Expand Down Expand Up @@ -451,7 +451,7 @@ const DynLibInfo *MemoryUtils::GetLibraryInfo(const void *libPtr)

#ifdef PLATFORM_WINDOWS

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
const WORD PE_FILE_MACHINE = IMAGE_FILE_MACHINE_I386;
const WORD PE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR32_MAGIC;
#else
Expand Down Expand Up @@ -501,7 +501,7 @@ const DynLibInfo *MemoryUtils::GetLibraryInfo(const void *libPtr)

#elif defined PLATFORM_LINUX

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
typedef Elf32_Ehdr ElfHeader;
typedef Elf32_Phdr ElfPHeader;
const unsigned char ELF_CLASS = ELFCLASS32;
Expand Down Expand Up @@ -586,7 +586,7 @@ const DynLibInfo *MemoryUtils::GetLibraryInfo(const void *libPtr)

#elif defined PLATFORM_APPLE

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
typedef struct mach_header MachHeader;
typedef struct segment_command MachSegment;
const uint32_t MACH_MAGIC = MH_MAGIC;
Expand Down
8 changes: 4 additions & 4 deletions core/logic/PseudoAddrManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ PseudoAddressManager::PseudoAddressManager() : m_NumEntries(0)
// lower 26 bits. The table consists of memory allocation base addresses.
void *PseudoAddressManager::FromPseudoAddress(uint32_t paddr)
{
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
uint8_t index = paddr >> PSEUDO_OFFSET_BITS;
uint32_t offset = paddr & ((1 << PSEUDO_OFFSET_BITS) - 1);

Expand All @@ -59,7 +59,7 @@ void *PseudoAddressManager::FromPseudoAddress(uint32_t paddr)

uint32_t PseudoAddressManager::ToPseudoAddress(void *addr)
{
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
uint8_t index = 0;
uint32_t offset = 0;
bool hasEntry = false;
Expand Down Expand Up @@ -108,13 +108,13 @@ void *PseudoAddressManager::GetAllocationBase(void *ptr)

#elif defined PLATFORM_APPLE

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
typedef vm_region_info_t mach_vm_region_info_t;
typedef vm_region_basic_info_data_t mach_vm_region_basic_info_data_t;
const vm_region_flavor_t MACH_VM_REGION_BASIC_INFO = VM_REGION_BASIC_INFO;
const mach_msg_type_number_t MACH_VM_REGION_BASIC_INFO_COUNT = VM_REGION_BASIC_INFO_COUNT;
#define mach_vm_region vm_region
#elif defined PLATFORM_X64
#elif defined KE_ARCH_X64
typedef vm_region_info_64_t mach_vm_region_info_t ;
typedef vm_region_basic_info_data_64_t mach_vm_region_basic_info_data_t;
const vm_region_flavor_t MACH_VM_REGION_BASIC_INFO = VM_REGION_BASIC_INFO_64;
Expand Down
6 changes: 3 additions & 3 deletions core/logic/common_logic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ IScriptManager *scripts = &g_PluginSys;
IExtensionSys *extsys = &g_Extensions;
ILogger *logger = &g_Logger;
CNativeOwner g_CoreNatives;
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
PseudoAddressManager pseudoAddr;
#endif

Expand Down Expand Up @@ -122,7 +122,7 @@ static void RegisterProfiler(IProfilingTool *tool)

static void *FromPseudoAddress(uint32_t paddr)
{
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
return pseudoAddr.FromPseudoAddress(paddr);
#else
return nullptr;
Expand All @@ -131,7 +131,7 @@ static void *FromPseudoAddress(uint32_t paddr)

static uint32_t ToPseudoAddress(void *addr)
{
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
return pseudoAddr.ToPseudoAddress(addr);
#else
return 0;
Expand Down
2 changes: 1 addition & 1 deletion core/logic/common_logic.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
#define _INCLUDE_SOURCEMOD_COMMON_LOGIC_H_

#include "../sm_globals.h"
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
#include "PseudoAddrManager.h"
#endif

Expand Down
4 changes: 2 additions & 2 deletions core/logic/smn_core.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -863,7 +863,7 @@ enum NumberType

static cell_t LoadFromAddress(IPluginContext *pContext, const cell_t *params)
{
#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
void *addr = reinterpret_cast<void*>(params[1]);
#else
void *addr = pseudoAddr.FromPseudoAddress(params[1]);
Expand Down Expand Up @@ -895,7 +895,7 @@ static cell_t LoadFromAddress(IPluginContext *pContext, const cell_t *params)

static cell_t StoreToAddress(IPluginContext *pContext, const cell_t *params)
{
#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
void *addr = reinterpret_cast<void*>(params[1]);
#else
void *addr = pseudoAddr.FromPseudoAddress(params[1]);
Expand Down
4 changes: 2 additions & 2 deletions core/logic/smn_gameconfigs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ static cell_t smn_GameConfGetAddress(IPluginContext *pCtx, const cell_t *params)
if (!gc->GetAddress(key, &val))
return 0;

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
return (cell_t)val;
#else
return pseudoAddr.ToPseudoAddress(val);
Expand Down Expand Up @@ -187,7 +187,7 @@ static cell_t smn_GameConfGetMemSig(IPluginContext *pCtx, const cell_t *params)
return 0;
}

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
return (cell_t)val;
#else
return pseudoAddr.ToPseudoAddress(val);
Expand Down
6 changes: 3 additions & 3 deletions core/smn_entities.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -724,7 +724,7 @@ static cell_t GetEntDataEnt2(IPluginContext *pContext, const cell_t *params)

static cell_t LoadEntityFromHandleAddress(IPluginContext *pContext, const cell_t *params)
{
#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
void *addr = reinterpret_cast<void*>(params[1]);
#else
void *addr = g_SourceMod.FromPseudoAddress(params[1]);
Expand Down Expand Up @@ -835,7 +835,7 @@ static cell_t SetEntDataEnt2(IPluginContext *pContext, const cell_t *params)

static cell_t StoreEntityToHandleAddress(IPluginContext *pContext, const cell_t *params)
{
#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
void *addr = reinterpret_cast<void*>(params[1]);
#else
void *addr = g_SourceMod.FromPseudoAddress(params[1]);
Expand Down Expand Up @@ -2772,7 +2772,7 @@ static cell_t GetEntityAddress(IPluginContext *pContext, const cell_t *params)
return pContext->ThrowNativeError("Entity %d (%d) is invalid", g_HL2.ReferenceToIndex(params[1]), params[1]);
}

#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
return reinterpret_cast<cell_t>(pEntity);
#else
return g_SourceMod.ToPseudoAddress(pEntity);
Expand Down
2 changes: 1 addition & 1 deletion core/sourcemod.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ bool SourceModBase::InitializeSourceMod(char *error, size_t maxlength, bool late
/* There will always be a path by this point, since it was force-set above. */
m_GotBasePath = true;

#if defined PLATFORM_X86
#if defined KE_ARCH_X86
# define SOURCEPAWN_DLL "sourcepawn.jit.x86"
#else
# define SOURCEPAWN_DLL "sourcepawn.vm"
Expand Down
12 changes: 6 additions & 6 deletions extensions/bintools/CallMaker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ ICallWrapper *CallMaker::CreateCall(void *address,
NULL, NULL, NULL, NULL);
}

#if defined PLATFORM_X64
#if defined KE_ARCH_X64
return g_CallMaker2.CreateCall(address, &(*protoInfo), retInfo, paramInfo, fnFlags);
#else
return g_CallMaker2.CreateCall(address, &(*protoInfo));
Expand Down Expand Up @@ -144,7 +144,7 @@ ICallWrapper *CallMaker::CreateVCall(unsigned int vtblIdx,
NULL, NULL, NULL, NULL);
}

#if defined PLATFORM_X64
#if defined KE_ARCH_X64
return g_CallMaker2.CreateVirtualCall(&(*protoInfo), &info, retInfo, paramInfo, fnFlags);
#else
return g_CallMaker2.CreateVirtualCall(&(*protoInfo), &info);
Expand All @@ -153,7 +153,7 @@ ICallWrapper *CallMaker::CreateVCall(unsigned int vtblIdx,

ICallWrapper *CallMaker2::CreateCall(void *address, const SourceHook::ProtoInfo *protoInfo)
{
#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
CallWrapper *pWrapper = new CallWrapper(protoInfo);
pWrapper->SetCalleeAddr(address);

Expand All @@ -169,7 +169,7 @@ ICallWrapper *CallMaker2::CreateCall(void *address, const SourceHook::ProtoInfo
ICallWrapper *CallMaker2::CreateVirtualCall(const SourceHook::ProtoInfo *protoInfo,
const SourceHook::MemFuncInfo *info)
{
#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
CallWrapper *pWrapper = new CallWrapper(protoInfo);
pWrapper->SetMemFuncInfo(info);

Expand All @@ -186,7 +186,7 @@ ICallWrapper *CallMaker2::CreateCall(void *address, const SourceHook::ProtoInfo
const PassInfo *retInfo, const PassInfo paramInfo[],
unsigned int fnFlags)
{
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
CallWrapper *pWrapper = new CallWrapper(protoInfo, retInfo, paramInfo, fnFlags);
pWrapper->SetCalleeAddr(address);

Expand All @@ -205,7 +205,7 @@ ICallWrapper *CallMaker2::CreateVirtualCall(const SourceHook::ProtoInfo *protoIn
const PassInfo paramInfo[],
unsigned int fnFlags)
{
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
CallWrapper *pWrapper = new CallWrapper(protoInfo, retInfo, paramInfo, fnFlags);
pWrapper->SetMemFuncInfo(info);

Expand Down
2 changes: 1 addition & 1 deletion extensions/cstrike/itemdef-hash.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ struct HashItemDef_Node
class CHashItemDef
{
public:
#ifdef PLATFORM_X86
#ifdef KE_ARCH_X86
unsigned char padding[36];
#else
unsigned char padding[56];
Expand Down
2 changes: 1 addition & 1 deletion extensions/dhooks/DynamicHooks/registers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ CRegisters::CRegisters(std::vector<Register_t> registers)
m_xmm7 = CreateRegister(registers, XMM7, 16, 16);

// 64-bit mode only
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
m_xmm8 = CreateRegister(registers, XMM8, 16);
m_xmm9 = CreateRegister(registers, XMM9, 16);
m_xmm10 = CreateRegister(registers, XMM10, 16);
Expand Down
2 changes: 1 addition & 1 deletion extensions/dhooks/util.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ size_t GetStackParamOffset(HookParamsStruct *paramStruct, unsigned int index)
continue;
}
#endif
#ifdef PLATFORM_X64
#ifdef KE_ARCH_X64
offset += 8;
#else
offset += paramStruct->dg->params[i].size;
Expand Down
Loading

0 comments on commit 2382453

Please sign in to comment.