sdbus++: Fix meson dependency generation
All of the generated meson files optionally look for sdbus++ sources
that can be plumbed in to allow changes to the generator code to
correctly trigger rebuilds.
This will require adding a new variable prior to generated sources,
`sdbusplusplus_depfiles`. You can convert previous meson defitions with
the follwing.
```
sdbusplus_dep = dependency('sdbusplus')
sdbusplusplus_prog = find_program('sdbus++', native: true)
sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson', native: true)
sdbusplusplus_depfiles = files()
if sdbusplus_dep.type_name() == 'internal'
sdbusplusplus_depfiles = subproject('sdbusplus').get_variable('sdbusplusplus_depfiles')
endif
```
Change-Id: Ic2d5bafdbdd2595be8c44e0e616e590143639f21
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/test/meson.build b/test/meson.build
index 0deeed8..64dbc0e 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -81,15 +81,22 @@
),
)
-server_buildroot = meson.current_build_dir()
-server_files = files(
- run_command(
- sdbusgen_prog,
- '--tool', sdbusplusplus_prog,
- '--output', server_buildroot,
- 'server',
- check: true
- ).stdout().strip().split('\n')
+subdir('server/Test')
+server_test_lib = static_library(
+ 'server-test',
+ server_test_sources,
+ dependencies: sdbusplus_dep,
+)
+server_test_hpp = []
+foreach f : server_test_sources.to_list()
+ if f.full_path().endswith('.hpp')
+ server_test_hpp += f
+ endif
+endforeach
+server_test_dep = declare_dependency(
+ link_with: server_test_lib,
+ dependencies: sdbusplus_dep,
+ sources: server_test_hpp,
)
test(
@@ -97,12 +104,10 @@
executable(
'test-server',
'server/object.cpp',
- server_files,
- include_directories: include_directories('server'),
dependencies: [
gmock_dep,
gtest_dep,
- sdbusplus_dep,
+ server_test_dep,
],
),
)
@@ -112,12 +117,10 @@
executable(
'test-server-message-variant',
'server/message_variant.cpp',
- server_files,
- include_directories: include_directories('server'),
dependencies: [
gmock_dep,
gtest_dep,
- sdbusplus_dep,
+ server_test_dep,
],
),
)
diff --git a/test/server/Test/meson.build b/test/server/Test/meson.build
new file mode 100644
index 0000000..37e56a5
--- /dev/null
+++ b/test/server/Test/meson.build
@@ -0,0 +1,13 @@
+server_test_sources = custom_target(
+ 'server_test__cpp',
+ input: '../Test.interface.yaml',
+ output: [ 'server.cpp', 'server.hpp', 'client.hpp' ],
+ depend_files: sdbusplusplus_depfiles,
+ command: [
+ sdbuspp_gen_meson_prog, '--command', 'cpp',
+ '--output', meson.current_build_dir(),
+ '--tool', sdbusplusplus_prog,
+ '--directory', meson.current_source_dir() / '../..',
+ 'server/Test',
+ ],
+)
diff --git a/test/server/message_variant.cpp b/test/server/message_variant.cpp
index 2ddfac4..87fe511 100644
--- a/test/server/message_variant.cpp
+++ b/test/server/message_variant.cpp
@@ -1,6 +1,5 @@
-#include "Test/server.hpp"
-
#include <sdbusplus/bus.hpp>
+#include <server/Test/server.hpp>
#include <gtest/gtest.h>
diff --git a/test/server/object.cpp b/test/server/object.cpp
index afb7ad0..13cd054 100644
--- a/test/server/object.cpp
+++ b/test/server/object.cpp
@@ -1,8 +1,7 @@
-#include "Test/server.hpp"
-
#include <sdbusplus/bus.hpp>
#include <sdbusplus/server/manager.hpp>
#include <sdbusplus/test/sdbus_mock.hpp>
+#include <server/Test/server.hpp>
#include <gtest/gtest.h>