#
# Define the paths of the following libs.
#


#
# Set here the location of latest tpch archive (containing dbgen and qgen) found at the tpc.org site
#
#
export TPCH_DBQGEN_ARCHIVE = tpch_archives/TPC-H_Tools_v3.0.0.zip
export MAKE_DIR = $(PWD)
#
# Usually you don't need to change anything below.
#
#export PATH=/bin:/usr/bin
#export CXXFLAGS = -O3 -g2 -Wall -Werror
export SDKLIBDIR = $(MAKE_DIR)/scripts/SDKLIBDIR
export CPPFLAGS = -I. -I$(SDKLIBDIR)/libpqxx-5.1-installed/include -L$(SDKLIBDIR)/libpqxx-5.1-installed/lib -lpqxx -L$(SDKLIBDIR)/postgresql/lib -lpq 
unexport LD_LIBRARY_PATH LD_RUN_PATH

# 
# Needed for qgen to generate the validation.sql
#
export DSS_CONFIG = $(MAKE_DIR)/dbqgen

#
# Targets
#
all: tools query_streams tpch sql acid_transactions

#
# 'make tar' or 'make install' to create TPCH.tgz
#
tar: clean all
	touch TPCH.tgz
	tar czvf TPCH.tgz --exclude "*~" --exclude "*.kdevelop" --exclude "*.kdevses" --exclude ".svn" --exclude ".bzr" --exclude "TPCH.tgz" --exclude "*/full_log2" --exclude "validation_log" --exclude "./*Verification.log" --exclude "*/log" --exclude ".git" --exclude ".vscode" --exclude "tmp" .

install: tar

clean:
	$(MAKE) -C scripts/tools clean
	$(MAKE) -C scripts/query_streams clean
	$(MAKE) -C scripts/ACID/scripts/transaction clean
	$(MAKE) -C scripts/ACID/scripts/transaction_isolation clean
	$(MAKE) -C scripts/ACID/scripts/transaction_atomicity clean
	rm -rf $(DSS_CONFIG)/dbgen_data/rf_holo
	# rm -fR $(SDKLIBDIR)
	# rm -fR dbqgen	
	# rm -f $(TPCH_DBQGEN_ARCHIVE).patch.new
	rm -f TPCH.tgz
	rm -f sql/validation.sql
	# find . -name "*~"|xargs rm -f
	rm -rf $(SDKLIBDIR)/libpqxx-5.1-installed

tools:
	unset CPPFLAGS; \
	$(MAKE) -C scripts/tools

sdk:
	if ! [ -d $(SDKLIBDIR)/libpqxx-5.1-installed ]; then \
		unset CPPFLAGS; \
                sudo yum install postgresql-devel.x86_64; \
		cd $(SDKLIBDIR) && unzip libpqxx-5.1.zip && mv libpqxx-5.1 libpqxx-5.1-installed && cd $(MAKEDIR); \
		cd $(SDKLIBDIR)/libpqxx-5.1-installed && ./configure --disable-documentation && make && sudo make install && cd $(MAKEDIR); \
	fi

query_streams: sdk
	$(MAKE) -C scripts/query_streams

acid_transactions:
	$(MAKE) -C scripts/ACID/scripts/transaction
	$(MAKE) -C scripts/ACID/scripts/transaction_isolation
	$(MAKE) -C scripts/ACID/scripts/transaction_atomicity
	
tpch: tpch_src tpch_patch
	$(MAKE) -C $(DSS_CONFIG)/ -f $(DSS_CONFIG)/makefile
	
tpch_src:
	if ! [ -d dbqgen ]; then \
		rm -fr dbqgen; \
		mkdir dbqgen; \
		unzip $(TPCH_DBQGEN_ARCHIVE) -d dbqgen; \
		rm -fR dbqgen/__MACOSX; \
		mv dbqgen/*/* dbqgen/; \
		mv dbqgen/dbgen/* dbqgen; \
		rm -fR dbqgen/dbgen; \
	fi

tpch_patch:
	if ! [ -f dbqgen/patched~ ]; then \
		dos2unix $(DSS_CONFIG)/queries/*; \
                patch -p1 --ignore-whitespace --binary < $(TPCH_DBQGEN_ARCHIVE).patch; \
                cp $(DSS_CONFIG)/makefile.suite $(DSS_CONFIG)/makefile; \
		touch dbqgen/patched~; \
	fi

sql: tpch
	cd $(DSS_CONFIG)/queries && $(DSS_CONFIG)/qgen -s 1 -c -i $(MAKE_DIR)/sql/initstream.sql -d > $(MAKE_DIR)/sql/validation.sql && cd $(MAKE_DIR)
	dos2unix sql/validation.sql

refset1: tpch
	sh $(PWD)/scripts/misc/generate_refset.sh 1

refset100: tpch
	sh $(PWD)/scripts/misc/generate_refset.sh 100

refset300: tpch
	sh $(PWD)/scripts/misc/generate_refset.sh 300
	
refset1000: tpch
	sh $(PWD)/scripts/misc/generate_refset.sh 1000
	
refset3000: tpch
	sh $(PWD)/scripts/misc/generate_refset.sh 3000
	
refset10000: tpch
	sh $(PWD)/scripts/misc/generate_refset.sh 10000

refset30000: tpch
	sh $(PWD)/scripts/misc/generate_refset.sh 30000
	
refset100000: tpch
	sh $(PWD)/scripts/misc/generate_refset.sh 100000
	
