boxster: add utility functions to create platform information

Populate fake program with fake platform information.

BUG=chromium:1199415
TEST=manual

Change-Id: If2f6b84f0a89650a94949b6a2602e8f3a6332af3
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/config/+/2841563
Auto-Submit: Sean McAllister <smcallis@google.com>
Reviewed-by: Andrew Lamb <andrewlamb@chromium.org>
Commit-Queue: Andrew Lamb <andrewlamb@chromium.org>
diff --git a/test/program/fake/generated/config.jsonproto b/test/program/fake/generated/config.jsonproto
index 59a7c5f..2094a4b 100644
--- a/test/program/fake/generated/config.jsonproto
+++ b/test/program/fake/generated/config.jsonproto
@@ -143,6 +143,19 @@
       },
       "mosysPlatformName": "fake",
       "name": "FAKE_PROGRAM",
+      "platform": {
+        "gpuFamily": "FAKE_INTEL_GPU",
+        "graphicsApis": [
+          1
+        ],
+        "socArch": 2,
+        "socFamily": "FAKE_INTEL_PLATFORM",
+        "videoCodecs": [
+          1,
+          1,
+          9
+        ]
+      },
       "publicReplication": {
         "publicFields": "name,id"
       }
diff --git a/test/program/fake/program.star b/test/program/fake/program.star
index 3318847..671c2af 100644
--- a/test/program/fake/program.star
+++ b/test/program/fake/program.star
@@ -68,6 +68,19 @@
 
 _SIGNER_CONFIG = _SIGNER_BRAND_CONFIGS + _SIGNER_DESIGN_CONFIGS
 
+platform = program_util.platform
+_PLATFORM = program_util.create_platform(
+    soc_family = "FAKE_INTEL_PLATFORM",
+    soc_arch = platform.X86_64,
+    gpu_family = "FAKE_INTEL_GPU",
+    graphics_apis = [platform.GRAPHICS_API_OPENGL],
+    video_codecs = [
+        platform.H264_DECODE,
+        platform.H264_DECODE,
+        platform.H265_DECODE,
+    ],
+)
+
 _FAKE = program_util.create(
     name = "FAKE_PROGRAM",
     component_quals = _QUAL_CONSTRAINTS,
@@ -75,6 +88,7 @@
     firmware_configuration_segments = _FIRMWARE_CONFIGURATION_SEGMENTS,
     device_signer_configs = _SIGNER_CONFIG,
     mosys_platform_name = "fake",
+    platform = _PLATFORM,
 )
 
 program = struct(
diff --git a/util/program.star b/util/program.star
index 3ba6791..5ef23bf 100644
--- a/util/program.star
+++ b/util/program.star
@@ -65,6 +65,15 @@
 def _create_signer_configs_by_design(configs):
     return [_create_signer_config_by_design(id, key) for id, key in configs.items()]
 
+def _create_platform(soc_family, soc_arch, gpu_family = None, graphics_apis = [], video_codecs = []):
+    return program_pb.Program.Platform(
+        soc_family = soc_family,
+        soc_arch = soc_arch,
+        gpu_family = gpu_family,
+        graphics_apis = graphics_apis,
+        video_codecs = video_codecs,
+    )
+
 def _create(
         name,
         public_fields = ["name", "id"],
@@ -74,7 +83,8 @@
         ssfc_segments = None,
         design_config_id_segments = None,
         device_signer_configs = None,
-        mosys_platform_name = None):
+        mosys_platform_name = None,
+        platform = None):
     """Builds a Program proto."""
     program_id = program_id_pb.ProgramId(value = name)
     return program_pb.Program(
@@ -88,10 +98,12 @@
         design_config_id_segments = design_config_id_segments,
         device_signer_configs = device_signer_configs,
         mosys_platform_name = mosys_platform_name,
+        platform = platform,
     )
 
 program = struct(
     create = _create,
+    create_platform = _create_platform,
     create_firmware_configuration_segment = _create_firmware_configuration_segment,
     create_design_config_id_segment = _create_design_config_id_segment,
     create_signer_config = _create_signer_config,
@@ -100,4 +112,5 @@
     create_signer_config_by_design = _create_signer_config_by_design,
     create_signer_configs_by_design = _create_signer_configs_by_design,
     generate = generate.generate,
+    platform = program_pb.Program.Platform,
 )