Add msan, tsan, asan targets for Makefile.

Expand test runner to be compatible.
	Change on 2015/01/06 by ctiller <ctiller@google.com>
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=83378004
diff --git a/Makefile b/Makefile
index e4e1213..76fa9e1 100644
--- a/Makefile
+++ b/Makefile
@@ -2,16 +2,67 @@
 # This currently builds C and C++ code.
 
 
+# Configurations
+
+VALID_CONFIG_opt = 1
+CC_opt = gcc
+CXX_opt = g++
+LD_opt = gcc
+LDXX_opt = g++
+CPPFLAGS_opt = -O2
+LDFLAGS_opt =
+DEFINES_opt = NDEBUG
+
+VALID_CONFIG_dbg = 1
+CC_dbg = gcc
+CXX_dbg = g++
+LD_dbg = gcc
+LDXX_dbg = g++
+CPPFLAGS_dbg = -O0
+LDFLAGS_dbg =
+DEFINES_dbg = _DEBUG DEBUG
+
+VALID_CONFIG_tsan = 1
+CC_tsan = clang
+CXX_tsan = clang++
+LD_tsan = clang
+LDXX_tsan = clang++
+CPPFLAGS_tsan = -O1 -fsanitize=thread -fno-omit-frame-pointer
+LDFLAGS_tsan = -fsanitize=thread
+DEFINES_tsan = NDEBUG
+
+VALID_CONFIG_asan = 1
+CC_asan = clang
+CXX_asan = clang++
+LD_asan = clang
+LDXX_asan = clang++
+CPPFLAGS_asan = -O1 -fsanitize=address -fno-omit-frame-pointer
+LDFLAGS_asan = -fsanitize=address
+DEFINES_asan = NDEBUG
+
+VALID_CONFIG_msan = 1
+CC_msan = clang
+CXX_msan = clang++
+LD_msan = clang
+LDXX_msan = clang++
+CPPFLAGS_msan = -O1 -fsanitize=memory -fno-omit-frame-pointer
+LDFLAGS_msan = -fsanitize=memory
+DEFINES_msan = NDEBUG
+
+ifndef VALID_CONFIG_$(CONFIG)
+$(error Invalid CONFIG value '$(CONFIG)')
+endif
+
 # General settings.
 # You may want to change these depending on your system.
 
 prefix ?= /usr/local
 
 PROTOC = protoc
-CC = gcc
-CXX = g++
-LD = gcc
-LDXX = g++
+CC = $(CC_$(CONFIG))
+CXX = $(CXX_$(CONFIG))
+LD = $(LD_$(CONFIG))
+LDXX = $(LDXX_$(CONFIG))
 AR = ar
 STRIP = strip --strip-unneeded
 INSTALL = install -D
@@ -24,20 +75,9 @@
 
 CONFIG ?= opt
 
-VALID_CONFIG_opt = 1
-CPPFLAGS_opt = -O2
-DEFINES_opt = NDEBUG
-
-VALID_CONFIG_dbg = 1
-CPPFLAGS_dbg = -O0
-DEFINES_dbg = _DEBUG DEBUG
-
-ifndef VALID_CONFIG_$(CONFIG)
-$(error Invalid CONFIG value '$(CONFIG)')
-endif
-
 CPPFLAGS += $(CPPFLAGS_$(CONFIG))
 DEFINES += $(DEFINES_$(CONFIG))
+LDFLAGS += $(LDFLAGS_$(CONFIG))
 
 CFLAGS += -std=c89 -pedantic
 CXXFLAGS += -std=c++11