diff --git a/project/makefile b/project/makefile index 5aaae86..764110e 100644 --- a/project/makefile +++ b/project/makefile @@ -6,51 +6,122 @@ # Additional exceptions apply. For full license details, see LICENSE.txt or visit: # http://yapb.jeefo.net/license # +# Based on Makefile written by David "BAILOPAN" Anderson. +# -MODNAME = yapb -SYSTEM = ../source +PROJECT = yapb +SRC_DIR = ../source +OBJECTS = $(SRC_DIR)/basecode.cpp \ + $(SRC_DIR)/manager.cpp \ + $(SRC_DIR)/chatlib.cpp \ + $(SRC_DIR)/combat.cpp \ + $(SRC_DIR)/globals.cpp \ + $(SRC_DIR)/interface.cpp \ + $(SRC_DIR)/navigate.cpp \ + $(SRC_DIR)/netmsg.cpp \ + $(SRC_DIR)/support.cpp \ + $(SRC_DIR)/waypoint.cpp \ -OBJ = ${SYSTEM}/basecode.o \ - ${SYSTEM}/botmanager.o \ - ${SYSTEM}/chatlib.o \ - ${SYSTEM}/combat.o \ - ${SYSTEM}/globals.o \ - ${SYSTEM}/interface.o \ - ${SYSTEM}/navigate.o \ - ${SYSTEM}/netmsg.o \ - ${SYSTEM}/support.o \ - ${SYSTEM}/waypoint.o \ +C_OPT_FLAGS = -O3 -DNDEBUG=1 -ffast-math -fno-exceptions -fno-rtti -funroll-loops -fomit-frame-pointer -pipe +C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3 +C_GCC4_FLAGS = -fvisibility=hidden +CPP_GCC4_FLAGS = -fvisibility-inlines-hidden +CPP = clang +CPP_OSX = clang -CCOPT = -w -O3 -m32 -s -DNDEBUG=1 -ffast-math -fno-exceptions -fno-rtti -funroll-loops -fomit-frame-pointer -pipe -fvisibility-inlines-hidden -fvisibility=hidden -CCDEBUG = -ggdb -w -DDEBUG=1 -fpermissive +LINK = +INCLUDE = -I../include -I../include/engine -CFLAGS = $(CCOPT) -I../include/engine -I../include -#CFLAGS = $(CCDEBUG) -I../include/engine -I../include - -BASEFLAGS = -Dstricmp=strcasecmp -Dstrcmpi=strcasecmp -CPPFLAGS = ${BASEFLAGS} ${CFLAGS} OS := $(shell uname -s) ifeq "$(OS)" "Darwin" - CPP=clang - SUFFIX=dylib - LINK=-m32 -dynamiclib -mmacosx-version-min=10.5 - CPPLIB=-ldl -lm -lstdc++ + CPP = $(CPP_OSX) + LIB_EXT = dylib + CFLAGS += -DOSX -D_OSX -DPOSIX + LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5 else - CPP=gcc - SUFFIX=so - LINK=-m32 -shared -static-libgcc - CPPLIB=-ldl -lm -lsupc++ + LIB_EXT = so + CFLAGS += -DLINUX -D_LINUX -DPOSIX + LINK += -shared endif -BINARY=${MODNAME}.${SUFFIX} +LINK += -m32 -lm -ldl -${MODNAME}: ${OBJ} - ${CPP} ${LINK} ${OBJ} ${CPPLIB} -o ${BINARY} +CFLAGS += -DHAVE_STDINT_H -Dstricmp=strcasecmp -Dstrcmpi=strcasecmp -fno-strict-aliasing -m32 -Wall -Werror -Wno-uninitialized -Wno-unused -Wno-switch -Wno-c++11-compat-deprecated-writable-strings +CPPFLAGS += -Wno-invalid-offsetof -fno-exceptions -fno-rtti + +BINARY = $(PROJECT).$(LIB_EXT) + +ifeq "$(DEBUG)" "true" + BIN_DIR = debug + CFLAGS += $(C_DEBUG_FLAGS) +else + BIN_DIR = release + CFLAGS += $(C_OPT_FLAGS) + LINK += -s +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 + +# Clang || GCC >= 4 +ifeq "$(shell expr $(IS_CLANG) \| $(CPP_MAJOR) \>= 4)" "1" + CFLAGS += $(C_GCC4_FLAGS) + CPPFLAGS += $(CPP_GCC4_FLAGS) +endif + +ifeq "$(IS_CLANG)" "1" + CFLAGS += -Wno-logical-op-parentheses +else + CFLAGS += -Wno-parentheses +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 + +# OS is Linux and using clang +ifeq "$(shell expr $(OS) \= Linux \& $(IS_CLANG) \= 1)" "1" + LINK += -lgcc_eh +endif + +OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o) + +$(BIN_DIR)/%.o: %.cpp + $(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $(subst $(SRC_DIR)/,,$@) -c $< + +main: + make $(PROJECT) + +$(PROJECT): $(OBJ_BIN) + $(CPP) $(INCLUDE) $(subst $(SRC_DIR)/,,$(OBJ_BIN)) $(LINK) -o $(BIN_DIR)/$(BINARY) + +debug: + mkdir -p debug + $(MAKE) main DEBUG=true + +release: + mkdir -p release + $(MAKE) main DEBUG=false + +all: release debug + +default: all clean: - -rm -f ${SYSTEM}/*.o - -rm -f ${BINARY} + rm -rf release + rm -rf debug -%.o: %.cpp - ${CPP} ${CPPFLAGS} -c $< -o $@ diff --git a/source/interface.cpp b/source/interface.cpp index c3ffb4e..508670d 100644 --- a/source/interface.cpp +++ b/source/interface.cpp @@ -3071,8 +3071,6 @@ DLL_GIVEFNPTRSTODLL GiveFnptrsToDll (enginefuncs_t *functionTable, globalvars_t { "czero", "cs.so", "cs.dylib", "mp.dll", "Counter-Strike: Condition Zero (Newer)", CSV_CZERO }, { "csv15", "cs_i386.so", "cs.dylib", "mp.dll", "CS 1.5 for Steam", CSV_OLD }, { "cs13", "cs_i386.so", "cs.dylib", "mp.dll", "Counter-Strike v1.3", CSV_OLD }, // assume cs13 = cs15 - { "retrocs", "rcs_i386.so", "cs.dylib", "rcs.dll", "Retro Counter-Strike", CSV_OLD }, - {"", "", "", "", 0}, }; // get the engine functions from the engine... @@ -3084,7 +3082,7 @@ DLL_GIVEFNPTRSTODLL GiveFnptrsToDll (enginefuncs_t *functionTable, globalvars_t ModSupport_t *knownMod = NULL; - for (int i = 0; s_supportedMods[i].name; i++) + for (int i = 0; i < ARRAYSIZE_HLSDK (s_supportedMods); i++) { ModSupport_t *mod = &s_supportedMods[i];