Setup RDE client environment
Google-Bug-Id: 309116881
Change-Id: Ic6047219731bac1bfbaef53c65eb5ce5a624a545
Signed-off-by: Harsh Tyagi <harshtya@google.com>
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..ad85098
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,95 @@
+project('rded', ['c', 'cpp'],
+ version: '0.1', meson_version: '>=1.1.1',
+ default_options: [
+ 'warning_level=3',
+ 'werror=true',
+ 'cpp_std=c++23',
+ 'c_std=c18',
+ ])
+
+sources = [
+ 'rded.cpp'
+]
+
+cpp = meson.get_compiler('cpp')
+phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
+sdbusplus = dependency('sdbusplus')
+sdeventplus = dependency('sdeventplus')
+stdplus = dependency('stdplus')
+phosphor_logging_dep = dependency('phosphor-logging')
+
+if cpp.has_header('nlohmann/json.hpp')
+ nlohmann_json = declare_dependency()
+else
+ nlohmann_json = dependency('nlohmann_json')
+endif
+
+if get_option('tests').allowed()
+ subdir('tests')
+endif
+
+libbej_dep = dependency('libbej')
+libpldm_dep = dependency('libpldm')
+
+headers = ['.']
+requester_inc = include_directories(headers)
+req_src = declare_dependency(include_directories:requester_inc)
+
+boost = dependency(
+ 'boost',
+ version : '>=1.82.0',
+ required : false,
+ include_type: 'system'
+)
+
+if not boost.found()
+ boost = subproject('boost', required: true).get_variable('boost_dep')
+ boost = boost.as_system('system')
+endif
+
+boost_compile_args = [
+ '-DBOOST_ASIO_DISABLE_THREADS',
+ '-DBOOST_ALL_NO_LIB',
+ '-DBOOST_SYSTEM_NO_DEPRECATED',
+ '-DBOOST_ERROR_CODE_HEADER_ONLY',
+ '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING',
+]
+
+boost_dep = declare_dependency(
+ dependencies: dependency('boost',
+ modules: ['coroutine', 'context'],
+ disabler: true,
+ required: false
+ ),
+ compile_args: boost_compile_args)
+
+deps = [
+ libpldm_dep,
+ libbej_dep,
+ boost_dep,
+ nlohmann_json,
+ phosphor_dbus_interfaces,
+ sdbusplus,
+ sdeventplus,
+ stdplus,
+ req_src,
+]
+
+executable(
+ 'rded',
+ sources,
+ implicit_include_directories: false,
+ dependencies: deps,
+ install: true,
+ install_dir: get_option('bindir'))
+
+systemd_dep = dependency('systemd')
+if systemd_dep.found()
+ configure_file(
+ copy: true,
+ input: 'service_files/rded.service',
+ install: true,
+ install_dir: systemd_dep.get_variable('systemdsystemunitdir'),
+ output: 'rded1.service',
+ )
+endif
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..90486a6
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,2 @@
+option('tests', type: 'feature', description: 'Build tests', value: 'enabled')
+option('systemd', type: 'feature', description: 'Include systemd support', value: 'enabled')
diff --git a/rded.cpp b/rded.cpp
new file mode 100644
index 0000000..42f2d9b
--- /dev/null
+++ b/rded.cpp
@@ -0,0 +1,6 @@
+#include <iostream>
+int main()
+{
+ // TODO(@harshtya): Add RDE Code
+ return 0;
+}
diff --git a/service_files/rded.service b/service_files/rded.service
new file mode 100644
index 0000000..eb3af9b
--- /dev/null
+++ b/service_files/rded.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Phosphor RDE Daemon
+
+[Service]
+Type=simple
+Restart=always
+ExecStart=/usr/bin/rded
+
+[Install]
+WantedBy=multi-user.target
diff --git a/subprojects/boost.wrap b/subprojects/boost.wrap
new file mode 100644
index 0000000..2e6b7d1
--- /dev/null
+++ b/subprojects/boost.wrap
@@ -0,0 +1,9 @@
+[wrap-file]
+directory = boost-1.83.0
+
+source_url = https://github.com/boostorg/boost/releases/download/boost-1.83.0/boost-1.83.0.tar.gz
+source_hash = 0c6049764e80aa32754acd7d4f179fd5551d8172a83b71532ae093e7384e98da
+source_filename = 1_83_0.tar.gz
+
+[provide]
+boost = boost_dep
diff --git a/subprojects/libbej.wrap b/subprojects/libbej.wrap
new file mode 100644
index 0000000..4c03659
--- /dev/null
+++ b/subprojects/libbej.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/libbej
+revision = HEAD
+
+[provide]
+libbej = libbej
diff --git a/subprojects/libpldm.wrap b/subprojects/libpldm.wrap
new file mode 100644
index 0000000..5c90142
--- /dev/null
+++ b/subprojects/libpldm.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/libpldm.git
+revision = HEAD
+
+[provide]
+libpldm = libpldm_dep
diff --git a/subprojects/phosphor-dbus-interfaces.wrap b/subprojects/phosphor-dbus-interfaces.wrap
new file mode 100644
index 0000000..cb65be8
--- /dev/null
+++ b/subprojects/phosphor-dbus-interfaces.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/phosphor-dbus-interfaces
+revision = HEAD
+
+[provide]
+phosphor-dbus-interfaces = phosphor_dbus_interfaces_dep
diff --git a/subprojects/phosphor-logging.wrap b/subprojects/phosphor-logging.wrap
new file mode 100644
index 0000000..71eee8b
--- /dev/null
+++ b/subprojects/phosphor-logging.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/phosphor-logging.git
+revision = HEAD
+
+[provide]
+phosphor-logging = phosphor_logging_dep
diff --git a/subprojects/sdbusplus.wrap b/subprojects/sdbusplus.wrap
new file mode 100644
index 0000000..7b076d0
--- /dev/null
+++ b/subprojects/sdbusplus.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/sdbusplus.git
+revision = HEAD
+
+[provide]
+sdbusplus = sdbusplus_dep
diff --git a/subprojects/sdeventplus.wrap b/subprojects/sdeventplus.wrap
new file mode 100644
index 0000000..f871ac0
--- /dev/null
+++ b/subprojects/sdeventplus.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/sdeventplus.git
+revision = HEAD
+
+[provide]
+sdeventplus = sdeventplus_dep
diff --git a/subprojects/stdplus.wrap b/subprojects/stdplus.wrap
new file mode 100644
index 0000000..2f8a5f4
--- /dev/null
+++ b/subprojects/stdplus.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/stdplus.git
+revision = HEAD
+
+[provide]
+stdplus = stdplus_dep
diff --git a/tests/meson.build b/tests/meson.build
new file mode 100644
index 0000000..446256e
--- /dev/null
+++ b/tests/meson.build
@@ -0,0 +1,30 @@
+gtest = dependency('gtest', main: true, disabler: true, required: false)
+gmock = dependency('gmock', disabler: true, required: false)
+if not gtest.found() or not gmock.found()
+ gtest_proj = import('cmake').subproject('googletest', required: false)
+ if gtest_proj.found()
+ gtest = declare_dependency(
+ dependencies: [
+ dependency('threads'),
+ gtest_proj.dependency('gtest'),
+ gtest_proj.dependency('gtest_main'),
+ ]
+ )
+ gmock = gtest_proj.dependency('gmock')
+ else
+ assert(
+ not get_option('tests').enabled(),
+ 'Googletest is required if tests are enabled'
+ )
+ endif
+endif
+
+test(
+ 'test_utils',
+ executable(
+ 'test_utils',
+ 'rde_test.cpp',
+ dependencies: [gtest],
+ implicit_include_directories: false,
+ )
+)
diff --git a/tests/rde_test.cpp b/tests/rde_test.cpp
new file mode 100644
index 0000000..1ad6631
--- /dev/null
+++ b/tests/rde_test.cpp
@@ -0,0 +1,7 @@
+#include <gtest/gtest.h>
+
+TEST(DummyTest, DummyTest)
+{
+ // TODO(@harshtya): Add tests for RDE
+ EXPECT_TRUE(true);
+}