Initialize slang and Android.mk.

Change-Id: If74da8e54d45511c8c9bb236bcfeec508f4f2439
diff --git a/slang_rs_backend.hpp b/slang_rs_backend.hpp
new file mode 100644
index 0000000..e021c1e
--- /dev/null
+++ b/slang_rs_backend.hpp
@@ -0,0 +1,61 @@
+#ifndef _SLANG_COMPILER_RS_BACKEND_HPP
+#   define _SLANG_COMPILER_RENDER_SCRIPT_BACKEND_HPP
+
+#include "libslang.h"
+#include "slang_backend.hpp"
+#include "slang_pragma_recorder.hpp"
+
+#include "clang/CodeGen/CodeGenOptions.h"   /* for class clang::CodeGenOptions */
+
+namespace llvm {
+
+class NamedMDNode;
+
+}   /* namespace llvm */
+
+namespace clang {
+
+class ASTConsumer;
+class Diagnostic;
+class TargetOptions;
+class PragmaList;
+class CodeGenerator;
+class ASTContext;
+class DeclGroupRef;
+
+}   /* namespace clang */
+
+namespace slang {
+
+using namespace clang;
+
+class RSContext;
+
+class RSBackend : public Backend {
+private:
+    RSContext* mContext;
+
+    llvm::NamedMDNode* mExportVarMetadata;
+    llvm::NamedMDNode* mExportFuncMetadata;
+    llvm::NamedMDNode* mExportTypeMetadata;
+    llvm::NamedMDNode* mExportElementMetadata;
+
+    virtual void HandleTranslationUnitEx(ASTContext& Ctx);
+
+public:
+    RSBackend(RSContext* Context,
+              Diagnostic &Diags,
+              const CodeGenOptions& CodeGenOpts,
+              const TargetOptions& TargetOpts,
+              const PragmaList& Pragmas,
+              llvm::raw_ostream* OS,
+              SlangCompilerOutputTy OutputType);
+
+    virtual void HandleTopLevelDecl(DeclGroupRef D);
+
+    virtual ~RSBackend();
+};  /* class RSBackend */
+
+}   /* namespace slang */
+
+#endif  /* _SLANG_COMPILER_BACKEND_HPP */