Factor out shared library libslang.so from slang.

libslang.so can be regarded as a lightweight Clang compiler. Only C-like
language compilation is supported in libslang.so currently. Both llvm-rs-link
and slang now link to this library.

Change-Id: Ib8f8dc8568640bc36c2b1fe8dba1212c4c8a56c8
diff --git a/Android.mk b/Android.mk
index 177ba91..0ff20de 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,16 +1,87 @@
 LOCAL_PATH := $(call my-dir)
 
-LLVM_ROOT_PATH := external/llvm
-include $(LLVM_ROOT_PATH)/llvm.mk
+# Shared library libslang for host
+# ========================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
 
+LLVM_ROOT_PATH := external/llvm
 CLANG_ROOT_PATH := external/clang
+
 include $(CLANG_ROOT_PATH)/clang.mk
 
+LOCAL_MODULE := libslang
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+
+LOCAL_CFLAGS += -Wno-sign-promo
+
+TBLGEN_TABLES :=    \
+	AttrList.inc	\
+	Attrs.inc	\
+	DeclNodes.inc	\
+	DiagnosticCommonKinds.inc	\
+	DiagnosticFrontendKinds.inc	\
+	DiagnosticSemaKinds.inc	\
+	StmtNodes.inc
+
+LOCAL_SRC_FILES :=	\
+	slang.cpp	\
+	slang_utils.cpp	\
+	slang_backend.cpp	\
+	slang_pragma_recorder.cpp	\
+	slang_diagnostic_buffer.cpp
+
+LOCAL_STATIC_LIBRARIES :=	\
+	libLLVMLinker   \
+	libLLVMipo	\
+	libLLVMBitWriter	\
+	libLLVMBitReader	\
+	libLLVMARMAsmPrinter	\
+	libLLVMX86AsmPrinter	\
+	libLLVMAsmPrinter	\
+	libLLVMMCParser	\
+	libLLVMARMCodeGen	\
+	libLLVMARMInfo	\
+	libLLVMX86CodeGen	\
+	libLLVMX86Info	\
+	libLLVMSelectionDAG	\
+	libLLVMCodeGen	\
+	libLLVMScalarOpts	\
+	libLLVMInstCombine	\
+	libLLVMTransformUtils	\
+	libLLVMInstrumentation	\
+	libLLVMipa	\
+	libLLVMAnalysis	\
+	libLLVMTarget	\
+	libLLVMMC	\
+	libLLVMCore	\
+	libclangParse	\
+	libclangSema	\
+	libclangAnalysis	\
+	libclangAST	\
+	libclangLex	\
+	libclangFrontend	\
+	libclangCodeGen	\
+	libclangBasic	\
+	libLLVMSupport	\
+	libLLVMSystem
+
+LOCAL_LDLIBS := -ldl -lpthread
+
+include $(CLANG_HOST_BUILD_MK)
+include $(CLANG_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_SHARED_LIBRARY)
+
 # Executable llvm-rs-link for host
 # ========================================================
 include $(CLEAR_VARS)
 include $(CLEAR_TBLGEN_VARS)
 
+include $(LLVM_ROOT_PATH)/llvm.mk
+
 LOCAL_MODULE := llvm-rs-link
 
 LOCAL_MODULE_CLASS := EXECUTABLES
@@ -18,20 +89,8 @@
 LOCAL_SRC_FILES :=	\
 	llvm-rs-link.cpp
 
-LOCAL_STATIC_LIBRARIES :=	\
-	libLLVMLinker   \
-	libLLVMipo	\
-	libLLVMBitWriter	\
-	libLLVMBitReader        \
-	libLLVMScalarOpts	\
-	libLLVMInstCombine	\
-	libLLVMTransformUtils	\
-	libLLVMipa	\
-	libLLVMAnalysis	\
-	libLLVMTarget	\
-	libLLVMCore	\
-	libLLVMSupport	\
-	libLLVMSystem
+LOCAL_SHARED_LIBRARIES :=	\
+	libslang
 
 LOCAL_LDLIBS := -ldl -lpthread
 
@@ -125,17 +184,11 @@
 	Attrs.inc    \
 	DeclNodes.inc    \
 	DiagnosticCommonKinds.inc   \
-	DiagnosticFrontendKinds.inc \
 	StmtNodes.inc	\
 	DiagnosticSemaKinds.inc
 
 LOCAL_SRC_FILES :=	\
 	slang_driver.cpp	\
-	slang.cpp	\
-	slang_utils.cpp	\
-	slang_backend.cpp	\
-	slang_pragma_recorder.cpp	\
-	slang_diagnostic_buffer.cpp	\
 	slang_rs.cpp	\
 	slang_rs_context.cpp	\
 	slang_rs_pragma_handler.cpp	\
@@ -147,45 +200,16 @@
 	slang_rs_reflection.cpp \
 	slang_rs_reflect_utils.cpp
 
+LOCAL_SHARED_LIBRARIES :=      \
+	libslang
+
 LOCAL_STATIC_LIBRARIES :=	\
-	libLLVMipo	\
-	libLLVMBitWriter	\
-	libLLVMARMAsmPrinter	\
-	libLLVMX86AsmPrinter	\
-	libLLVMAsmPrinter	\
-	libLLVMMCParser	\
-	libLLVMARMCodeGen	\
-	libLLVMARMInfo	\
-	libLLVMX86CodeGen	\
-	libLLVMX86Info	\
-	libLLVMSelectionDAG	\
-	libLLVMCodeGen	\
-	libLLVMScalarOpts	\
-	libLLVMInstCombine	\
-	libLLVMTransformUtils	\
-	libLLVMipa	\
-	libLLVMAnalysis	\
-	libLLVMTarget	\
-	libLLVMMC	\
-	libLLVMCore	\
-	libclangParse   \
-	libclangSema	\
-	libclangAnalysis	\
-	libclangAST	\
-	libclangLex	\
-	libclangCodeGen	\
-	libclangBasic	\
-	libclangFrontend	\
-	libLLVMSupport	\
-	libLLVMSystem	\
 	librsheader-types	\
 	librsheader-cl  \
 	librsheader-core	\
 	librsheader-math	\
 	librsheader-graphics
 
-LOCAL_LDLIBS := -ldl -lpthread
-
 LOCAL_REQUIRED_MODULES := llvm-rs-link
 
 include $(CLANG_HOST_BUILD_MK)