diff --git a/example/meson.build b/example/meson.build
index d158045..897a341 100644
--- a/example/meson.build
+++ b/example/meson.build
@@ -1,8 +1,10 @@
-examples = [
-]
+examples = []
 
 foreach example : examples
-  executable(example, example + '.cpp',
-             implicit_include_directories: false,
-             dependencies: stdplus_dep)
+    executable(
+        example,
+        example + '.cpp',
+        implicit_include_directories: false,
+        dependencies: stdplus_dep,
+    )
 endforeach
diff --git a/include-dl/meson.build b/include-dl/meson.build
index ca41b34..502b3ea 100644
--- a/include-dl/meson.build
+++ b/include-dl/meson.build
@@ -1,5 +1,3 @@
 stdplus_dl_headers = include_directories('.')
 
-install_headers(
-  'stdplus/dl.hpp',
-  subdir: 'stdplus')
+install_headers('stdplus/dl.hpp', subdir: 'stdplus')
diff --git a/include-fd/meson.build b/include-fd/meson.build
index 3e36cb8..3884a38 100644
--- a/include-fd/meson.build
+++ b/include-fd/meson.build
@@ -1,15 +1,16 @@
 stdplus_headers += include_directories('.')
 
 install_headers(
-  'stdplus/fd/atomic.hpp',
-  'stdplus/fd/create.hpp',
-  'stdplus/fd/dupable.hpp',
-  'stdplus/fd/fmt.hpp',
-  'stdplus/fd/gmock.hpp',
-  'stdplus/fd/impl.hpp',
-  'stdplus/fd/intf.hpp',
-  'stdplus/fd/line.hpp',
-  'stdplus/fd/managed.hpp',
-  'stdplus/fd/mmap.hpp',
-  'stdplus/fd/ops.hpp',
-  subdir: 'stdplus/fd')
+    'stdplus/fd/atomic.hpp',
+    'stdplus/fd/create.hpp',
+    'stdplus/fd/dupable.hpp',
+    'stdplus/fd/fmt.hpp',
+    'stdplus/fd/gmock.hpp',
+    'stdplus/fd/impl.hpp',
+    'stdplus/fd/intf.hpp',
+    'stdplus/fd/line.hpp',
+    'stdplus/fd/managed.hpp',
+    'stdplus/fd/mmap.hpp',
+    'stdplus/fd/ops.hpp',
+    subdir: 'stdplus/fd',
+)
diff --git a/include-gtest/meson.build b/include-gtest/meson.build
index 118b208..cbe7603 100644
--- a/include-gtest/meson.build
+++ b/include-gtest/meson.build
@@ -1,5 +1,3 @@
 stdplus_gtest_headers = include_directories('.')
 
-install_headers(
-  'stdplus/gtest/tmp.hpp',
-  subdir: 'stdplus/gtest')
+install_headers('stdplus/gtest/tmp.hpp', subdir: 'stdplus/gtest')
diff --git a/include-uring/meson.build b/include-uring/meson.build
index e30432d..35d2f93 100644
--- a/include-uring/meson.build
+++ b/include-uring/meson.build
@@ -1,5 +1,3 @@
 stdplus_io_uring_headers = include_directories('.')
 
