public/mms_sample_ext/Makefile
author Asher Baker <asherkin@gmail.com>
Tue Aug 07 18:04:10 2012 +0100 (2012-08-07)
changeset 3600 8b38b6996600
parent 3556 a521074131c5
child 3615 24c0dcaf2b4a
permissions -rw-r--r--
Changed TFWeaponSlot enum description (r=me).
ds@2969
     1
# (C)2004-2010 SourceMod Development Team
ds@1977
     2
# Makefile written by David "BAILOPAN" Anderson
ds@1977
     3
ds@1977
     4
SMSDK = ..
ds@1977
     5
HL2SDK_ORIG = ../../../hl2sdk
ds@1977
     6
HL2SDK_OB = ../../../hl2sdk-ob
dvander@2782
     7
HL2SDK_OB_VALVE = ../../../hl2sdk-ob-valve
ds@2400
     8
HL2SDK_L4D = ../../../hl2sdk-l4d
ds@2867
     9
HL2SDK_L4D2 = ../../../hl2sdk-l4d2
skamonkey@3556
    10
HL2SDK_CSGO = ../../../hl2sdk-csgo
skamonkey@3556
    11
MMSOURCE19 = ../../../mmsource-1.9
ds@1977
    12
ds@1977
    13
#####################################
ds@1977
    14
### EDIT BELOW FOR OTHER PROJECTS ###
ds@1977
    15
#####################################
ds@1977
    16
ds@1977
    17
PROJECT = stub_mm
ds@1977
    18
OBJECTS = stub_mm.cpp sm_ext.cpp sm_sdk_config.cpp stub_util.cpp
ds@1977
    19
ds@1977
    20
##############################################
ds@1977
    21
### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
ds@1977
    22
##############################################
ds@1977
    23
ds@2047
    24
C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -pipe -fno-strict-aliasing
ds@1977
    25
C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3
ds@1977
    26
C_GCC4_FLAGS = -fvisibility=hidden
ds@1977
    27
CPP_GCC4_FLAGS = -fvisibility-inlines-hidden
dvander@2471
    28
CPP = gcc
ds@1977
    29
ds@3022
    30
##########################
ds@3022
    31
### SDK CONFIGURATIONS ###
ds@3022
    32
##########################
ds@3022
    33
ds@1977
    34
override ENGSET = false
ds@3022
    35
ds@3022
    36
# Check for valid list of engines
skamonkey@3556
    37
ifneq (,$(filter original orangebox orangeboxvalve left4dead left4dead2 csgo,$(ENGINE)))
ds@3022
    38
	override ENGSET = true
ds@3022
    39
endif
ds@3022
    40
ds@1977
    41
ifeq "$(ENGINE)" "original"
ds@1977
    42
	HL2SDK = $(HL2SDK_ORIG)
ds@2588
    43
	CFLAGS += -DSOURCE_ENGINE=1
ds@1977
    44
endif
ds@1977
    45
ifeq "$(ENGINE)" "orangebox"
ds@1977
    46
	HL2SDK = $(HL2SDK_OB)
ds@2400
    47
	CFLAGS += -DSOURCE_ENGINE=3
ds@1977
    48
endif
dvander@2782
    49
ifeq "$(ENGINE)" "orangeboxvalve"
dvander@2782
    50
	HL2SDK = $(HL2SDK_OB_VALVE)
skamonkey@3373
    51
	CFLAGS += -DSOURCE_ENGINE=6
dvander@2782
    52
endif
ds@2400
    53
ifeq "$(ENGINE)" "left4dead"
ds@2400
    54
	HL2SDK = $(HL2SDK_L4D)
skamonkey@3373
    55
	CFLAGS += -DSOURCE_ENGINE=7
ds@2867
    56
endif
ds@2867
    57
ifeq "$(ENGINE)" "left4dead2"
ds@2867
    58
	HL2SDK = $(HL2SDK_L4D2)
skamonkey@3373
    59
	CFLAGS += -DSOURCE_ENGINE=8
ds@3022
    60
endif
skamonkey@3556
    61
ifeq "$(ENGINE)" "csgo"
skamonkey@3556
    62
	HL2SDK = $(HL2SDK_CSGO)
skamonkey@3556
    63
	CFLAGS += -DSOURCE_ENGINE=11
skamonkey@3556
    64
endif
ds@3022
    65
ds@3022
    66
HL2PUB = $(HL2SDK)/public
ds@3022
    67
ds@3022
    68
ifeq "$(ENGINE)" "original"
ds@3022
    69
	INCLUDE += -I$(HL2SDK)/public/dlls
skamonkey@3556
    70
	METAMOD = $(MMSOURCE19)/core-legacy
ds@3022
    71
else
ds@2867
    72
	INCLUDE += -I$(HL2SDK)/public/game/server
skamonkey@3556
    73
	METAMOD = $(MMSOURCE19)/core
ds@3022
    74
endif
ds@3022
    75
ds@3022
    76
OS := $(shell uname -s)
ds@3022
    77
ds@3022
    78
ifeq "$(OS)" "Darwin"
ds@3022
    79
	LIB_EXT = dylib
ds@3022
    80
	HL2LIB = $(HL2SDK)/lib/mac
ds@3022
    81
else
ds@3022
    82
	LIB_EXT = so
ds@3022
    83
	ifeq "$(ENGINE)" "original"
ds@3022
    84
		HL2LIB = $(HL2SDK)/linux_sdk
ds@3022
    85
	else
ds@3022
    86
		HL2LIB = $(HL2SDK)/lib/linux
ds@3022
    87
	endif
ds@3022
    88
endif
ds@3022
    89
ds@3145
    90
# if ENGINE is original or OB
ds@3145
    91
