Dhairya Malhotra пре 6 година
родитељ
комит
6750760593
2 измењених фајлова са 8 додато и 22 уклоњено
  1. 7 21
      Makefile
  2. 1 1
      include/sctl/vec.hpp

+ 7 - 21
Makefile

@@ -1,20 +1,10 @@
 AR = ar cru
 
 FC = gfortran
-FFLAGS = -O3 -fopenmp -Wall
+FFLAGS = -O3 -fopenmp -march=native -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 = -O3 -fopenmp -march=native -Wall -std=c++11 # need C++11
 
 #CXXFLAGS += -DSCTL_MEMDEBUG # Enable memory checks
 CXXFLAGS += -DSCTL_PROFILE=5 -DSCTL_VERBOSE # Enable profiling
@@ -22,7 +12,7 @@ CXXFLAGS += -DSCTL_PROFILE=5 -DSCTL_VERBOSE # Enable profiling
 
 
 
-LDLIBS = -L$(LIBDIR) -lkernels -lgfortran
+LDLIBS = -L$(LIBDIR) -lkernels -lstdc++
 
 RM = rm -f
 MKDIRS = mkdir -p
@@ -41,22 +31,18 @@ TARGET_BIN = \
 
 all : $(TARGET_LIB) $(TARGET_BIN)
 
-$(OBJDIR)/%.o: $(SRCDIR)/%.f90
+$(BINDIR)/%: $(SRCDIR)/%.f90 $(TARGET_LIB)
 	-@$(MKDIRS) $(dir $@)
-	$(FC) $(FFLAGS) -I$(INCDIR) -c $^ -o $@
+	$(FC) $(FFLAGS) -I$(INCDIR) $^ $(LDLIBS) -o $@
 
-$(OBJDIR)/%.o: $(SRCDIR)/%.c
+$(BINDIR)/%: $(SRCDIR)/%.cpp $(TARGET_LIB)
 	-@$(MKDIRS) $(dir $@)
-	$(CC) $(CXXFLAGS) -I$(INCDIR) -c $^ -o $@
+	$(CXX) $(CXXFLAGS) -I$(INCDIR) $^ $(LDLIBS) -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) $@ $^

+ 1 - 1
include/sctl/vec.hpp

@@ -503,7 +503,7 @@ namespace SCTL_NAMESPACE {
     using RealType = typename Vec::RealType;
     using IntegerVec = typename Vec::IntegerVec;
     using RealVec = typename Vec::RealVec;
-    static_assert(std::is_same<Vec,RealVec>::value);
+    static_assert(std::is_same<Vec,RealVec>::value, "exp_intrin: expected a real argument");
 
     using Real = typename RealVec::ScalarType;
     static constexpr Integer SigBits = TypeTraits<Real>::SigBits;