-install_headers(
-  'stdplus/io_uring.hpp',
-  subdir: 'stdplus')
+install_headers('stdplus/io_uring.hpp', subdir: 'stdplus')
diff --git a/include/meson.build b/include/meson.build
index f9eff41..e530ffc 100644
--- a/include/meson.build
+++ b/include/meson.build
@@ -1,35 +1,36 @@
 stdplus_headers = [include_directories('.')]
 
 install_headers(
-  'stdplus/cancel.hpp',
-  'stdplus/concepts.hpp',
-  'stdplus/debug/lifetime.hpp',
-  'stdplus/exception.hpp',
-  'stdplus/flags.hpp',
-  'stdplus/function_view.hpp',
-  'stdplus/handle/copyable.hpp',
-  'stdplus/handle/managed.hpp',
-  'stdplus/hash.hpp',
-  'stdplus/hash/array.hpp',
-  'stdplus/hash/tuple.hpp',
-  'stdplus/net/addr/ether.hpp',
-  'stdplus/net/addr/ip.hpp',
-  'stdplus/net/addr/sock.hpp',
-  'stdplus/net/addr/subnet.hpp',
-  'stdplus/numeric/endian.hpp',
-  'stdplus/numeric/str.hpp',
-  'stdplus/pinned.hpp',
-  'stdplus/print.hpp',
-  'stdplus/raw.hpp',
-  'stdplus/signal.hpp',
-  'stdplus/str/buf.hpp',
-  'stdplus/str/cat.hpp',
-  'stdplus/str/cexpr.hpp',
-  'stdplus/str/conv.hpp',
-  'stdplus/str/maps.hpp',
-  'stdplus/util/cexec.hpp',
-  'stdplus/util/string.hpp',
-  'stdplus/variant.hpp',
-  'stdplus/zstring.hpp',
-  'stdplus/zstring_view.hpp',
-  preserve_path: true)
+    'stdplus/cancel.hpp',
+    'stdplus/concepts.hpp',
+    'stdplus/debug/lifetime.hpp',
+    'stdplus/exception.hpp',
+    'stdplus/flags.hpp',
+    'stdplus/function_view.hpp',
+    'stdplus/handle/copyable.hpp',
+    'stdplus/handle/managed.hpp',
+    'stdplus/hash.hpp',
+    'stdplus/hash/array.hpp',
+    'stdplus/hash/tuple.hpp',
+    'stdplus/net/addr/ether.hpp',
+    'stdplus/net/addr/ip.hpp',
+    'stdplus/net/addr/sock.hpp',
+    'stdplus/net/addr/subnet.hpp',
+    'stdplus/numeric/endian.hpp',
+    'stdplus/numeric/str.hpp',
+    'stdplus/pinned.hpp',
+    'stdplus/print.hpp',
+    'stdplus/raw.hpp',
+    'stdplus/signal.hpp',
+    'stdplus/str/buf.hpp',
+    'stdplus/str/cat.hpp',
+    'stdplus/str/cexpr.hpp',
+    'stdplus/str/conv.hpp',
+    'stdplus/str/maps.hpp',
+    'stdplus/util/cexec.hpp',
+    'stdplus/util/string.hpp',
+    'stdplus/variant.hpp',
+    'stdplus/zstring.hpp',
+    'stdplus/zstring_view.hpp',
+    preserve_path: true,
+)
diff --git a/meson.build b/meson.build
index 7b10cbd..08de909 100644
--- a/meson.build
+++ b/meson.build
@@ -1,92 +1,98 @@
 project(
-  'stdplus',
-  'cpp',
-  version: '0.1',
-  meson_version: '>=1.1.1',
-  default_options: [
-    'warning_level=3',
-    'cpp_std=c++23',
-    'tests=' + (meson.is_subproject() ? 'disabled' : 'auto'),
-    'examples=' + (meson.is_subproject() ? 'false' : 'true'),
-  ])
+    'stdplus',
+    'cpp',
+    version: '0.1',
+    meson_version: '>=1.1.1',
+    default_options: [
+        'warning_level=3',
+        'cpp_std=c++23',
+        'tests=' + (meson.is_subproject() ? 'disabled' : 'auto'),
+        'examples=' + (meson.is_subproject() ? 'false' : 'true'),
+    ],
+)
 
 has_dl = false
 if not get_option('dl').disabled()
-  dl_dep = meson.get_compiler('cpp').find_library('dl', required: false)
-  has_dl = meson.get_compiler('cpp').links('''
+    dl_dep = meson.get_compiler('cpp').find_library('dl', required: false)
+    has_dl = meson.get_compiler('cpp').links(
+        '''
     #include <dlfcn.h>
     int main() { dlopen("", 0); }
-  ''', dependencies: dl_dep)
+  ''',
+        dependencies: dl_dep,
+    )
 endif
 if get_option('dl').enabled() and not has_dl
-  error('libdl support required')
+    error('libdl support required')
 endif
 
 has_fd = false
 if not get_option('fd').disabled()
-  has_fd = true
+    has_fd = true
 endif
 
 has_io_uring = false
 if not get_option('io_uring').disabled() and has_fd
-  io_uring_dep = dependency('liburing', required: get_option('io_uring'))
-  if io_uring_dep.found()
-    has_io_uring = true
-  endif
+    io_uring_dep = dependency('liburing', required: get_option('io_uring'))
+    if io_uring_dep.found()
+        has_io_uring = true
+    endif
 endif
 if get_option('io_uring').enabled() and not has_io_uring
-  error('io_uring support is required')
+    error('io_uring support is required')
 endif
 
 build_tests = get_option('tests')
 has_gtest = false
 if not build_tests.disabled() or not get_option('gtest').disabled()
