Separate libRS.so into public and internal libs

Bug: 26546579

libRS_internal.so is not going to be whitelisted by the NDK linker,
therefore loadable only by the internal implementation, but not any
application code.

libRS is going to contain only publicly exported functions, i.e. the
functions declared in frameworks/rs/rs.h, including those in
rsApiFuncDecl.h (generated from rs.spec).

Change-Id: Iac58695316edc9aff87ade2bac3b4a44d1a68b23
(cherry picked from commit 85d0cb112010781ad07b5979f0824b7f0ae3987e)
diff --git a/rsApiContext.cpp b/rsApiContext.cpp
new file mode 100644
index 0000000..a5c7c3f
--- /dev/null
+++ b/rsApiContext.cpp
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "rsDevice.h"
+#include "rsContext.h"
+#include "rsThreadIO.h"
+#include "rsgApiStructs.h"
+#include "rsgApiFuncDecl.h"
+#include "rsFifo.h"
+
+using namespace android;
+using namespace android::renderscript;
+
+extern "C" RsContext rsContextCreate(RsDevice vdev, uint32_t version, uint32_t sdkVersion,
+                                      RsContextType ct, uint32_t flags) {
+    //ALOGV("rsContextCreate dev=%p", vdev);
+    Device * dev = static_cast<Device *>(vdev);
+    Context *rsc = Context::createContext(dev, nullptr, ct, flags);
+    if (rsc) {
+        rsc->setTargetSdkVersion(sdkVersion);
+    }
+    return rsc;
+}
+
+extern "C" void rsaContextSetNativeLibDir(RsContext con, char *libDir, size_t length) {
+#ifdef RS_COMPATIBILITY_LIB
+    Context *rsc = static_cast<Context *>(con);
+    rsc->setNativeLibDir(libDir, length);
+#endif
+}
+
+#ifndef RS_COMPATIBILITY_LIB
+RsContext rsContextCreateGL(RsDevice vdev, uint32_t version,
+                            uint32_t sdkVersion, RsSurfaceConfig sc,
+                            uint32_t dpi) {
+    //ALOGV("rsContextCreateGL dev=%p", vdev);
+    Device * dev = static_cast<Device *>(vdev);
+    Context *rsc = Context::createContext(dev, &sc);
+    if (rsc) {
+        rsc->setTargetSdkVersion(sdkVersion);
+        rsc->setDPI(dpi);
+    }
+    //ALOGV("%p rsContextCreateGL ret", rsc);
+    return rsc;
+}
+#endif
+
+// Only to be called at a3d load time, before object is visible to user
+// not thread safe
+extern "C" void rsaGetName(RsContext con, void * obj, const char **name) {
+    ObjectBase *ob = static_cast<ObjectBase *>(obj);
+    (*name) = ob->getName();
+}