extensions/sdktools/Makefile
author Nicholas Hastings <skamonkey@gmail.com>
Fri Jul 08 07:53:31 2011 -0400 (2011-07-08)
changeset 3348 fcae86e8cb8f
parent 3339 ab8bc0494926
child 3373 c6463cdc2180
permissions -rw-r--r--
Backed out changeset: 9007dacc012d
ds@1977
     1
# (C)2004-2008 SourceMod Development Team
dvander@1566
     2
# Makefile written by David "BAILOPAN" Anderson
dvander@1566
     3
ds@1977
     4
SMSDK = ../..
ds@1977
     5
SRCDS_BASE = ~/srcds
dvander@1878
     6
HL2SDK_ORIG = ../../../hl2sdk
dvander@1878
     7
HL2SDK_OB = ../../../hl2sdk-ob
pred@2771
     8
HL2SDK_OB_VALVE = ../../../hl2sdk-ob-valve
ds@2400
     9
HL2SDK_L4D = ../../../hl2sdk-l4d
fyrenmoo@2847
    10
HL2SDK_L4D2 = ../../../hl2sdk-l4d2
fyrenmoo@2847
    11
MMSOURCE17 = ../../../mmsource-central
dvander@1566
    12
dvander@1566
    13
#####################################
dvander@1566
    14
### EDIT BELOW FOR OTHER PROJECTS ###
dvander@1566
    15
#####################################
dvander@1566
    16
dvander@1566
    17
PROJECT = sdktools
dvander@1566
    18
ds@1977
    19
#Uncomment for Metamod: Source enabled extension
ds@1977
    20
USEMETA = true
ds@1977
    21
dvander@1566
    22
OBJECTS = sdk/smsdk_ext.cpp extension.cpp vdecoder.cpp vcallbuilder.cpp vcaller.cpp \
dvander@1566
    23
	vnatives.cpp vsound.cpp tenatives.cpp trnatives.cpp tempents.cpp vstringtable.cpp \
pred@1958
    24
	vhelpers.cpp vglobals.cpp voice.cpp inputnatives.cpp teamnatives.cpp output.cpp \
bluebriansimon@3339
    25
	outputnatives.cpp hooks.cpp gamerulesnatives.cpp CDetour/detours.cpp asm/asm.c \
bluebriansimon@3339
    26
	clientnatives.cpp
dvander@1566
    27
dvander@1566
    28
##############################################
dvander@1566
    29
### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
dvander@1566
    30
##############################################
dvander@1566
    31
ds@2047
    32
C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -pipe -fno-strict-aliasing
ds@1977
    33
C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3
ds@1977
    34
C_GCC4_FLAGS = -fvisibility=hidden
ds@1977
    35
CPP_GCC4_FLAGS = -fvisibility-inlines-hidden
dvander@2471
    36
CPP = gcc
dvander@1566
    37
ds@1977
    38
override ENGSET = false
dvander@1878
    39
ifeq "$(ENGINE)" "original"
dvander@1878
    40
	HL2SDK = $(HL2SDK_ORIG)
ds@2400
    41
	HL2PUB = $(HL2SDK)/public
ds@2400
    42
	HL2LIB = $(HL2SDK)/linux_sdk
ds@2588
    43
	CFLAGS += -DSOURCE_ENGINE=1
ds@2426
    44
	METAMOD = $(MMSOURCE17)/core-legacy
pred@2711
    45
	INCLUDE += -I$(HL2SDK)/public/dlls -I$(HL2SDK)/game_shared
dvander@1878
    46
	SRCDS = $(SRCDS_BASE)
dvander@2782
    47
	GAMEFIX = 1.ep1
ds@1977
    48
	override ENGSET = true
dvander@1878
    49
endif
dvander@1878
    50
ifeq "$(ENGINE)" "orangebox"
dvander@1878
    51
	HL2SDK = $(HL2SDK_OB)
ds@2400
    52
	HL2PUB = $(HL2SDK)/public
ds@2400
    53
	HL2LIB = $(HL2SDK)/lib/linux
ds@2400
    54
	CFLAGS += -DSOURCE_ENGINE=3
ds@2426
    55
	METAMOD = $(MMSOURCE17)/core
skamonkey@3280
    56
	INCLUDE += -I$(HL2SDK)/public/game/server -I$(HL2SDK)/common -I$(HL2SDK)/game/shared -I$(HL2SDK)/public/toolframework
dvander@1878
    57
	SRCDS = $(SRCDS_BASE)/orangebox