-  gtest_dep = dependency('gtest', required: false)
-  gtest_main_dep = dependency('gtest', main: true, required: false)
-  gmock_dep = dependency('gmock', required: false)
-  if not gtest_dep.found() or not gmock_dep.found()
-    gtest_opts = import('cmake').subproject_options()
-    gtest_opts.add_cmake_defines({
-      'BUILD_SHARED_LIBS': 'ON',
-      'CMAKE_CXX_FLAGS': '-Wno-pedantic',
-    })
-    gtest_proj = import('cmake').subproject(
-      'googletest',
-      options: gtest_opts,
-      required: false)
-    if gtest_proj.found()
-      gtest_dep = declare_dependency(
-        dependencies: [
-          dependency('threads'),
-          gtest_proj.dependency('gtest'),
-        ])
-      gtest_main_dep = declare_dependency(
-        dependencies: [
-          gtest_dep,
-          gtest_proj.dependency('gtest_main'),
-        ])
-      gmock_dep = gtest_proj.dependency('gmock')
-    else
-      assert(not build_tests.enabled() and not get_option('gtest').enabled(), 'Googletest is required')
+    gtest_dep = dependency('gtest', required: false)
+    gtest_main_dep = dependency('gtest', main: true, required: false)
+    gmock_dep = dependency('gmock', required: false)
+    if not gtest_dep.found() or not gmock_dep.found()
+        gtest_opts = import('cmake').subproject_options()
+        gtest_opts.add_cmake_defines(
+            {'BUILD_SHARED_LIBS': 'ON', 'CMAKE_CXX_FLAGS': '-Wno-pedantic'},
+        )
+        gtest_proj = import('cmake').subproject(
+            'googletest',
+            options: gtest_opts,
+            required: false,
+        )
+        if gtest_proj.found()
+            gtest_dep = declare_dependency(
+                dependencies: [
+                    dependency('threads'),
+                    gtest_proj.dependency('gtest'),
+                ],
+            )
+            gtest_main_dep = declare_dependency(
+                dependencies: [gtest_dep, gtest_proj.dependency('gtest_main')],
+            )
+            gmock_dep = gtest_proj.dependency('gmock')
+        else
+            assert(
+                not build_tests.enabled() and not get_option('gtest').enabled(),
+                'Googletest is required',
+            )
+        endif
     endif
-  endif
-  if not get_option('gtest').disabled() and gtest_dep.found()
-    has_gtest = true
-  endif
+    if not get_option('gtest').disabled() and gtest_dep.found()
+        has_gtest = true
+    endif
 endif
 
 subdir('include')
 if has_dl
-  subdir('include-dl')
+    subdir('include-dl')
 endif
 if has_fd
-  subdir('include-fd')
+    subdir('include-fd')
 endif
 if has_io_uring
-  subdir('include-uring')
+    subdir('include-uring')
 endif
 if has_gtest
-  subdir('include-gtest')
+    subdir('include-gtest')
 endif
 
 subdir('src')
@@ -94,8 +100,8 @@
 build_examples = get_option('examples')
 
 if build_examples
-  subdir('example')
+    subdir('example')
 endif
 if not build_tests.disabled()
-  subdir('test')
+    subdir('test')
 endif
diff --git a/src/meson.build b/src/meson.build
index 90afee1..5fa4714 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -1,16 +1,16 @@
 fmt_dep = dependency('fmt', required: false)
 if not fmt_dep.found()
-  fmt_opts = import('cmake').subproject_options()
-  fmt_opts.add_cmake_defines({
-    'CMAKE_POSITION_INDEPENDENT_CODE': 'ON',
-    'MASTER_PROJECT': 'OFF',
-  })
-  fmt_proj = import('cmake').subproject(
-    'fmt',
-    options: fmt_opts,
-    required: false)
-  assert(fmt_proj.found(), 'fmtlib is required')
-  fmt_dep = fmt_proj.dependency('fmt')
+    fmt_opts = import('cmake').subproject_options()
+    fmt_opts.add_cmake_defines(
+        {'CMAKE_POSITION_INDEPENDENT_CODE': 'ON', 'MASTER_PROJECT': 'OFF'},
+    )
+    fmt_proj = import('cmake').subproject(
+        'fmt',
+        options: fmt_opts,
+        required: false,
+    )
+    assert(fmt_proj.found(), 'fmtlib is required')
+    fmt_dep = fmt_proj.dependency('fmt')
 endif
 
 # Function2 might not have a pkg-config. It is header only so just make
