meson: refactor generators

Using 'run_command' is not the appropriate way to generate code
since it only runs when meson itself runs and doesn't expose to
meson the correct dependency information.  'custom_target' is
the more appropriate way to generate code, so switch to using it.

This was noticed because when trying to build as a subproject, the
depending repository failed with:
```
subprojects/phosphor-host-ipmid/meson.build:229:0: ERROR: Sandbox
violation: Tried to grab file sensor-gen.cpp outside current
(sub)project.
```

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: I555c6e1a7bfaabae63d757042ddc1c5a548295aa
2 files changed
tree: 61db15915d3854304ad54b87a9cb4e1c4c02fd50
  1. app/
  2. dbus-sdr/
  3. docs/
  4. include/
  5. libipmid/
  6. libipmid-host/
  7. scripts/
  8. softoff/
  9. subprojects/
  10. test/
  11. user_channel/
  12. xyz/
  13. .build.sh
  14. .clang-format
  15. .gitignore
  16. .shellcheck
  17. .travis.yml
  18. apphandler.cpp
  19. apphandler.hpp
  20. chassishandler.cpp
  21. chassishandler.hpp
  22. dcmihandler.cpp
  23. dcmihandler.hpp
  24. elog-errors.hpp
  25. entity_map_json.cpp
  26. entity_map_json.hpp
  27. error-HostEvent.hpp
  28. fruread.hpp
  29. generate_whitelist.sh
  30. generate_whitelist_create.sh
  31. globalhandler.cpp
  32. globalhandler.hpp
  33. groupext.cpp
  34. host-cmd-manager.cpp
  35. host-cmd-manager.hpp
  36. host-interface.cpp
  37. host-interface.hpp
  38. host-ipmid-whitelist.conf
  39. ipmi_fru_info_area.cpp
  40. ipmi_fru_info_area.hpp
  41. ipmid-new.cpp
  42. ipmisensor.cpp
  43. ipmiwhitelist.hpp
  44. LICENSE
  45. MAINTAINERS
  46. meson.build
  47. meson_options.txt
  48. OWNERS
  49. read_fru_data.cpp
  50. read_fru_data.hpp
  51. README.md
  52. selutility.cpp
  53. selutility.hpp
  54. sensordatahandler.cpp
  55. sensordatahandler.hpp
  56. sensorhandler.cpp
  57. sensorhandler.hpp
  58. settings.cpp
  59. settings.hpp
  60. storageaddsel.cpp
  61. storageaddsel.hpp
  62. storagehandler.cpp
  63. storagehandler.hpp
  64. sys_info_param.cpp
  65. sys_info_param.hpp
  66. systemintfcmds.cpp
  67. systemintfcmds.hpp
  68. testaddsel.cpp
  69. testit.cpp
  70. transporthandler.cpp
  71. transporthandler.hpp
  72. whitelist-filter.cpp
README.md

Compile ipmid with default options:

meson builddir
ninja -C builddir

Compile ipmid with yocto defaults:

meson builddir -Dbuildtype=minsize -Db_lto=true -Dtests=disabled
ninja -C builddir

If any of the dependencies are not found on the host system during configuration, meson automatically gets them via its wrap dependencies mentioned in ipmid/subprojects.

Enable/Disable meson wrap feature

meson builddir -Dwrap_mode=nofallback
ninja -C builddir

Enable debug traces

meson builddir -Dbuildtype=debug
ninja -C builddir

Generate test coverage report:

meson builddir -Db_coverage=true -Dtests=enabled
ninja -C builddir test
ninja -C builddir coverage