• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1package ca_certificates_apex
2
3import (
4	"path"
5	"path/filepath"
6
7	"github.com/google/blueprint/proptools"
8
9	"android/soong/android"
10	"android/soong/etc"
11	"android/soong/phony"
12)
13
14func init() {
15	android.RegisterModuleType("ca_certificates_apex", caCertificatesApexFactory)
16}
17
18type caCertificatesProperties struct {
19	Src_dir            *string
20	Dest_dir           *string
21	Module_name_prefix *string
22}
23
24func caCertificatesLoadHook(
25	ctx android.LoadHookContext, factory android.ModuleFactory, c *caCertificatesProperties) {
26	// Find all files in src_dir.
27	srcs, err := ctx.GlobWithDeps(path.Join(ctx.ModuleDir(), *c.Src_dir, "*"), nil)
28	if err != nil || len(srcs) == 0 {
29		ctx.PropertyErrorf("src_dir", "cannot find files to install")
30		return
31	}
32
33	// Scan through the found files to create a prebuilt_etc module for each of them.
34	requiredModuleNames := make([]string, len(srcs))
35	for i, src := range srcs {
36		etcProps := struct {
37			Name     *string
38			Src      *string
39			Sub_dir  *string
40			Filename *string
41		}{}
42		filename := filepath.Base(src)
43		moduleName := *c.Module_name_prefix + filename
44		etcProps.Name = proptools.StringPtr(moduleName)
45		etcProps.Src = proptools.StringPtr(path.Join(*c.Src_dir, filename))
46		etcProps.Sub_dir = c.Dest_dir
47		etcProps.Filename = proptools.StringPtr(filename)
48		ctx.CreateModule(factory, &etcProps)
49
50		// Add it to the required module list of the parent phony rule.
51		requiredModuleNames[i] = moduleName
52	}
53
54	phonyProps := struct {
55		Required []string
56	}{}
57	phonyProps.Required = requiredModuleNames
58	ctx.AppendProperties(&phonyProps)
59}
60
61func caCertificatesApexFactory() android.Module {
62	p := phony.PhonyFactory()
63	c := &caCertificatesProperties{}
64	android.AddLoadHook(p, func(ctx android.LoadHookContext) {
65		caCertificatesLoadHook(ctx, etc.PrebuiltEtcCaCertsFactory, c)
66	})
67	p.AddProperties(c)
68
69	return p
70}
71