@@ -20,7 +20,7 @@
     'function2/function2.hpp',
     'fu2::unique_function',
     dependencies: function2_dep,
-    required: false
+    required: false,
 )
 if not has_function2
     function2_opts = import('cmake').subproject_options()
@@ -28,7 +28,7 @@
     function2_proj = import('cmake').subproject(
         'function2',
         options: function2_opts,
-        required: false
+        required: false,
     )
     assert(function2_proj.found(), 'function2 is required')
     if function2_proj.found()
@@ -36,213 +36,217 @@
     endif
 endif
 
-stdplus_deps = [
-  fmt_dep,
-  function2_dep,
-]
+stdplus_deps = [fmt_dep, function2_dep]
 
 stdplus_srcs = [
-  'cancel.cpp',
-  'debug/lifetime.cpp',
-  'exception.cpp',
-  'flags.cpp',
-  'function_view.cpp',
-  'handle/copyable.cpp',
-  'handle/managed.cpp',
-  'hash.cpp',
-  'hash/array.cpp',
-  'hash/tuple.cpp',
-  'net/addr/ether.cpp',
-  'net/addr/ip.cpp',
-  'net/addr/sock.cpp',
-  'net/addr/subnet.cpp',
-  'numeric/endian.cpp',
-  'numeric/str.cpp',
-  'pinned.cpp',
-  'print.cpp',
-  'raw.cpp',
-  'signal.cpp',
-  'str/buf.cpp',
-  'str/cat.cpp',
-  'str/cexpr.cpp',
-  'str/conv.cpp',
-  'str/maps.cpp',
-  'util/cexec.cpp',
-  'variant.cpp',
-  'zstring.cpp',
-  'zstring_view.cpp',
+    'cancel.cpp',
+    'debug/lifetime.cpp',
+    'exception.cpp',
+    'flags.cpp',
+    'function_view.cpp',
+    'handle/copyable.cpp',
+    'handle/managed.cpp',
+    'hash.cpp',
+    'hash/array.cpp',
+    'hash/tuple.cpp',
+    'net/addr/ether.cpp',
+    'net/addr/ip.cpp',
+    'net/addr/sock.cpp',
+    'net/addr/subnet.cpp',
+    'numeric/endian.cpp',
+    'numeric/str.cpp',
+    'pinned.cpp',
+    'print.cpp',
+    'raw.cpp',
+    'signal.cpp',
+    'str/buf.cpp',
+    'str/cat.cpp',
+    'str/cexpr.cpp',
+    'str/conv.cpp',
+    'str/maps.cpp',
+    'util/cexec.cpp',
+    'variant.cpp',
+    'zstring.cpp',
+    'zstring_view.cpp',
 ]
 
 if has_fd
-  stdplus_srcs += [
-    'fd/atomic.cpp',
-    'fd/create.cpp',
-    'fd/dupable.cpp',
-    'fd/fmt.cpp',
-    'fd/impl.cpp',
-    'fd/line.cpp',
-    'fd/managed.cpp',
-    'fd/mmap.cpp',
-    'fd/ops.cpp',
-  ]
+    stdplus_srcs += [
+        'fd/atomic.cpp',
+        'fd/create.cpp',
+        'fd/dupable.cpp',
+        'fd/fmt.cpp',
+        'fd/impl.cpp',
+        'fd/line.cpp',
+        'fd/managed.cpp',
+        'fd/mmap.cpp',
+        'fd/ops.cpp',
+    ]
 endif
 
 stdplus_lib = library(
-  'stdplus',
-  stdplus_srcs,
-  include_directories: stdplus_headers,
-  implicit_include_directories: false,
-  dependencies: stdplus_deps,
-  version: meson.project_version(),
-  build_by_default: not meson.is_subproject(),
-  install: true)
+    'stdplus',
+    stdplus_srcs,
+    include_directories: stdplus_headers,
+    implicit_include_directories: false,
+    dependencies: stdplus_deps,
+    version: meson.project_version(),
+    build_by_default: not meson.is_subproject(),
+    install: true,
+)
 
 stdplus_dep = declare_dependency(
-  dependencies: stdplus_deps,
-  include_directories: stdplus_headers,
-  link_with: stdplus_lib)
+    dependencies: stdplus_deps,
+    include_directories: stdplus_headers,
+    link_with: stdplus_lib,
+)
 
 stdplus_reqs = []
 foreach dep : stdplus_deps
