meson: Use declare_dependency for libraries

Now example binaries and tests don't have to be aware of the nuances for
configuring the build to use the library. This makes the project library
look like any other system dependency.

Change-Id: Ife3bcd3dcbd423f08c513f9a05fc8cabff41e2f6
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/example/meson.build b/example/meson.build
index ea04ff5..fdab8f0 100644
--- a/example/meson.build
+++ b/example/meson.build
@@ -7,8 +7,6 @@
 
 foreach example : examples
   executable(example, example + '.cpp',
-             include_directories: includes,
              implicit_include_directories: false,
-             link_with: sdeventplus,
-             dependencies: stdplus)
+             dependencies: sdeventplus)
 endforeach
diff --git a/meson.build b/meson.build
index ac9951c..ae1e2c6 100644
--- a/meson.build
+++ b/meson.build
@@ -6,8 +6,6 @@
           'cpp_std=c++17'
         ])
 
-includes = include_directories('src')
-
 subdir('src')
 
 build_tests = get_option('tests')
diff --git a/src/meson.build b/src/meson.build
index 8b4169b..7cd2e92 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,7 +1,11 @@
-libsystemd = dependency('libsystemd')
-stdplus = dependency('stdplus')
+sdeventplus_deps = [
+  dependency('libsystemd'),
+  dependency('stdplus'),
+]
 
-sdeventplus = library(
+sdeventplus_headers = include_directories('.')
+
+sdeventplus_lib = library(
   'sdeventplus',
   [
     'sdeventplus/clock.cpp',
@@ -16,15 +20,17 @@
     'sdeventplus/source/time.cpp',
     'sdeventplus/utility/timer.cpp',
   ],
-  include_directories: includes,
+  include_directories: sdeventplus_headers,
   implicit_include_directories: false,
   version: meson.project_version(),
-  dependencies: [
-    libsystemd,
-    stdplus
-  ],
+  dependencies: sdeventplus_deps,
   install: true)
 
+sdeventplus = declare_dependency(
+  dependencies: sdeventplus_deps,
+  include_directories: sdeventplus_headers,
+  link_with: sdeventplus_lib)
+
 import('pkgconfig').generate(
   name: 'sdeventplus',
   description: 'C++ systemd event wrapper',
diff --git a/test/meson.build b/test/meson.build
index 8fa22a7..3b8f167 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -17,8 +17,6 @@
 
 foreach t : tests
   test(t, executable(t.underscorify(), t + '.cpp',
-                     include_directories: includes,
                      implicit_include_directories: false,
-                     link_with: sdeventplus,
-                     dependencies: [gtest, gmock]))
+                     dependencies: [sdeventplus, gtest, gmock]))
 endforeach