EXE = ./bin/class
SRC = ./src
SERVLET_SRC = $(SRC)/servlets
SERVLET_EXE = $(EXE)/servlets
UTIL_SRC = $(SRC)/util
UTIL_EXE = $(EXE)/util

SERV_CLASS_FILES = $(SERVLET_EXE)/AddBids.class $(SERVLET_EXE)/AdminServlet.class $(SERVLET_EXE)/TakeRevParam.class $(SERVLET_EXE)/AllPapers.class $(SERVLET_EXE)/AssignApplet.class $(SERVLET_EXE)/AssignPapers.class $(SERVLET_EXE)/AuthorServlet.class $(SERVLET_EXE)/Change.class $(SERVLET_EXE)/ChangePassword.class  $(SERVLET_EXE)/ComadServlet.class $(SERVLET_EXE)/CreateMailingList.class  $(SERVLET_EXE)/CreateReviewer.class $(SERVLET_EXE)/Download.class $(SERVLET_EXE)/EditMailingList.class $(SERVLET_EXE)/FirstLoginServlet.class $(SERVLET_EXE)/GetAbstract.class $(SERVLET_EXE)/Jdbcapp.class $(SERVLET_EXE)/LoginServlet.class $(SERVLET_EXE)/LogoutServlet.class $(SERVLET_EXE)/MailPassword.class $(SERVLET_EXE)/MailServlet.class $(SERVLET_EXE)/MessageBoard.class $(SERVLET_EXE)/PaperPage.class $(SERVLET_EXE)/PaperRegistration.class $(SERVLET_EXE)/ParticipantServlet.class $(SERVLET_EXE)/PostMessage.class $(SERVLET_EXE)/QueryPage.class $(SERVLET_EXE)/QueryParticipant.class $(SERVLET_EXE)/QueryReviewer.class $(SERVLET_EXE)/Reviewer1Servlet.class $(SERVLET_EXE)/Reviewer2Servlet.class $(SERVLET_EXE)/ReviewerServlet.class $(SERVLET_EXE)/SelectPaper.class $(SERVLET_EXE)/StandardQuery.class $(SERVLET_EXE)/SubmitReview.class $(SERVLET_EXE)/UpdateBids.class $(SERVLET_EXE)/Upload.class $(SERVLET_EXE)/ShiftDeadline.class
SERV_SRC_FILES = $(SERVLET_SRC)/AddBids.java $(SERVLET_SRC)/AdminServlet.java $(SERVLET_SRC)/TakeRevParam.java $(SERVLET_SRC)/AllPapers.java $(SERVLET_SRC)/AssignApplet.java $(SERVLET_SRC)/AssignPapers.java $(SERVLET_SRC)/AuthorServlet.java $(SERVLET_SRC)/Change.java $(SERVLET_SRC)/ChangePassword.java  $(SERVLET_SRC)/ComadServlet.java $(SERVLET_SRC)/CreateMailingList.java  $(SERVLET_SRC)/CreateReviewer.java $(SERVLET_SRC)/Download.java $(SERVLET_SRC)/EditMailingList.java $(SERVLET_SRC)/FirstLoginServlet.java $(SERVLET_SRC)/GetAbstract.java $(SERVLET_SRC)/Jdbcapp.java $(SERVLET_SRC)/LoginServlet.java $(SERVLET_SRC)/LogoutServlet.java $(SERVLET_SRC)/MailPassword.java $(SERVLET_SRC)/MailServlet.java $(SERVLET_SRC)/MessageBoard.java $(SERVLET_SRC)/PaperPage.java $(SERVLET_SRC)/PaperRegistration.java $(SERVLET_SRC)/ParticipantServlet.java $(SERVLET_SRC)/PostMessage.java $(SERVLET_SRC)/QueryPage.java $(SERVLET_SRC)/QueryParticipant.java $(SERVLET_SRC)/QueryReviewer.java $(SERVLET_SRC)/Reviewer1Servlet.java $(SERVLET_SRC)/Reviewer2Servlet.java $(SERVLET_SRC)/ReviewerServlet.java $(SERVLET_SRC)/SelectPaper.java $(SERVLET_SRC)/StandardQuery.java $(SERVLET_SRC)/SubmitReview.java $(SERVLET_SRC)/UpdateBids.java $(SERVLET_SRC)/Upload.java $(SERVLET_SRC)/ShiftDeadline.java

UTIL_CLASS_FILES = $(UTIL_EXE)/DB.class $(UTIL_EXE)/Mail.class $(UTIL_EXE)/ShowStuff.class $(UTIL_EXE)/Gen.class $(UTIL_EXE)/MultipartRequest.class $(UTIL_EXE)/HttpMessage.class
UTIL_SRC_FILES = $(UTIL_SRC)/DB.java $(UTIL_SRC)/Mail.java $(UTIL_SRC)/ShowStuff.java $(UTIL_SRC)/Gen.java $(UTIL_SRC)/MultipartRequest.java $(UTIL_SRC)/HttpMessage.java

all : exe compile

exe : 
	@if test ! -d $(EXE); then\
		mkdir -p $(EXE);\
		echo "made dir" $(EXE);\
	fi;
	
	@if test ! -d $(UTIL_EXE); then\
		mkdir -p $(UTIL_EXE);\
		echo "made dir" $(UTIL_EXE);\
	fi;
	
	@if test ! -d $(SERVLET_EXE); then\
		mkdir -p $(SERVLET_EXE);\
		echo "made dir" $(SERVLET_EXE);\
	fi;

compile : $(EXE)/Configure.class $(UTIL_EXE)/Config.class $(UTIL_CLASS_FILES) $(SERV_CLASS_FILES) $(EXE)/GenerateHtml.class 

$(EXE)/Configure.class : $(SRC)/Configure.java
	@jikes -d $(EXE) $(SRC)/Configure.java
	@echo "compiled Configure.java"
	@CLASSPATH=$(EXE):$$CLASSPATH java Configure
	@echo "made Config.java"

$(UTIL_EXE)/Config.class : $(UTIL_SRC)/Config.java
	@CLASSPATH=$(EXE):$$CLASSPATH jikes -d $(EXE) $(UTIL_SRC)/Config.java
	@echo "compiled Config.java"

$(UTIL_CLASS_FILES) : $(UTIL_SRC_FILES)
	@CLASSPATH=$(EXE):$$CLASSPATH jikes -d $(EXE) $(UTIL_SRC)/*.java
	@echo "done with util files."

$(SERV_CLASS_FILES) : $(SERV_SRC_FILES)
	@CLASSPATH=$(EXE):$$CLASSPATH jikes -d $(SERVLET_EXE) $(SERVLET_SRC)/*.java
	@echo "compiled all servlet files."

$(EXE)/GenerateHtml.class : $(SRC)/GenerateHtml.java
	@CLASSPATH=$$CLASSPATH:$(EXE) jikes -d $(EXE) $(SRC)/GenerateHtml.java
	@echo "compiled GenerateHtml.java"
	@CLASSPATH=$(EXE):$$CLASSPATH; cd $(EXE); java GenerateHtml
	@echo "made all html files."

clean : 
	@echo "Cleaning up things...."
	@rm -Rf $(EXE) 2> /dev/null
	@echo "Done."
