From 70fb7e2d6869dbfc5125860a63a320bbacdb1323 Mon Sep 17 00:00:00 2001 From: Scott Ehlert Date: Fri, 15 Sep 2017 02:58:57 -0500 Subject: [PATCH] Update stub and sample Makefiles to build 64-bit binaries for CSGO on macOS. --- sample_mm/Makefile | 42 ++++++++++++++++++++++++++++++++---------- stub_mm/Makefile | 44 ++++++++++++++++++++++++++++++++------------ 2 files changed, 64 insertions(+), 22 deletions(-) diff --git a/sample_mm/Makefile b/sample_mm/Makefile index 9a1b3a1..e948f4d 100644 --- a/sample_mm/Makefile +++ b/sample_mm/Makefile @@ -85,7 +85,11 @@ OS := $(shell uname -s) ifeq "$(OS)" "Darwin" LIB_EXT = dylib - HL2LIB = $(HL2SDK)/lib/mac + ifeq "$(ENGINE)" "csgo" + HL2LIB = $(HL2SDK)/lib/osx64 + else + HL2LIB = $(HL2SDK)/lib/mac + endif else LIB_EXT = so ifeq "$(ENGINE)" "original" @@ -111,14 +115,25 @@ else endif endif +ifeq "$(OS)" "Darwin" + ifeq "$(ENGINE)" "csgo" + STATIC_SUFFIX = + LIB_SUFFIX = .x64.$(LIB_EXT) + else + STATIC_SUFFIX = _i486 + endif +else + STATIC_SUFFIX = _i486 +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) +LINK += $(HL2LIB)/tier1$(STATIC_SUFFIX).a $(LIB_PREFIX)vstdlib$(LIB_SUFFIX) $(LIB_PREFIX)tier0$(LIB_SUFFIX) ifeq "$(ENGINE)" "csgo" - LINK += $(HL2LIB)/interfaces_i486.a + LINK += $(HL2LIB)/interfaces$(STATIC_SUFFIX).a endif INCLUDE += -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/mathlib -I$(HL2PUB)/vstdlib \ @@ -141,12 +156,19 @@ endif ifeq "$(OS)" "Darwin" CPP = $(CPP_OSX) LIB_EXT = dylib - CFLAGS += -DOSX -D_OSX - LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 + CFLAGS += -DOSX -D_OSX -mmacosx-version-min=10.9 + LINK += -dynamiclib -lc++ -mmacosx-version-min=10.9 + ifeq "$(ENGINE)" "csgo" + CFLAGS += -m64 -DX64BITS -DPLATFORM_64BITS + LINK += -m64 + else + CFLAGS += -m32 + LINK += -m32 + endif else LIB_EXT = so - CFLAGS += -D_LINUX - LINK += -shared + CFLAGS += -D_LINUX -m32 + LINK += -shared -m32 endif IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") @@ -162,7 +184,7 @@ endif 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 -Wno-non-virtual-dtor -Wno-overloaded-virtual \ - -Werror -fPIC -fno-exceptions -fno-rtti -msse -m32 -fno-strict-aliasing + -Werror -fPIC -fno-exceptions -fno-rtti -msse -fno-strict-aliasing # Clang || GCC >= 4 ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" @@ -171,7 +193,7 @@ 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 + CFLAGS += -Wno-delete-non-virtual-dtor -Wno-unused-private-field -Wno-deprecated-register endif # OS is Linux and not using clang @@ -198,7 +220,7 @@ check: fi sample_mm: check $(OBJ_BIN) - $(CPP) $(INCLUDE) -m32 $(OBJ_BIN) $(LINK) -ldl -lm -o $(BIN_DIR)/$(BINARY) + $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -ldl -lm -o $(BIN_DIR)/$(BINARY) default: all diff --git a/stub_mm/Makefile b/stub_mm/Makefile index c8ed932..6060a30 100644 --- a/stub_mm/Makefile +++ b/stub_mm/Makefile @@ -26,7 +26,7 @@ OBJECTS = stub_mm.cpp ############################################## OPT_FLAGS = -O3 -funroll-loops -pipe -GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden +GCC4_FLAGS = -fvisibility=hidden -fvisibility-inlines-hidden -std=c++11 DEBUG_FLAGS = -g -ggdb3 -D_DEBUG CPP = gcc CPP_OSX = clang @@ -85,7 +85,11 @@ OS := $(shell uname -s) ifeq "$(OS)" "Darwin" LIB_EXT = dylib - HL2LIB = $(HL2SDK)/lib/mac + ifeq "$(ENGINE)" "csgo" + HL2LIB = $(HL2SDK)/lib/osx64 + else + HL2LIB = $(HL2SDK)/lib/mac + endif else LIB_EXT = so ifeq "$(ENGINE)" "original" @@ -111,14 +115,24 @@ else endif endif +ifeq "$(OS)" "Darwin" + ifeq "$(ENGINE)" "csgo" + STATIC_SUFFIX = + else + STATIC_SUFFIX = _i486 + endif +else + STATIC_SUFFIX = _i486 +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) +LINK += $(HL2LIB)/tier1$(STATIC_SUFFIX).a $(LIB_PREFIX)vstdlib$(LIB_SUFFIX) $(LIB_PREFIX)tier0$(LIB_SUFFIX) ifeq "$(ENGINE)" "csgo" - LINK += $(HL2LIB)/interfaces_i486.a + LINK += $(HL2LIB)/interfaces$(STATIC_SUFFIX).a endif INCLUDE += -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/mathlib -I$(HL2PUB)/vstdlib \ @@ -138,16 +152,22 @@ else CFLAGS += $(OPT_FLAGS) endif - ifeq "$(OS)" "Darwin" CPP = $(CPP_OSX) LIB_EXT = dylib - CFLAGS += -DOSX -D_OSX - LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 + CFLAGS += -DOSX -D_OSX -mmacosx-version-min=10.9 + LINK += -dynamiclib -lc++ -mmacosx-version-min=10.9 + ifeq "$(ENGINE)" "csgo" + CFLAGS += -m64 -DX64BITS -DPLATFORM_64BITS + LINK += -m64 + else + CFLAGS += -m32 + LINK += -m32 + endif else LIB_EXT = so - CFLAGS += -D_LINUX - LINK += -shared + CFLAGS += -D_LINUX -m32 + LINK += -shared -m32 endif IS_CLANG := $(shell $(CPP) --version | head -1 | grep clang > /dev/null && echo "1" || echo "0") @@ -163,7 +183,7 @@ endif 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 -Wno-non-virtual-dtor -Wno-overloaded-virtual \ - -Werror -fPIC -fno-exceptions -fno-rtti -msse -m32 -fno-strict-aliasing + -Werror -fPIC -fno-exceptions -fno-rtti -msse -fno-strict-aliasing # Clang || GCC >= 4 ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" @@ -172,7 +192,7 @@ 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 + CFLAGS += -Wno-delete-non-virtual-dtor -Wno-unused-private-field -Wno-deprecated-register endif # OS is Linux and not using clang @@ -199,7 +219,7 @@ check: fi stub_mm: check $(OBJ_BIN) - $(CPP) $(INCLUDE) -m32 $(OBJ_BIN) $(LINK) -ldl -lm -o $(BIN_DIR)/$(BINARY) + $(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -ldl -lm -o $(BIN_DIR)/$(BINARY) default: all