core/Makefile
author Scott Ehlert <ds@alliedmods.net>
Sun Mar 30 07:00:22 2008 +0000 (2008-03-30)
changeset 1952 b7aa2b626807
child 1977 a91419cc4497
permissions -rw-r--r--
Spring Cleaning, Part Ichi (1)
Various minor things done to project files
Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way)
Updated regex project file and makefile
     1 #(C)2004-2008 Metamod:Source Development Team
     2 # Makefile written by David "BAILOPAN" Anderson
     3 
     4 #Local paths
     5 HL2SDK_ORIG = ../../hl2sdk
     6 HL2SDK_OB = ../../hl2sdk-ob
     7 SOURCEMM14 = ../../sourcemm-1.4
     8 SOURCEMM16 = ../../sourcemm-1.6
     9 SRCDS_BASE = ~/srcds
    10 SMSDK = ..
    11 
    12 #Project options
    13 OPT_FLAGS = -O3 -funroll-loops -s -pipe -fno-strict-aliasing
    14 GCC4_FLAGS = -fvisibility=hidden 
    15 GCC4_CPP_FLAGS = -fvisibility-inlines-hidden
    16 DEBUG_FLAGS = -g -ggdb3
    17 CPP = gcc-4.1
    18 
    19 
    20 OBJECTS = AdminCache.cpp CDataPack.cpp ConCmdManager.cpp ConVarManager.cpp CoreConfig.cpp \
    21 	Database.cpp DebugReporter.cpp EventManager.cpp GameConfigs.cpp HalfLife2.cpp Logger.cpp \
    22 	MemoryUtils.cpp PlayerManager.cpp TextParsers.cpp TimerSys.cpp Translator.cpp UserMessages.cpp \
    23 	sm_autonatives.cpp sm_memtable.cpp sm_srvcmds.cpp sm_stringutil.cpp sm_trie.cpp \
    24 	sourcemm_api.cpp sourcemod.cpp MenuStyle_Base.cpp MenuStyle_Valve.cpp MenuManager.cpp \
    25 	MenuStyle_Radio.cpp ChatTriggers.cpp ADTFactory.cpp MenuVoting.cpp sm_crc32.cpp \
    26 	frame_hooks.cpp concmd_cleaner.cpp Profiler.cpp
    27 OBJECTS += smn_admin.cpp smn_bitbuffer.cpp smn_console.cpp smn_core.cpp \
    28 	smn_datapacks.cpp smn_entities.cpp smn_events.cpp smn_fakenatives.cpp \
    29 	smn_filesystem.cpp smn_float.cpp smn_functions.cpp smn_gameconfigs.cpp smn_halflife.cpp \
    30 	smn_handles.cpp smn_keyvalues.cpp smn_banning.cpp smn_maplists.cpp \
    31 	smn_lang.cpp smn_player.cpp smn_string.cpp smn_sorting.cpp smn_textparse.cpp smn_timers.cpp \
    32 	smn_usermsgs.cpp smn_menus.cpp smn_database.cpp smn_vector.cpp smn_adt_array.cpp \
    33 	smn_adt_trie.cpp smn_hudtext.cpp
    34 OBJECTS += systems/ExtensionSys.cpp systems/ForwardSys.cpp systems/HandleSys.cpp \
    35 	systems/LibrarySys.cpp systems/PluginInfoDatabase.cpp systems/PluginSys.cpp \
    36 	systems/ShareSys.cpp vm/sp_vm_basecontext.cpp vm/sp_vm_function.cpp
    37 OBJECTS += thread/ThreadWorker.cpp thread/BaseWorker.cpp thread/PosixThreads.cpp ThreadSupport.cpp
    38 OBJECTS_C = zlib/adler32.c zlib/compress.c zlib/crc32.c zlib/deflate.c zlib/gzio.c \
    39 	   zlib/infback.c zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c \
    40 	   zlib/uncompr.c zlib/zutil.c
    41 OBJECTS_SM16 = vm/sp_vm_engine.cpp
    42 
    43 ifeq "$(ENGINE)" "original"
    44 	HL2SDK = $(HL2SDK_ORIG)
    45 	HL2PUB = $(HL2SDK_ORIG)/public
    46 	HL2LIB = $(HL2SDK)/linux_sdk
    47 	METAMOD = $(SOURCEMM14)
    48 	INCLUDE += -I$(HL2PUB)/dlls
    49 	SRCDS = $(SRCDS_BASE)
    50 	BINARY = sourcemod.1.ep1.so
    51 endif
    52 ifeq "$(ENGINE)" "orangebox"
    53 	HL2SDK = $(HL2SDK_OB)
    54 	HL2PUB = $(HL2SDK_OB)/public
    55 	HL2LIB = $(HL2SDK)/linux_sdk
    56 	CFLAGS += -DORANGEBOX_BUILD
    57 	METAMOD = $(SOURCEMM16)
    58 	INCLUDE += -I$(HL2PUB)/game/server
    59 	SRCDS = $(SRCDS_BASE)/orangebox
    60 	BINARY = sourcemod.2.ep2.so
    61 endif
    62 ifeq "$(BINARY)" ""
    63 	echo "You must supply ENGINE=orangebox or ENGINE=original"
    64 	false
    65 endif
    66 
    67 LINK += $(HL2LIB)/tier1_i486.a $(HL2LIB)/mathlib_i486.a vstdlib_i486.so \
    68 	tier0_i486.so -lpthread -static-libgcc
    69 
    70 INCLUDE_SMSDK = -I$(SMSDK)/public -I$(SMSDK)/public/sourcepawn -I$(SMSDK)/public/extensions 
    71 
    72 INCLUDE += -I. -I.. -I$(HL2PUB) -I$(HL2PUB)/dlls -I$(HL2PUB)/engine -I$(HL2PUB)/tier0 -I$(HL2PUB)/tier1 \
    73 	-I$(HL2PUB)/vstdlib -I$(HL2SDK)/tier1 -I$(METAMOD) -I$(METAMOD)/sourcehook -I$(METAMOD)/sourcemm \
    74 	-I$(HL2PUB)/mathlib -Isystems $(INCLUDE_SMSDK)
    75 
    76 SM16_INCLUDE = -I. -I.. -I$(SOURCEMM16)/sourcehook $(INCLUDE_SMSDK)
    77 
    78 ifeq "$(DEBUG)" "true"
    79 	BIN_DIR = Debug.$(ENGINE)
    80 	CFLAGS += $(DEBUG_FLAGS)
    81 else
    82 	BIN_DIR = Release.$(ENGINE)
    83 	CFLAGS += $(OPT_FLAGS)
    84 endif
    85 
    86 GCC_VERSION := $(shell $(CPP) -dumpversion >&1 | cut -b1)
    87 
    88 CFLAGS += -D_LINUX -DNDEBUG -Dstricmp=strcasecmp -D_stricmp=strcasecmp -D_strnicmp=strncasecmp \
    89 	-Dstrnicmp=strncasecmp -D_snprintf=snprintf -D_vsnprintf=vsnprintf -D_alloca=alloca \
    90 	-Dstrcmpi=strcasecmp -Wall -Wno-uninitialized -Werror -mfpmath=sse -msse \
    91 	-DSOURCEMOD_BUILD -DSM_DEFAULT_THREADER -m32
    92 CPPFLAGS = -Wno-non-virtual-dtor -fno-exceptions -fno-rtti
    93 
    94 ifeq "$(GCC_VERSION)" "4"
    95 	CFLAGS += $(GCC4_FLAGS)
    96 	CPPFLAGS += $(GCC4_CPP_FLAGS)
    97 endif
    98 
    99 OBJ_LINUX := $(OBJECTS:%.cpp=$(BIN_DIR)/%.ox)
   100 OBJ_LINUX_C := $(OBJECTS_C:%.c=$(BIN_DIR)/%.oc)
   101 OBJ_LINUX_SM16 := $(OBJECTS_SM16:%.cpp=$(BIN_DIR)/%.ok)
   102 
   103 $(BIN_DIR)/%.ox: %.cpp
   104 	$(CPP) $(INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
   105 
   106 $(BIN_DIR)/%.oc: %.c
   107 	$(CPP) $(INCLUDE) $(CFLAGS) -o $@ -c $<
   108 
   109 $(BIN_DIR)/%.ok: %.cpp
   110 	$(CPP) $(SM16_INCLUDE) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
   111 
   112 all:
   113 	mkdir -p $(BIN_DIR)/systems
   114 	mkdir -p $(BIN_DIR)/vm
   115 	mkdir -p $(BIN_DIR)/zlib
   116 	mkdir -p $(BIN_DIR)/thread
   117 	ln -sf $(SRCDS)/bin/vstdlib_i486.so vstdlib_i486.so
   118 	ln -sf $(SRCDS)/bin/tier0_i486.so tier0_i486.so
   119 	$(MAKE) -f Makefile sourcemod
   120 
   121 sourcemod: $(OBJ_LINUX) $(OBJ_LINUX_C) $(OBJ_LINUX_SM16)
   122 	$(CPP) $(OBJ_LINUX) $(OBJ_LINUX_C) $(OBJ_LINUX_SM16) $(LINK) -m32 -shared -ldl -lm -o$(BIN_DIR)/$(BINARY)
   123 
   124 default: all
   125 
   126 clean:
   127 	rm -rf $(BIN_DIR)/*.ox
   128 	rm -rf $(BIN_DIR)/systems/*.ox
   129 	rm -rf $(BIN_DIR)/zlib/*.oc
   130 	rm -rf $(BIN_DIR)/vm/*.ox
   131 	rm -rf $(BIN_DIR)/thread/*.ox
   132 	rm -rf $(BIN_DIR)/$(BINARY)
   133