dvander@2782
    58
	GAMEFIX = 2.ep2
ds@1977
    59
	override ENGSET = true
dvander@1878
    60
endif
pred@2771
    61
ifeq "$(ENGINE)" "orangeboxvalve"
pred@2771
    62
	HL2SDK = $(HL2SDK_OB_VALVE)
pred@2771
    63
	HL2PUB = $(HL2SDK)/public
pred@2771
    64
	HL2LIB = $(HL2SDK)/lib/linux
pred@2771
    65
	CFLAGS += -DSOURCE_ENGINE=4
pred@2771
    66
	METAMOD = $(MMSOURCE17)/core
skamonkey@3280
    67
	INCLUDE += -I$(HL2SDK)/public/game/server -I$(HL2SDK)/common -I$(HL2SDK)/game/shared -I$(HL2SDK)/public/toolframework
pred@2771
    68
	SRCDS = $(SRCDS_BASE)/orangebox
dvander@2782
    69
	GAMEFIX = 2.ep2v
pred@2771
    70
	override ENGSET = true
pred@2771
    71
endif
ds@2400
    72
ifeq "$(ENGINE)" "left4dead"
ds@2400
    73
	HL2SDK = $(HL2SDK_L4D)
ds@2400
    74
	HL2PUB = $(HL2SDK)/public
ds@2400
    75
	HL2LIB = $(HL2SDK)/lib/linux
pred@2771
    76
	CFLAGS += -DSOURCE_ENGINE=5
ds@2430
    77
	METAMOD = $(MMSOURCE17)/core
skamonkey@3280
    78
	INCLUDE += -I$(HL2SDK)/public/game/server -I$(HL2SDK)/common -I$(HL2SDK)/game/shared -I$(HL2SDK)/public/toolframework
ds@2406
    79
	SRCDS = $(SRCDS_BASE)/l4d
dvander@2782
    80
	GAMEFIX = 2.l4d
ds@2400
    81
	override ENGSET = true
ds@2400
    82
endif
fyrenmoo@2847
    83
ifeq "$(ENGINE)" "left4dead2"
fyrenmoo@2847
    84
	HL2SDK = $(HL2SDK_L4D2)
fyrenmoo@2847
    85
	HL2PUB = $(HL2SDK)/public
fyrenmoo@2847
    86
	HL2LIB = $(HL2SDK)/lib/linux
fyrenmoo@2847
    87
	CFLAGS += -DSOURCE_ENGINE=6
fyrenmoo@2847
    88
	METAMOD = $(MMSOURCE17)/core
skamonkey@3280
    89
	INCLUDE += -I$(HL2SDK)/public/game/server -I$(HL2SDK)/common -I$(HL2SDK)/game/shared -I$(HL2SDK)/public/toolframework
fyrenmoo@2953
    90
	SRCDS = $(SRCDS_BASE)/left4dead2
fyrenmoo@2847
    91
	GAMEFIX = 2.l4d2
fyrenmoo@2847
    92
	override ENGSET = true
fyrenmoo@2847
    93
endif
dvander@1566
    94
fyrenmoo@3089
    95
ifeq ($(ENGINE),$(filter $(ENGINE), left4dead2 orangeboxvalve))
fyrenmoo@2953
    96
	LINK_HL2 = $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a libvstdlib.so libtier0.so
ds@1977
    97
else
fyrenmoo@2847
    98
	LINK_HL2 = $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so tier0_i486.so
ds@1977
    99
endif
dvander@1878
   100
fyrenmoo@2847
   101
LINK += $(LINK_HL2)
fyrenmoo@2847
   102
fyrenmoo@2847
   103
INCLUDE += -I. -I.. -Isdk -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/mathlib -I$(HL2PUB)/tier0 \
fyrenmoo@2847
   104
	-I$(HL2PUB)/tier1 -I$(METAMOD) -I$(METAMOD)/sourcehook -I$(SMSDK)/public -I$(SMSDK)/public/extensions \
fyrenmoo@2847
   105
	-I$(SMSDK)/public/sourcepawn
fyrenmoo@2847
   106
CFLAGS += -DSE_EPISODEONE=1 -DSE_DARKMESSIAH=2 -DSE_ORANGEBOX=3 -DSE_ORANGEBOXVALVE=4 -DSE_LEFT4DEAD=5 -DSE_LEFT4DEAD2=6
fyrenmoo@2847
   107
dvander@2471
   108