ifneq (,$(filter original orangebox,$(ENGINE)))
ds@3022
    92
	LIB_SUFFIX = _i486.$(LIB_EXT)
ds@3022
    93
else
ds@2969
    94
	LIB_PREFIX = lib
ds@3022
    95
	LIB_SUFFIX = .$(LIB_EXT)
ds@2400
    96
endif
ds@2400
    97
skamonkey@3373
    98
CFLAGS += -DSE_EPISODEONE=1 -DSE_DARKMESSIAH=2 -DSE_ORANGEBOX=3 -DSE_BLOODYGOODTIME=4 -DSE_EYE=5 \
skamonkey@3556
    99
	-DSE_ORANGEBOXVALVE=6 -DSE_LEFT4DEAD=7 -DSE_LEFT4DEAD2=8 -DSE_ALIENSWARM=9 -DSE_PORTAL2=10 \
skamonkey@3556
   100
	-DSE_CSGO=11
ds@1977
   101
skamonkey@3556
   102
LINK = $(HL2LIB)/tier1_i486.a $(LIB_PREFIX)vstdlib$(LIB_SUFFIX) $(LIB_PREFIX)tier0$(LIB_SUFFIX)
skamonkey@3556
   103
ifeq "$(ENGINE)" "csgo"
skamonkey@3556
   104
	LINK += $(HL2LIB)/interfaces_i486.a
skamonkey@3556
   105
endif
skamonkey@3556
   106
LINK += -m32 -ldl -lm
ds@1977
   107
ds@1977
   108
INCLUDE += -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
ds@2426
   109
	-I$(METAMOD) -I$(METAMOD)/sourcehook -I$(SMSDK) -I$(SMSDK)/jit -I$(SMSDK)/jit/x86 \
ds@2426
   110
	-I$(SMSDK)/extensions -I$(SMSDK)/sourcepawn
ds@1977
   111
skamonkey@3556
   112
CFLAGS += -DPOSIX -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
skamonkey@3556
   113
	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -DCOMPILER_GCC -Wall -Werror \
skamonkey@3556
   114
	-Wno-switch -Wno-unused -mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
ds@1977
   115
CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
ds@1977
   116
ds@1977
   117
################################################
ds@1977
   118
### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
ds@1977
   119
################################################
ds@1977
   120
ds@3022
   121
BINARY = $(PROJECT).$(LIB_EXT)
ds@3022
   122
ds@1977
   123
ifeq "$(DEBUG)" "true"
ds@1977
   124
	BIN_DIR = Debug.$(ENGINE)
ds@1977
   125
	CFLAGS += $(C_DEBUG_FLAGS)
ds@1977
   126
else
ds@1977
   127
	BIN_DIR = Release.$(ENGINE)
ds@1977
   128
	CFLAGS += $(C_OPT_FLAGS)
ds@1977
   129
endif
ds@1977
   130
dvander@2471
   131
ifeq "$(OS)" "Darwin"
ds@3022
   132
	LIB_EXT = dylib
ds@3022
   133
	CFLAGS += -isysroot /Developer/SDKs/MacOSX10.5.sdk
ds@3022
   134
	LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5
dvander@2471
   135
else
ds@3022
   136
	LIB_EXT = so
ds@3022
   137
	CFLAGS += -D_LINUX
ds@3022
   138
	LINK += -shared
dvander@2471
   139
endif
dvander@2471
   140
ds@1977
   141
GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
ds@1977
   142
ifeq "$(GCC_VERSION)" "4"
ds@1977
   143
	CFLAGS += $(C_GCC4_FLAGS)
ds@1977
   144
	CPPFLAGS += $(CPP_GCC4_FLAGS)
ds@1977
   145
endif
ds@1977
   146
ds@3022
   147
OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
ds@1977
   148
skamonkey@3556
   149
# This will break if we include other Makefiles, but is fine for now. It allows
skamonkey@3556
   150
#  us to make a copy of this file that uses altered paths (ie. Makefile.mine)
skamonkey@3556
   151
#  or other changes without mucking up the original.
skamonkey@3556
   152
MAKEFILE_NAME := $(CURDIR)/$(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
skamonkey@3556
   153
ds@1977
   154
$(BIN_DIR)/%.o: %.cpp
ds@1977
   155
	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
ds@1977
   156
ds@1977
   157
all: check
ds@1977
   158
	mkdir -p $(BIN_DIR)
ds@2969
   159
	ln -sf $(HL2LIB)/$(LIB_PREFIX)vstdlib$(LIB_SUFFIX)
ds@2969
   160
	ln -sf $(HL2LIB)/$(LIB_PREFIX)tier0$(LIB_SUFFIX)
skamonkey@3556
   161
	$(MAKE) -f $(MAKEFILE_NAME) mms_ext
ds@1977
   162
ds@1977
   163
check:
ds@2455
   164
	if [ "$(ENGSET)" = "false" ]; then \
ds@2867
   165
		echo "You must supply one of the following values for ENGINE:"; \
skamonkey@3556
   166
		echo "csgo, left4dead2, left4dead, orangeboxvalve, orangebox, or original"; \
ds@1977
   167
		exit 1; \
ds@1977
   168
	fi
ds@1977
   169
ds@3022
   170
mms_ext: check $(OBJ_BIN)
ds@3022
   171
	$(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY)
ds@1977
   172
ds@1977
   173
debug:
skamonkey@3556
   174
	$(MAKE) -f $(MAKEFILE_NAME) all DEBUG=true
ds@1977
   175
ds@1977
   176
default: all
ds@1977
   177
ds@1977
   178
clean: check
ds@1977
   179
	rm -rf $(BIN_DIR)/*.o
ds@1977
   180
	rm -rf $(BIN_DIR)/$(BINARY)