HEADERS=linalg.h mat.h coxeter.h enumerate_triangle_group.h #SPECIAL_OPTIONS=-O0 -g -D_DEBUG SPECIAL_OPTIONS=-O3 -pg -g -funroll-loops -fno-inline #SPECIAL_OPTIONS=-O3 -flto -funroll-loops -Winline #SPECIAL_OPTIONS=-O3 -flto -funroll-loops -Winline -mavx512f -mavx512cd -mavx512er -mavx512pf # KNL #SPECIAL_OPTIONS= OPTIONS=-I../mps/include -L../mps/lib -pthread -m64 -std=gnu99 -D_GNU_SOURCE $(SPECIAL_OPTIONS) all: singular_values special_element singular_values_mpi convert billiard_words convert: convert.hs ghc --make -dynamic convert.hs billiard_words: billiard_words.hs ghc --make -dynamic billiard_words.hs singular_values: singular_values.o coxeter.o mat.o enumerate_triangle_group.o gcc $(OPTIONS) -o singular_values coxeter.o singular_values.o mat.o enumerate_triangle_group.o -lm -lgmp -lmps singular_values_mpi: singular_values_mpi.o coxeter.o mat.o mpicc $(OPTIONS) -o singular_values_mpi coxeter.o singular_values_mpi.o mat.o -lm -lgmp -lmps special_element: special_element.o coxeter.o linalg.o mat.o enumerate_triangle_group.o gcc $(OPTIONS) -o special_element coxeter.o linalg.o special_element.o mat.o enumerate_triangle_group.o -lm -lgmp -lmps -lgsl -lcblas singular_values.o: singular_values.c $(HEADERS) gcc $(OPTIONS) -c singular_values.c singular_values_mpi.o: singular_values_mpi.c $(HEADERS) mpicc $(OPTIONS) -c singular_values_mpi.c special_element.o: special_element.c $(HEADERS) gcc $(OPTIONS) -c special_element.c enumerate_triangle_group.o: enumerate_triangle_group.c $(HEADERS) gcc $(OPTIONS) -c enumerate_triangle_group.c linalg.o: linalg.c $(HEADERS) gcc $(OPTIONS) -c linalg.c coxeter.o: coxeter.c $(HEADERS) gcc $(OPTIONS) -c coxeter.c mat.o: mat.c $(HEADERS) gcc $(OPTIONS) -c mat.c clean: rm -f singular_values special_element singular_values_mpi coxeter.o linalg.o singular_values.o singular_values_mpi.o mat.o special_element.o convert.hi convert.o convert billiard_words.hi billiard_words.o billiard_words enumerate_triangle_group.o