 #
# $Id: Makefile,v 1.10 2003/03/03 23:18:48 dredd Exp $
#
# A GNU Makefile - for Hammerhead
#
# $Source: /cvsroot/hammerhead/hammerhead/src/Makefile,v $
# $Revision: 1.10 $
# $Date: 2003/03/03 23:18:48 $
# $State: Exp $
#
# Author: Geoff Wong
#

include ../hammer.mk
include ../vsn.mk
#
# Target
#

TARGET=hammerhead

#
# Compiler and install stuff
#

#CC=g++ -pedantic
CC=g++ -O2 -fomit-frame-pointer -DHAMMER_VSN=\"$(HAMMER_VSN)\"
INSTALL=install

#
# Some operating system dependent trickery
#

OS=$(shell uname)
OBJPATH=obj/$(OS)/
DEFS=-D_REENTRANT -D$(OS)

#
# Libs
#

ifeq ($(OS),FreeBSD) 
# assumes > v4
	LIBS=$(SSL_LIB_PATH) $(SSL_LIB)
	INCLUDE= -I. -I/usr/local/include $(SSL_INCLUDE)
	CFLAGS=-g -Wall -D_THREAD_SAFE -DSA_LEN_IN_SOCKADDR -DHAVE_SSL -DHAVE_OPENSSL $(INCLUDE)
endif

ifeq ($(OS),Linux)
# Redhat & Mandrake > v6
	LIBS=$(SSL_LIB_PATH) -lc -ldl -lpthread $(SSL_LIB)
	INCLUDE=$(SSL_INCLUDE)
	CFLAGS=-g -Wall $(INCLUDE)
endif

ifeq ($OS,SunOS)
	LIBS=$(SSL_LIB_PATH) -lsocket -lnsl -lc -ldl -lpthread $(SSL_LIB) 
	INCLUDE=$(SSL_INCLUDE)
	CFLAGS=-g -Wall $(INCLUDE)
endif
 
#
# Hammerhead
#

HSRC= config.cc hammerhead.cc if.cc \
	scenario.cc str.cc thread.cc session.cc statistics.cc hrtime.cc \
	spinlock.cc connection.cc reader.cc cmdline.cc

#
# Objects
#

HOBJ:=$(HSRC:%.cc=$(OBJPATH)%.o)

first: depend
	$(MAKE) all

all: $(TARGET)

bin: $(TARGET)
	cp ../bin/$(OS)/$(TARGET) 

echo :
	echo $(HOBJ)
	echo $(HSRC)

$(HOBJ) : $(OBJPATH)%.o: %.cc
	$(CC) $(PROF) -c $(DEFS) $(CFLAGS) $< -o $@

install: $(TARGET)
	$(INSTALL) -m 0755 $(TARGET) $(BINDIR) 
	-mkdir -p /etc/hammerhead
	-$(INSTALL) -m 0644 ../doc/test.conf /etc/hammerhead/hh.conf
	-$(INSTALL) -m 0644 ../doc/root.scn /etc/hammerhead/root.scn
	-$(INSTALL) -m 0644 ../doc/post.scn /etc/hammerhead/post.scn

$(TARGET): $(HOBJ)
	$(CC) $(PROF) -o $(TARGET) $(DEFS) $(CFLAGS) $^ $(LIBS)

tags: $(HSRC) 
	ctags $^

clean:
	rm -f $(HOBJ) $(TARGET)

proper:
	rm -f $(TARGET) $(HOBJ) 

.PHONY: 

depend: sdepend 
	rm -f depend.tmp
	@echo Dependencies Rebuilt

sdepend: $(HSRC) 
	$(CC) -MM $(CFLAGS) $(DEFS) $^ > depend.tmp
#	sed -e "s/^.*:/$(HACKPATH)&/" depend.tmp > $(OBJPATH).sdepend
	sed -e "s+^.*:+$(OBJPATH)&+" depend.tmp > $(OBJPATH).sdepend

-include $(OBJPATH).sdepend
