meson: refactor generators

Using 'run_command' is not the appropriate way to generate code
since it only runs when meson itself runs and doesn't expose to
meson the correct dependency information.  'custom_target' is
the more appropriate way to generate code, so switch to using it.

This was noticed because when trying to build as a subproject, the
depending repository failed with:
```
subprojects/phosphor-host-ipmid/meson.build:229:0: ERROR: Sandbox
violation: Tried to grab file sensor-gen.cpp outside current
(sub)project.
```

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I555c6e1a7bfaabae63d757042ddc1c5a548295aa
diff --git a/meson.build b/meson.build
index 3ecd444..402c3a7 100644
--- a/meson.build
+++ b/meson.build
@@ -100,6 +100,8 @@
     nlohmann_json_dep = dependency('nlohmann-json')
 endif
 
+generated_src = []
+
 # Subfolders
 subdir('libipmid')
 subdir('libipmid-host')
@@ -181,12 +183,6 @@
   mapper,
 ]
 
-generated_src = [
-  meson.project_build_root() + '/sensor-gen.cpp',
-  meson.project_build_root() + '/inventory-sensor-gen.cpp',
-  meson.project_build_root() + '/fru-read-gen.cpp',
-]
-
 transportoem_src = []
 if not get_option('transport-oem').disabled()
   transportoem_src = ['transporthandler_oem.cpp']
diff --git a/scripts/meson.build b/scripts/meson.build
index 3740227..b739e6f 100644
--- a/scripts/meson.build
+++ b/scripts/meson.build
@@ -1,35 +1,41 @@
 # Generate Configuration Files from Yaml
 python_exe = find_program('python3', 'python')
 
-sensor_yaml_script = files('sensor_gen.py')
-sensor_yaml_gen = run_command( \
-  python_exe, \
-  sensor_yaml_script, \
-  '-i', get_option('sensor-yaml-gen'), \
-  '-o', meson.project_build_root(), \
-  'generate-cpp')
-if sensor_yaml_gen.returncode() != 0
-  error(sensor_yaml_gen.stderr())
-endif
+sensor_gen = custom_target('sensor-gen',
+    output: 'sensor-gen.cpp',
+    input: [ 'sensor_gen.py', get_option('sensor-yaml-gen')],
+    command: [
+        python_exe,
+        '@INPUT0@',
+        '-i', '@INPUT1@',
+        '-o', meson.current_build_dir(),
+        'generate-cpp',
+    ],
+)
+generated_src += sensor_gen
 
-invsensor_yaml_script = files('inventory-sensor.py')
-invsensor_yaml_gen = run_command( \
-  python_exe, \
-  invsensor_yaml_script, \
-  '-i', get_option('invsensor-yaml-gen'), \
-  '-o', meson.project_build_root(), \
-  'generate-cpp')
-if invsensor_yaml_gen.returncode() != 0
-  error(invsensor_yaml_gen.stderr())
-endif
+invsensor_gen = custom_target('invsensor-gen',
+    output: 'inventory-sensor-gen.cpp',
+    input: [ 'inventory-sensor.py', get_option('invsensor-yaml-gen')],
+    command: [
+        python_exe,
+        '@INPUT0@',
+        '-i', '@INPUT1@',
+        '-o', meson.current_build_dir(),
+        'generate-cpp',
+    ],
+)
+generated_src += invsensor_gen
 
-fru_yaml_script = files('fru_gen.py')
-fru_yaml_gen = run_command( \
-  python_exe, \
-  fru_yaml_script, \
-  '-i', get_option('fru-yaml-gen'), \
-  '-o', meson.project_build_root(), \
-  'generate-cpp')
-if fru_yaml_gen.returncode() != 0
-  error(fru_yaml_gen.stderr())
-endif
+fru_gen = custom_target('fru-gen',
+    output: 'fru-read-gen.cpp',
+    input: [ 'fru_gen.py', get_option('fru-yaml-gen') ],
+    command: [
+        python_exe,
+        '@INPUT0@',
+        '-i', '@INPUT1@',
+        '-o', meson.current_build_dir(),
+        'generate-cpp',
+    ],
+)
+generated_src += fru_gen