LINK += -m32 -ldl -lm
ds@1977
   109
ds@1977
   110
CFLAGS += -D_LINUX -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
dvander@1566
   111
	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror -Wno-switch \
dvander@1878
   112
	-Wno-unused -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
ds@1977
   113
CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti -fno-threadsafe-statics
dvander@1566
   114
dvander@1566
   115
################################################
dvander@1566
   116
### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
dvander@1566
   117
################################################
dvander@1566
   118
dvander@1566
   119
ifeq "$(DEBUG)" "true"
ds@1977
   120
	BIN_DIR = Debug
dvander@1566
   121
	CFLAGS += $(C_DEBUG_FLAGS)
dvander@1566
   122
else
ds@1977
   123
	BIN_DIR = Release
dvander@1566
   124
	CFLAGS += $(C_OPT_FLAGS)
dvander@1566
   125
endif
dvander@1566
   126
ds@1977
   127
ifeq "$(USEMETA)" "true"
ds@1977
   128
	BIN_DIR := $(BIN_DIR).$(ENGINE)
ds@1977
   129
endif
ds@1977
   130
dvander@2471
   131
OS := $(shell uname -s)
dvander@2471
   132
ifeq "$(OS)" "Darwin"
dvander@2471
   133
	LINK += -dynamiclib
dvander@2782
   134
	BINARY = $(PROJECT).ext.$(GAMEFIX).dylib
dvander@2471
   135
else
dvander@2471
   136
	LINK += -static-libgcc -shared
dvander@2782
   137
	BINARY = $(PROJECT).ext.$(GAMEFIX).so
dvander@2471
   138
endif
dvander@2471
   139
dvander@1566
   140
GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
dvander@1566
   141
ifeq "$(GCC_VERSION)" "4"
ds@1977
   142
	CFLAGS += $(C_GCC4_FLAGS)
dvander@1566
   143
	CPPFLAGS += $(CPP_GCC4_FLAGS)
dvander@1566
   144
endif
dvander@1566
   145
dvander@1566
   146
OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
dvander@1566
   147
dvander@1566
   148
$(BIN_DIR)/%.o: %.cpp
dvander@1566
   149
	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
dvander@1566
   150
ds@1977
   151
all: check
dvander@1566
   152
	mkdir -p $(BIN_DIR)/sdk
fyrenmoo@3089
   153
	mkdir -p $(BIN_DIR)/CDetour
fyrenmoo@3089
   154
	mkdir -p $(BIN_DIR)/asm
fyrenmoo@3089
   155
ifeq ($(ENGINE),$(filter $(ENGINE), left4dead2 orangeboxvalve))
fyrenmoo@2953
   156
	ln -sf $(SRCDS)/bin/libvstdlib.so libvstdlib.so;
fyrenmoo@2953
   157
	ln -sf $(SRCDS)/bin/libtier0.so libtier0.so;
fyrenmoo@2847
   158
else
fyrenmoo@2847
   159
	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so;
fyrenmoo@2847
   160
	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so;
fyrenmoo@2847
   161
endif
dvander@1878
   162
	$(MAKE) -f Makefile extension
dvander@1566
   163
ds@1977
   164
check:
ds@2455
   165
	if [ "$(USEMETA)" = "true" ] && [ "$(ENGSET)" = "false" ]; then \
ds@2400
   166
		echo "You must supply ENGINE=left4dead or ENGINE=orangebox or ENGINE=original"; \
ds@1977
   167
		exit 1; \
ds@1977
   168
	fi
ds@1977
   169
ds@1977
   170
extension: check $(OBJ_LINUX)
dvander@2471
   171
	$(CPP) $(INCLUDE) $(OBJ_LINUX) $(LINK) -o $(BIN_DIR)/$(BINARY)
dvander@1566
   172
dvander@1566
   173
debug:
dvander@1878
   174
	$(MAKE) -f Makefile all DEBUG=true
dvander@1566
   175
dvander@1566
   176
default: all
dvander@1566
   177
ds@1977
   178
clean: check
dvander@1878
   179
	rm -rf $(BIN_DIR)/*.o
dvander@1878
   180
	rm -rf $(BIN_DIR)/sdk/*.o
fyrenmoo@3089
   181
	rm -rf $(BIN_DIR)/CDetour/*.o
fyrenmoo@3089
   182
	rm -rf $(BIN_DIR)/asm/*.o
dvander@1878
   183
	rm -rf $(BIN_DIR)/$(BINARY)