So many changes. Broken.
[invirt/third/libt4.git] / Makefile
index 4a239bc..e2c8d5e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,36 +1,50 @@
-CXXFLAGS = -g -MMD -Werror -I. -std=c++11
-LDFLAGS = 
-CXX = g++
-CC = g++
+CLANGXX ?= clang++
+GXX ?= g++
+USE_CLANG ?= 1
+CC = $(CXX)
 
-all: lock_demo lock_server lock_tester rsm_tester rpc/rpctest
+OPTFLAGS = -O3
+CXXFLAGS = -ggdb3 -MMD -I. -std=c++1y $(STDLIB) $(PEDANTRY) $(OPTFLAGS)
+LDFLAGS = -std=c++1y $(STDLIB) $(OPTFLAGS)
 
-rpc/librpc.a: rpc/rpc.o rpc/connection.o rpc/pollmgr.o rpc/thr_pool.o rpc/jsl_log.o
-       rm -f $@
-       ar cq $@ $^
-       ranlib rpc/librpc.a
+POSTBUILD ?=
 
-rpc/rpctest: rpc/rpctest.o rpc/librpc.a
+PRODUCTS = lock_server lock_tester rsm_tester rpc/rpctest
 
-lock_demo=lock_demo.o lock_client.o
-lock_demo : $(lock_demo) rpc/librpc.a
+ifeq "$(USE_CLANG)" "1"
 
-lock_tester=lock_tester.o lock_client.o tprintf.o rsm_client.o handle.o lock_client_cache_rsm.o
-lock_tester : $(lock_tester) rpc/librpc.a
+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)
 
-lock_server=lock_server.o lock_smain.o tprintf.o handle.o rsm.o paxos.o config.o log.o lock_server_cache_rsm.o
-lock_server : $(lock_server) rpc/librpc.a
+else
 
-rsm_tester=rsm_tester.o rsmtest_client.o
-rsm_tester: $(rsm_tester) rpc/librpc.a
+PEDANTRY = -pedantic -Wall -Wextra -fno-default-inline -Werror
+STDLIB = -pthread
+CXX = $(GXX)
 
-%.o: %.cc
-       $(CXX) $(CXXFLAGS) -c $< -o $@
+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 lock_server lock_tester lock_demo rsm_tester
-.PHONY: clean
-clean: 
-       rm -rf $(clean_files)
+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)