Makefile 1.0 KB

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