pw_module: Start the Pigweed meta-module

This starts a basic Pigweed meta-module tool. The first tool is a simple
checker invoked with

  pw module-check

which for now does two super-simple checks. Example output:

$ pw module-check pw_module
20191125 07:53:57 PM INF Checking module: pw_module
20191125 07:53:57 PM INF OK: Module pw_module looks good; no errors or warnings found

$ pw module-check pw_foo
20191125 07:54:00 PM INF Checking module: pw_foo
20191125 07:54:00 PM ERR PWCK001: Python code present but no setup.py.
20191125 07:54:00 PM ERR PWCK002: C++ code present but no tests at all (you monster).
20191125 07:54:00 PM ERR FAIL: Found errors when checking module pw_foo

Change-Id: I6eb3bfa941abc450a33affbec3e005477b9b2dc4
6 files changed
tree: cd17524214bbb248dab11839037822d8f7a60fef
  1. docs/
  2. env_setup/
  3. pw_bloat/
  4. pw_build/
  5. pw_cli/
  6. pw_docgen/
  7. pw_dumb_io/
  8. pw_dumb_io_baremetal_stm32f429/
  9. pw_dumb_io_stdio/
  10. pw_module/
  11. pw_preprocessor/
  12. pw_presubmit/
  13. pw_span/
  14. pw_status/
  15. pw_string/
  16. pw_toolchain/
  17. pw_unit_test/
  18. targets/
  19. .clang-format
  20. .gitignore
  21. .gn
  22. .pylintrc
  23. AUTHORS
  24. BUILD
  25. BUILD.gn
  26. BUILDCONFIG.gn
  27. CONTRIBUTING.md
  28. LICENSE
  29. modules.gni
  30. presubmit.py
  31. pw_vars_default.gni
  32. README.md
  33. WORKSPACE
README.md

Pigweed Embedded Oriented Software Libraries

Pigweed is a collection of embedded-focused libraries, which we call "modules". These modules are designed for small-footprint MMU-less microcontrollers like the ST Micro STM32L452 or the Nordic NRF82832. The modules are designed to facilitate easy integration into existing codebases.

Pigweed is in the early stages of development.

Getting Started

$ git clone sso://pigweed.googlesource.com/pigweed/pigweed ~/pigweed
$ cd ~/pigweed
$ . env_setup/setup.sh

The environment setup script will pull down the versions of tools necessary to build Pigweed and add them to your environment. You can then build with either GN or Bazel. You can also confirm you're getting the right versions of tools—they should be installed under env_setup/.

$ which gn
~/pigweed/env_setup/cipd/tools/gn
$ gn gen out/host
$ ninja -C out/host
$ which bazel
~/pigweed/env_setup/cipd/tools/bazel
$ bazel test //...

And do the following to test on hardware. (The bazel build does not yet support building for hardware.)

$ gn gen --args='pw_target_config = "//targets/stm32f429i-disc1/target_config.gni"' out/disco
$ ninja -C out/disco

If any of this doesn't work please file a bug.