extensions/cstrike/Makefile
author Nicholas Hastings <skamonkey@gmail.com>
Wed Dec 19 07:58:21 2012 -0500 (2012-12-19)
changeset 3716 cd067c7dec80
parent 3615 24c0dcaf2b4a
permissions -rw-r--r--
Updated TF_WEAPON_* and TF_CUSTOM_* defines.
ds@1977
     1
# (C)2004-2008 SourceMod Development Team
dvander@1571
     2
# Makefile written by David "BAILOPAN" Anderson
dvander@1571
     3
ds@1977
     4
SMSDK = ../..
dvander@1878
     5
HL2SDK_ORIG = ../../../hl2sdk
dvander@1878
     6
HL2SDK_OB = ../../../hl2sdk-ob
skamonkey@3615
     7
HL2SDK_CSS = ../../../hl2sdk-css
pred@2771
     8
HL2SDK_OB_VALVE = ../../../hl2sdk-ob-valve
ds@2400
     9
HL2SDK_L4D = ../../../hl2sdk-l4d
skamonkey@3045
    10
HL2SDK_L4D2 = ../../../hl2sdk-l4d2
skamonkey@3615
    11
HL2SDK_CSGO = ../../../hl2sdk-csgo
skamonkey@3615
    12
MMSOURCE19 = ../../../mmsource-1.9
dvander@1571
    13
dvander@1571
    14
#####################################
dvander@1571
    15
### EDIT BELOW FOR OTHER PROJECTS ###
dvander@1571
    16
#####################################
dvander@1571
    17
dvander@1571
    18
PROJECT = game.cstrike
dvander@1571
    19
ds@1977
    20
#Uncomment for Metamod: Source enabled extension
ds@1977
    21
USEMETA = true
ds@1977
    22
rgr_02@3313
    23
OBJECTS = sdk/smsdk_ext.cpp extension.cpp natives.cpp RegNatives.cpp timeleft.cpp forwards.cpp CDetour/detours.cpp asm/asm.c
dvander@1571
    24
dvander@1571
    25
##############################################
dvander@1571
    26
### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
dvander@1571
    27
##############################################
dvander@1571
    28
ds@2047
    29
C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -pipe -fno-strict-aliasing
ds@1977
    30
C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3
ds@1977
    31
C_GCC4_FLAGS = -fvisibility=hidden
ds@1977
    32
CPP_GCC4_FLAGS = -fvisibility-inlines-hidden
dvander@2471
    33
CPP = gcc
dvander@1571
    34
ds@1977
    35
override ENGSET = false
skamonkey@3045
    36
skamonkey@3045
    37
# Check for valid list of engines
skamonkey@3615
    38
ifneq (,$(filter original orangebox css orangeboxvalve left4dead left4dead2,$(ENGINE)))
skamonkey@3045
    39
	override ENGSET = true
skamonkey@3045
    40
endif
skamonkey@3045
    41
dvander@1878
    42
ifeq "$(ENGINE)" "original"
dvander@1878
    43
	HL2SDK = $(HL2SDK_ORIG)
ds@2588
    44
	CFLAGS += -DSOURCE_ENGINE=1
dvander@2782
    45
	GAMEFIX = 1.ep1
dvander@1878
    46
endif
dvander@1878
    47
ifeq "$(ENGINE)" "orangebox"
dvander@1878
    48
	HL2SDK = $(HL2SDK_OB)
ds@2400
    49
	CFLAGS += -DSOURCE_ENGINE=3
dvander@2782
    50
	GAMEFIX = 2.ep2
dvander@1878
    51
endif
skamonkey@3615
    52
ifeq "$(ENGINE)" "css"
skamonkey@3615
    53
	HL2SDK = $(HL2SDK_CSS)
skamonkey@3615
    54
	CFLAGS += -DSOURCE_ENGINE=4
skamonkey@3615
    55
	GAMEFIX = 2.css
skamonkey@3615
    56
endif
pred@2771
    57
ifeq "$(ENGINE)" "orangeboxvalve"
pred@2771
    58
	HL2SDK = $(HL2SDK_OB_VALVE)
skamonkey@3615
    59
	CFLAGS += -DSOURCE_ENGINE=5
dvander@2782
    60
	GAMEFIX = 2.ep2v
pred@2771
    61
endif
ds@2400
    62
