diff --git a/Android.bp b/Android.bp
index c6b6ee4..b56d492 100644
--- a/Android.bp
+++ b/Android.bp
@@ -145,6 +145,8 @@
         "cc/ndk_headers.go",
         "cc/ndk_library.go",
         "cc/ndk_sysroot.go",
+
+        "cc/vndk_library.go",
     ],
     testSrcs: [
         "cc/cc_test.go",
diff --git a/android/config.go b/android/config.go
index 1d8cdba..bae9352 100644
--- a/android/config.go
+++ b/android/config.go
@@ -496,3 +496,7 @@
 	}
 	return coverage
 }
+
+func (c *deviceConfig) SameProcessHalDeps() []string {
+	return append([]string(nil), c.config.ProductVariables.SameProcessHalDeps...)
+}
diff --git a/android/variable.go b/android/variable.go
index c5b957b..aefe1e3 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -135,6 +135,8 @@
 	ArtUseReadBarrier *bool `json:",omitempty"`
 
 	BtConfigIncludeDir *string `json:",omitempty"`
+
+	SameProcessHalDeps []string `json:",omitempty"`
 }
 
 func boolPtr(v bool) *bool {
diff --git a/cc/androidmk.go b/cc/androidmk.go
index f45fbbe..0cd6faf 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -156,6 +156,14 @@
 	}
 }
 
+func (vndkLibrary *vndkExtLibraryDecorator) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
+	ret.Extra = append(ret.Extra, func(w io.Writer, outputFile android.Path) error {
+		fmt.Fprintln(w, "LOCAL_EXTENDS_MODULE := ", vndkLibrary.properties.Extends)
+		return nil
+	})
+	vndkLibrary.libraryDecorator.AndroidMk(ctx, ret)
+}
+
 func (object *objectLinker) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
 	ret.Custom = func(w io.Writer, name, prefix, moduleDir string) error {
 		out := ret.OutputFile.Path()
diff --git a/cc/cc.go b/cc/cc.go
index d486db3..ec95188 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -162,6 +162,9 @@
 	vndk() bool
 	selectedStl() string
 	baseModuleName() string
+	isNdk() bool
+	isVndk() bool
+	isSameProcessHal() bool
 }
 
 type ModuleContext interface {
@@ -404,6 +407,18 @@
 	return ctx.mod.ModuleBase.BaseModuleName()
 }
 
