| # Copyright 2020 The Pigweed Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| # use this file except in compliance with the License. You may obtain a copy of |
| # the License at |
| # |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations under |
| # the License. |
| |
| import("//build_overrides/pigweed.gni") |
| import("//build_overrides/pigweed_environment.gni") |
| |
| declare_args() { |
| # Enable/disable Arduino builds via group("arduino"). |
| # Set to the full path of where cores are installed. |
| pw_arduino_build_CORE_PATH = "" |
| |
| # Expected args for an Arduino build: |
| pw_arduino_build_CORE_NAME = "" |
| |
| # TODO(tonymd): "teensy/avr" here should match the folders in this dir: |
| # "../third_party/arduino/cores/$pw_arduino_build_CORE_NAME/hardware/*") |
| # For teensy: "teensy/avr", for adafruit-samd: "samd/1.6.2" |
| pw_arduino_build_PACKAGE_NAME = "" |
| pw_arduino_build_BOARD = "" |
| |
| # Menu options should be a list of strings. |
| pw_arduino_build_MENU_OPTIONS = [] |
| } |
| |
| if (pw_arduino_build_CORE_PATH != "") { |
| # Check that enough pw_arduino_build_* args are set to find and use a core. |
| _required_args_message = |
| "The following build args must all be set: " + |
| "pw_arduino_build_CORE_PATH, pw_arduino_build_CORE_NAME, " + |
| "pw_arduino_build_PACKAGE_NAME." |
| assert(pw_arduino_build_CORE_NAME != "", |
| "Missing 'pw_arduino_build_CORE_NAME' build arg. " + |
| _required_args_message) |
| assert(pw_arduino_build_PACKAGE_NAME != "", |
| "Missing 'pw_arduino_build_PACKAGE_NAME' build arg. " + |
| _required_args_message) |
| |
| _arduino_selected_core_path = |
| rebase_path("$pw_arduino_build_CORE_PATH/$pw_arduino_build_CORE_NAME", |
| root_build_dir) |
| |
| arduino_builder_script = |
| get_path_info("py/pw_arduino_build/__main__.py", "abspath") |
| |
| # Check pw_arduino_build_BOARD is set |
| assert(pw_arduino_build_BOARD != "", |
| "pw_arduino_build_BOARD build arg not set. " + |
| "To see supported boards run: " + |
| "arduino_builder --arduino-package-path " + |
| _arduino_selected_core_path + " --arduino-package-name " + |
| pw_arduino_build_PACKAGE_NAME + " list-boards") |
| |
| _compiler_path_override = |
| rebase_path(pw_env_setup_CIPD_PIGWEED + "/bin", root_build_dir) |
| |
| arduino_core_library_path = "$_arduino_selected_core_path/hardware/" + |
| "$pw_arduino_build_PACKAGE_NAME/libraries" |
| |
| arduino_global_args = [ |
| "--arduino-package-path", |
| _arduino_selected_core_path, |
| "--arduino-package-name", |
| pw_arduino_build_PACKAGE_NAME, |
| "--compiler-path-override", |
| _compiler_path_override, |
| |
| # Save config files to "out/arduino_debug/gen/arduino_builder_config.json" |
| "--config-file", |
| rebase_path(root_gen_dir, root_build_dir) + "/arduino_builder_config.json", |
| "--save-config", |
| ] |
| |
| arduino_board_args = [ |
| "--build-path", |
| ".", |
| "--board", |
| pw_arduino_build_BOARD, |
| ] |
| if (pw_arduino_build_MENU_OPTIONS != []) { |
| arduino_board_args += [ "--menu-options" ] |
| arduino_board_args += pw_arduino_build_MENU_OPTIONS |
| } |
| |
| arduino_show_command_args = arduino_global_args + [ |
| "show", |
| "--delimit-with-newlines", |
| ] + arduino_board_args |
| |
| arduino_run_command_args = |
| arduino_global_args + [ "run" ] + arduino_board_args |
| } |