diff --git a/Android.bp b/Android.bp
index ec3cabb..5e00a52 100644
--- a/Android.bp
+++ b/Android.bp
@@ -168,6 +168,19 @@
 }
 
 bootstrap_go_package {
+    name: "soong-phony",
+    pkgPath: "android/soong/phony",
+    deps: [
+        "blueprint",
+        "soong-android",
+    ],
+    srcs: [
+        "phony/phony.go",
+    ],
+    pluginFor: ["soong_build"],
+}
+
+bootstrap_go_package {
     name: "soong-java",
     pkgPath: "android/soong/java",
     deps: [
diff --git a/android/androidmk.go b/android/androidmk.go
index aeb0aa5..793947e 100644
--- a/android/androidmk.go
+++ b/android/androidmk.go
@@ -43,7 +43,7 @@
 	OutputFile OptionalPath
 	Disabled   bool
 
-	Custom func(w io.Writer, name, prefix string) error
+	Custom func(w io.Writer, name, prefix, moduleDir string) error
 
 	Extra []func(w io.Writer, outputFile Path) error
 }
@@ -185,7 +185,7 @@
 			prefix = "2ND_" + prefix
 		}
 
-		return data.Custom(w, name, prefix)
+		return data.Custom(w, name, prefix, filepath.Dir(ctx.BlueprintFile(mod)))
 	}
 
 	if data.Disabled {
diff --git a/android/module.go b/android/module.go
index b5de1ad..7b35d32 100644
--- a/android/module.go
+++ b/android/module.go
@@ -89,6 +89,8 @@
 
 	Proprietary() bool
 	InstallInData() bool
+
+	RequiredModuleNames() []string
 }
 
 type Module interface {
@@ -784,6 +786,10 @@
 	return expandedSrcFiles
 }
 
+func (ctx *androidModuleContext) RequiredModuleNames() []string {
+	return ctx.module.base().commonProperties.Required
+}
+
 func (ctx *androidModuleContext) Glob(globPattern string, excludes []string) Paths {
 	ret, err := ctx.GlobWithDeps(globPattern, excludes)
 	if err != nil {
diff --git a/cc/androidmk.go b/cc/androidmk.go
index 182938c..a5a625f 100644
--- a/cc/androidmk.go
+++ b/cc/androidmk.go
@@ -120,7 +120,7 @@
 }
 
 func (object *objectLinker) AndroidMk(ctx AndroidMkContext, ret *android.AndroidMkData) {
-	ret.Custom = func(w io.Writer, name, prefix string) error {
+	ret.Custom = func(w io.Writer, name, prefix, moduleDir string) error {
 		out := ret.OutputFile.Path()
 
 		fmt.Fprintln(w, "\n$("+prefix+"OUT_INTERMEDIATE_LIBRARIES)/"+name+objectExtension+":", out.String())
diff --git a/phony/phony.go b/phony/phony.go
new file mode 100644
index 0000000..c405af8
--- /dev/null
+++ b/phony/phony.go
@@ -0,0 +1,63 @@
+// Copyright 2016 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 phony
+
+import (
+	"fmt"
+	"io"
+	"strings"
+
+	"github.com/google/blueprint"
+
+	"android/soong/android"
+)
+
+func init() {
+	android.RegisterModuleType("phony", phonyFactory)
+}
+
+type phony struct {
+	android.ModuleBase
+	requiredModuleNames []string
+}
+
+func phonyFactory() (blueprint.Module, []interface{}) {
+	module := &phony{}
+
+	return android.InitAndroidModule(module)
+}
+
+func (p *phony) DepsMutator(ctx android.BottomUpMutatorContext) {
+}
+
+func (p *phony) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+	p.requiredModuleNames = ctx.RequiredModuleNames()
+	if len(p.requiredModuleNames) == 0 {
+		ctx.PropertyErrorf("required", "phony must not have empty required dependencies in order to be useful(and therefore permitted).")
+	}
+}
+
+func (p *phony) AndroidMk() (ret android.AndroidMkData, err error) {
+	ret.Custom = func(w io.Writer, name, prefix, moduleDir string) error {
+		fmt.Fprintln(w, "\ninclude $(CLEAR_VARS)")
+		fmt.Fprintln(w, "LOCAL_PATH :=", moduleDir)
+		fmt.Fprintln(w, "LOCAL_MODULE :=", name)
+		fmt.Fprintln(w, "LOCAL_REQUIRED_MODULES := "+strings.Join(p.requiredModuleNames, " "))
+		fmt.Fprintln(w, "include $(BUILD_PHONY_PACKAGE)")
+
+		return nil
+	}
+	return
+}
