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)
|