meson: Cleanup library linking

Change-Id: Ie1fa47ec3c6f2d2a88f8487f3a533c5ebd801612
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/meson.build b/meson.build
index 66e6801..19dfc62 100644
--- a/meson.build
+++ b/meson.build
@@ -12,16 +12,9 @@
 
 build_tests = get_option('tests')
 
-gmock = dependency('gmock')
-gpioplus = dependency('gpioplus')
-gtest = dependency('gtest', main: true)
-phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
-phosphor_logging = dependency('phosphor-logging')
-sdbusplus = dependency('sdbusplus')
-sdeventplus = dependency('sdeventplus')
-stdplus = dependency('stdplus')
 fmt = dependency('fmt')
-threads = dependency('threads')
+gmock = dependency('gmock')
+gtest = dependency('gtest', main: true)
 
 conf = configuration_data()
 conf.set_quoted('BUSNAME_PREFIX', get_option('busname-prefix'))
@@ -29,82 +22,62 @@
 conf.set10('NEGATIVE_ERRNO_ON_FAIL', get_option('negative-errno-on-fail'))
 conf.set10('UPDATE_FUNCTIONAL_ON_FAIL', get_option('update-functional-on-fail'))
 
-configure_file(output: 'config.h', configuration: conf)
+sysfs_headers = include_directories('.')
 
-libaverage = static_library(
-    'average',
-    'average.cpp',
-)
+sysfs_deps = [
+    fmt,
+]
 
-libfan_pwm = static_library(
-    'fan_pwm',
-    'fan_pwm.cpp',
-)
-
-libhwmon = static_library(
-    'hwmon',
-    'hwmon.cpp',
-)
-
-libhwmonio = static_library(
-    'hwmonio',
-    'hwmonio.cpp',
-)
-
-libsensor = static_library(
-    'sensor',
-    'sensor.cpp',
-    dependencies: [
-        phosphor_dbus_interfaces,
-        phosphor_logging,
-        sdbusplus,
-    ],
-    link_with: [
-        libhwmon,
-    ],
-)
-
-libsysfs = static_library(
+sysfs_lib = static_library(
     'sysfs',
     'sysfs.cpp',
-    dependencies: [
-        sdbusplus,
-    ],
-)
+    include_directories: sysfs_headers,
+    dependencies: sysfs_deps)
 
-libhwmon_all = static_library(
-    'hwmon_all',
+sysfs_dep = declare_dependency(
+    dependencies: sysfs_deps,
+    include_directories: sysfs_headers,
+    link_with: sysfs_lib)
+
+hwmon_headers = include_directories('.')
+
+hwmon_deps = [
+    fmt,
+    dependency('gpioplus'),
+    dependency('phosphor-dbus-interfaces'),
+    dependency('phosphor-logging'),
+    dependency('sdbusplus'),
+    dependency('sdeventplus'),
+    dependency('stdplus'),
+    sysfs_dep,
+]
+
+hwmon_lib = static_library(
+    'hwmon',
+    'average.cpp',
+    configure_file(output: 'config.h', configuration: conf),
     'env.cpp',
+    'fan_pwm.cpp',
     'fan_speed.cpp',
     'gpio_handle.cpp',
+    'hwmon.cpp',
+    'hwmonio.cpp',
     'mainloop.cpp',
+    'sensor.cpp',
     'sensorset.cpp',
-    dependencies: [
-        fmt,
-        gpioplus,
-        phosphor_dbus_interfaces,
-        phosphor_logging,
-    ],
-    link_with: [
-        libaverage,
-        libfan_pwm,
-        libhwmon,
-        libhwmonio,
-        libsensor,
-        libsysfs,
-    ],
-)
+    dependencies: hwmon_deps,
+    include_directories: hwmon_headers)
+
+hwmon_dep = declare_dependency(
+    dependencies: hwmon_deps,
+    include_directories: hwmon_headers,
+    link_with: hwmon_lib)
 
 executable(
     'phosphor-hwmon-readd',
     'readd.cpp',
-    dependencies: [
-        sdeventplus,
-    ],
+    dependencies: hwmon_dep,
     install: true,
-    link_with: [
-        libhwmon_all,
-    ],
 )
 
 subdir('msl')