-  if dep.type_name() == 'pkgconfig'
-    stdplus_reqs += dep
-  endif
+    if dep.type_name() == 'pkgconfig'
+        stdplus_reqs += dep
+    endif
 endforeach
 
 import('pkgconfig').generate(
-  stdplus_lib,
-  description: 'C++ helper utilities',
-  version: meson.project_version(),
-  requires: stdplus_reqs)
-
-if has_dl
-  stdplus_dl_deps = [
-    stdplus_dep,
-    dl_dep,
-  ]
-
-  stdplus_dl_pre = declare_dependency(
-    include_directories: stdplus_dl_headers,
-    dependencies: stdplus_dl_deps)
-
-  stdplus_dl_lib = library(
-    'stdplus-dl',
-    'dl.cpp',
-    dependencies: stdplus_dl_pre,
-    implicit_include_directories: false,
-    version: meson.project_version(),
-    build_by_default: not meson.is_subproject(),
-    install: true)
-
-  stdplus_dl_dep = declare_dependency(
-    dependencies: stdplus_dl_pre,
-    link_with: stdplus_dl_lib)
-
-  stdplus_dl_reqs = []
-  foreach dep : stdplus_dl_deps
-    if dep.type_name() == 'pkgconfig'
-      stdplus_dl_reqs += dep
-    endif
-  endforeach
-
-  import('pkgconfig').generate(
-    stdplus_dl_lib,
+    stdplus_lib,
     description: 'C++ helper utilities',
     version: meson.project_version(),
-    requires: stdplus_dl_reqs)
+    requires: stdplus_reqs,
+)
+
+if has_dl
+    stdplus_dl_deps = [stdplus_dep, dl_dep]
+
+    stdplus_dl_pre = declare_dependency(
+        include_directories: stdplus_dl_headers,
+        dependencies: stdplus_dl_deps,
+    )
+
+    stdplus_dl_lib = library(
+        'stdplus-dl',
+        'dl.cpp',
+        dependencies: stdplus_dl_pre,
+        implicit_include_directories: false,
+        version: meson.project_version(),
+        build_by_default: not meson.is_subproject(),
+        install: true,
+    )
+
+    stdplus_dl_dep = declare_dependency(
+        dependencies: stdplus_dl_pre,
+        link_with: stdplus_dl_lib,
+    )
+
+    stdplus_dl_reqs = []
+    foreach dep : stdplus_dl_deps
+        if dep.type_name() == 'pkgconfig'
+            stdplus_dl_reqs += dep
+        endif
+    endforeach
+
+    import('pkgconfig').generate(
+        stdplus_dl_lib,
+        description: 'C++ helper utilities',
+        version: meson.project_version(),
+        requires: stdplus_dl_reqs,
+    )
 endif
 
 if has_fd
-  stdplus_fd_dep = stdplus_dep
+    stdplus_fd_dep = stdplus_dep
 
-  import('pkgconfig').generate(
-    stdplus_lib,
-    name: 'stdplus-fd',
-    description: 'C++ helper utilities',
-    version: meson.project_version(),
-    requires: stdplus_reqs)
+    import('pkgconfig').generate(
+        stdplus_lib,
+        name: 'stdplus-fd',
+        description: 'C++ helper utilities',
+        version: meson.project_version(),
+        requires: stdplus_reqs,
+    )
 endif
 
 if has_io_uring
-  stdplus_io_uring_deps = [
-    stdplus_dep,
-    stdplus_fd_dep,
-    io_uring_dep,
-  ]
+    stdplus_io_uring_deps = [stdplus_dep, stdplus_fd_dep, io_uring_dep]
 
-  stdplus_io_uring_pre = declare_dependency(
-    include_directories: stdplus_io_uring_headers,
-    dependencies: stdplus_io_uring_deps)
+    stdplus_io_uring_pre = declare_dependency(
+        include_directories: stdplus_io_uring_headers,
+        dependencies: stdplus_io_uring_deps,
+    )
 
-  stdplus_io_uring_lib = library(
-    'stdplus-io_uring',
-    'io_uring.cpp',
-    dependencies: stdplus_io_uring_pre,
-    implicit_include_directories: false,
-    version: meson.project_version(),
-    build_by_default: not meson.is_subproject(),
-    install: true)
+    stdplus_io_uring_lib = library(
+        'stdplus-io_uring',
+        'io_uring.cpp',
+        dependencies: stdplus_io_uring_pre,
+        implicit_include_directories: false,
+        version: meson.project_version(),
+        build_by_default: not meson.is_subproject(),
+        install: true,
+    )
 
