all: bin/clien bin/tm bin/bench bin/check bin/vacuum

bin/clien: src/clitran.c
	gcc src/clitran.c -o bin/clien -lm;

bin/tm: src/tm.c
	ecpg src/tm.c -o src/pru.c;
	gcc -I /opt/tools/include/postgresql -o bin/tm src/pru.c -L /opt/tools/lib  -lecpg -lpq -lm;
	rm -rf src/pru.c;

bin/bench: src/bench.c
	ecpg src/bench.c -o src/pru.c;
	gcc -I /opt/tools/include/postgresql -o bin/bench src/pru.c -L /opt/tools/lib -lecpg -lpq -lm;
	rm -rf src/pru.c;

bin/check: src/check.c
	ecpg src/check.c -o src/pru.c;
	gcc -I /opt/tools/include/postgresql -o bin/check src/pru.c -L /opt/tools/lib -lecpg -lpq -lm;
	rm -rf src/pru.c;

bin/vacuum: src/vacuum.c
	ecpg src/vacuum.c -o src/pru.c;
	gcc -I /opt/tools/include/postgresql -o bin/vacuum src/pru.c -L /opt/tools/lib -lecpg -lpq -lm;
	rm -rf src/pru.c;

install:
	@if [ -d /tools/ ] ; then \
		if [ ! -d /tools/bin/ ]; then \
			mkdir /tools/bin/; \
		fi; \
		cp bin/check /tools/bin; \
		cp bin/tm /tools/bin; \
		cp bin/clien /tools/bin; \
		cp bin/bench /tools/bin; \
		cp bin/vacuum /tools/bin; \
		if [ ! -d /tools/var ]; then \
			mkdir /tools/var; \
		fi; \
		if [ ! -d /tools/var/tpcc ]; then \
			mkdir /tools/var/tpcc; \
		fi; \
	else \
		echo "Error: directory /tools not exists"; \
		false; \
	fi;

uninstall:
	@if [ -f /tools/bin/check ]; then \
		"rm" /tools/bin/check; \
	else \
		echo "Error: file /tools/check can't be removed"; \
	fi
	@if [ -f /tools/bin/tm ]; then \
		"rm" /tools/bin/tm; \
	else \
		echo "Error: file /tools/tm can't be removed"; \
	fi
	@if [ -f /tools/bin/clien ]; then \
		"rm" /tools/bin/clien; \
	else \
		echo "Error: file /tools/bench can't be removed"; \
	fi
	@if [ -f /tools/bin/bench ]; then \
		"rm" /tools/bin/bench; \
	else \
		echo "Error: file /tools/bench can't be removed"; \
	fi
	@if [ -f /tools/bin/vacuum ]; then \
		"rm" /tools/bin/vacuum; \
	else \
		echo "Error: file /tools/vacuum can't be removed"; \
	fi

clean:
	@if [ -f bin/bench ]; then \
		rm bin/bench; \
	fi
	@if [ -f bin/tm ]; then \
		rm bin/tm; \
	fi
	@if [ -f bin/clien ]; then \
		rm bin/clien; \
	fi
	@if [ -f bin/check ]; then \
		rm bin/check; \
	fi
	@if [ -f bin/vacuum ]; then \
		rm bin/vacuum; \
	fi
