diff --git a/cc/compiler.go b/cc/compiler.go
index 68d8593..90382f5 100644
--- a/cc/compiler.go
+++ b/cc/compiler.go
@@ -224,6 +224,10 @@
 		deps = protoDeps(ctx, deps, &compiler.Proto, Bool(compiler.Properties.Proto.Static))
 	}
 
+	if compiler.hasSrcExt(".sysprop") {
+		deps.SharedLibs = append(deps.SharedLibs, "libbase")
+	}
+
 	if Bool(compiler.Properties.Openmp) {
 		deps.StaticLibs = append(deps.StaticLibs, "libomp")
 	}
@@ -489,6 +493,11 @@
 		flags = rsFlags(ctx, flags, &compiler.Properties)
 	}
 
+	if compiler.hasSrcExt(".sysprop") {
+		flags.GlobalFlags = append(flags.GlobalFlags,
+			"-I"+android.PathForModuleGen(ctx, "sysprop", "include").String())
+	}
+
 	if len(compiler.Properties.Srcs) > 0 {
 		module := ctx.ModuleDir() + "/Android.bp:" + ctx.ModuleName()
 		if inList("-Wno-error", flags.CFlags) || inList("-Wno-error", flags.CppFlags) {
diff --git a/cc/gen.go b/cc/gen.go
index 487f662..29a2bb2 100644
--- a/cc/gen.go
+++ b/cc/gen.go
@@ -19,6 +19,8 @@
 // functions.
 
 import (
+	"path/filepath"
+
 	"github.com/google/blueprint"
 
 	"android/soong/android"
@@ -30,6 +32,7 @@
 	pctx.SourcePathVariable("yaccDataDir", "prebuilts/build-tools/common/bison")
 
 	pctx.HostBinToolVariable("aidlCmd", "aidl-cpp")
+	pctx.HostBinToolVariable("syspropCmd", "sysprop_cpp")
 }
 
 var (
@@ -55,6 +58,13 @@
 		},
 		"aidlFlags", "outDir")
 
+	sysprop = pctx.AndroidStaticRule("sysprop",
+		blueprint.RuleParams{
+			Command:     "$syspropCmd --header-output-dir=$headerOutDir --source-output-dir=$srcOutDir --include-name=$includeName $in",
+			CommandDeps: []string{"$syspropCmd"},
+		},
+		"headerOutDir", "srcOutDir", "includeName")
+
 	windmc = pctx.AndroidStaticRule("windmc",
 		blueprint.RuleParams{
 			Command:     "$windmcCmd -r$$(dirname $out) -h$$(dirname $out) $in",
@@ -82,7 +92,6 @@
 }
 
 func genAidl(ctx android.ModuleContext, aidlFile android.Path, outFile android.ModuleGenPath, aidlFlags string) android.Paths {
-
 	ctx.Build(pctx, android.BuildParams{
 		Rule:        aidl,
 		Description: "aidl " + aidlFile.Rel(),
@@ -107,6 +116,26 @@
 	})
 }
 
+func genSysprop(ctx android.ModuleContext, syspropFile android.Path) (android.Path, android.Path) {
+	headerFile := android.PathForModuleGen(ctx, "sysprop", "include", syspropFile.Rel()+".h")
+	cppFile := android.PathForModuleGen(ctx, "sysprop", syspropFile.Rel()+".cpp")
+
+	ctx.Build(pctx, android.BuildParams{
+		Rule:           sysprop,
+		Description:    "sysprop " + syspropFile.Rel(),
+		Output:         cppFile,
+		ImplicitOutput: headerFile,
+		Input:          syspropFile,
+		Args: map[string]string{
+			"headerOutDir": filepath.Dir(headerFile.String()),
+			"srcOutDir":    filepath.Dir(cppFile.String()),
+			"includeName":  syspropFile.Rel() + ".h",
+		},
+	})
+
+	return cppFile, headerFile
+}
+
 func genWinMsg(ctx android.ModuleContext, srcFile android.Path, flags builderFlags) (android.Path, android.Path) {
 	headerFile := android.GenPathWithExt(ctx, "windmc", srcFile, "h")
 	rcFile := android.GenPathWithExt(ctx, "windmc", srcFile, "rc")
@@ -169,6 +198,10 @@
 			rcFile, headerFile := genWinMsg(ctx, srcFile, buildFlags)
 			srcFiles[i] = rcFile
 			deps = append(deps, headerFile)
+		case ".sysprop":
+			cppFile, headerFile := genSysprop(ctx, srcFile)
+			srcFiles[i] = cppFile
+			deps = append(deps, headerFile)
 		}
 	}
 
diff --git a/cc/library.go b/cc/library.go
index 9eb3f47..920292d 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -678,6 +678,14 @@
 		}
 	}
 
+	if library.baseCompiler.hasSrcExt(".sysprop") {
+		flags := []string{
+			"-I" + android.PathForModuleGen(ctx, "sysprop", "include").String(),
+		}
+		library.reexportFlags(flags)
+		library.reuseExportedFlags = append(library.reuseExportedFlags, flags...)
+	}
+
 	return out
 }
 