-  stdplus_io_uring_dep = declare_dependency(
-    dependencies: stdplus_io_uring_pre,
-    link_with: stdplus_io_uring_lib)
+    stdplus_io_uring_dep = declare_dependency(
+        dependencies: stdplus_io_uring_pre,
+        link_with: stdplus_io_uring_lib,
+    )
 
-  stdplus_io_uring_reqs = []
-  foreach dep : stdplus_io_uring_deps
-    if dep.type_name() == 'pkgconfig'
-      stdplus_io_uring_reqs += dep
-    endif
-  endforeach
+    stdplus_io_uring_reqs = []
+    foreach dep : stdplus_io_uring_deps
+        if dep.type_name() == 'pkgconfig'
+            stdplus_io_uring_reqs += dep
+        endif
+    endforeach
 
-  import('pkgconfig').generate(
-    stdplus_io_uring_lib,
-    description: 'C++ helper utilities',
-    version: meson.project_version(),
-    requires: stdplus_io_uring_reqs)
+    import('pkgconfig').generate(
+        stdplus_io_uring_lib,
+        description: 'C++ helper utilities',
+        version: meson.project_version(),
+        requires: stdplus_io_uring_reqs,
+    )
 endif
 
 if has_gtest
-  stdplus_gtest_deps = [
-    fmt_dep,
-    gtest_dep,
-  ]
+    stdplus_gtest_deps = [fmt_dep, gtest_dep]
 
-  stdplus_gtest_pre = declare_dependency(
-    include_directories: stdplus_gtest_headers,
-    dependencies: stdplus_gtest_deps)
+    stdplus_gtest_pre = declare_dependency(
+        include_directories: stdplus_gtest_headers,
+        dependencies: stdplus_gtest_deps,
+    )
 
-  stdplus_gtest_lib = library(
-    'stdplus-gtest',
-    'gtest/tmp.cpp',
-    dependencies: stdplus_gtest_pre,
-    implicit_include_directories: false,
-    version: meson.project_version(),
-    build_by_default: not meson.is_subproject(),
-    install: true)
+    stdplus_gtest_lib = library(
+        'stdplus-gtest',
+        'gtest/tmp.cpp',
+        dependencies: stdplus_gtest_pre,
+        implicit_include_directories: false,
+        version: meson.project_version(),
+        build_by_default: not meson.is_subproject(),
+        install: true,
+    )
 
-  stdplus_gtest_dep = declare_dependency(
-    dependencies: stdplus_gtest_pre,
-    link_with: stdplus_gtest_lib)
+    stdplus_gtest_dep = declare_dependency(
+        dependencies: stdplus_gtest_pre,
+        link_with: stdplus_gtest_lib,
+    )
 
-  stdplus_gtest_reqs = []
-  foreach dep : stdplus_gtest_deps
-    if dep.type_name() == 'pkgconfig'
-      stdplus_gtest_reqs += dep
-    endif
-  endforeach
+    stdplus_gtest_reqs = []
+    foreach dep : stdplus_gtest_deps
+        if dep.type_name() == 'pkgconfig'
+            stdplus_gtest_reqs += dep
+        endif
+    endforeach
 
-  import('pkgconfig').generate(
-    stdplus_gtest_lib,
-    description: 'C++ helper utilities',
-    version: meson.project_version(),
-    requires: stdplus_gtest_reqs)
+    import('pkgconfig').generate(
+        stdplus_gtest_lib,
+        description: 'C++ helper utilities',
+        version: meson.project_version(),
+        requires: stdplus_gtest_reqs,
+    )
 
-  install_data(
-    'run_with_tmp',
-    install_mode: 'rwxr-xr-x',
-    install_dir: get_option('bindir'))
+    install_data(
+        'run_with_tmp',
+        install_mode: 'rwxr-xr-x',
+        install_dir: get_option('bindir'),
+    )
 
-  meson.override_find_program('run_with_tmp', files('run_with_tmp'))
+    meson.override_find_program('run_with_tmp', files('run_with_tmp'))
 endif
 
 run_with_tmp = find_program('run_with_tmp', native: true)
