Commit Graph

18 Commits

Author SHA1 Message Date
Nathaniel Brough
a1113be66c workspace: Adding bazel build formatter/linter
Adds in buildifier bazel targets that autoformat/lint the entire
WORKSPACE. This can be invoked by running;

'bazel run //:buildifier'

or

'bazel run //:buildifier_test'

Change-Id: Iaaf7f6241e29894eca94aa6b5d0ca3b33255b7f7
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/36160
Reviewed-by: Keir Mierle <keir@google.com>
Commit-Queue: Keir Mierle <keir@google.com>
2021-04-18 18:56:15 +00:00
Ewout van Bekkum
da2a62d890 pw_sync: Migrate upstream to use InterruptSpinLock
Migrates Pigweed off of SpinLock to use the new InterruptSpinLock
name.

Also updates some stale documentation regarding SystemClock backends
which use InterruptSpinLocks before C++ construction now that there
is a constexpr constructor, as it was already getting updated for
the rename.

Change-Id: Ie821b7c5c59f21a16bcc9bd9674c5df6a85e27b1
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/37561
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Pigweed-Auto-Submit: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
2021-03-12 21:16:44 +00:00
Ewout van Bekkum
126e01176c pw_sync: rename SpinLock -> InterruptSpinLock
Renames the existing pw::sync::SpinLock to InterruptSpinLock to
make it obvious that this is not just a spin lock and that interrupt
masking is included.

This change leaves C++ & GN redirects in place in order to support
migrating Pigweed and customers in follow up changes.

Change-Id: If9fb5594e7d71778b15cd15a9cd7ec71ca0e403b
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/37560
Commit-Queue: Ewout van Bekkum <ewout@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
2021-03-12 20:52:04 +00:00
Prashanth Swaminathan
325319fd63 arduino: Add baremetal sync backend
Resolve build breakage by installing baremetal backend for spin lock.

Change-Id: I1bc4caa899266677413fd51213e80557382af33e
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/31501
Pigweed-Auto-Submit: Prashanth Swaminathan <prashanthsw@google.com>
Reviewed-by: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Rob Mohr <mohrr@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
2021-02-01 20:08:51 +00:00
Anthony DiGirolamo
383be05904 pw_package: Arduino core installers and teensy presubmit
Summary of Changes
==================
1. Rename arduino build args to support cores in any location and have
   consistent naming.
2. Update docs to reflect above.
3. `pw package install teensy` working with nice status message on how
   to use ge pw_arduino_build_* args.
4. Added gn_teensy_build presubmit test step, not run by default.
   `pw presubmit --step gn_teensy_build`
5. Added missing system_rpc_server impl for //targets/arduino. This is
   just a copy of the stm32f429i one.

Build arg Change Examples
=========================

OLD:
    dir_pw_third_party_arduino = "//third_party/arduino"
    arduino_core_name = "teensy"
    arduino_package_name = "teensy/avr"
    arduino_board = "teensy41"
    arduino_menu_options = ["menu.usb.serial",
                            "menu.opt.o2std"]
NEW:
    pw_arduino_build_CORE_PATH =
      "/mnt/pigweed/pigweed/.environment/packages"
    pw_arduino_build_CORE_NAME = "teensy"
    pw_arduino_build_PACKAGE_NAME = "teensy/avr"
    pw_arduino_build_BOARD = "teensy41"
    pw_arduino_build_MENU_OPTIONS = ["menu.usb.serial",
                                     "menu.opt.o2std"]

All BUILD.gn checks for enabled arduino builds changed too:

OLD:
    if (dir_pw_third_party_arduino != "") {}
NEW:
    if (pw_arduino_build_CORE_PATH != "") {}

All gn target deps on arduino core sources changed.

OLD:
    "$dir_pw_third_party_arduino:arduino_core_sources",
NEW:
    "$dir_pw_third_party/arduino:arduino_core_sources",

Teensy package post install & status message
============================================

$ pw package status teensy

20210114 11:58:18 INF teensy is installed.
20210114 11:58:18 INF teensy currently installed in:
  /mnt/pigweed/pigweed/.environment/packages/teensy
20210114 11:58:18 INF Enable by running "gn args out" and adding
these lines:
  pw_arduino_build_CORE_PATH =
    "/mnt/pigweed/pigweed/.environment/packages"
  pw_arduino_build_CORE_NAME = "teensy"
  pw_arduino_build_PACKAGE_NAME = "teensy/avr"
  pw_arduino_build_BOARD = "BOARD_NAME"