ifeq "$(ENGINE)" "left4dead"
ds@2400
    63
	HL2SDK = $(HL2SDK_L4D)
skamonkey@3615
    64
	CFLAGS += -DSOURCE_ENGINE=6
skamonkey@3045
    65
	GAMEFIX = 2.l4d
skamonkey@3045
    66
endif
skamonkey@3045
    67
ifeq "$(ENGINE)" "left4dead2"
skamonkey@3045
    68
	HL2SDK = $(HL2SDK_L4D2)
skamonkey@3615
    69
	CFLAGS += -DSOURCE_ENGINE=7
skamonkey@3045
    70
	GAMEFIX = 2.l4d2
skamonkey@3045
    71
endif
skamonkey@3615
    72
ifeq "$(ENGINE)" "csgo"
skamonkey@3615
    73
	HL2SDK = $(HL2SDK_CSGO)
skamonkey@3615
    74
	CFLAGS += -DSOURCE_ENGINE=8
skamonkey@3615
    75
	GAMEFIX = 2.csgo
skamonkey@3615
    76
endif
skamonkey@3045
    77
skamonkey@3045
    78
HL2PUB = $(HL2SDK)/public
skamonkey@3045
    79
skamonkey@3045
    80
ifeq "$(ENGINE)" "original"
skamonkey@3045
    81
	INCLUDE += -I$(HL2SDK)/public/dlls
skamonkey@3615
    82
	METAMOD = $(MMSOURCE19)/core-legacy
skamonkey@3045
    83
else
skamonkey@3045
    84
	INCLUDE += -I$(HL2SDK)/public/game/server
skamonkey@3615
    85
	METAMOD = $(MMSOURCE19)/core
skamonkey@3045
    86
endif
skamonkey@3045
    87
skamonkey@3045
    88
OS := $(shell uname -s)
skamonkey@3045
    89
skamonkey@3045
    90
ifeq "$(OS)" "Darwin"
skamonkey@3045
    91
	LIB_EXT = dylib
skamonkey@3045
    92
	HL2LIB = $(HL2SDK)/lib/mac
skamonkey@3045
    93
else
skamonkey@3045
    94
	LIB_EXT = so
skamonkey@3045
    95
	ifeq "$(ENGINE)" "original"
skamonkey@3045
    96
		HL2LIB = $(HL2SDK)/linux_sdk
skamonkey@3045
    97
	else
skamonkey@3045
    98
		HL2LIB = $(HL2SDK)/lib/linux
skamonkey@3045
    99
	endif
skamonkey@3045
   100
endif
skamonkey@3045
   101
skamonkey@3045
   102
# if ENGINE is orig, OB, or L4D
skamonkey@3045
   103
ifneq (,$(filter original orangebox left4dead,$(ENGINE)))
skamonkey@3045
   104
	LIB_SUFFIX = _i486.$(LIB_EXT)
skamonkey@3045
   105
else
skamonkey@3045
   106
	LIB_PREFIX = lib
skamonkey@3045
   107
	LIB_SUFFIX = .$(LIB_EXT)
ds@2400
   108
endif
dvander@1571
   109
ds@1977
   110
ifeq "$(USEMETA)" "true"
skamonkey@3045
   111
	LINK_HL2 = $(LIB_PREFIX)vstdlib$(LIB_SUFFIX) $(LIB_PREFIX)tier0$(LIB_SUFFIX)
dvander@1878
   112
ds@1977
   113
	LINK += $(LINK_HL2)
dvander@1571
   114
ds@1977
   115
	INCLUDE += -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
ds@2426
   116
		-I$(METAMOD) -I$(METAMOD)/sourcehook -I$(SMSDK)/public -I$(SMSDK)/public/extensions \
ds@2426
   117
		-I$(SMSDK)/public/sourcepawn
skamonkey@3615
   118
	CFLAGS += -DSE_EPISODEONE=1 -DSE_DARKMESSIAH=2 -DSE_ORANGEBOX=3 -DSE_CSS=4 -DSE_ORANGEBOXVALVE=5 \
skamonkey@3615
   119
		-DSE_LEFT4DEAD=6 -DSE_LEFT4DEAD2=7 -DSE_CSGO=8
ds@1977
   120
else
ds@1977
   121
	INCLUDE += -I. -I.. -Isdk -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn
