So many changes. Broken.
[invirt/third/libt4.git] / Makefile
index 5dd06c5..e2c8d5e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,31 +1,50 @@
-CXXFLAGS ?= -g -MMD -Werror -I. -std=c++1y
-LDFLAGS ?= 
-CXX ?= g++
-CC ?= g++
-EXTRA_TARGETS ?=
+CLANGXX ?= clang++
+GXX ?= g++
+USE_CLANG ?= 1
+CC = $(CXX)
 
-all: lock_server lock_tester rsm_tester rpc/rpctest $(EXTRA_TARGETS)
+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/poll_mgr.o rpc/thread_pool.o
-       rm -f $@
-       ar cq $@ $^
-       ranlib rpc/librpc.a
+POSTBUILD ?=
 
-rpc/rpctest: rpc/rpctest.o threaded_log.o rpc/librpc.a t4.o
+PRODUCTS = lock_server lock_tester rsm_tester rpc/rpctest
 
-lock_tester : lock_tester.o lock_client.o threaded_log.o rsm_client.o rpc/librpc.a t4.o
+ifeq "$(USE_CLANG)" "1"
 
-lock_server : lock_smain.o threaded_log.o rsm.o paxos.o config.o log.o lock_server.o rpc/librpc.a t4.o
+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)
 
-rsm_tester: rsm_tester.o rsmtest_client.o threaded_log.o rpc/librpc.a t4.o
+else
 
-%.o: %.cc
-       $(CXX) $(CXXFLAGS) -c $< -o $@
+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)
+clean:
+       -rm -rf $(clean_files)