12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- AR = ar cru
- FC = gfortran
- FFLAGS = -O3 -fopenmp -Wall
- CXX = g++
- CXXFLAGS = -std=c++11 -fopenmp -march=native -Wall # need C++11
- #Optional flags
- #CXXFLAGS += -O0 # debug build
- CXXFLAGS += -O3 -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
- LDLIBS = -L$(LIBDIR) -lkernels -lgfortran
- RM = rm -f
- MKDIRS = mkdir -p
- INCDIR = ./include
- SRCDIR = ./src
- OBJDIR = ./obj
- LIBDIR = ./lib
- BINDIR = ./bin
- TARGET_LIB = $(LIBDIR)/libkernels.a
- TARGET_BIN = \
- $(BINDIR)/test-fortran \
- $(BINDIR)/test-cpp
- all : $(TARGET_LIB) $(TARGET_BIN)
- $(OBJDIR)/%.o: $(SRCDIR)/%.f90
- -@$(MKDIRS) $(dir $@)
- $(FC) $(FFLAGS) -I$(INCDIR) -c $^ -o $@
- $(OBJDIR)/%.o: $(SRCDIR)/%.c
- -@$(MKDIRS) $(dir $@)
- $(CC) $(CXXFLAGS) -I$(INCDIR) -c $^ -o $@
- $(OBJDIR)/%.o: $(SRCDIR)/%.cpp
- -@$(MKDIRS) $(dir $@)
- $(CXX) $(CXXFLAGS) -I$(INCDIR) -c $^ -o $@
- $(BINDIR)/%: $(OBJDIR)/%.o $(TARGET_LIB)
- -@$(MKDIRS) $(dir $@)
- $(CXX) $(CXXFLAGS) $^ $(LDLIBS) -o $@
- $(LIBDIR)/%.a: $(OBJDIR)/%.o
- -@$(MKDIRS) $(dir $@)
- $(AR) $@ $^
- ranlib $@
- clean:
- $(RM) -r $(BINDIR)/* $(LIBDIR)/* $(OBJDIR)/*
|