# /// \file Makefile 
# /// Web Application Library Makefile

################################################################################
# ʹ÷

# ʹ make ɿļ
# ʹ make install ļͷļƵϵͳĿ¼
# ʹ make uninstall ɾϵͳĿ¼еĿļͷļ
# ʹ make clean ǰĿ¼ıʱļ
# ʹö̬ʱĬ£ִ make install ļװϵͳĿ¼
# Ŀʹ webapplibMakefile ݿɲο Makefile.example
# ߱ root Ȩ޵ûԽ Makefile  $(LIBPATH) ΪĿ¼
# Ŀ¼ӵִļлĻ LD_LIBRARY_PATH .

################################################################################
# ǰWEB汾 $(WEBAPPLIB_VERSION)
WEBAPPLIB_VERSION = 1.2
WEBAPPLIB_SONAME = 1

# C++ 
CXX = g++

# ѡ
CXXFLAGS = -Wall -O2 -fPIC #-s
# -Wall ʾоϢ
# -O2 Ż
# -fPIC ַ޹ش룬ɶ̬ӿ
# -s ȥԷϢСļߴ

################################################################################
# ϵͳͷļĿ¼
INCPATH = /usr/local/include/webapplib
# ϵͳļĿ¼
LIBPATH = /usr/local/lib
SYSLIB = /usr/lib

################################################################################
# Ƿ MysqlClient MysqlClient עͱ
MYSQL = yes
# MySQL ͷļ·
MYSQLINC = -I/usr/include/mysql
# MySQL ļ·Ӳ
MYSQLLIB = -L/usr/lib/mysql -lmysqlclient -lm -lz

################################################################################
# ļб
LIBS = String Encode Cgi FileSystem DateTime Template HttpClient TextFile ConfigFile Utility

# ǷMysqlClient
ifdef MYSQL
LIBS += MysqlClient
else
CXXFLAGS += -D_WEBAPPLIB_NOMYSQL
MYSQLINC :=
MYSQLLIB :=
endif

OBJS = $(foreach n,$(LIBS),wa$(n).o)
	
# ͷļб
WEBAPPINC = webapplib.h $(OBJS:%.o=%.h)
# ⾲̬ļ
WEBAPPLIB = libwebapp.a.$(WEBAPPLIB_VERSION)
# ⶯̬ӿļ
WEBAPPDLL = libwebapp.so.$(WEBAPPLIB_VERSION)
WEBAPPSO = libwebapp.so.$(WEBAPPLIB_SONAME)

################################################################################
# Ŀ
all: $(WEBAPPLIB) $(WEBAPPDLL)

# 뿪ļ
$(OBJS): %.o: %.cpp %.h
	@echo ""
	@echo "Compile $(@:%.o=%.cpp) ..."
	$(CXX) $(CXXFLAGS) -c $(@:%.o=%.cpp) $(MYSQLINC)

# ɾ̬ļ
$(WEBAPPLIB): $(OBJS)
	@echo ""
	@echo "Build $(WEBAPPLIB) ..."
	$(AR) rc $@ $(OBJS)

# ɶ̬ļ
$(WEBAPPDLL): $(OBJS)
	@echo ""
	@echo "Build $(WEBAPPDLL) ..."
	$(CXX) $(CXXFLAGS) -shared -Wl,-soname,$(WEBAPPSO) -o $@ $(OBJS)
	@echo ""
	@echo "Type \"make install\" to install webapplib"
	@echo "Type \"make uninstall\" to uninstall webapplib"
	@echo "Type \"make -f Makefile.example\" to build example"
	@echo ""

################################################################################
# ִаװ
install:
	@echo ""
	@echo "Install webapplib ..."
	@echo ""
	mkdir -p $(INCPATH)
	chmod 777 $(INCPATH)
	cp -f $(WEBAPPINC) $(INCPATH)
	cp -f $(WEBAPPLIB) $(WEBAPPDLL) $(LIBPATH)
	ln -fs $(LIBPATH)/$(WEBAPPLIB) $(LIBPATH)/libwebapp.a
	ln -fs $(LIBPATH)/$(WEBAPPDLL) $(LIBPATH)/libwebapp.so
	ln -fs $(LIBPATH)/$(WEBAPPDLL) $(LIBPATH)/$(WEBAPPSO)
	ln -fs $(LIBPATH)/$(WEBAPPLIB) $(SYSLIB)/libwebapp.a
	ln -fs $(LIBPATH)/$(WEBAPPDLL) $(SYSLIB)/libwebapp.so
	ln -fs $(LIBPATH)/$(WEBAPPDLL) $(SYSLIB)/$(WEBAPPSO)

# ִɾ
uninstall:
	@echo ""
	@echo "Uninstall webapplib ..."
	@echo ""
	for each in $(WEBAPPINC); \
	do \
		rm -f $(INCPATH)/$$each; \
	done;

	rm -f $(LIBPATH)/$(WEBAPPLIB)
	rm -f $(LIBPATH)/$(WEBAPPDLL)
	unlink $(LIBPATH)/libwebapp.a
	unlink $(LIBPATH)/libwebapp.so
	unlink $(SYSLIB)/libwebapp.a
	unlink $(SYSLIB)/libwebapp.so	
	
# ձ
clean:
	@echo ""
	@echo "Clean webapplib ..."
	@echo ""
	rm -f $(OBJS) $(WEBAPPLIB) $(WEBAPPDLL)