diff --git a/test/meson.build b/test/meson.build
index 378e666..ac86f24 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,110 +1,116 @@
 gtests = {
-  'cancel': [stdplus_dep, gtest_main_dep],
-  'exception': [stdplus_dep, gtest_main_dep],
-  'function_view': [stdplus_dep, gtest_main_dep],
-  'handle/copyable': [stdplus_dep, gtest_main_dep],
-  'handle/managed': [stdplus_dep, gtest_main_dep],
-  'hash': [stdplus_dep, gtest_main_dep],
-  'hash/array': [stdplus_dep, gtest_main_dep],
-  'hash/tuple': [stdplus_dep, gtest_main_dep],
-  'net/addr/ether': [stdplus_dep, gtest_main_dep],
-  'net/addr/ip': [stdplus_dep, gtest_main_dep],
-  'net/addr/sock': [stdplus_dep, gtest_main_dep],
-  'net/addr/subnet': [stdplus_dep, gtest_main_dep],
-  'numeric/endian': [stdplus_dep, gtest_main_dep],
-  'numeric/str': [stdplus_dep, gtest_main_dep],
-  'pinned': [stdplus_dep, gtest_main_dep],
-  'print': [stdplus_dep, gtest_main_dep],
-  'raw': [stdplus_dep, gmock_dep, gtest_main_dep],
-  'signal': [stdplus_dep, gtest_main_dep],
-  'str/buf': [stdplus_dep, gtest_main_dep],
-  'str/cat': [stdplus_dep, gtest_main_dep],
-  'str/cexpr': [stdplus_dep, gtest_main_dep],
-  'str/conv': [stdplus_dep, gmock_dep, gtest_main_dep],
-  'str/maps': [stdplus_dep, gmock_dep, gtest_main_dep],
-  'util/cexec': [stdplus_dep, gtest_main_dep],
-  'variant': [stdplus_dep, gtest_main_dep],
-  'zstring': [stdplus_dep, gtest_main_dep],
-  'zstring_view': [stdplus_dep, gtest_main_dep],
+    'cancel': [stdplus_dep, gtest_main_dep],
+    'exception': [stdplus_dep, gtest_main_dep],
+    'function_view': [stdplus_dep, gtest_main_dep],
+    'handle/copyable': [stdplus_dep, gtest_main_dep],
+    'handle/managed': [stdplus_dep, gtest_main_dep],
+    'hash': [stdplus_dep, gtest_main_dep],
+    'hash/array': [stdplus_dep, gtest_main_dep],
+    'hash/tuple': [stdplus_dep, gtest_main_dep],
+    'net/addr/ether': [stdplus_dep, gtest_main_dep],
+    'net/addr/ip': [stdplus_dep, gtest_main_dep],
+    'net/addr/sock': [stdplus_dep, gtest_main_dep],
+    'net/addr/subnet': [stdplus_dep, gtest_main_dep],
+    'numeric/endian': [stdplus_dep, gtest_main_dep],
+    'numeric/str': [stdplus_dep, gtest_main_dep],
+    'pinned': [stdplus_dep, gtest_main_dep],
+    'print': [stdplus_dep, gtest_main_dep],
+    'raw': [stdplus_dep, gmock_dep, gtest_main_dep],
+    'signal': [stdplus_dep, gtest_main_dep],
+    'str/buf': [stdplus_dep, gtest_main_dep],
+    'str/cat': [stdplus_dep, gtest_main_dep],
+    'str/cexpr': [stdplus_dep, gtest_main_dep],
+    'str/conv': [stdplus_dep, gmock_dep, gtest_main_dep],
+    'str/maps': [stdplus_dep, gmock_dep, gtest_main_dep],
+    'util/cexec': [stdplus_dep, gtest_main_dep],
+    'variant': [stdplus_dep, gtest_main_dep],
+    'zstring': [stdplus_dep, gtest_main_dep],
+    'zstring_view': [stdplus_dep, gtest_main_dep],
 }
 
 if has_dl
-  gtests += {
-    'dl': [stdplus_dl_dep, gtest_main_dep],
-  }
+    gtests += {'dl': [stdplus_dl_dep, gtest_main_dep]}
 elif build_tests.enabled()
-  error('Not testing libdl feature')
+    error('Not testing libdl feature')
 else
-  warning('Not testing libdl feature')
+    warning('Not testing libdl feature')
 endif
 
 if has_fd
