CLANGXX ?= clang++ GXX ?= g++ USE_CLANG ?= 1 CC = $(CXX) OPTFLAGS = -O3 CXXFLAGS = -ggdb3 -MMD -I. -std=c++1y $(STDLIB) $(PEDANTRY) $(OPTFLAGS) LDFLAGS = -std=c++1y $(STDLIB) $(OPTFLAGS) POSTBUILD ?= PRODUCTS = lock_server lock_tester rsm_tester rpc/rpctest ifeq "$(USE_CLANG)" "1" PEDANTRY = -Werror -Weverything -Wall -Wextra -pedantic-errors -pedantic \ -Wno-c++98-compat-pedantic -Wno-padded -Weffc++ \ -Wno-non-virtual-dtor -Wno-weak-vtables STDLIB = -stdlib=libc++ CXX = $(CLANGXX) else PEDANTRY = -pedantic -Wall -Wextra -fno-default-inline -Werror STDLIB = -pthread CXX = $(GXX) endif all: $(PRODUCTS) $(POSTBUILD) LIBRPC_OBJECTS = rpc/rpc.o rpc/connection.o rpc/poll_mgr.o rpc/thread_pool.o rpc/librpc.a: $(foreach x,$(LIBRPC_OBJECTS),rpc/librpc.a($(x))) rpc/rpctest: rpc/rpctest.o debug.o rpc/librpc.a t4.o lock_tester : lock_tester.o lock_client.o debug.o rsm_client.o rpc/librpc.a t4.o lock_server : lock_smain.o debug.o rsm.o paxos.o config.o log.o lock_server.o rpc/librpc.a t4.o rsm_tester: rsm_tester.o rsmtest_client.o debug.o rpc/librpc.a t4.o -include *.d -include rpc/*.d clean_files=rpc/rpctest rpc/*.o *.d rpc/*.d rpc/librpc.a *.o config *.log lock_server lock_tester rsm_tester .PHONY: clean $(EXTRA_TARGETS) clean: -rm -rf $(clean_files)