+func (ctx *moduleContextImpl) isNdk() bool {
+	return inList(ctx.baseModuleName(), ndkPrebuiltSharedLibraries)
+}
+
+func (ctx *moduleContextImpl) isVndk() bool {
+	return config.IsVndkLibrary(ctx.baseModuleName())
+}
+
+func (ctx *moduleContextImpl) isSameProcessHal() bool {
+	return inList(ctx.baseModuleName(), ctx.ctx.DeviceConfig().SameProcessHalDeps())
+}
+
 func newBaseModule(hod android.HostOrDeviceSupported, multilib android.Multilib) *Module {
 	return &Module{
 		hod:      hod,
diff --git a/cc/config/global.go b/cc/config/global.go
index 1ce1cce..68de5d0 100644
--- a/cc/config/global.go
+++ b/cc/config/global.go
@@ -176,3 +176,11 @@
 func VndkLibraries() []string {
 	return []string{}
 }
+
+func VndkIndirectLibraries() []string {
+	return []string{}
+}
+
+func IsVndkLibrary(name string) bool {
+	return inList(name, VndkLibraries()) || inList(name, VndkIndirectLibraries())
+}
diff --git a/cc/installer.go b/cc/installer.go
index 64f87d9..de04ab6 100644
--- a/cc/installer.go
+++ b/cc/installer.go
@@ -47,6 +47,7 @@
 
 	dir      string
 	dir64    string
+	subDir   string
 	relative string
 	location installLocation
 
@@ -60,14 +61,14 @@
 }
 
 func (installer *baseInstaller) installDir(ctx ModuleContext) android.OutputPath {
-	subDir := installer.dir
+	dir := installer.dir
 	if ctx.toolchain().Is64Bit() && installer.dir64 != "" {
-		subDir = installer.dir64
+		dir = installer.dir64
 	}
 	if !ctx.Host() && !ctx.Arch().Native {
-		subDir = filepath.Join(subDir, ctx.Arch().ArchType.String())
+		dir = filepath.Join(dir, ctx.Arch().ArchType.String())
 	}
-	return android.PathForModuleInstall(ctx, subDir, installer.Properties.Relative_install_path, installer.relative)
+	return android.PathForModuleInstall(ctx, dir, installer.subDir, installer.Properties.Relative_install_path, installer.relative)
 }
 
 func (installer *baseInstaller) install(ctx ModuleContext, file android.Path) {
diff --git a/cc/library.go b/cc/library.go
index f7194e4..b5512bb 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -587,6 +587,26 @@
 
 func (library *libraryDecorator) install(ctx ModuleContext, file android.Path) {
 	if !ctx.static() {
+		if ctx.Device() {
+			if ctx.isNdk() {
+				library.baseInstaller.subDir = "ndk"
+				if ctx.Proprietary() {
+					ctx.ModuleErrorf("NDK library must not be proprietary")
+				}
+			} else if ctx.isVndk() {
+				library.baseInstaller.subDir = "vndk"
+				if ctx.Proprietary() {
+					ctx.ModuleErrorf("VNDK library must not be proprietary")
+				}
+			} else if ctx.isSameProcessHal() {
+				library.baseInstaller.subDir = "sameprocess"
+				if !ctx.Proprietary() {
+					ctx.ModuleErrorf("SameProcess HAL library must be proprietary")
+				}
+			} else {
+				// Do nothing for other types of lib
+			}
+		}
 		library.baseInstaller.install(ctx, file)
 	}
 }
diff --git a/cc/makevars.go b/cc/makevars.go
index 200faff..3ab7955 100644
--- a/cc/makevars.go
+++ b/cc/makevars.go
@@ -58,6 +58,7 @@
 		ctx.Strict("BOARD_VNDK_VERSION", "")
 	}
 	ctx.Strict("VNDK_LIBRARIES", strings.Join(config.VndkLibraries(), " "))
+	ctx.Strict("VNDK_INDIRECT_LIBRARIES", strings.Join(config.VndkIndirectLibraries(), " "))
 
 	ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS", asanCflags)
 	ctx.Strict("ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS", asanLdflags)
diff --git a/cc/vndk_library.go b/cc/vndk_library.go
new file mode 100644
index 0000000..cca4f3f
--- /dev/null
+++ b/cc/vndk_library.go
@@ -0,0 +1,85 @@
+// Copyright 2017 Google Inc. All rights reserved.
+//
+// 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.
+
+package cc
+
+import (
+	"github.com/google/blueprint"
+
+	"android/soong/android"
+	"android/soong/cc/config"
+)
+
+type vndkExtLibraryProperties struct {
+	// Name of the VNDK library module that this VNDK-ext library is extending.
+	// This library will have the same file name and soname as the original VNDK
+	// library, but will be installed in /system/lib/vndk-ext rather
+	// than /system/lib/vndk.
+	Extends string
+}
+
+type vndkExtLibraryDecorator struct {
+	*libraryDecorator
+
+	properties vndkExtLibraryProperties
+}
+
+func init() {
+	android.RegisterModuleType("vndk_ext_library", vndkExtLibraryFactory)
+}
+
+func (deco *vndkExtLibraryDecorator) linkerFlags(ctx ModuleContext, flags Flags) Flags {
+	extends := deco.properties.Extends
+	if extends != "" {
+		if config.IsVndkLibrary(extends) {
+			// TODO(jiyong): ensure that the module referenced by 'extends' exists. Don't know how...
+			// Adding a dependency was not successful because it leads to circular dependency
+			// in between this and the 'extends' module.
+			// Ideally, this should be something like follows:
+			// otherCtx = findModuleByName(deco.properties.Extends)
+			// if otherCtx != nil && otherCtx.isVndk() {
+			//     deco.libaryDecorator.libName = otherCtx.getBaseName()
+			// }
+			deco.libraryDecorator.libName = extends
+		} else {
+			ctx.PropertyErrorf("extends", "%s should be a VNDK or VNDK-indirect library", extends)
+		}
+	} else {
+		ctx.PropertyErrorf("extends", "missing. A VNDK-ext library must extend existing VNDK library")
+	}
+	return deco.libraryDecorator.linkerFlags(ctx, flags)
+}
+
+func (deco *vndkExtLibraryDecorator) install(ctx ModuleContext, file android.Path) {
+	deco.libraryDecorator.baseInstaller.subDir = "vndk-ext"
+	deco.libraryDecorator.baseInstaller.install(ctx, file)
+}
+
+func vndkExtLibraryFactory() (blueprint.Module, []interface{}) {
+	module, library := NewLibrary(android.DeviceSupported)
+	library.BuildOnlyShared()
+
+	_, props := module.Init()
+
+	deco := &vndkExtLibraryDecorator{
+		libraryDecorator: library,
+	}
+
+	module.installer = deco
+	module.linker = deco
+
+	props = append(props, &deco.properties)
+
+	return module, props
+}
