AR = ar cru FC = mpif90 -lmpi_cxx FFLAGS = -O3 -g -rdynamic -fopenmp -march=native -Wall CXX = mpic++ CXXFLAGS = -std=c++11 -fopenmp -Wall -Wfloat-conversion # need C++11 and OpenMP #Optional flags #CXXFLAGS += -O0 # debug build CXXFLAGS += -O3 -march=native -DNDEBUG # release build ifeq ($(shell uname -s),Darwin) CXXFLAGS += -g -rdynamic -Wl,-no_pie # for stack trace (on Mac) else CXXFLAGS += -g -rdynamic # for stack trace endif #CXXFLAGS += -DSCTL_MEMDEBUG # Enable memory checks CXXFLAGS += -DSCTL_PROFILE=5 -DSCTL_VERBOSE # Enable profiling CXXFLAGS += -DSCTL_HAVE_MPI #use MPI LDLIBS = -L$(LIBDIR) -ltree -lstdc++ RM = rm -f MKDIRS = mkdir -p INCDIR = ./include SRCDIR = ./src OBJDIR = ./obj LIBDIR = ./lib BINDIR = ./bin TARGET_LIB = $(LIBDIR)/libtree.a TARGET_BIN = \ $(BINDIR)/test-fortran \ $(BINDIR)/test-cpp all : $(TARGET_LIB) $(TARGET_BIN) $(BINDIR)/%: $(SRCDIR)/%.f90 $(TARGET_LIB) -@$(MKDIRS) $(dir $@) $(FC) $(FFLAGS) -I$(INCDIR) $^ $(LDLIBS) -o $@ $(BINDIR)/%: $(SRCDIR)/%.cpp $(TARGET_LIB) -@$(MKDIRS) $(dir $@) $(CXX) $(CXXFLAGS) -I$(INCDIR) $^ $(LDLIBS) -o $@ $(OBJDIR)/%.o: $(SRCDIR)/%.cpp -@$(MKDIRS) $(dir $@) $(CXX) $(CXXFLAGS) -I$(INCDIR) -c $^ -o $@ $(LIBDIR)/%.a: $(OBJDIR)/%.o -@$(MKDIRS) $(dir $@) $(AR) $@ $^ ranlib $@ clean: $(RM) -r $(BINDIR)/* $(LIBDIR)/* $(OBJDIR)/* $(RM) -f *~ */*~ */*/*~