20210114 11:58:18 INF Where BOARD_NAME is any supported board.
20210114 11:58:18 INF List available boards by running:
  arduino_builder
  --arduino-package-path
    /mnt/pigweed/pigweed/.environment/packages/teensy
  --arduino-package-name teensy/avr
  list-boards

Requires: pigweed:29490
Change-Id: Ifd0bd214777392a29af3ab24711edf2f2c1086f3
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/26240
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: Rob Mohr <mohrr@google.com>
2021-01-22 16:28:36 +00:00
Anthony DiGirolamo
14f3a06a42 pw_arduino_build: Teensy and stm32duino fixes
- Switch teensy core to 1.53 release
- Add patching mechanism
- Add patch to fix teensy core cpp17 compatibility.
  Contains these commits:
  - https://github.com/PaulStoffregen/cores/commit/a8046bb
  - https://github.com/PaulStoffregen/cores/commit/914219e
  - https://github.com/PaulStoffregen/cores/commit/1f3f914
  - a patch to make flash_* functions non-static for teensy4
- Add delete message for downloads that fail checksums
- stm32duino: Always include built-in SrcWrapper library

Change-Id: Ib9e98de1bafbb81473cc7a350d8abb60a654e64f
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/27620
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Pigweed-Auto-Submit: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
2021-01-13 18:07:17 +00:00
Wyatt Hepler
cb9a892446 pw_sys_io: Move sys_io's build arg to a .gni file
Change-Id: I1a6e7aed6c5720c60d1c224558c2913fe4d648a5
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/27940
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Reviewed-by: Armando Montanez <amontanez@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
2020-12-17 01:32:38 +00:00
Anthony DiGirolamo
00e773eafb pw_arduino_build: Arduino library searching support
- Adds commands to return arduino library source files and include dirs.
- Example GN rule in targets/arduino/target_docs.rst
- Show error if a .elf doesn't exist in the unit_test_runner

Change-Id: Ic317c5c061799a7e02fdad834c685d8cb37ba9ce
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/23460
Reviewed-by: Keir Mierle <keir@google.com>
Reviewed-by: David Rogers <davidrogers@google.com>
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
2020-11-06 01:16:45 +00:00
Anthony DiGirolamo
efdd24002f pw_arduino_build: Remove duplicate c-flags from asm/cppflags
Teensy cores have cflags included in the asmflag and cppflag recipes.
This causes gn to effectively duplicate cflags when building asm and
cpp files. This CL adds --s-only-flags and --cpp-only-flags options
which remove cflags from each respectively.

Add --ld-lib-names option.
If --ld-libs returns: -larm_cortexM7lfsp_math -lm -lstdc++
Then --ld-lib-names returns: arm_cortexM7lfsp_math m stdc++

Add a --flash-only option to arduino_unit_test_runner.

Change-Id: I1906d6f846f12ceb8ca42c498a7b216e0e3ba7e2
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/23086
Reviewed-by: Armando Montanez <amontanez@google.com>
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
2020-11-03 21:37:54 +00:00
Wyatt Hepler
e0575f7256 pw_build: Facade and configuration tweaks and docs
- Add documentation for facades and the pw_facade template.
- Document the module config pattern.
- Remove the need for the facade_name argument to pw_facade.

Change-Id: I77529583967cfdb4f47ee87313982b1259ca036e
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/22045
Reviewed-by: Alexei Frolov <frolv@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
2020-10-21 23:38:58 +00:00
Anthony DiGirolamo
62de81b268 pw_arduino_build: Fix Windows related issues
- Launch teensy installer with admin rights.
  subprocess.open doesn't exec with admin rights on windows
  which causes the TeensyduinoInstaller.exe to fail.

- Fix include path directory separator using pathlib.

Change-Id: I3fac7915a640ef66c0c3bdb4729e69cb250d5444
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/22004
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Wyatt Hepler <hepler@google.com>
2020-10-21 17:02:13 +00:00
Wyatt Hepler
d49f8fe3f3 BUILD.gn files: Improve import formatting
The "# gn-format disable" comments are no longer necessary. Delete these
comments and reformat with a Vim macro and gn format.

