#-------------------------------------------------------------------# #This is the Makefile for the peridynamics quasistatic solver #with autodependency generation. #Developed by Rico Morasata #-------------------------------------------------------------------# #-------------------------------------------------------------------# #Define executable #-------------------------------------------------------------------# EXEC := solver #-------------------------------------------------------------------# #Define constant #-------------------------------------------------------------------# RM := rm -f #-------------------------------------------------------------------# #Define directories #-------------------------------------------------------------------# SRCDIR := sources HDRDIR := interfaces SRCEXT := cpp #-------------------------------------------------------------------# #Define directories for object and dependency files #-------------------------------------------------------------------# OBJDIR := .o DEPDIR = .d #-------------------------------------------------------------------# #Generate source files list #-------------------------------------------------------------------# SRCS := $(wildcard $(SRCDIR)/*.$(SRCEXT)) #-------------------------------------------------------------------# #Generate object and dependency files #-------------------------------------------------------------------# OBJS := $(patsubst %, $(OBJDIR)/%.o, $(basename $(SRCS))) DEPS := $(patsubst %, $(DEPDIR)/%.d, $(basename $(SRCS))) $(shell mkdir -p $(dir $(OBJS)) >/dev/null) $(shell mkdir -p $(dir $(DEPS)) >/dev/null) #-------------------------------------------------------------------# #Define compiler and library flags #-------------------------------------------------------------------# CC := icc CXX := icpc LD := icpc CXXFLAGS := -std=c++14 -DMKL_ILP64 CPPFLAGS := -Wall -Wextra -g -O3 -fopenmp -I$(HDRDIR) -I${MKLROOT}/include LDFLAGS := -L$(MKLROOT)/lib/intel64 LDLIBS = -lboost_iostreams -lboost_system -lboost_filesystem -larmadillo -fopenmp \ -Wl,--no-as-needed -lmkl_intel_ilp64 -lmkl_intel_thread -lmkl_core -liomp5 \ -lpthread -lm -ldl #LDLIBS = -lboost_iostreams -lboost_system -lboost_filesystem -larmadillo -fopenmp \ -Wl,--no-as-needed -lmkl_intel_ilp64 -lmkl_sequential -lmkl_core \ -lpthread -lm -ldl #-------------------------------------------------------------------# #Define dependencies #-------------------------------------------------------------------# DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td #-------------------------------------------------------------------# #Define compiling and linking commands #-------------------------------------------------------------------# COMPILE.c = $(CC) $(DEPFLAGS) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@ COMPILE.cc = $(CXX) $(DEPFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c -o $@ LINK.o = $(LD) $(LDFLAGS) $(TARGET_ARCH) -o $@ POSTCOMPILE = mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d #-------------------------------------------------------------------# #Define rules #-------------------------------------------------------------------# all: $(EXEC) .PHONY: clean clean: $(RM) -r $(OBJDIR) $(DEPDIR) .PHONY: distclean distclean: clean $(RM) $(EXEC) $(EXEC): $(OBJS) #$(LD) $(LDFLAGS) $(TARGET_ARCH) -o $@ $^ $(LDLIBS) $(LINK.o) $^ $(LDLIBS) $(OBJDIR)/%.o: %.c $(OBJDIR)/%.o: %.c $(DEPDIR)/%.d $(COMPILE.c) $< $(POSTCOMPILE) $(OBJDIR)/%.o: %.cpp $(OBJDIR)/%.o: %.cpp $(DEPDIR)/%.d $(COMPILE.cc) $< $(POSTCOMPILE) $(OBJDIR)/%.o: %.cc $(OBJDIR)/%.o: %.cc $(DEPDIR)/%.d $(COMPILE.cc) $< $(POSTCOMPILE) $(OBJDIR)/%.o: %.cxx $(OBJDIR)/%.o: %.cxx $(DEPDIR)/%.d $(COMPILE.cc) $< $(POSTCOMPILE) .PRECIOUS: $(DEPDIR)/%.d $(DEPDIR)/%.d: ; -include $(DEPS)