##
# Makefile for ypops
##

# INSTALL_DIR is where ypops executable and shell script should be
# 	      installed.
# RUN_DIR     is where ypops runs - this location will be checked
#             for a current ypopsrc file during make install.
INSTALL_DIR 	= /usr/local/bin
RUN_DIR 	= /usr/local/ypops
MIMEPP 		= ../lib/mimepp-1.3.3
# The *INC and *LIB directories below don't matter for Linux unless you
# compile any of them from sources - required for other flavors of Unix
CURL_INC 	= /usr/local/include
SSL_INC 	= /usr/local/ssl/include
CURL_LIB 	= /usr/local/lib
SSL_LIB 	= /usr/local/ssl/lib
# Linux doesn't have libsocket, Solaris and other flavors of Unix do
#SOCKET_LIB=-lsocket
SOCKET_LIB=

MIME_EMAILEXAMPLES = $(MIMEPP)/examples/email
SHELL=/bin/sh # sh required for make - do NOT change!

EMAIL_OBJS = EmailMessage.o EmailAttach.o EmailAttachList.o EmailText.o \
	     EmailDate.o EmailAddress.o EmailAddressList.o

CXX= g++ -g -fkeep-inline-functions -fno-default-inline
AR=ar
DEFS= -D_REENTRANT
PROGNAME= ypops
INCLUDES=  -I../lib/re_lib -I$(MIMEPP)/src -I$(MIME_EMAILEXAMPLES) -I$(CURL_INC) -I$(SSL_INC)

LIBS= ../lib/re_lib/libre_lib.a $(MIMEPP)/rel/libmimepp_core.a $(MIMEPP)/rel/libmimepp_util.a $(MIMEPP)/rel/libmimepp_net.a -lstdc++ -lpthread -lnsl -ldl ${SOCKET_LIB} -lz -L$(CURL_LIB) -L$(SSL_LIB) -lcurl -lssl -lcrypto

# replace -g with -O in order to optimize

DEFINES= $(DEFS) $(INCLUDES)
CFLAGS= -g $(DEFINES)
CXXFLAGS= $(DEFINES)
REL_CXX_FLAGS = -DDW_PRODUCTION_VERSION -D_REENTRANT -fpic -fexceptions -I$(MIMEPP)/src


SRCS = DataHolder.cpp Email.cpp HttpClient.cpp HttpClientResponse.cpp HttpSession.cpp LogFile.cpp ServiceClient.cpp SmtpListener.cpp  WebBrowser.cpp YPOPs.cpp YahooSessionCache.cpp YahooStuff.cpp vsscanf.cpp 

OBJS = DataHolder.o Email.o HttpClient.o HttpClientResponse.o HttpSession.o LogFile.o ServiceClient.o SmtpListener.o WebBrowser.o YPOPs.o YahooSessionCache.o YahooStuff.o vsscanf.o $(EMAIL_OBJS)

.c.o:
	rm -f $@
	$(CC) $(CFLAGS) -c $*.c

.cpp.o:
	rm -f $@
	$(CXX) $(CXXFLAGS) -c $*.cpp

all: 
	rm -f $(PROGNAME)
	make mimelib;make libre_lib;make $(PROGNAME)

$(RUN_DIR):
	mkdir $@

$(INSTALL_DIR):
	mkdir $@

install:	$(RUN_DIR) $(INSTALL_DIR)
	if [ ! -s $(RUN_DIR)/ypopsrc ]; then \
	    echo cp ypops_samplerc $(RUN_DIR)/ypopsrc; \
	    cp ypops_samplerc $(RUN_DIR)/ypopsrc; \
	fi
	if [ `grep -c YPOPS_IP_ADDR $(RUN_DIR)/ypopsrc` -eq 0 ]; then \
	    echo cp ypops_samplerc $(RUN_DIR)/ypopsrc; \
	    cp ypops_samplerc $(RUN_DIR)/ypopsrc; \
	fi
	# more portabe dos2unix... just remove ^M's from file
	# replace /usr/local/bin with actual INSTALL_DIR
	tr -d '\015' < ypops.sh | \
	sed 's,/usr/local/bin,$(INSTALL_DIR),' > ypops.sh.new
	if ! cmp -s ypops.sh ypops.sh.new; then \
	    echo fixed ypops.sh ; \
	    mv ypops.sh.new ypops.sh; \
	else \
	    rm ypops.sh.new; \
	fi
	@echo installing ypops executable and script to $(INSTALL_DIR)..
	chmod 755 $(PROGNAME)*
	cp -p $(PROGNAME) $(INSTALL_DIR)/.
	cp -p ypops.sh $(INSTALL_DIR)/.

$(PROGNAME) : $(OBJS)
	$(CXX) $(CFLAGS) -o $(PROGNAME) $(OBJS) $(LIBS)

clean:
	rm -f $(OBJS) $(PROGNAME) core

libre_lib:
	cd ../lib/re_lib;make -f makefile.unix

mimelib:
	cd $(MIMEPP);make -f makefile-unix rel_lib;cd $(YPSRCDIR)

EmailMessage.o : $(MIME_EMAILEXAMPLES)/EmailMessage.cpp
	rm -f $@
	$(CXX) -c $(REL_CXX_FLAGS) $(MIME_EMAILEXAMPLES)/$*.cpp -o $*.o

EmailAttach.o : $(MIME_EMAILEXAMPLES)/EmailAttach.cpp
	rm -f $@
	$(CXX) -c $(REL_CXX_FLAGS) $(MIME_EMAILEXAMPLES)/$*.cpp -o $*.o

EmailAttachList.o : $(MIME_EMAILEXAMPLES)/EmailAttachList.cpp
	rm -f $@
	$(CXX) -c $(REL_CXX_FLAGS) $(MIME_EMAILEXAMPLES)/$*.cpp -o $*.o

EmailText.o : $(MIME_EMAILEXAMPLES)/EmailText.cpp
	rm -f $@
	$(CXX) -c $(REL_CXX_FLAGS) $(MIME_EMAILEXAMPLES)/$*.cpp -o $*.o

EmailDate.o : $(MIME_EMAILEXAMPLES)/EmailDate.cpp
	rm -f $@
	$(CXX) -c $(REL_CXX_FLAGS) $(MIME_EMAILEXAMPLES)/$*.cpp -o $*.o

EmailAddress.o : $(MIME_EMAILEXAMPLES)/EmailAddress.cpp
	rm -f $@
	$(CXX) -c $(REL_CXX_FLAGS) $(MIME_EMAILEXAMPLES)/$*.cpp -o $*.o

EmailAddressList.o : $(MIME_EMAILEXAMPLES)/EmailAddressList.cpp
	rm -f $@
	$(CXX) -c $(REL_CXX_FLAGS) $(MIME_EMAILEXAMPLES)/$*.cpp -o $*.o




