diff --git a/cc/ndk_headers.go b/cc/ndk_headers.go
index ece83bb..9cc3417 100644
--- a/cc/ndk_headers.go
+++ b/cc/ndk_headers.go
@@ -46,6 +46,9 @@
 
 	// List of headers to install. Glob compatible. Common case is "include/**/*.h".
 	Srcs []string
+
+	// Path to the NOTICE file associated with the headers.
+	License string
 }
 
 type headerModule struct {
@@ -54,12 +57,19 @@
 	properties headerProperies
 
 	installPaths []string
+	licensePath  android.ModuleSrcPath
 }
 
 func (m *headerModule) DepsMutator(ctx android.BottomUpMutatorContext) {
 }
 
 func (m *headerModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+	if m.properties.License == "" {
+		ctx.PropertyErrorf("license", "field is required")
+	}
+
+	m.licensePath = android.PathForModuleSrc(ctx, m.properties.License)
+
 	srcFiles := ctx.ExpandSources(m.properties.Srcs, nil)
 	for _, header := range srcFiles {
 		// Output path is the sysroot base + "usr/include" + to directory + directory component
@@ -100,6 +110,10 @@
 
 func ndkHeadersFactory() (blueprint.Module, []interface{}) {
 	module := &headerModule{}
-	return android.InitAndroidArchModule(module, android.HostSupported, android.MultilibFirst,
-		&module.properties)
+	// Host module rather than device module because device module install steps
+	// do not get run when embedded in make. We're not any of the existing
+	// module types that can be exposed via the Android.mk exporter, so just use
+	// a host module.
+	return android.InitAndroidArchModule(module, android.HostSupportedNoCross,
+		android.MultilibFirst, &module.properties)
 }
