From a0604a5670ccc4c0c116f85a0cbdda868f67c07f Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 20:37:34 -0500 Subject: [PATCH 01/13] Remove older CI runners. --- .github/workflows/ci.yml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 35a315f..e60444e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,13 +11,8 @@ jobs: build: strategy: matrix: - os: [ubuntu-20.04, windows-2019, ubuntu-latest, windows-latest] + os: [ubuntu-latest, windows-latest] include: - - os: ubuntu-20.04 - cc: clang-10 - cxx: clang++-10 - - os: windows-2019 - cc: msvc - os: ubuntu-latest cc: clang cxx: clang++ From a227a9c5342c23ea6d30e7e0cb84c32c75f1d79c Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 20:37:52 -0500 Subject: [PATCH 02/13] Bump up to latest MM:S and SM stable versions. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e60444e..67b7b48 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,8 +26,8 @@ jobs: env: PROJECT: "collisionhook" SDKS: "css hl2dm dods tf2 l4d l4d2" - MMSOURCE_VERSION: "1.11" - SOURCEMOD_VERSION: "1.11" + MMSOURCE_VERSION: "1.12" + SOURCEMOD_VERSION: "1.12" CACHE_PATH: ${{ github.workspace }}/cache steps: - name: Concatenate SDK Names From 061d67337ac4571960a077dbfb64f952dc435a80 Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 20:38:23 -0500 Subject: [PATCH 03/13] Clean up artifacts condition. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 67b7b48..83588eb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -139,7 +139,7 @@ jobs: - uses: actions/upload-artifact@v4 name: Upload artifacts - if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && (startsWith(matrix.os, 'windows-latest') || startsWith(matrix.os, 'ubuntu-latest')) + if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') with: name: "${{ env.ARTIFACT_NAME }}" path: "extension/build/package/" From 65a56c601f7528a06e436527e56b68b267de12e2 Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 21:19:58 -0500 Subject: [PATCH 04/13] Nevermind, not ready to tackle safetyhook. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 83588eb..d380323 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,8 +26,8 @@ jobs: env: PROJECT: "collisionhook" SDKS: "css hl2dm dods tf2 l4d l4d2" - MMSOURCE_VERSION: "1.12" - SOURCEMOD_VERSION: "1.12" + MMSOURCE_VERSION: "1.11" + SOURCEMOD_VERSION: "1.11" CACHE_PATH: ${{ github.workspace }}/cache steps: - name: Concatenate SDK Names From c07e0835eabbf244d96bb12ccc843788d5377782 Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 21:20:13 -0500 Subject: [PATCH 05/13] Fix path for hl2sdk libs on windows. --- AMBuildScript | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/AMBuildScript b/AMBuildScript index 33501c7..a919dff 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -574,10 +574,12 @@ class ExtensionConfig(object): libs.append("interfaces") for lib in libs: if compiler.target.arch == "x86": - lib_path = os.path.join(sdk.path, "lib", "public", lib) + ".lib" + lib_path = ( + os.path.join(sdk.path, "lib", "public", "x86", lib) + ".lib" + ) elif compiler.target.arch == "x86_64": lib_path = ( - os.path.join(sdk.path, "lib", "public", "win64", lib) + ".lib" + os.path.join(sdk.path, "lib", "public", "x64", lib) + ".lib" ) compiler.linkflags.append(lib_path) From 8cb40450eaec25a3aa0f865ae9d448df8df11c1b Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 21:20:20 -0500 Subject: [PATCH 06/13] Remove unused makefile. --- src/Makefile | 224 --------------------------------------------------- 1 file changed, 224 deletions(-) delete mode 100644 src/Makefile diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index 039389e..0000000 --- a/src/Makefile +++ /dev/null @@ -1,224 +0,0 @@ -# (C)2004-2010 SourceMod Development Team -# Makefile written by David "BAILOPAN" Anderson - -SMSDK = ../sourcemod-1.4 -HL2SDK_ORIG = ../hl2sdks/hl2sdk -HL2SDK_OB = ../hl2sdks/hl2sdk-ob -HL2SDK_OB_VALVE = ../hl2sdks/hl2sdk-ob-valve -HL2SDK_CSS = ../hl2sdks/hl2sdk-css -HL2SDK_L4D = .../hl2sdks/hl2sdk-l4d -HL2SDK_L4D2 = ../hl2sdks/hl2sdk-l4d2 -HL2SDK_CSGO = ../hl2sdks/hl2sdk-csgo -MMSOURCE19 = ../mmsource-1.9 - -##################################### -### EDIT BELOW FOR OTHER PROJECTS ### -##################################### - -PROJECT = collisionhook.ext -OBJECTS = extension.cpp sdk/smsdk_ext.cpp CDetour/detours.cpp asm/asm.c - -############################################## -### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ### -############################################## - -C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -pipe -fno-strict-aliasing -C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 -C_GCC4_FLAGS = -fvisibility=hidden -CPP_GCC4_FLAGS = -fvisibility-inlines-hidden -ifneq "$(CROSSTOOL)" "" - CPP = /opt/crosstool/gcc-3.4.1-glibc-2.3.2/i686-unknown-linux-gnu/bin/i686-unknown-linux-gnu-gcc -else - CPP = gcc -endif -CPP_OSX = clang - -########################## -### SDK CONFIGURATIONS ### -########################## - -override ENGSET = false - -# Check for valid list of engines -ifneq (,$(filter original orangebox css orangeboxvalve left4dead left4dead2 csgo,$(ENGINE))) - override ENGSET = true -endif - -ifeq "$(ENGINE)" "original" - HL2SDK = $(HL2SDK_ORIG) - CFLAGS += -DSOURCE_ENGINE=1 -endif -ifeq "$(ENGINE)" "orangebox" - HL2SDK = $(HL2SDK_OB) - CFLAGS += -DSOURCE_ENGINE=3 -endif -ifeq "$(ENGINE)" "css" - HL2SDK = $(HL2SDK_CSS) - CFLAGS += -DSOURCE_ENGINE=6 -endif -ifeq "$(ENGINE)" "orangeboxvalve" - HL2SDK = $(HL2SDK_OB_VALVE) - CFLAGS += -DSOURCE_ENGINE=7 -endif -ifeq "$(ENGINE)" "left4dead" - HL2SDK = $(HL2SDK_L4D) - CFLAGS += -DSOURCE_ENGINE=8 -endif -ifeq "$(ENGINE)" "left4dead2" - HL2SDK = $(HL2SDK_L4D2) - CFLAGS += -DSOURCE_ENGINE=9 -endif -ifeq "$(ENGINE)" "csgo" - HL2SDK = $(HL2SDK_CSGO) - CFLAGS += -DSOURCE_ENGINE=12 -endif - -HL2PUB = $(HL2SDK)/public - -ifeq "$(ENGINE)" "original" - INCLUDE += -I$(HL2SDK)/public/dlls - METAMOD = $(MMSOURCE19)/core-legacy -else - INCLUDE += -I$(HL2SDK)/public/game/server - METAMOD = $(MMSOURCE19)/core -endif - -OS := $(shell uname -s) - -ifeq "$(OS)" "Darwin" - LIB_EXT = dylib - HL2LIB = $(HL2SDK)/lib/mac -else - LIB_EXT = so - ifeq "$(ENGINE)" "original" - HL2LIB = $(HL2SDK)/linux_sdk - else - HL2LIB = $(HL2SDK)/lib/linux - endif -endif - -# if ENGINE is original or OB -ifneq (,$(filter original orangebox,$(ENGINE))) - LIB_SUFFIX = _i486.$(LIB_EXT) -else ifneq (,$(filter orangeboxvalve css,$(ENGINE))) - LIB_PREFIX = lib - ifneq "$(OS)" "Darwin" - LIB_SUFFIX = _srv.$(LIB_EXT) - else - LIB_SUFFIX = .$(LIB_EXT) - endif -else - LIB_PREFIX = lib - LIB_SUFFIX = .$(LIB_EXT) -endif - -CFLAGS += -DSE_EPISODEONE=1 -DSE_DARKMESSIAH=2 -DSE_ORANGEBOX=3 -DSE_BLOODYGOODTIME=4 -DSE_EYE=5 \ - -DSE_CSS=6 -DSE_ORANGEBOXVALVE=7 -DSE_LEFT4DEAD=8 -DSE_LEFT4DEAD2=9 -DSE_ALIENSWARM=10 - -DSE_PORTAL2=11 -DSE_CSGO=12 - -LINK = $(HL2LIB)/tier1_i486.a $(LIB_PREFIX)vstdlib$(LIB_SUFFIX) $(LIB_PREFIX)tier0$(LIB_SUFFIX) -ifeq "$(ENGINE)" "csgo" - LINK += $(HL2LIB)/interfaces_i486.a -endif -LINK += -m32 -ldl -lm - -INCLUDE += -I. -I.. -Isdk -ICDetour -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \ - -I$(METAMOD) -I$(METAMOD)/sourcehook -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn - -CFLAGS += -DPOSIX -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \ - -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -DCOMPILER_GCC -Wall -Werror \ - -Wno-overloaded-virtual -Wno-switch -Wno-unused -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32 -CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti - -################################################ -### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ### -################################################ - -BINARY = $(PROJECT).$(LIB_EXT) - -ifeq "$(DEBUG)" "true" - BIN_DIR = Debug.$(ENGINE) - CFLAGS += $(C_DEBUG_FLAGS) -else - BIN_DIR = Release.$(ENGINE) - CFLAGS += $(C_OPT_FLAGS) -endif - -ifeq "$(OS)" "Darwin" - CPP = $(CPP_OSX) - LIB_EXT = dylib - CFLAGS += -DOSX -D_OSX - LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 -else - LIB_EXT = so - CFLAGS += -D_LINUX - LINK += -shared -endif - -IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") - -ifeq "$(IS_CLANG)" "1" - CPP_MAJOR := $(shell $(CPP) --version | grep clang | sed "s/.*version \([0-9]\)*\.[0-9]*.*/\1/") - CPP_MINOR := $(shell $(CPP) --version | grep clang | sed "s/.*version [0-9]*\.\([0-9]\)*.*/\1/") -else - CPP_MAJOR := $(shell $(CPP) -dumpversion >&1 | cut -b1) - CPP_MINOR := $(shell $(CPP) -dumpversion >&1 | cut -b3) -endif - -# If not clang -ifeq "$(IS_CLANG)" "0" - CFLAGS += -mfpmath=sse -endif - -# Clang || GCC >= 4 -ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" - CFLAGS += $(C_GCC4_FLAGS) - CPPFLAGS += $(CPP_GCC4_FLAGS) -endif - -# Clang >= 3 || GCC >= 4.7 -ifeq "$(shell expr $(IS_CLANG) \& $(CPP_MAJOR) \>= 3 \| $(CPP_MAJOR) \>= 4 \& $(CPP_MINOR) \>= 7)" "1" - CFLAGS += -Wno-delete-non-virtual-dtor -endif - -# OS is Linux and not using clang -ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 0)" "1" - LINK += -static-libgcc -endif - -OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) - -# This will break if we include other Makefiles, but is fine for now. It allows -# us to make a copy of this file that uses altered paths (ie. Makefile.mine) -# or other changes without mucking up the original. -MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) - -$(BIN_DIR)/%.o: %.cpp - $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $< - -all: check - mkdir -p $(BIN_DIR) - mkdir -p $(BIN_DIR)/sdk - mkdir -p $(BIN_DIR)/CDetour - cp -f $(HL2LIB)/$(LIB_PREFIX)vstdlib$(LIB_SUFFIX) $(LIB_PREFIX)vstdlib$(LIB_SUFFIX) - cp -f $(HL2LIB)/$(LIB_PREFIX)tier0$(LIB_SUFFIX) $(LIB_PREFIX)tier0$(LIB_SUFFIX) - $(MAKE) -f $(MAKEFILE_NAME) mms_ext - -check: - if [ "$(ENGSET)" = "false" ]; then \ - echo "You must supply one of the following values for ENGINE:"; \ - echo "csgo, left4dead2, left4dead, orangeboxvalve, css, orangebox, or original"; \ - exit 1; \ - fi - -mms_ext: check $(OBJ_BIN) - $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY) - -debug: - $(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true - -default: all - -clean: check - rm -rf $(BIN_DIR)/*.o - rm -rf $(BIN_DIR)/$(BINARY) From 7b71462be2208e883bcc70877ad2523aef518198 Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 21:28:58 -0500 Subject: [PATCH 07/13] l4d/l4d2 builds should not use x84/x86 lib paths. --- AMBuildScript | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/AMBuildScript b/AMBuildScript index a919dff..498f4f6 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -573,14 +573,18 @@ class ExtensionConfig(object): if sdk.name in ["swarm", "blade", "insurgency", "doi", "csgo"]: libs.append("interfaces") for lib in libs: - if compiler.target.arch == "x86": - lib_path = ( - os.path.join(sdk.path, "lib", "public", "x86", lib) + ".lib" - ) - elif compiler.target.arch == "x86_64": - lib_path = ( - os.path.join(sdk.path, "lib", "public", "x64", lib) + ".lib" - ) + if sdk.name in ["l4d", "l4d2"]: + # l4d and l4d2 engines don't have 64-bit libs + lib_path = os.path.join(sdk.path, "lib", "public", lib) + ".lib" + else: + if compiler.target.arch == "x86": + lib_path = ( + os.path.join(sdk.path, "lib", "public", "x86", lib) + ".lib" + ) + elif compiler.target.arch == "x86_64": + lib_path = ( + os.path.join(sdk.path, "lib", "public", "x64", lib) + ".lib" + ) compiler.linkflags.append(lib_path) for library in dynamic_libs: From 94f7a4306569819c0296656d6ba3738162ff20ee Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 21:29:15 -0500 Subject: [PATCH 08/13] Fix linux x64 lib path. --- AMBuildScript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AMBuildScript b/AMBuildScript index 498f4f6..7f58aa7 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -515,7 +515,7 @@ class ExtensionConfig(object): elif sdk.name in ["sdk2013", "bms"]: lib_folder = os.path.join(sdk.path, "lib", "public", "linux32") elif compiler.target.arch == "x86_64": - lib_folder = os.path.join(sdk.path, "lib", "linux64") + lib_folder = os.path.join(sdk.path, "lib", "public", "linux64") else: lib_folder = os.path.join(sdk.path, "lib", "linux") elif compiler.target.platform == "mac": From 21618fc93330bd0d49e9d9c716f60cf901ebd4aa Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 21:44:56 -0500 Subject: [PATCH 09/13] Correct linux tf2 32bit lib path. --- AMBuildScript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AMBuildScript b/AMBuildScript index 7f58aa7..11da9e0 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -512,7 +512,7 @@ class ExtensionConfig(object): if compiler.target.platform == "linux": if sdk.name == "episode1": lib_folder = os.path.join(sdk.path, "linux_sdk") - elif sdk.name in ["sdk2013", "bms"]: + elif sdk.name in ["tf2", "sdk2013", "bms"]: lib_folder = os.path.join(sdk.path, "lib", "public", "linux32") elif compiler.target.arch == "x86_64": lib_folder = os.path.join(sdk.path, "lib", "public", "linux64") From 88d154eec9cef3bb563c31cd24566d343071a122 Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 21:53:42 -0500 Subject: [PATCH 10/13] Hopefully fully fix tf2 lib paths. --- AMBuildScript | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/AMBuildScript b/AMBuildScript index 11da9e0..3ea1649 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -512,7 +512,9 @@ class ExtensionConfig(object): if compiler.target.platform == "linux": if sdk.name == "episode1": lib_folder = os.path.join(sdk.path, "linux_sdk") - elif sdk.name in ["tf2", "sdk2013", "bms"]: + elif ( + sdk.name in ["tf2", "sdk2013", "bms"] and compiler.target.arch == "x86" + ): lib_folder = os.path.join(sdk.path, "lib", "public", "linux32") elif compiler.target.arch == "x86_64": lib_folder = os.path.join(sdk.path, "lib", "public", "linux64") From d7164c8b35d29ddcaadebf66b330fd3b71072839 Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 21:58:07 -0500 Subject: [PATCH 11/13] hl2sdk differences will be the death of me. --- AMBuildScript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AMBuildScript b/AMBuildScript index 3ea1649..5de5c97 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -515,7 +515,7 @@ class ExtensionConfig(object): elif ( sdk.name in ["tf2", "sdk2013", "bms"] and compiler.target.arch == "x86" ): - lib_folder = os.path.join(sdk.path, "lib", "public", "linux32") + lib_folder = os.path.join(sdk.path, "lib", "public", "linux") elif compiler.target.arch == "x86_64": lib_folder = os.path.join(sdk.path, "lib", "public", "linux64") else: From 48f70c50a71eed6385373b8f1698511ad96f7537 Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 22:03:29 -0500 Subject: [PATCH 12/13] Fix dods, css, and hl2dm builds. --- AMBuildScript | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AMBuildScript b/AMBuildScript index 5de5c97..de3fbde 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -513,7 +513,8 @@ class ExtensionConfig(object): if sdk.name == "episode1": lib_folder = os.path.join(sdk.path, "linux_sdk") elif ( - sdk.name in ["tf2", "sdk2013", "bms"] and compiler.target.arch == "x86" + sdk.name in ["tf2", "dods", "css", "hl2dm", "sdk2013", "bms"] + and compiler.target.arch == "x86" ): lib_folder = os.path.join(sdk.path, "lib", "public", "linux") elif compiler.target.arch == "x86_64": From fb958033fd7d7f44be0444264901912ea9bf5c21 Mon Sep 17 00:00:00 2001 From: Ryan Stecker Date: Wed, 22 Oct 2025 22:14:30 -0500 Subject: [PATCH 13/13] Add some missing linux defines. --- AMBuildScript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AMBuildScript b/AMBuildScript index de3fbde..a5554a8 100644 --- a/AMBuildScript +++ b/AMBuildScript @@ -392,7 +392,7 @@ class ExtensionConfig(object): cxx.cflags += ["/Oy-"] def configure_linux(self, cxx): - cxx.defines += ["_LINUX", "POSIX"] + cxx.defines += ["LINUX", "_LINUX", "POSIX", "_FILE_OFFSET_BITS=64"] cxx.linkflags += ["-Wl,--exclude-libs,ALL", "-lm"] if cxx.vendor == "gcc": cxx.linkflags += ["-static-libgcc"]