public/mms_sample_ext/Makefile
author Nicholas Hastings <skamonkey@gmail.com>
Sat Aug 20 18:58:37 2011 -0400 (2011-08-20)
changeset 3373 c6463cdc2180
parent 3145 3fc087dd29e8
child 3556 a521074131c5
permissions -rw-r--r--
Added support for E.Y.E Divine Cybermancy (bug 5035, r=fyren).
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
ds@2867
    10
MMSOURCE18 = ../../../mmsource-1.8
ds@1977
    11
ds@1977
    12
#####################################
ds@1977
    13
### EDIT BELOW FOR OTHER PROJECTS ###
ds@1977
    14
#####################################
ds@1977
    15
ds@1977
    16
PROJECT = stub_mm
ds@1977
    17
OBJECTS = stub_mm.cpp sm_ext.cpp sm_sdk_config.cpp stub_util.cpp
ds@1977
    18
ds@1977
    19
##############################################
ds@1977
    20
### CONFIGURE ANY OTHER FLAGS/OPTIONS HERE ###
ds@1977
    21
##############################################
ds@1977
    22
ds@2047
    23
C_OPT_FLAGS = -DNDEBUG -O3 -funroll-loops -pipe -fno-strict-aliasing
ds@1977
    24
C_DEBUG_FLAGS = -D_DEBUG -DDEBUG -g -ggdb3
ds@1977
    25
C_GCC4_FLAGS = -fvisibility=hidden
ds@1977
    26
CPP_GCC4_FLAGS = -fvisibility-inlines-hidden
dvander@2471
    27
CPP = gcc
ds@1977
    28
ds@3022
    29
##########################
ds@3022
    30
### SDK CONFIGURATIONS ###
ds@3022
    31
##########################
ds@3022
    32
ds@1977
    33
override ENGSET = false
ds@3022
    34
ds@3022
    35
# Check for valid list of engines
ds@3022
    36
ifneq (,$(filter original orangebox orangeboxvalve left4dead left4dead2,$(ENGINE)))
ds@3022
    37
	override ENGSET = true
ds@3022
    38
endif
ds@3022
    39
ds@1977
    40
ifeq "$(ENGINE)" "original"
ds@1977
    41
	HL2SDK = $(HL2SDK_ORIG)
ds@2588
    42
	CFLAGS += -DSOURCE_ENGINE=1
ds@1977
    43
endif
ds@1977
    44
ifeq "$(ENGINE)" "orangebox"
ds@1977
    45
	HL2SDK = $(HL2SDK_OB)
ds@2400
    46
	CFLAGS += -DSOURCE_ENGINE=3
ds@1977
    47
endif
dvander@2782
    48
ifeq "$(ENGINE)" "orangeboxvalve"
dvander@2782
    49
	HL2SDK = $(HL2SDK_OB_VALVE)
skamonkey@3373
    50
	CFLAGS += -DSOURCE_ENGINE=6
dvander@2782
    51
endif
ds@2400
    52
ifeq "$(ENGINE)" "left4dead"
ds@2400
    53
	HL2SDK = $(HL2SDK_L4D)
skamonkey@3373
    54
	CFLAGS += -DSOURCE_ENGINE=7
ds@2867
    55
endif
ds@2867
    56
ifeq "$(ENGINE)" "left4dead2"
ds@2867
    57
	HL2SDK = $(HL2SDK_L4D2)
skamonkey@3373
    58
	CFLAGS += -DSOURCE_ENGINE=8
ds@3022
    59
endif
ds@3022
    60
ds@3022
    61
HL2PUB = $(HL2SDK)/public
ds@3022
    62
ds@3022
    63
ifeq "$(ENGINE)" "original"
ds@3022
    64
	INCLUDE += -I$(HL2SDK)/public/dlls
ds@3022
    65
	METAMOD = $(MMSOURCE18)/core-legacy
ds@3022
    66
else
ds@2867
    67
	INCLUDE += -I$(HL2SDK)/public/game/server
ds@3022
    68
	METAMOD = $(MMSOURCE18)/core
ds@3022
    69
endif
ds@3022
    70
ds@3022
    71
OS := $(shell uname -s)
ds@3022
    72
ds@3022
    73
ifeq "$(OS)" "Darwin"
ds@3022
    74
	LIB_EXT = dylib
ds@3022
    75
	HL2LIB = $(HL2SDK)/lib/mac
ds@3022
    76
else
ds@3022
    77
	LIB_EXT = so
ds@3022
    78
	ifeq "$(ENGINE)" "original"
ds@3022
    79
		HL2LIB = $(HL2SDK)/linux_sdk
ds@3022
    80
	else
ds@3022
    81
		HL2LIB = $(HL2SDK)/lib/linux
ds@3022
    82
	endif
ds@3022
    83
endif
ds@3022
    84
ds@3145
    85
# if ENGINE is original or OB
ds@3145
    86
ifneq (,$(filter original orangebox,$(ENGINE)))
ds@3022
    87
	LIB_SUFFIX = _i486.$(LIB_EXT)
ds@3022
    88
else
ds@2969
    89
	LIB_PREFIX = lib
