# Makefile for compiling CGI-FAD software

# Decommentare il seguente per includere le informazioni di debug
#CFLAGS=-Wall -g


# Usare il seguente per non includere le informazioni di debug
CFLAGS=-Wall -O2 -fomit-frame-pointer
PGINCLUDE=/usr/local/pgsql/include
PGLIB=/usr/local/pgsql/lib
INSTALLDIR=/disk2/html/corsi/cgi-bin
OBJDIR=../obj/

all: login.cgi logout.cgi get_module.cgi check_answers.cgi report.cgi html_parser score_corrector

install: all
	install  -m 750 -o nobody -g nobody -s login.cgi $(INSTALLDIR)
	install  -m 750 -o nobody -g nobody -s logout.cgi $(INSTALLDIR)
	install  -m 750 -o nobody -g nobody -s get_module.cgi $(INSTALLDIR)
	install  -m 750 -o nobody -g nobody -s check_answers.cgi $(INSTALLDIR)
	install  -m 750 -o nobody -g nobody -s report.cgi $(INSTALLDIR)

$(OBJDIR)util.o: util.cpp
	gcc $(CFLAGS) -c util.cpp -o $(OBJDIR)util.o

$(OBJDIR)applicat.o: applicat.cpp applicat.h
	g++ $(CFLAGS) -c applicat.cpp -o $(OBJDIR)applicat.o

$(OBJDIR)login.o: login.cpp applicat.h
	g++ $(CFLAGS) -c login.cpp -I$(PGINCLUDE) -o $(OBJDIR)login.o

login.cgi: $(OBJDIR)login.o $(OBJDIR)applicat.o $(OBJDIR)util.o 
	g++ $(CFLAGS) -o login.cgi $(OBJDIR)login.o $(OBJDIR)applicat.o $(OBJDIR)util.o -lpq -lpq++ -L$(PGLIB)

$(OBJDIR)logout.o: logout.cpp applicat.h
	g++ $(CFLAGS) -c logout.cpp -I$(PGINCLUDE) -o $(OBJDIR)logout.o

logout.cgi: $(OBJDIR)logout.o $(OBJDIR)applicat.o $(OBJDIR)util.o
	g++ $(CFLAGS) -o logout.cgi $(OBJDIR)logout.o $(OBJDIR)applicat.o $(OBJDIR)util.o -lpq -lpq++ -L$(PGLIB)

$(OBJDIR)get_module.o: get_module.cpp applicat.h
	g++ $(CFLAGS) -c get_module.cpp -I$(PGINCLUDE) -o $(OBJDIR)getmodule.o

get_module.cgi: $(OBJDIR)get_module.o $(OBJDIR)applicat.o $(OBJDIR)util.o
	g++ $(CFLAGS) -o get_module.cgi $(OBJDIR)get_module.o $(OBJDIR)applicat.o $(OBJDIR)util.o -lpq -lpq++ -L$(PGLIB)

$(OBJDIR)check_answers.o: check_answers.cpp applicat.h
	g++ $(CFLAGS) -c check_answers.cpp -I$(PGINCLUDE) -o $(OBJDIR)check_answers.o

check_answers.cgi: $(OBJDIR)check_answers.o $(OBJDIR)applicat.o $(OBJDIR)util.o $(OBJDIR)questionnaire.o
	g++ $(CFLAGS) -o check_answers.cgi $(OBJDIR)check_answers.o $(OBJDIR)applicat.o $(OBJDIR)questionnaire.o $(OBJDIR)util.o -lpq -lpq++ -L$(PGLIB)

$(OBJDIR)report.o: report.cpp applicat.h
	g++ $(CFLAGS) -c report.cpp -I$(PGINCLUDE) -o $(OBJDIR)report.o

report.cgi: $(OBJDIR)report.o $(OBJDIR)applicat.o $(OBJDIR)util.o $(OBJDIR)questionnaire.o
	g++ $(CFLAGS) -o report.cgi $(OBJDIR)report.o $(OBJDIR)applicat.o $(OBJDIR)questionnaire.o $(OBJDIR)util.o -lpq -lpq++ -L$(PGLIB)

$(OBJDIR)html_parser.o: html_parser.cpp applicat.h
	g++ $(CFLAGS) -c html_parser.cpp  -o $(OBJDIR)html_parser.o

$(OBJDIR)score_corrector.o: score_corrector.cpp applicat.h
	g++ $(CFLAGS) -c score_corrector.cpp  -I$(PGINCLUDE) -o $(OBJDIR)score_corrector.o

$(OBJDIR)questionnaire.o: questionnaire.cpp questionnaire.h
	g++ $(CFLAGS) -c questionnaire.cpp -o $(OBJDIR)questionnaire.o

html_parser: $(OBJDIR)html_parser.o $(OBJDIR)applicat.o $(OBJDIR)questionnaire.o $(OBJDIR)util.o
	g++ $(CFLAGS) -o html_parser $(OBJDIR)html_parser.o $(OBJDIR)applicat.o $(OBJDIR)questionnaire.o $(OBJDIR)util.o

$(OBJDIR)score_corrector: $(OBJDIR)score_corrector.o $(OBJDIR)applicat.o $(OBJDIR)questionnaire.o $(OBJDIR)util.o
	g++ $(CFLAGS) -o score_corrector $(OBJDIR)score_corrector.o $(OBJDIR)applicat.o $(OBJDIR)questionnaire.o $(OBJDIR)util.o -lpq -lpq++ -L$(PGLIB)