meson: Improve boost integration

Currently we hit the following:

```
$ meson setup --force-fallback-for=boost build
...
WARNING: Subproject 'boost' did not override 'boost' dependency and no variable name specified
Dependency boost from subproject subprojects/boost found: NO
meson.build:57: WARNING: include_directories sandbox violation!
The project is trying to access the directory 'subprojects/boost_1_79_0/' which belongs to a different
subproject. This is a problem as it hardcodes the relative paths of these two projects.
This makes it impossible to compile the project in any other directory layout and also
prevents the subproject from changing its own directory layout.

Instead of poking directly at the internals the subproject should be executed and
it should set a variable that the caller can then use. Something like:

 # In subproject
some_dep = declare_dependency(include_directories: include_directories('include'))

 # In subproject wrap file
[provide]
some = some_dep

 # In parent project
some_dep = dependency('some')
executable(..., dependencies: [some_dep])

This warning will become a hard error in a future Meson release.

meson.build:57:14: ERROR: Include dir subprojects/boost_1_79_0/ does not exist.
```

Address the sandbox violation and reduce the amount of configuration
noise in meson.build by providing an appropriate wrap via packagefiles.

Change-Id: I4063764d2c3a00f58d3c83712092303538b64843
Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
diff --git a/meson.build b/meson.build
index 62c55f4..fe7be9e 100644
--- a/meson.build
+++ b/meson.build
@@ -48,21 +48,7 @@
 
 threads = dependency('threads')
 
-boost = dependency(
-    'boost',
-    version: '>=1.79.0',
-    required: false,
-    include_type: 'system',
-)
-if not boost.found()
-    subproject('boost', required: false)
-    boost_inc = include_directories(
-        'subprojects/boost_1_79_0/',
-        is_system: true,
-    )
-    boost = declare_dependency(include_directories: boost_inc)
-    boost = boost.as_system('system')
-endif
+boost = dependency('boost', version: '>=1.79.0', include_type: 'system')
 
 uring = dependency('liburing', include_type: 'system')
 
diff --git a/subprojects/boost.wrap b/subprojects/boost.wrap
index 008548f..90357ed 100644
--- a/subprojects/boost.wrap
+++ b/subprojects/boost.wrap
@@ -1,4 +1,6 @@
 [wrap-file]
+directory = boost_1_79_0
 source_url = https://downloads.yoctoproject.org/mirror/sources/boost_1_79_0.tar.bz2
 source_hash = 475d589d51a7f8b3ba2ba4eda022b170e562ca3b760ee922c146b6c65856ef39
 source_filename = 1_79_0.tar.bz2
+patch_directory = boost
diff --git a/subprojects/packagefiles/boost/meson.build b/subprojects/packagefiles/boost/meson.build
new file mode 100644
index 0000000..9d08c8c
--- /dev/null
+++ b/subprojects/packagefiles/boost/meson.build
@@ -0,0 +1,11 @@
+project('boost',
+    'cpp',
+    version : '1.79.0',
+    license : 'Boost'
+)
+
+boost_dep = declare_dependency(
+    include_directories : include_directories('.'),
+)
+
+meson.override_dependency('boost', boost_dep)