ds@3022
    90
	LIB_SUFFIX = .$(LIB_EXT)
ds@2400
    91
endif
ds@2400
    92
skamonkey@3373
    93
CFLAGS += -DSE_EPISODEONE=1 -DSE_DARKMESSIAH=2 -DSE_ORANGEBOX=3 -DSE_BLOODYGOODTIME=4 -DSE_EYE=5 \
skamonkey@3373
    94
	-DSE_ORANGEBOXVALVE=6 -DSE_LEFT4DEAD=7 -DSE_LEFT4DEAD2=8 -DSE_ALIENSWARM=9
ds@1977
    95
ds@2969
    96
LINK = $(LIB_PREFIX)vstdlib$(LIB_SUFFIX) $(LIB_PREFIX)tier0$(LIB_SUFFIX) -m32 -ldl -lm
ds@1977
    97
ds@1977
    98
INCLUDE += -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
ds@2426
    99
	-I$(METAMOD) -I$(METAMOD)/sourcehook -I$(SMSDK) -I$(SMSDK)/jit -I$(SMSDK)/jit/x86 \
ds@2426
   100
	-I$(SMSDK)/extensions -I$(SMSDK)/sourcepawn
ds@1977
   101
ds@3022
   102
CFLAGS += -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp -Dstrnicmp=strncasecmp \
ds@3022
   103
	-D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca -Dstrcmpi=strcasecmp -Wall -Werror \
ds@3022
   104
	-mfpmath=sse -msse -DSOURCEMOD_BUILD -DHAVE_STDINT_H -m32
ds@1977
   105
CPPFLAGS += -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
ds@1977
   106
ds@1977
   107
################################################
ds@1977
   108
### DO NOT EDIT BELOW HERE FOR MOST PROJECTS ###
ds@1977
   109
################################################
ds@1977
   110
ds@3022
   111
BINARY = $(PROJECT).$(LIB_EXT)
ds@3022
   112
ds@1977
   113
ifeq "$(DEBUG)" "true"
ds@1977
   114
	BIN_DIR = Debug.$(ENGINE)
ds@1977
   115
	CFLAGS += $(C_DEBUG_FLAGS)
ds@1977
   116
else
ds@1977
   117
	BIN_DIR = Release.$(ENGINE)
ds@1977
   118
	CFLAGS += $(C_OPT_FLAGS)
ds@1977
   119
endif
ds@1977
   120
dvander@2471
   121
ifeq "$(OS)" "Darwin"
ds@3022
   122
	LIB_EXT = dylib
ds@3022
   123
	CFLAGS += -isysroot /Developer/SDKs/MacOSX10.5.sdk
ds@3022
   124
	LINK += -dynamiclib -lstdc++ -mmacosx-version-min=10.5
dvander@2471
   125
else
ds@3022
   126
	LIB_EXT = so
ds@3022
   127
	CFLAGS += -D_LINUX
ds@3022
   128
	LINK += -shared
dvander@2471
   129
endif
dvander@2471
   130
ds@1977
   131
GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
ds@1977
   132
ifeq "$(GCC_VERSION)" "4"
ds@1977
   133
	CFLAGS += $(C_GCC4_FLAGS)
ds@1977
   134
	CPPFLAGS += $(CPP_GCC4_FLAGS)
ds@1977
   135
endif
ds@1977
   136
ds@3022
   137
OBJ_BIN := $(OBJECTS:%.cpp=$(BIN_DIR)/%.o)
ds@1977
   138
ds@1977
   139
$(BIN_DIR)/%.o: %.cpp
ds@1977
   140
	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
ds@1977
   141
ds@1977
   142
all: check
ds@1977
   143
	mkdir -p $(BIN_DIR)
ds@2969
   144
	ln -sf $(HL2LIB)/$(LIB_PREFIX)vstdlib$(LIB_SUFFIX)
ds@2969
   145
	ln -sf $(HL2LIB)/$(LIB_PREFIX)tier0$(LIB_SUFFIX)
ds@1977
   146
	$(MAKE) -f Makefile mms_ext
ds@1977
   147
ds@1977
   148
check:
ds@2455
   149
	if [ "$(ENGSET)" = "false" ]; then \
ds@2867
   150
		echo "You must supply one of the following values for ENGINE:"; \
ds@2867
   151
		echo "left4dead2, left4dead, orangeboxvalve, orangebox, or original"; \
ds@1977
   152
		exit 1; \
ds@1977
   153
	fi
ds@1977
   154
ds@3022
   155
mms_ext: check $(OBJ_BIN)
ds@3022
   156
	$(CPP) $(INCLUDE) $(OBJ_BIN) $(LINK) -o $(BIN_DIR)/$(BINARY)
ds@1977
   157
ds@1977
   158
debug:
ds@1977
   159
	$(MAKE) -f Makefile all DEBUG=true
ds@1977
   160
ds@1977
   161
default: all
ds@1977
   162
ds@1977
   163
clean: check
ds@1977
   164
	rm -rf $(BIN_DIR)/*.o
ds@1977
   165
	rm -rf $(BIN_DIR)/$(BINARY)