Change-Id: Ia62c40ad73eef91187d0d443d6e3b0fa723e5aa9
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/21380
Reviewed-by: Armando Montanez <amontanez@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
2020-10-15 18:12:55 +00:00
Anthony DiGirolamo
c36af656df Arduino: unit_test_runner
- New unit test scripts
  - arduino_unit_test_runner
  - arduino_test_server
  - arduino_test_client
  - teensy_detector

- arduino_builder changes
  - '--config-file' loading and '--save-config' options
  - '--set-variable' option to set arduino recipe vars. This is used
    for passing vars to the teensyloader flash recipe.

- GN changes
  - exec_script(arduino_builder) calls will save config files to:
    ./out/arduino_debug/gen/arduino_builder_config.json
  - 'pw_arduino_use_test_server' gn build arg

The test_runner and test_server both require a options to
run properly, see targets/arduino/target_docs.rst for usage.

Change-Id: I118498c291d2fbb034faa372b9250f6a0783a478
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/19220
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Armando Montanez <amontanez@google.com>
2020-10-12 19:02:19 +00:00
Anthony DiGirolamo
50a196f8db Arduino: python cleanup
- Move code in arduinobuilder.py to their own modules:
  - __main__.py
  - builder.py
  - core_installer.py
  - file_operations.py
- New log.py module
- os.system -> subprocess.run
- Move --run-* args in the 'show' subcommand under the 'run' subcommand.
  This allows running multiple steps in the same invocation. For
  example, this will execute 3 steps:

  arduino_builder run \
                  --run-objcopy \
                  --run-postbuild \
                  --run-upload-command teensyloader

Change-Id: Ibe5493689f39aa6e6aaeecf5bc7065929111499d
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/19143
Reviewed-by: Wyatt Hepler <hepler@google.com>
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
2020-10-06 19:50:35 +00:00
Carlos Chinchilla
32358e57af Arduino: Set empty config if core is missing
Create an empty object of the same type as arduino_build when the
arduiro core is not specified.

Change-Id: Ia4cf3d19622ad2297f5d3d4220cb8ca8e894a8c5
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/19741
Commit-Queue: Carlos Chinchilla <cachinchilla@google.com>
Reviewed-by: Armando Montanez <amontanez@google.com>
2020-10-06 00:43:19 +00:00
Wyatt Hepler
f9fb90f299 docs: Make labels consistent; remove boilerplate
- Update labels so they use consistent naming. Instead of the
  copy-and-pasted `chapter` prefix, name labels with a prefix consistent
  with what they point to:
  - "module-" for module
  - "target-" for targets
  - "docs-" for general documentation
- Remove the unnecessary highlight and default-domain directives.
  Neither is necessary since the Pigweed docs always specify the
  language in code snippets and other directives.

Change-Id: I55c34e9ec919f6f4670e5d3d008e0edf5fecf05b
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/19328
Commit-Queue: Wyatt Hepler <hepler@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
2020-10-01 21:47:35 +00:00
Anthony DiGirolamo
9147aa0128 Arduino: main function wrapper
- Remove simple_printing_main_arduino.cc which used loop() and setup()
- Rename main() in arduino core sources to ArduinoMain()
- Define setup() and loop() in arduino_main_wrapper.cc and call pigweed
  main() in setup() after pw_arduino_Init();
- Switch to pw_unit_test_MAIN = "$dir_pw_unit_test:simple_printing_main"
  in //targets/arduino/target_toolchains.gni
- Add pw_arduino_build/public/pw_arduino_build/init.h facade
- Documentation!
- Fix bug in arduinobuilder.py when using an arduino core which uses
  only one sub-core folder.

Change-Id: I94630b25f6c914ef46bdb9c32e6ddb5154690045
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/18640
Reviewed-by: Armando Montanez <amontanez@google.com>
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
2020-09-25 23:05:41 +00:00
Anthony DiGirolamo
eea0d771a7 Arduino Pigweed Target
- New arduino pigweed target that uses gn build args to set arduino
  target board and specific build options.
- Add arduinobuilder.py (includes core installer for Linux/Mac/Windows)
- Working builds for Teensy 4.1, 4.0, 3.6, 3.5, 3.2

Change-Id: Ib751b5f92352ac3ec7fa649f444dc13efd080d12
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/18001
Commit-Queue: Anthony DiGirolamo <tonymd@google.com>
Reviewed-by: Armando Montanez <amontanez@google.com>
2020-09-21 20:28:18 +00:00