BLOSSOM_DIR := blossom5-v2.05.src BLOSSOM_DIRS := $(BLOSSOM_DIR) $(BLOSSOM_DIR)/MinCost $(BLOSSOM_DIR)/GEOM BLOSSOM_SOURCES := $(filter-out $(BLOSSOM_DIR)/example.cpp, $(foreach dir, $(BLOSSOM_DIRS), $(wildcard $(dir)/*.cpp))) BLOSSOM_OBJS := $(patsubst %.cpp, %.o, $(BLOSSOM_SOURCES)) CFLAGS := -std=c++20 -stdlib=libc++ -flto -fopenmp -O3 -Os -march=native -mtune=native -D_NDEBUG -DPERFECT_MATCHING_DOUBLE CXX = clang++ LD = ld.lld LIBS := -lrt all: excitation order uniform free_energy free_energy: free_energy.cpp $(BLOSSOM_DIR)/blossom5.o rbmp.hpp $(CXX) $(CFLAGS) $(BLOSSOM_DIR)/blossom5.o free_energy.cpp -o $@ uniform: uniform.cpp $(BLOSSOM_DIR)/blossom5.o rbmp.hpp $(CXX) $(CFLAGS) $(BLOSSOM_DIR)/blossom5.o uniform.cpp -o $@ order: order.cpp $(BLOSSOM_DIR)/blossom5.o rbmp.hpp $(CXX) $(CFLAGS) $(BLOSSOM_DIR)/blossom5.o order.cpp -o $@ excitation: excitation.cpp $(BLOSSOM_DIR)/blossom5.o $(CXX) $(CFLAGS) $(BLOSSOM_DIR)/blossom5.o excitation.cpp -o $@ $(BLOSSOM_DIR)/blossom5.o: ${BLOSSOM_OBJS} $(LD) -r -o $@ ${BLOSSOM_OBJS} .cpp.o: $(CXX) $(CFLAGS) $< -c -o $@ clean: rm -f ${BLOSSOM_OBJS} $(BLOSSOM_DIR)/blossom5.o rbmp