ds@1977
   122
endif
dvander@1878
   123
dvander@2471
   124
LINK += -m32 -ldl -lm
ds@1977
   125
skamonkey@3045
   126
CFLAGS += -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
skamonkey@3045
   127
	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror \
skamonkey@3045
   128
	-mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
ds@1977
   129
CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
dvander@1571
   130
dvander@1571
   131
################################################
dvander@1571
   132
### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
dvander@1571
   133
################################################
dvander@1571
   134
skamonkey@3045
   135
BINARY = $(PROJECT).ext.$(GAMEFIX).$(LIB_EXT)
skamonkey@3045
   136
dvander@1571
   137
ifeq "$(DEBUG)" "true"
ds@1977
   138
	BIN_DIR = Debug
dvander@1571
   139
	CFLAGS += $(C_DEBUG_FLAGS)
dvander@1571
   140
else
ds@1977
   141
	BIN_DIR = Release
dvander@1571
   142
	CFLAGS += $(C_OPT_FLAGS)
dvander@1571
   143
endif
dvander@1571
   144
ds@1977
   145
ifeq "$(USEMETA)" "true"
ds@1977
   146
	BIN_DIR := $(BIN_DIR).$(ENGINE)
ds@1977
   147
endif
dvander@1571
   148
dvander@2471
   149
ifeq "$(OS)" "Darwin"
skamonkey@3045
   150
	LIB_EXT = dylib
skamonkey@3045
   151
	CFLAGS += -isysroot /Developer/SDKs/MacOSX10.5.sdk
skamonkey@3045
   152
	LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5
dvander@2471
   153
else
skamonkey@3045
   154
	LIB_EXT = so
skamonkey@3045
   155
	CFLAGS += -D_LINUX
skamonkey@3045
   156
	LINK += -shared
dvander@2471
   157
endif
dvander@2471
   158
dvander@1571
   159
GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
dvander@1571
   160
ifeq "$(GCC_VERSION)" "4"
ds@1977
   161
	CFLAGS += $(C_GCC4_FLAGS)
dvander@1571
   162
	CPPFLAGS += $(CPP_GCC4_FLAGS)
dvander@1571
   163
endif
dvander@1571
   164
skamonkey@3045
   165
OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
dvander@1571
   166
dvander@1571
   167
$(BIN_DIR)/%.o: %.cpp
dvander@1571
   168
	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
dvander@1571
   169
ds@1977
   170
all: check
rgr_02@3313
   171
	mkdir -p $(BIN_DIR)/sdk
rgr_02@3313
   172
	mkdir -p $(BIN_DIR)/CDetour
rgr_02@3313
   173
	mkdir -p $(BIN_DIR)/asm
ds@2458
   174
	if [ "$(USEMETA)" = "true" ]; then \
skamonkey@3045
   175
		ln -sf $(HL2LIB)/$(LIB_PREFIX)vstdlib$(LIB_SUFFIX); \
skamonkey@3045
   176
		ln -sf $(HL2LIB)/$(LIB_PREFIX)tier0$(LIB_SUFFIX); \
ds@1977
   177
	fi
dvander@1878
   178
	$(MAKE) -f Makefile extension
dvander@1571
   179
ds@1977
   180
check:
ds@2455
   181
	if [ "$(USEMETA)" = "true" ] && [ "$(ENGSET)" = "false" ]; then \
skamonkey@3045
   182
		echo "You must supply one of the following values for ENGINE:"; \
skamonkey@3615
   183
		echo "left4dead2, left4dead, orangeboxvalve, css, orangebox, or original"; \
ds@1977
   184
		exit 1; \
ds@1977
   185
	fi
ds@1977
   186
skamonkey@3045
   187
extension: check $(OBJ_BIN)
skamonkey@3045
   188
	$(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY)
ds@1977
   189
ds@1977
   190
debug:
ds@1977
   191
	$(MAKE) -f Makefile all DEBUG=true
dvander@1571
   192
dvander@1571
   193
default: all
dvander@1571
   194
ds@1977
   195
clean: check
dvander@1878
   196
	rm -rf $(BIN_DIR)/*.o
dvander@1878
   197
	rm -rf $(BIN_DIR)/sdk/*.o
dvander@1878
   198
	rm -rf $(BIN_DIR)/$(BINARY)