# Compiler prefix, in case your default compiler does not implement all C++11 features: #CROSS = /opt/toolchain/x86_64-pc-linux-gnu-gcc-4.7.0/bin/x86_64-pc-linux-gnu- # HINT: g++ -Q -O2 --help=optimizers OPTIMIZER = -Os CC = $(CROSS)gcc CXX = $(CROSS)g++ SIZE = size -d RM = rm -f SRC_DIRS = . INCLUDE = -I ../../include SRCS = $(wildcard $(addsuffix /*.cpp, $(SRC_DIRS))) OBJS = $(SRCS:.cpp=.o) DEPENDS = $(OBJS:.o=.d) EXE = $(SRCS:.cpp=) #------------------------------------------------------------------------------ # flags # FLAGS += $(INCLUDE) FLAGS += -MMD CXXFLAGS = $(FLAGS) CXXFLAGS += $(OPTIMIZER) CXXFLAGS += -std=c++11 CXXFLAGS += -fno-exceptions CXXFLAGS += -fno-rtti CXXFLAGS += -Wall -Wextra CXXFLAGS += -Wctor-dtor-privacy CXXFLAGS += -Wcast-align -Wpointer-arith -Wredundant-decls CXXFLAGS += -Wshadow -Wcast-qual -Wcast-align -pedantic # Produce debugging information (for use with gdb) #OPTIMIZER = -Og #FLAGS += -g # Use LLVM #CXX = $(CROSS)clang++ #CXXFLAGS += -stdlib=libc++ #LDFLAGS += -lc++ .PHONY: all clean all: $(EXE) %: %.cpp $(CXX) $(CXXFLAGS) -o $@ $< $(SIZE) $@ clean: $(RM) *.d $(RM) $(EXE) -include $(DEPENDS)