ENDLIST = COMPFLAGS=-std=c++11 -Wall -Wextra -pedantic -DTRACE_ON -I../include #CXXFLAGS = $(COMPFLAGS) -O0 -g -no-pie -pg CXXFLAGS = $(COMPFLAGS) -O3 -pg -no-pie -DNDEBUG #-Werror #-DNS_THREADED -- implemented but no significant performance gain VPATH = ../lib ../include LDFLAGS = -pthread -pg -no-pie LDPATH = -L ../lib LDLIBS = -lutil EXECUTABLES = \ ns \ columns \ mat \ $(ENDLIST) all: $(EXECUTABLES) COMMON_OBJECTS = \ $(ENDLIST) NS_OBJECTS = \ NsConnection.o \ NsGlobals.o \ NsLayer.o \ NsMain.o \ NsSystem.o \ NsTract.o \ NsUnit.o \ $(COMMON_OBJECTS) \ $(ENDLIST) COLUMNS_OBJECTS = \ columns.o \ $(ENDLIST) MAT_OBJECTS = \ mat.o \ $(ENDLIST) OBJECTS = \ $(COMMON_OBJECTS) \ $(NS_OBJECTS) \ $(COLUMNS_OBJECTS) \ $(MAT_OBJECTS) \ $(ENDLIST) ns: $(NS_OBJECTS) $(LDLIBS) $(CXX) $(LDFLAGS) $(NS_OBJECTS) $(LDPATH) $(LDLIBS) -o $@ columns:$(COLUMNS_OBJECTS) $(LDLIBS) $(CXX) $(LDFLAGS) $(COLUMNS_OBJECTS) $(LDPATH) $(LDLIBS) -o $@ mat: $(MAT_OBJECTS) $(LDLIBS) $(CXX) $(LDFLAGS) $(MAT_OBJECTS) $(LDPATH) $(LDLIBS) -o $@ DEPS = $(subst .o,.d,$(OBJECTS)) clean: /bin/rm -f $(DEPS) $(OBJECTS) veryclean: clean /bin/rm -f $(EXECUTABLES) # Automated dependency management %.o: %.cc $(CXX) -c $(CXXFLAGS) $*.cc -o $*.o $(CXX) -MM $(CXXFLAGS) $*.cc > $*.d @mv -f $*.d $*.d.tmp @sed -e 's|.*:|$*.o:|' < $*.d.tmp > $*.d @sed -e 's/.*://' -e 's/\\$$//' < $*.d.tmp | fmt -1 | \ sed -e 's/^ *//' -e 's/$$/:/' >> $*.d @rm -f $*.d.tmp -include $(OBJECTS:.o=.d)