build: add support for building with meson

Follow the OpenBMC herd and support a more modern, more comprehensible,
more performant build framework.

To build using meson:
  meson build
  ninja -C build
  ninja -C build install

Maintain support for:
  Configurable dbus parameters:
    BUSNAME_PREFIX= -> -Dbusname-prefix=
    SENSOR_ROOT= -> -Dsensor-root=
  System call failure behavior:
    --enable-negative-errno-on-failure -> -Dnegative-errno-on-fail
    --enable-update-functional-on-fail -> -Dupdate-functional-on-fail

Add -Dtests to match de-facto OpenBMC meson usage conventions.

Drop support for --enable-oe-sdk rpath munging.  This is a workaround
for broken oe sdks that don't figure out the correct rpath when running
make check or ninja test.

Upstream meson does not currently have support for custom code coverage
parameters:
  https://github.com/mesonbuild/meson/issues/4628

Autotools does support this, so support of our custom code coverage
parameters cannot be maintained using meson, without meson enhancements.

Change-Id: I312f1af4c3fcc20ca8bdf2bbf53b06f18abfbfe2
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
5 files changed
tree: 58045ae052db1563a89948f6d3ca0e6ece123a0d
  1. msl/
  2. test/
  3. tools/
  4. .clang-format
  5. .gitignore
  6. .lcovrc
  7. average.cpp
  8. average.hpp
  9. bootstrap.sh
  10. configure.ac
  11. env.cpp
  12. env.hpp
  13. fan_pwm.cpp
  14. fan_pwm.hpp
  15. fan_speed.cpp
  16. fan_speed.hpp
  17. gpio_handle.cpp
  18. gpio_handle.hpp
  19. hwmon.cpp
  20. hwmon.hpp
  21. hwmonio.cpp
  22. hwmonio.hpp
  23. interface.hpp
  24. LICENSE
  25. mainloop.cpp
  26. mainloop.hpp
  27. MAINTAINERS
  28. Makefile.am
  29. meson.build
  30. meson_options.txt
  31. readd.cpp
  32. README.iio.md
  33. README.md
  34. sensor.cpp
  35. sensor.hpp
  36. sensorset.cpp
  37. sensorset.hpp
  38. sysfs.cpp
  39. sysfs.hpp
  40. targets.hpp
  41. thresholds.hpp
  42. types.hpp
  43. util.hpp
README.md

Exposes generic hwmon entries as DBus objects. More information can be found at Sensor Architecture

To Build

To build this package, do the following steps:

    1. ./bootstrap.sh
    2. ./configure ${CONFIGURE_FLAGS}
    3. make

To clean the repository run `./bootstrap.sh clean`.

D-Bus bus names

To enable the use of Linux features like cgroups prioritization and
udev/systemd control, one instance of phosphor-hwmon is intended to
be run per hwmon sysfs class instance.

This requires an algorithm for selecting a stable, well-known D-Bus busname.

The algorithm is <PREFIX>-<ID>.Hwmon<N> where PREFIX is an autoconf
configurable prefix (BUSNAME_PREFIX, xyz.openbmc_project by default),
ID is a std::hash of the /sys/devices path backing the hwmon class
instance, and N is the implemented phosphor-hwmon D-Bus API version.