default: build preprocessing0 preprocessing1 debugpreprocessing0 debugpreprocessing1
CXX = g++
CXXFLAGS = -g -march=native -std=c++17 -Wall -pedantic -fopenmp -O3 -Wno-ignored-attributes -pthread
LIBS = -lbsd -lboost_system -lboost_thread -pthread
FLAGS = -DBOOST_ERROR_CODE_HEADER_ONLY #-DDEBUG 
DEBUGFLAGS = -DBOOST_ERROR_CODE_HEADER_ONLY -DDEBUG 
build: ot_blinds.cpp ot_blinds.h
	g++ -DECCLVL=251 -I ~/OTExtension/extern/ENCRYPTO_utils/src/ -I ~/OTExtension/ -O3 -DNDEBUG -std=gnu++17 -o ot_blinds.cpp.o -c ot_blinds.cpp
	g++ -O3 -DNDEBUG ot_blinds.cpp.o -o OT external/libaby.a external/libencrypto_utils.a -lstdc++fs external/libotextension.a external/libencrypto_utils.a external/librelic_s.a -lpthread -l boost_system -l boost_thread -l gmp -l gmpxx -l crypto

debug: ot_blinds.cpp ot_blinds.h
	g++ -DECCLVL=251 -I ~/OTExtension/extern/ENCRYPTO_utils/src/ -I ~/OTExtension/ -O3 -g -std=gnu++17 -o ot_blinds.cpp.o -c ot_blinds.cpp
	g++ -O3 -g ot_blinds.cpp.o -o OT external/libaby.a external/libencrypto_utils.a -lstdc++fs external/libotextension.a external/libencrypto_utils.a external/librelic_s.a -lpthread -l boost_system -l boost_thread -l gmp -l gmpxx -l crypto

preprocessing0: preprocessing.cpp mpc.h block.h aes.h bitutils.h prg.h prg_aes_impl.h
	$(CXX) $(CXXFLAGS) -o preprocessing0 preprocessing.cpp $(LIBS) $(FLAGS) -DPARTY=0 -I.

preprocessing1: preprocessing.cpp mpc.h block.h aes.h bitutils.h prg.h prg_aes_impl.h
	$(CXX) $(CXXFLAGS) -o preprocessing1 preprocessing.cpp $(LIBS) $(FLAGS) -DPARTY=1 -I.

debugpreprocessing0: preprocessing.cpp mpc.h block.h aes.h bitutils.h prg.h prg_aes_impl.h
	$(CXX) $(CXXFLAGS) -o debugpreprocessing0 preprocessing.cpp $(LIBS) $(DEBUGFLAGS) -DPARTY=0 -I.

debugpreprocessing1: preprocessing.cpp mpc.h block.h aes.h bitutils.h prg.h prg_aes_impl.h
	$(CXX) $(CXXFLAGS) -o debugpreprocessing1 preprocessing.cpp $(LIBS) $(DEBUGFLAGS) -DPARTY=1 -I.

docs:
	doxygen Doxyfile

.PHONY: directories

directories: $(BINDIR)

# $(BINDIR):
# 	mkdir -p $(BINDIR)

clean:
	rm -f preprocessing1 preprocessing0
	rm ot_blinds.cpp.o
	rm OT