-  gtests += {
-    'fd/dupable': [stdplus_fd_dep],
-    'fd/managed': [stdplus_fd_dep],
-    'fd/fmt': [stdplus_fd_dep, stdplus_dep, gtest_main_dep],
-    'fd/intf': [stdplus_fd_dep],
-    'fd/impl': [stdplus_fd_dep],
-    'fd/line': [stdplus_fd_dep, stdplus_dep, gmock_dep, gtest_main_dep],
-    'fd/mmap': [stdplus_fd_dep, gtest_main_dep],
-    'fd/mock': [stdplus_fd_dep, gmock_dep, gtest_main_dep],
-    'fd/ops': [stdplus_fd_dep, stdplus_dep, gmock_dep, gtest_main_dep],
-  }
-  if has_gtest
     gtests += {
-      'fd/atomic': [stdplus_fd_dep, stdplus_gtest_dep, gtest_main_dep],
+        'fd/dupable': [stdplus_fd_dep],
+        'fd/managed': [stdplus_fd_dep],
+        'fd/fmt': [stdplus_fd_dep, stdplus_dep, gtest_main_dep],
+        'fd/intf': [stdplus_fd_dep],
+        'fd/impl': [stdplus_fd_dep],
+        'fd/line': [stdplus_fd_dep, stdplus_dep, gmock_dep, gtest_main_dep],
+        'fd/mmap': [stdplus_fd_dep, gtest_main_dep],
+        'fd/mock': [stdplus_fd_dep, gmock_dep, gtest_main_dep],
+        'fd/ops': [stdplus_fd_dep, stdplus_dep, gmock_dep, gtest_main_dep],
     }
-  elif build_tests.enabled()
-    error('Not testing fd/atomic feature')
-  else
-    warning('Not testing fd/atomic feature')
-  endif
+    if has_gtest
+        gtests += {
+            'fd/atomic': [stdplus_fd_dep, stdplus_gtest_dep, gtest_main_dep],
+        }
+    elif build_tests.enabled()
+        error('Not testing fd/atomic feature')
+    else
+        warning('Not testing fd/atomic feature')
+    endif
 elif build_tests.enabled()
-  error('Not testing file descriptor feature')
+    error('Not testing file descriptor feature')
 else
-  warning('Not testing file descriptor feature')
+    warning('Not testing file descriptor feature')
 endif
 
 if has_io_uring
-  gtests += {
-    'io_uring': [stdplus_io_uring_dep, stdplus_dep, gmock_dep, gtest_main_dep],
-  }
+    gtests += {
+        'io_uring': [
+            stdplus_io_uring_dep,
+            stdplus_dep,
+            gmock_dep,
+            gtest_main_dep,
+        ],
+    }
 elif build_tests.enabled()
-  error('Not testing io_uring feature')
+    error('Not testing io_uring feature')
 else
-  warning('Not testing io_uring feature')
+    warning('Not testing io_uring feature')
 endif
 
 if has_gtest
-  gtests += {
-    'gtest/tmp': [stdplus_gtest_dep, gtest_main_dep],
-  }
+    gtests += {'gtest/tmp': [stdplus_gtest_dep, gtest_main_dep]}
 elif build_tests.enabled()
-  error('Not testing gtest lib feature')
+    error('Not testing gtest lib feature')
 else
-  warning('Not testing gtest lib feature')
+    warning('Not testing gtest lib feature')
 endif
 
 add_test_setup(
-  'stdplus',
-  exe_wrapper: run_with_tmp,
-  env: {'TMPTMPL': 'stdplus-test.XXXXXXXXXX'},
-  is_default: true)
+    'stdplus',
+    exe_wrapper: run_with_tmp,
+    env: {'TMPTMPL': 'stdplus-test.XXXXXXXXXX'},
+    is_default: true,
+)
 
 add_test_setup(
-  'valgrind',
-  exe_wrapper: [run_with_tmp, 'valgrind'],
-  env: {'TMPTMPL': 'stdplus-test.XXXXXXXXXX'})
+    'valgrind',
+    exe_wrapper: [run_with_tmp, 'valgrind'],
+    env: {'TMPTMPL': 'stdplus-test.XXXXXXXXXX'},
+)
 
 if gtest_dep.found() and gmock_dep.found()
-  foreach t, deps : gtests
-    test(
-      t,
-      executable(
-        t.underscorify(), t + '.cpp',
-        build_by_default: false,
-        implicit_include_directories: false,
-        cpp_args: '-Wno-missing-braces',
-        dependencies: deps))
-  endforeach
+    foreach t, deps : gtests
+        test(
+            t,
+            executable(
+                t.underscorify(),
+                t + '.cpp',
+                build_by_default: false,
+                implicit_include_directories: false,
+                cpp_args: '-Wno-missing-braces',
+                dependencies: deps,
+            ),
+        )
+    endforeach
 endif
