EXES=\
averages	\
statistics	\
quantiles	\
histograms	\
gsl_statistics_distributions	\
gsl_running_statistics_distributions	\
gsl_quantiles_distributions	\
gsl_running_quantiles_distributions	\
boost_accumulators_distributions	\
gsl_histograms_distributions	\
gsl_logarithmic_histograms_distributions	\

CPPFLAGS_FOR_INTERNAL_VALUE_TYPE=-DUSE_LONG_DOUBLE_AS_INTERNAL_VALUE_TYPE
#CPPFLAGS_FOR_INTERNAL_VALUE_TYPE=-UUSE_LONG_DOUBLE_AS_INTERNAL_VALUE_TYPE

CPPFLAGS=-I/opt/local/include $(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE)
CXXFLAGS=-W -Wall -O3

all: $(EXES)

gsl_running_statistics_distributions: CPPFLAGS=-I/opt/local/x86/include $(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE)
gsl_running_statistics_distributions: LDFLAGS=-L/opt/local/x86/lib
gsl_running_statistics_distributions: LDLIBS=-lgsl

gsl_statistics_distributions: LDFLAGS=-L/opt/local/lib
gsl_statistics_distributions: LDLIBS=-lgsl

gsl_running_quantiles_distributions: CPPFLAGS=-I/opt/local/x86/include $(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE)
gsl_running_quantiles_distributions: LDFLAGS=-L/opt/local/x86/lib
gsl_running_quantiles_distributions: LDLIBS=-lgsl

gsl_quantiles_distributions: LDFLAGS=-L/opt/local/lib
gsl_quantiles_distributions: LDLIBS=-lgsl

boost_accumulators_distributions: CPPFLAGS=-I/opt/local/include $(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE)

#gsl_histograms_distributions: CXX=c++
gsl_histograms_distributions: CXXFLAGS=-W -Wall -O3
#gsl_histograms_distributions: CXXFLAGS=-W -Wall -O3 -std=c++11
gsl_histograms_distributions: CPPFLAGS=-I/opt/local/x86/include $(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE)
gsl_histograms_distributions: LDFLAGS=-L/opt/local/x86/lib
gsl_histograms_distributions: LDLIBS=-lgsl

#gsl_logarithmic_histograms_distributions: CXX=c++
gsl_logarithmic_histograms_distributions: CXXFLAGS=-W -Wall -O3 -I.
#gsl_logarithmic_histograms_distributions: CXXFLAGS=-W -Wall -O3 -I. -std=c++11
gsl_logarithmic_histograms_distributions: CPPFLAGS=-I/opt/local/x86/include $(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE)
gsl_logarithmic_histograms_distributions: LDFLAGS=-L/opt/local/x86/lib
gsl_logarithmic_histograms_distributions: LDLIBS=-lgsl

clean:
	rm -f $(EXES)

check: all
	./histograms | tee outs/histograms$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out
	./quantiles | tee outs/quantiles.out
	./statistics | tee outs/statistics$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out
	./averages | tee outs/averages$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out
	./gsl_logarithmic_histograms_distributions | tee outs/gsl_logarithmic_histograms_distributions.out && diff -u outs/gsl_logarithmic_histograms_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out outs/gsl_logarithmic_histograms_distributions.out > /dev/null
	./gsl_histograms_distributions | tee outs/gsl_histograms_distributions.out && diff -u outs/gsl_histograms_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out outs/gsl_histograms_distributions.out > /dev/null
	./gsl_running_statistics_distributions | tee outs/gsl_running_statistics_distributions.out && diff -u outs/gsl_running_statistics_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out outs/gsl_running_statistics_distributions.out > /dev/null
	./gsl_statistics_distributions | tee outs/gsl_statistics_distributions.out && diff -u outs/gsl_statistics_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out outs/gsl_statistics_distributions.out > /dev/null
	./gsl_running_quantiles_distributions | tee outs/gsl_running_quantiles_distributions.out && diff -u outs/gsl_running_quantiles_distributions.out.bak outs/gsl_running_quantiles_distributions.out > /dev/null
	./gsl_quantiles_distributions | tee outs/gsl_quantiles_distributions.out && diff -u outs/gsl_quantiles_distributions.out.bak outs/gsl_quantiles_distributions.out > /dev/null
	./boost_accumulators_distributions | tee outs/boost_accumulators_distributions.out && diff -u outs/boost_accumulators_distributions.out.bak outs/boost_accumulators_distributions.out > /dev/null

update:
	./gsl_logarithmic_histograms_distributions | tee outs/gsl_logarithmic_histograms_distributions.out && diff -u outs/gsl_logarithmic_histograms_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out outs/gsl_logarithmic_histograms_distributions.out > /dev/null && true || cp -p outs/gsl_logarithmic_histograms_distributions.out outs/gsl_logarithmic_histograms_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out
	./gsl_histograms_distributions | tee outs/gsl_histograms_distributions.out && diff -u outs/gsl_histograms_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out outs/gsl_histograms_distributions.out > /dev/null && true || cp -p outs/gsl_histograms_distributions.out outs/gsl_histograms_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out
	./gsl_running_statistics_distributions | tee outs/gsl_running_statistics_distributions.out && diff -u outs/gsl_running_statistics_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out outs/gsl_running_statistics_distributions.out > /dev/null && true || cp -p outs/gsl_running_statistics_distributions.out outs/gsl_running_statistics_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out
	./gsl_statistics_distributions | tee outs/gsl_statistics_distributions.out && diff -u outs/gsl_statistics_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out outs/gsl_statistics_distributions.out > /dev/null && true || cp -p outs/gsl_statistics_distributions.out outs/gsl_statistics_distributions$(CPPFLAGS_FOR_INTERNAL_VALUE_TYPE).out
	./gsl_running_quantiles_distributions | tee outs/gsl_running_quantiles_distributions.out && diff -u outs/gsl_running_quantiles_distributions.out.bak outs/gsl_running_quantiles_distributions.out > /dev/null && true || cp -p outs/gsl_running_quantiles_distributions.out outs/gsl_running_quantiles_distributions.out.bak
	./gsl_quantiles_distributions | tee outs/gsl_quantiles_distributions.out && diff -u outs/gsl_quantiles_distributions.out.bak outs/gsl_quantiles_distributions.out > /dev/null && true || cp -p outs/gsl_quantiles_distributions.out outs/gsl_quantiles_distributions.out.bak
