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: Ib042c253adedb6f949c8a8897ed9a34e61d2a888
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/example/meson.build b/example/meson.build
index 1cd26b0..b437a7d 100644
--- a/example/meson.build
+++ b/example/meson.build
@@ -4,7 +4,6 @@
 
 foreach example : examples
   executable(example, example + '.cpp',
-             include_directories: includes,
              implicit_include_directories: false,
-             link_with: gpioplus)
+             dependencies: gpioplus)
 endforeach
diff --git a/meson.build b/meson.build
index 3c82f44..a8d360e 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 9234276..b86ed9d 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,4 +1,6 @@
-gpioplus = library(
+gpioplus_headers = include_directories('.')
+
+gpioplus_lib = library(
   'gpioplus',
   [
     'gpioplus/chip.cpp',
@@ -7,11 +9,16 @@
     'gpioplus/internal/fd.cpp',
     'gpioplus/internal/sys.cpp',
   ],
-  include_directories: includes,
+  include_directories: gpioplus_headers,
   implicit_include_directories: false,
   version: meson.project_version(),
   install: true)
 
+gpioplus = declare_dependency(
+  include_directories: gpioplus_headers,
+  link_with: gpioplus_lib,
+)
+
 import('pkgconfig').generate(
   name: 'gpioplus',
   description: 'C++ systemd event wrapper',
diff --git a/test/meson.build b/test/meson.build
index 84abb79..15e5e7b 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -12,8 +12,6 @@
 
 foreach t : tests
   test(t, executable(t.underscorify(), t + '.cpp',
-                     include_directories: includes,
                      implicit_include_directories: false,
-                     link_with: gpioplus,
-                     dependencies: [gtest, gmock]))
+                     dependencies: [gpioplus, gtest, gmock]))
 endforeach