#
# Half-Life mp_i386.so Makefile for Linux
#
# August 1999 by Leon Hartwig (jehannum@planethalflife.com)
# Revised February 5, 2000
#
# Based on the Q2 Makefile by Zoid
#

MODNAME=admin

ARCH=i386

#make sure this is the correct compiler for your system
CC=gcc
#CC=egcs

OBJDIR=obj
SDKSRC=$(HOME)/src/hl/hlsdk-2.1/SourceCode
METADIR=../metamod
TESTDIR=$(HOME)/test/cstrike/dlls

BASE_CFLAGS=-Dstricmp=strcasecmp -D_strnicmp=strncasecm -Dstrnicmp=strncasecmp -Dstrcmpi=strcasecmp -DLINUX


#safe optimization
#CFLAGS=$(BASE_CFLAGS) -m486 -O6 -ffast-math -funroll-loops \
# -fexpensive-optimizations -malign-loops=2  -malign-jumps=2 \
# -malign-functions=2 -Wall

# full debug flags
#CFLAGS=$(BASE_CFLAGS) -O2 -m486
#full optimization (WONT WORK WITH omit-frame-pointer !!!!!)
#CFLAGS=$(BASE_CFLAGS) -m486 -O6 -ffast-math -funroll-loops \
#	-fomit-frame-pointer -fexpensive-optimizations -malign-loops=2 \
#	-malign-jumps=2 -malign-functions=2

#use these when debugging 
CFLAGS=$(BASE_CFLAGS)
CFLAGS+= -g -ggdb
CFLAGS+=-O1 -fno-thread-jumps -fno-defer-pop -fno-delayed-branch -fno-omit-frame-pointer -fkeep-static-consts


INCLUDEDIRS=-I$(SDKSRC)/engine -I$(SDKSRC)/common -I$(SDKSRC)/pm_shared -I$(SDKSRC)/dlls -I../linux -I. -I$(METADIR)

LDFLAGS=-ldl -lcrypt -lm


OBJADD=   
#uncomment for mysql , linux ONLY!
#CFLAGS+= -DUSE_MYSQL -I/hdb1/home/alfred/hl_code/mysql/include 
#OBJADD=  /hdb1/home/alfred/hl_code/mysql/lib/libmysqlclient.a -lz


SHLIBEXT=so
SHLIBCFLAGS=-fPIC
SHLIBLDFLAGS=-shared

DO_CC=$(CC) -w $(CFLAGS) $(SHLIBCFLAGS) $(INCLUDEDIRS) -o $@ -c $<

#############################################################################
# SETUP AND BUILD
# GAME
#############################################################################

$(OBJDIR)/%.o: %.cpp
	$(DO_CC)

SRC = \
dll.cpp h_export.cpp util.cpp bfixed.cpp admin_commands.cpp users.cpp cbase.cpp timer.cpp #linkfunc.cpp 

OBJ=$(addprefix $(OBJDIR)/,$(subst .cpp,.o,$(SRC)))

$(MODNAME)_$(ARCH).$(SHLIBEXT) : neat $(OBJ)
	$(CC) $(CFLAGS) $(SHLIBLDFLAGS) $(LDFLAGS) -o $@ $(OBJ) $(OBJADD) 

neat:
	- if [ ! -d $(OBJDIR) ]; then mkdir $(OBJDIR); fi
clean:
	-rm -f $(OBJ)
	-rm -f $(MODNAME)_$(ARCH).$(SHLIBEXT)
spotless: clean
	-rmdir $(OBJDIR)
depend:
	$(CC) -MM $(INCLUDEDIRS) $(SRC)

test: $(TESTDIR)/mm_admin.so


$(TESTDIR)/mm_admin.so: $(MODNAME)_$(ARCH).$(SHLIBEXT)
	install $< $@

dlls: ../dlls/mm_admin.so

../dlls/mm_admin.so: $(MODNAME)_$(ARCH).$(SHLIBEXT)
	install $< $@

win32 snap:
cleanall: clean
