Makefile 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. AR = ar cru
  2. FC = gfortran
  3. FFLAGS = -Ofast -fopenmp -march=native -Wall
  4. CXX = g++
  5. CXXFLAGS = -Ofast -fopenmp -march=native -Wall -std=c++11 # need C++11
  6. #CXXFLAGS += -DSCTL_HAVE_SVML -mkl # enable SVML with FC=ifort and CXX=icpc
  7. #CXXFLAGS += -DSCTL_MEMDEBUG # Enable memory checks
  8. CXXFLAGS += -DSCTL_PROFILE=5 -DSCTL_VERBOSE # Enable profiling
  9. LDLIBS = -L$(LIBDIR) -lkernels -lstdc++
  10. RM = rm -f
  11. MKDIRS = mkdir -p
  12. INCDIR = ./include
  13. SRCDIR = ./src
  14. OBJDIR = ./obj
  15. LIBDIR = ./lib
  16. BINDIR = ./bin
  17. TARGET_LIB = $(LIBDIR)/libkernels.a
  18. TARGET_BIN = \
  19. $(BINDIR)/test-fortran \
  20. $(BINDIR)/test-cpp
  21. all : $(TARGET_LIB) $(TARGET_BIN)
  22. $(BINDIR)/%: $(SRCDIR)/%.f90 $(TARGET_LIB)
  23. -@$(MKDIRS) $(dir $@)
  24. $(FC) $(FFLAGS) -I$(INCDIR) $^ $(LDLIBS) -o $@
  25. $(BINDIR)/%: $(SRCDIR)/%.cpp $(TARGET_LIB)
  26. -@$(MKDIRS) $(dir $@)
  27. $(CXX) $(CXXFLAGS) -I$(INCDIR) $^ $(LDLIBS) -o $@
  28. $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
  29. -@$(MKDIRS) $(dir $@)
  30. $(CXX) $(CXXFLAGS) -I$(INCDIR) -c $^ -o $@
  31. $(LIBDIR)/%.a: $(OBJDIR)/%.o
  32. -@$(MKDIRS) $(dir $@)
  33. $(AR) $@ $^
  34. ranlib $@
  35. clean:
  36. $(RM) -r $(BINDIR)/* $(LIBDIR)/* $(OBJDIR)/*