meson: Add fru-device-less build configuration

Provide an option that skips building of fru-device.  fru-device remains
enabled and built by default.

Change-Id: If927861cf70aaf594844e28e993edc308138ddf2
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meson.build b/meson.build
index 74086d5..b53d9ae 100644
--- a/meson.build
+++ b/meson.build
@@ -26,7 +26,9 @@
          include_directories: 'subprojects/boost_1_71_0',
      )
 endif
-i2c = cpp.find_library('i2c')
+if get_option('fru-device')
+    i2c = cpp.find_library('i2c')
+endif
 if cpp.has_header('nlohmann/json.hpp')
     nlohmann_json = declare_dependency()
 else
diff --git a/meson_options.txt b/meson_options.txt
index b7869f4..a9aeeda 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,3 +1,6 @@
 option(
     'tests', type: 'feature', description: 'Build tests.',
 )
+option(
+    'fru-device', type: 'boolean', description: 'Build fru-device.',
+)
diff --git a/service_files/meson.build b/service_files/meson.build
index 2f1932d..2c4909c 100644
--- a/service_files/meson.build
+++ b/service_files/meson.build
@@ -1,14 +1,16 @@
 unit_files = [
-    'xyz.openbmc_project.FruDevice.service',
-    'xyz.openbmc_project.EntityManager.service',
+    ['xyz.openbmc_project.FruDevice.service', 'fru-device'],
+    ['xyz.openbmc_project.EntityManager.service', ''],
 ]
 
 foreach u : unit_files
-    configure_file(
-        copy: true,
-        input: u,
-        install: true,
-        install_dir: systemd_system_unit_dir,
-        output: u,
-    )
+    if u[1] == '' or get_option(u[1])
+        configure_file(
+            copy: true,
+            input: u[0],
+            install: true,
+            install_dir: systemd_system_unit_dir,
+            output: u[0],
+        )
+    endif
 endforeach
diff --git a/src/meson.build b/src/meson.build
index 2702d6c..fc85d9b 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -17,20 +17,22 @@
     install: true,
 )
 
-executable(
-    'fru-device',
-    'FruDevice.cpp',
-    'Utils.cpp',
-    cpp_args: cpp_args,
-    dependencies: [
-        boost,
-        i2c,
-        nlohmann_json,
-        sdbusplus,
-        threads,
-        valijson,
-    ],
-    implicit_include_directories: false,
-    include_directories: '../include',
-    install: true,
-)
+if get_option('fru-device')
+    executable(
+        'fru-device',
+        'FruDevice.cpp',
+        'Utils.cpp',
+        cpp_args: cpp_args,
+        dependencies: [
+            boost,
+            i2c,
+            nlohmann_json,
+            sdbusplus,
+            threads,
+            valijson,
+        ],
+        implicit_include_directories: false,
+        include_directories: '../include',
+        install: true,
+    )
+endif