diff --git a/.circleci/config2.yml b/.circleci/config2.yml
index c3bf2a270..d33307445 100644
--- a/.circleci/config2.yml
+++ b/.circleci/config2.yml
@@ -114,7 +114,7 @@ commands:
name: Build
command: |
if [ << parameters.toolchain >> == esp-idf ]; then
- docker run --rm -v $PWD:/project -w /project espressif/idf:v5.3.1 python tools/build.py << parameters.family >>
+ docker run --rm -v $PWD:/project -w /project espressif/idf:v5.3.2 python tools/build.py << parameters.family >>
else
# Toolchain option default is gcc
if [ << parameters.toolchain >> == arm-clang ]; then
diff --git a/.github/actions/setup_toolchain/action.yml b/.github/actions/setup_toolchain/action.yml
index 484001cda..8305daa24 100644
--- a/.github/actions/setup_toolchain/action.yml
+++ b/.github/actions/setup_toolchain/action.yml
@@ -4,9 +4,6 @@ inputs:
toolchain:
description: 'Toolchain name'
required: true
- toolchain_version:
- description: 'Toolchain version'
- required: false
outputs:
build_option:
@@ -27,7 +24,6 @@ runs:
uses: ./.github/actions/setup_toolchain/espressif
with:
toolchain: ${{ inputs.toolchain }}
- toolchain_version: ${{ inputs.toolchain_version }}
- name: Get Toolchain URL
if: >-
diff --git a/.github/actions/setup_toolchain/espressif/action.yml b/.github/actions/setup_toolchain/espressif/action.yml
index 1e3ce18f1..b50ffd41d 100644
--- a/.github/actions/setup_toolchain/espressif/action.yml
+++ b/.github/actions/setup_toolchain/espressif/action.yml
@@ -6,7 +6,8 @@ inputs:
required: true
toolchain_version:
description: 'Toolchain version'
- required: true
+ required: false
+ default: 'v5.3.2'
runs:
using: "composite"
@@ -39,3 +40,9 @@ runs:
du -sh $DOCKER_ESP_IDF
docker load --input $DOCKER_ESP_IDF
shell: bash
+
+ - name: Tag Local Image
+ run: |
+ docker tag espressif/idf:${{ inputs.toolchain_version }} espressif/idf:tinyusb
+ docker images
+ shell: bash
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 67482c748..4c54efeaf 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -111,6 +111,7 @@ jobs:
# ---------------------------------------
# Build IAR on HFP self-hosted
+ # Since IAR Token secret is not passed to forked PR, only build on PR from the same repo
# ---------------------------------------
arm-iar:
if: github.repository_owner == 'hathach' && github.event_name == 'push'
@@ -118,7 +119,7 @@ jobs:
runs-on: [self-hosted, Linux, X64, hifiphile]
env:
BUILD_ARGS: ${{ join(fromJSON(needs.set-matrix.outputs.json)['arm-iar'], ' ') }}
- # IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
+ IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
steps:
- name: Clean workspace
run: |
@@ -137,3 +138,24 @@ jobs:
- name: Build
run: python3 tools/build.py --one-per-family --toolchain iar $BUILD_ARGS
+
+ # ---------------------------------------
+ # Zephyr
+ # ---------------------------------------
+ zephyr:
+ if: github.event_name == 'push'
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout TinyUSB
+ uses: actions/checkout@v4
+
+ - name: Setup Zephyr project
+ uses: zephyrproject-rtos/action-zephyr-setup@v1
+ with:
+ app-path: examples
+ toolchains: arm-zephyr-eabi
+
+ - name: Build
+ run: |
+ west build -b pca10056 -d examples/device/cdc_msc/build examples/device/cdc_msc -- -DRTOS=zephyr
+ west build -b pca10056 -d examples/device/msc_dual_lun/build examples/device/msc_dual_lun -- -DRTOS=zephyr
diff --git a/.github/workflows/build_util.yml b/.github/workflows/build_util.yml
index 706ded1c1..2de68c6f3 100644
--- a/.github/workflows/build_util.yml
+++ b/.github/workflows/build_util.yml
@@ -41,7 +41,6 @@ jobs:
uses: ./.github/actions/setup_toolchain
with:
toolchain: ${{ inputs.toolchain }}
- toolchain_version: 'v5.3.1'
- name: Get Dependencies
uses: ./.github/actions/get_deps
@@ -61,7 +60,7 @@ jobs:
- name: Build
run: |
if [ "${{ inputs.toolchain }}" == "esp-idf" ]; then
- docker run --rm -v $PWD:/project -w /project espressif/idf:v5.3.1 python tools/build.py ${{ matrix.arg }}
+ docker run --rm -v $PWD:/project -w /project espressif/idf:tinyusb python tools/build.py ${{ matrix.arg }}
else
python tools/build.py -s ${{ inputs.build-system }} ${{ steps.setup-toolchain.outputs.build_option }} ${{ steps.set-one-per-family.outputs.build_option }} ${{ matrix.arg }}
fi
diff --git a/.github/workflows/hil_test.yml b/.github/workflows/hil_test.yml
index bfa2b5704..6e9ba924b 100644
--- a/.github/workflows/hil_test.yml
+++ b/.github/workflows/hil_test.yml
@@ -90,12 +90,13 @@ jobs:
# ---------------------------------------
# Hardware in the loop (HIL)
# self-hosted by HFP, build with IAR toolchain, for attached hardware checkout test/hil/hfp.json
+ # Since IAR Token secret is not passed to forked PR, only build on PR from the same repo
# ---------------------------------------
hil-hfp:
- if: github.repository_owner == 'hathach'
+ if: github.repository_owner == 'hathach' && github.event.pull_request.head.repo.fork == false
runs-on: [self-hosted, Linux, X64, hifiphile]
- #env:
- # IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
+ env:
+ IAR_LMS_BEARER_TOKEN: ${{ secrets.IAR_LMS_BEARER_TOKEN }}
steps:
- name: Clean workspace
run: |
diff --git a/.idea/cmake.xml b/.idea/cmake.xml
index e4c189251..a792b1a05 100644
--- a/.idea/cmake.xml
+++ b/.idea/cmake.xml
@@ -80,12 +80,14 @@
-
+
+
-
+
+
diff --git a/README.rst b/README.rst
index db36cad3b..e4ad91e47 100644
--- a/README.rst
+++ b/README.rst
@@ -43,12 +43,12 @@ Getting started
See the `online documentation `_ for information about using TinyUSB and how it is implemented.
+Check out `Getting Started`_ guide for adding TinyUSB to your project or building the examples. If you are new to TinyUSB, we recommend starting with the `cdc_msc` example. There is a handful of `Supported Boards`_ that should work out of the box.
+
We use `GitHub Discussions `_ as our forum. It is a great place to ask questions and advice from the community or to discuss your TinyUSB-based projects.
For bugs and feature requests, please `raise an issue `_ and follow the templates there.
-Check out `Getting Started`_ guide for adding TinyUSB to your project or building the examples. If you are new to TinyUSB, we recommend starting with the `cdc_msc` example.
-
See `Porting`_ guide for adding support for new MCUs and boards.
Device Stack
@@ -82,8 +82,8 @@ Host Stack
Similar to the Device Stack, if you have a special requirement, `usbh_app_driver_get_cb()` can be used to write your own class driver without modifying the stack.
-TypeC PD Stack
-==============
+Power Delivery Stack
+====================
- Power Delivery 3.0 (PD3.0) with USB Type-C support (WIP)
- Super early stage, only for testing purpose
@@ -102,100 +102,145 @@ TinyUSB is completely thread-safe by pushing all Interrupt Service Request (ISR)
Supported CPUs
==============
-Following CPUs are supported, check out `Supported Devices`_ for comprehensive list of driver, features for each CPU.
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| Manufacturer | Family | Device | Host | Highspeed | Driver | Note |
++==============+=============================+========+======+===========+========================+===================+
+| Allwinner | F1C100s/F1C200s | ✔ | | ✔ | sunxi | musb variant |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| Analog | MAX3421E | | ✔ | ✖ | max3421 | via SPI |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | MAX32 650, 666, 690, | ✔ | | ✔ | musb | 1-dir ep |
+| | MAX78002 | | | | | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| Brigetek | FT90x | ✔ | | ✔ | ft9xx | 1-dir ep |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| Broadcom | BCM2711, BCM2837 | ✔ | | ✔ | dwc2 | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| Dialog | DA1469x | ✔ | ✖ | ✖ | da146xx | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| Espressif | S2, S3 | ✔ | ✔ | ✖ | dwc2 or esp32sx | |
+| ESP32 +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | P4 | ✔ | ✔ | ✔ | dwc2 | |
++--------------+----+------------------------+--------+------+-----------+------------------------+-------------------+
+| GigaDevice | GD32VF103 | ✔ | | ✖ | dwc2 | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| Infineon | XMC4500 | ✔ | ✔ | ✖ | dwc2 | |
++--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
+| MicroChip | SAM | D11, D21, L21, L22 | ✔ | | ✖ | samd | |
+| | +-----------------------+--------+------+-----------+------------------------+-------------------+
+| | | D51, E5x | ✔ | | ✖ | samd | |
+| | +-----------------------+--------+------+-----------+------------------------+-------------------+
+| | | G55 | ✔ | | ✖ | samg | 1-dir ep |
+| | +-----------------------+--------+------+-----------+------------------------+-------------------+
+| | | E70,S70,V70,V71 | ✔ | | ✔ | samx7x | 1-dir ep |
+| +-----+-----------------------+--------+------+-----------+------------------------+-------------------+
+| | PIC | 24 | ✔ | | | pic | ci_fs variant |
+| | +-----------------------+--------+------+-----------+------------------------+-------------------+
+| | | 32 mm, mk, mx | ✔ | | | pic | ci_fs variant |
+| | +-----------------------+--------+------+-----------+------------------------+-------------------+
+| | | dsPIC33 | ✔ | | | pic | ci_fs variant |
+| | +-----------------------+--------+------+-----------+------------------------+-------------------+
+| | | 32mz | ✔ | | | pic32mz | musb variant |
++--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
+| Mind Montion | mm32 | ✔ | | ✖ | mm32f327x_otg | ci_fs variant |
++--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
+| NordicSemi | nRF 52833, 52840, 5340 | ✔ | ✖ | ✖ | nrf5x | only ep8 is ISO |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| Nuvoton | NUC120 | ✔ | ✖ | ✖ | nuc120 | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | NUC121/NUC125 | ✔ | ✖ | ✖ | nuc121 | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | NUC126 | ✔ | ✖ | ✖ | nuc121 | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | NUC505 | ✔ | | ✔ | nuc505 | |
++--------------+---------+-------------------+--------+------+-----------+------------------------+-------------------+
+| NXP | iMXRT | RT 10xx, 11xx | ✔ | ✔ | ✔ | ci_hs | |
+| +---------+-------------------+--------+------+-----------+------------------------+-------------------+
+| | Kinetis | KL | ✔ | ⚠ | ✖ | ci_fs, khci | |
+| | +-------------------+--------+------+-----------+------------------------+-------------------+
+| | | K32L2 | ✔ | | ✖ | khci | ci_fs variant |
+| +---------+-------------------+--------+------+-----------+------------------------+-------------------+
+| | LPC | 11u, 13, 15 | ✔ | ✖ | ✖ | lpc_ip3511 | |
+| | +-------------------+--------+------+-----------+------------------------+-------------------+
+| | | 17, 40 | ✔ | ⚠ | ✖ | lpc17_40 | |
+| | +-------------------+--------+------+-----------+------------------------+-------------------+
+| | | 18, 43 | ✔ | ✔ | ✔ | ci_hs | |
+| | +-------------------+--------+------+-----------+------------------------+-------------------+
+| | | 51u | ✔ | ✖ | ✖ | lpc_ip3511 | |
+| | +-------------------+--------+------+-----------+------------------------+-------------------+
+| | | 54, 55 | ✔ | | ✔ | lpc_ip3511 | |
+| +---------+-------------------+--------+------+-----------+------------------------+-------------------+
+| | MCX | N9, A15 | ✔ | | ✔ | ci_fs, ci_hs | |
++--------------+---------+-------------------+--------+------+-----------+------------------------+-------------------+
+| Raspberry Pi | RP2040, RP2350 | ✔ | ✔ | ✖ | rp2040, pio_usb | |
++--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
+| Renesas | RX | 63N, 65N, 72N | ✔ | ✔ | ✖ | rusb2 | |
+| +-----+-----------------------+--------+------+-----------+------------------------+-------------------+
+| | RA | 4M1, 4M3, 6M1 | ✔ | ✔ | ✖ | rusb2 | |
+| | +-----------------------+--------+------+-----------+------------------------+-------------------+
+| | | 6M5 | ✔ | ✔ | ✔ | rusb2 | |
++--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
+| Silabs | EFM32GG12 | ✔ | | ✖ | dwc2 | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| Sony | CXD56 | ✔ | ✖ | ✔ | cxd56 | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| ST STM32 | F0 | ✔ | ✖ | ✖ | stm32_fsdev | |
+| +----+------------------------+--------+------+-----------+------------------------+-------------------+
+| | F1 | 102, 103 | ✔ | ✖ | ✖ | stm32_fsdev | |
+| | +------------------------+--------+------+-----------+------------------------+-------------------+
+| | | 105, 107 | ✔ | ✔ | ✖ | dwc2 | |
+| +----+------------------------+--------+------+-----------+------------------------+-------------------+
+| | F2, F4, F7, H7 | ✔ | ✔ | ✔ | dwc2 | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | F3 | ✔ | ✖ | ✖ | stm32_fsdev | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | C0, G0, H5 | ✔ | | ✖ | stm32_fsdev | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | G4 | ✔ | ✖ | ✖ | stm32_fsdev | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | L0, L1 | ✔ | ✖ | ✖ | stm32_fsdev | |
+| +----+------------------------+--------+------+-----------+------------------------+-------------------+
+| | L4 | 4x2, 4x3 | ✔ | ✖ | ✖ | stm32_fsdev | |
+| | +------------------------+--------+------+-----------+------------------------+-------------------+
+| | | 4x5, 4x6 | ✔ | ✔ | ✖ | dwc2 | |
+| +----+------------------------+--------+------+-----------+------------------------+-------------------+
+| | L4+ | ✔ | ✔ | ✖ | dwc2 | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | L5 | ✔ | ✖ | ✖ | stm32_fsdev | |
+| +----+------------------------+--------+------+-----------+------------------------+-------------------+
+| | U5 | 535, 545 | ✔ | | ✖ | stm32_fsdev | |
+| | +------------------------+--------+------+-----------+------------------------+-------------------+
+| | | 575, 585 | ✔ | ✔ | ✖ | dwc2 | |
+| | +------------------------+--------+------+-----------+------------------------+-------------------+
+| | | 59x,5Ax,5Fx,5Gx | ✔ | ✔ | ✔ | dwc2 | |
+| +----+------------------------+--------+------+-----------+------------------------+-------------------+
+| | WBx5 | ✔ | ✖ | ✖ | stm32_fsdev | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| TI | MSP430 | ✔ | ✖ | ✖ | msp430x5xx | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | MSP432E4 | ✔ | | ✖ | musb | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | TM4C123 | ✔ | | ✖ | musb | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| ValentyUSB | eptri | ✔ | ✖ | ✖ | eptri | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
+| WCH | CH32F20x | ✔ | | ✔ | ch32_usbhs | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | CH32V20x | ✔ | | ✖ | stm32_fsdev/ch32_usbfs | |
+| +-----------------------------+--------+------+-----------+------------------------+-------------------+
+| | CH32V307 | ✔ | | ✔ | ch32_usbfs/hs | |
++--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-+--------------+------------------------------------------------------------+
-| Manufacturer | Family |
-+==============+============================================================+
-| Allwinner | F1C100s/F1C200s |
-+--------------+------------------------------------------------------------+
-| Analog | max32: 650, 666, 690. max78002 |
-| | |
-| | max3421e (spi host) |
-+--------------+------------------------------------------------------------+
-| Brigetek | FT90x |
-+--------------+------------------------------------------------------------+
-| Broadcom | BCM2711, BCM2837 |
-+--------------+------------------------------------------------------------+
-| Dialog | DA1469x |
-+--------------+------------------------------------------------------------+
-| Espressif | ESP32 S2, S3 |
-+--------------+------------------------------------------------------------+
-| GigaDevice | GD32VF103 |
-+--------------+------------------------------------------------------------+
-| Infineon | XMC4500 |
-+--------------+------------------------------------------------------------+
-| | SAM: D11, D21, D51, E5x, G55, L2x, E7x, S7x, V7x |
-| MicroChip | |
-| | PIC: 24, 32mm, 32mk, 32mx, 32mz, dsPIC33 |
-+--------------+------------------------------------------------------------+
-| Mind Montion | mm32 |
-+--------------+------------------------------------------------------------+
-| NordicSemi | nRF52833, nRF52840, nRF5340 |
-+--------------+------------------------------------------------------------+
-| Nuvoton | NUC 120, 121, 125, 126, 505 |
-+--------------+------------------------------------------------------------+
-| NXP | iMXRT: RT10xx, RT11xx |
-| | |
-| | Kinetis: KL, K32L2 |
-| | |
-| | LPC: 11u, 13, 15, 17, 18, 40, 43, 51u, 54, 55 |
-| | |
-| | MCX: A15, N9 |
-+--------------+------------------------------------------------------------+
-| Raspberry Pi | RP2040, RP2350 |
-+--------------+-----+------------------------------------------------------+
-| Renesas | RA: 4M1, 4M3, 6M1, 6M5 |
-| | |
-| | RX: 63N, 65N, 72N |
-+--------------+-----+------------------------------------------------------+
-| Silabs | EFM32GG12 |
-+--------------+------------------------------------------------------------+
-| Sony | CXD56 |
-+--------------+------------------------------------------------------------+
-| ST STM32 | C0, F0, F1, F2, F3, F4, F7, G0, G4, H5, H7, |
-| | |
-| | L0, L1, L4, L4+, L5, U5, WB |
-+--------------+------------------------------------------------------------+
-| TI | MSP430, MSP432E4, TM4C123 |
-+--------------+------------------------------------------------------------+
-| ValentyUSB | eptri |
-+--------------+------------------------------------------------------------+
-| WCH | CH32F: F20x |
-| | |
-| | CH32V: V20x, V307 |
-+--------------+------------------------------------------------------------+
+Table Legend
+------------
-License
-=======
+========= =========================
+✔ Supported
+⚠ Partial support
+✖ Not supported by hardware
+\[empty\] Unknown
+========= =========================
-All TinyUSB sources in the ``src`` folder are licensed under MIT
-license, the `Full license is here `__. However, each file can be
-individually licensed especially those in ``lib`` and ``hw/mcu`` folder.
-Please make sure you understand all the license term for files you use
-in your project.
-
-Docs
-====
-
-- Info
-
- - `Uses`_
- - `Changelog`_
- - `Contributors`_
-
-- `Reference`_
-
- - `Supported Devices`_
- - `Getting Started`_
- - `Dependencies`_
- - `Concurrency`_
-
-- `Contributing`_
-
- - `Code of Conduct`_
- - `Structure`_
- - `Porting`_
.. |Build Status| image:: https://github.com/hathach/tinyusb/actions/workflows/build.yml/badge.svg
:target: https://github.com/hathach/tinyusb/actions
@@ -209,15 +254,12 @@ Docs
:target: https://opensource.org/licenses/MIT
-.. _Uses: docs/info/uses.rst
.. _Changelog: docs/info/changelog.rst
.. _Contributors: CONTRIBUTORS.rst
-.. _Reference: docs/reference/index.rst
-.. _Supported Devices: docs/reference/supported.rst
.. _Getting Started: docs/reference/getting_started.rst
+.. _Supported Boards: docs/reference/boards.rst
.. _Dependencies: docs/reference/dependencies.rst
.. _Concurrency: docs/reference/concurrency.rst
.. _Contributing: docs/contributing/index.rst
.. _Code of Conduct: CODE_OF_CONDUCT.rst
-.. _Structure: docs/contributing/structure.rst
.. _Porting: docs/contributing/porting.rst
diff --git a/docs/conf.py b/docs/conf.py
index af44b7339..4249d41f7 100755
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -5,13 +5,16 @@
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
+import re
+from pathlib import Path
+
# -- Path setup --------------------------------------------------------------
# -- Project information -----------------------------------------------------
project = 'TinyUSB'
-copyright = '2021, Ha Thach'
+copyright = '2024, Ha Thach'
author = 'Ha Thach'
@@ -40,3 +43,16 @@ html_theme_options = {
}
todo_include_todos = True
+
+# pre-process path in README.rst
+def preprocess_readme():
+ """Modify figure paths in README.rst for Sphinx builds."""
+ src = Path(__file__).parent.parent / "README.rst"
+ tgt = Path(__file__).parent.parent / "README_processed.rst"
+ if src.exists():
+ content = src.read_text()
+ content = re.sub(r"docs/", r"", content)
+ content = re.sub(r".rst", r".html", content)
+ tgt.write_text(content)
+
+preprocess_readme()
diff --git a/docs/contributing/code_of_conduct.rst b/docs/contributing/code_of_conduct.rst
index b52bf14c5..fb1859c75 120000
--- a/docs/contributing/code_of_conduct.rst
+++ b/docs/contributing/code_of_conduct.rst
@@ -1 +1 @@
-../../CODE_OF_CONDUCT.rst
\ No newline at end of file
+.. include:: ../../CODE_OF_CONDUCT.rst
\ No newline at end of file
diff --git a/docs/contributing/index.rst b/docs/contributing/index.rst
index 7ff79cb32..78933a3ca 100644
--- a/docs/contributing/index.rst
+++ b/docs/contributing/index.rst
@@ -19,5 +19,4 @@ Index
:maxdepth: 2
code_of_conduct
- structure
porting
diff --git a/docs/contributing/structure.rst b/docs/contributing/structure.rst
deleted file mode 100644
index e8c658850..000000000
--- a/docs/contributing/structure.rst
+++ /dev/null
@@ -1,59 +0,0 @@
-*********
-Structure
-*********
-
-Tree
-====
-
-::
-
- .
- ├── docs
- ├── examples
- ├── hw
- │ ├── bsp
- │ └── mcu
- ├── lib
- ├── src
- ├── test
- └── tools
-
-docs
-----
-
-Documentation
-
-examples
---------
-
-Sample with Makefile build support
-
-hw/bsp
-------
-
-Supported boards source files
-
-hw/mcu
-------
-
-Low level mcu core & peripheral drivers
-
-lib
----
-
-Sources from 3rd party such as freeRTOS, fatfs ...
-
-src
----
-
-All sources files for TinyUSB stack itself.
-
-test
-----
-
-Unit tests for the stack
-
-tools
------
-
-Files used internally
diff --git a/docs/index.rst b/docs/index.rst
index 2a032c51e..c1c8e4d99 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,12 +1,6 @@
:hide-toc:
-*********
-TinyUSB
-*********
-
-TinyUSB is an open-source cross-platform USB Host/Device stack for embedded systems,
-designed to be memory-safe with no dynamic allocation and thread-safe with all interrupt events being deferred and then handled in the non-ISR task function.
-
+.. include:: ../README_processed.rst
.. toctree::
:caption: Index
diff --git a/docs/info/changelog.rst b/docs/info/changelog.rst
index d11e1134a..0a34c0842 100644
--- a/docs/info/changelog.rst
+++ b/docs/info/changelog.rst
@@ -2,6 +2,59 @@
Changelog
*********
+0.18.0
+======
+
+General
+-------
+
+- New MCUs:
+
+ - Add esp32p4 OTG highspeed support
+ - Add stm32 u0, c0, h7rs
+
+- Better support dcache, make sure all usb-transferred buffer are cache line aligned and occupy full cache line
+- Build ARM IAR with CircleCI
+- Improve HIL with dual/host_info_to_device_cdc optional for pico/pico2, enable dwc2 dma test
+
+API Changes
+-----------
+
+- Change signature of ``tusb_init(rhport, tusb_rhport_init_t*)``, tusb_init(void) is now deprecated but still available for backward compatibility
+- Add new ``tusb_int_handler(rhport, in_isr)``
+- Add time-related APIs: ``tusb_time_millis_api()`` and ``tusb_time_delay_ms_api()`` for non-RTOS, required for some ports/configuration
+- New configuration macros:
+
+ - ``CFG_TUD/TUH_MEM_DCACHE_ENABLE`` enable data cache sync for endpoint buffer
+ - ``CFG_TUD/TUH_MEM_DCACHE_LINE_SIZE`` set cache line size
+ - ``CFG_TUD/TUH_DWC2_SLAVE_ENABLE`` enable dwc2 slave mode
+ - ``CFG_TUD/TUH_DWC2_DMA_ENABLE`` enable dwc2 dma mode
+
+Controller Driver (DCD & HCD)
+-----------------------------
+
+- DWC2
+ - Add DMA support for both device and host controller
+ - Add host driver support including: full/high speed, control/bulk/interrupt (CBI) transfer, split CBI i.e FS/LS attached via highspeed hub, hub support
+
+- RP2: implement dcd_edpt_iso_alloc() and dcd_edpt_iso_activate() for isochronous endpoint
+- iMXRT1170 support M4 core
+
+Device Stack
+------------
+
+- Vendor Fix class reset
+- NCM fix recursions in tud_network_recv_renew()
+- Audio fix align issue of _audiod_fct.alt_setting
+- UVC support format frame based
+- Change dcd_dcache_() return type from void to bool
+- HID add Usage Table for Physical Input Device Page (0x0F)
+
+Host Stack
+----------
+
+- Fix an duplicated attach issue which cause USBH Defer Attach until current enumeration complete message
+
0.17.0
======
diff --git a/docs/info/contributors.rst b/docs/info/contributors.rst
index b3748ccb5..35e0b05f5 120000
--- a/docs/info/contributors.rst
+++ b/docs/info/contributors.rst
@@ -1 +1 @@
-../../CONTRIBUTORS.rst
\ No newline at end of file
+.. include:: ../../CONTRIBUTORS.rst
\ No newline at end of file
diff --git a/docs/info/index.rst b/docs/info/index.rst
index fa56512b6..a636f37dc 100644
--- a/docs/info/index.rst
+++ b/docs/info/index.rst
@@ -8,6 +8,5 @@ Index
.. toctree::
:maxdepth: 2
- uses
changelog
contributors
diff --git a/docs/info/uses.rst b/docs/info/uses.rst
deleted file mode 100644
index f67df49f8..000000000
--- a/docs/info/uses.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-****
-Uses
-****
-
-TinyUSB is currently used by these other projects:
-
-- `Adafruit nRF52 Arduino `__
-- `Adafruit nRF52 Bootloader `__
-- `Adafruit SAMD Arduino `__
-- `CircuitPython `__
-- `Espressif IDF `__
-- `MicroPython `__
-- `mynewt `__
-- `openinput `__
-- `Raspberry Pi Pico SDK `__
-- `TinyUF2 Bootloader `__
-- `TinyUSB Arduino Library `__
diff --git a/docs/reference/boards.rst b/docs/reference/boards.rst
new file mode 100644
index 000000000..4739467bc
--- /dev/null
+++ b/docs/reference/boards.rst
@@ -0,0 +1,320 @@
+****************
+Supported Boards
+****************
+
+The board support code is only used for self-contained examples and testing. It is not used when TinyUSB is part of a larger project.
+It is responsible for getting the MCU started and the USB peripheral clocked with minimal of on-board devices
+
+- One LED : for status
+- One Button : to get input from user
+- One UART : optional for device, but required for host examples
+
+Following boards are supported
+
+Analog Devices
+--------------
+
+============= ================ ======== =========================================================================================================================== ======
+Board Name Family URL Note
+============= ================ ======== =========================================================================================================================== ======
+max32650evkit MAX32650 EVKIT max32650 https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32650-evkit.html#eb-overview
+max32650fthr MAX32650 Feather max32650 https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32650fthr.html
+max32651evkit MAX32651 EVKIT max32650 https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32651-evkit.html
+max32666evkit MAX32666 EVKIT max32666 https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32666evkit.html
+max32666fthr MAX32666 Feather max32666 https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32666fthr.html
+apard32690 APARD32690-SL max32690 https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/ad-apard32690-sl.html
+max32690evkit MAX32690 EVKIT max32690 https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32690evkit.html
+max78002evkit MAX78002 EVKIT max78002 https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max78002evkit.html
+============= ================ ======== =========================================================================================================================== ======
+
+Bridgetek
+---------
+
+========= ========= ======== ===================================== ======
+Board Name Family URL Note
+========= ========= ======== ===================================== ======
+mm900evxb MM900EVxB brtmm90x https://brtchip.com/product/mm900ev1b
+========= ========= ======== ===================================== ======
+
+Espressif
+---------
+
+========================= ============================== ========= ======================================================================================================== ======
+Board Name Family URL Note
+========================= ============================== ========= ======================================================================================================== ======
+adafruit_feather_esp32_v2 Adafruit Feather ESP32 v2 espressif https://www.adafruit.com/product/5400
+adafruit_feather_esp32s2 Adafruit Feather ESP32S2 espressif https://www.adafruit.com/product/5000
+adafruit_feather_esp32s3 Adafruit Feather ESP32S3 espressif https://www.adafruit.com/product/5323
+adafruit_magtag_29gray Adafruit MagTag 2.9" Grayscale espressif https://www.adafruit.com/product/4800
+adafruit_metro_esp32s2 Adafruit Metro ESP32-S2 espressif https://www.adafruit.com/product/4775
+espressif_addax_1 Espresif Addax-1 espressif n/a
+espressif_c3_devkitc Espresif C3 DevKitC espressif https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32c3/esp32-c3-devkitc-02/index.html
+espressif_c6_devkitc Espresif C6 DevKitC espressif https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html
+espressif_kaluga_1 Espresif Kaluga 1 espressif https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s2/esp32-s2-kaluga-1/index.html
+espressif_p4_function_ev Espresif P4 Function EV espressif https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/index.html
+espressif_s2_devkitc Espresif S2 DevKitC espressif https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s2/esp32-s2-devkitc-1/index.html
+espressif_s3_devkitc Espresif S3 DevKitC espressif https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-devkitc-1/index.html
+espressif_s3_devkitm Espresif S3 DevKitM espressif https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-devkitm-1/index.html
+espressif_saola_1 Espresif S2 Saola 1 espressif https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s2/esp32-s2-saola-1/index.html
+========================= ============================== ========= ======================================================================================================== ======
+
+GigaDevice
+----------
+
+================== ================== ========= ============================= ======
+Board Name Family URL Note
+================== ================== ========= ============================= ======
+sipeed_longan_nano Sipeed Longan Nano gd32vf103 https://longan.sipeed.com/en/
+================== ================== ========= ============================= ======
+
+Infineon
+--------
+
+============= ================= ======== ============================================================================= ======
+Board Name Family URL Note
+============= ================= ======== ============================================================================= ======
+xmc4500_relax XMC4500 relax kit xmc4000 https://www.infineon.com/cms/en/product/evaluation-boards/kit_xmc45_relax_v1/
+xmc4700_relax XMC4700 relax kit xmc4000 https://www.infineon.com/cms/en/product/evaluation-boards/kit_xmc47_relax_v1/
+============= ================= ======== ============================================================================= ======
+
+Microchip
+---------
+
+========================= =================================== ========== ================================================================================= ======
+Board Name Family URL Note
+========================= =================================== ========== ================================================================================= ======
+olimex_emz64 Olimex PIC32-EMZ64 pic32mz https://www.olimex.com/Products/PIC/Development/PIC32-EMZ64/open-source-hardware
+olimex_hmz144 Olimex PIC32-HMZ144 pic32mz https://www.olimex.com/Products/PIC/Development/PIC32-HMZ144/open-source-hardware
+cynthion_d11 Great Scott Gadgets Cynthion samd11 https://greatscottgadgets.com/cynthion/
+samd11_xplained SAMD11 Xplained Pro samd11 https://www.microchip.com/en-us/development-tool/ATSAMD11-XPRO
+atsamd21_xpro SAMD21 Xplained Pro samd21 https://www.microchip.com/DevelopmentTools/ProductDetails/ATSAMD21-XPRO
+circuitplayground_express Adafruit Circuit Playground Express samd21 https://www.adafruit.com/product/3333
+curiosity_nano SAMD21 Curiosty Nano samd21 https://www.microchip.com/en-us/development-tool/dm320119
+cynthion_d21 Great Scott Gadgets Cynthion samd21 https://greatscottgadgets.com/cynthion/
+feather_m0_express Adafruit Feather M0 Express samd21 https://www.adafruit.com/product/3403
+itsybitsy_m0 Adafruit ItsyBitsy M0 samd21 https://www.adafruit.com/product/3727
+metro_m0_express Adafruit Metro M0 Express samd21 https://www.adafruit.com/product/3505
+qtpy Adafruit QT Py samd21 https://www.adafruit.com/product/4600
+seeeduino_xiao Seeeduino XIAO samd21 https://wiki.seeedstudio.com/Seeeduino-XIAO/
+sparkfun_samd21_mini_usb SparkFun SAMD21 Mini samd21 https://www.sparkfun.com/products/13664
+trinket_m0 Adafruit Trinket M0 samd21 https://www.adafruit.com/product/3500
+d5035_01 D5035-01 samd5x_e5x https://github.com/RudolphRiedel/USB_CAN-FD
+feather_m4_express Adafruit Feather M4 Express samd5x_e5x https://www.adafruit.com/product/3857
+itsybitsy_m4 Adafruit ItsyBitsy M4 samd5x_e5x https://www.adafruit.com/product/3800
+metro_m4_express Adafruit Metro M4 Express samd5x_e5x https://www.adafruit.com/product/3382
+pybadge Adafruit PyBadge samd5x_e5x https://www.adafruit.com/product/4200
+pyportal Adafruit PyPortal samd5x_e5x https://www.adafruit.com/product/4116
+same54_xplained SAME54 Xplained Pro samd5x_e5x https://www.microchip.com/DevelopmentTools/ProductDetails/ATSAME54-XPRO
+samg55_xplained SAMG55 Xplained Pro samg https://www.microchip.com/DevelopmentTools/ProductDetails/ATSAMG55-XPRO
+atsaml21_xpro SAML21 Xplained Pro saml2x https://www.microchip.com/en-us/development-tool/atsaml21-xpro-b
+saml22_feather SAML22 Feather saml2x https://github.com/joeycastillo/Feather-Projects/tree/main/SAML22%20Feather
+sensorwatch_m0 SensorWatch saml2x https://github.com/joeycastillo/Sensor-Watch
+========================= =================================== ========== ================================================================================= ======
+
+MindMotion
+----------
+
+===================== ====================================== ======== =============================================================================================== ======
+Board Name Family URL Note
+===================== ====================================== ======== =============================================================================================== ======
+mm32f327x_mb39 MM32F3273G9P MB-039 mm32 https://www.mindmotion.com.cn/support/development_tools/evaluation_boards/evboard/mm32f3273g9p/
+mm32f327x_pitaya_lite DshanMCU Pitaya Lite with MM32F3273G8P mm32 https://gitee.com/weidongshan/DshanMCU-Pitaya-c
+===================== ====================================== ======== =============================================================================================== ======
+
+NXP
+---
+
+================== ========================================= ============= ========================================================================================================================================================================= ======
+Board Name Family URL Note
+================== ========================================= ============= ========================================================================================================================================================================= ======
+metro_m7_1011 Adafruit Metro M7 1011 imxrt https://www.adafruit.com/product/5600
+metro_m7_1011_sd Adafruit Metro M7 1011 SD imxrt https://www.adafruit.com/product/5600
+mimxrt1010_evk i.MX RT1010 Evaluation Kit imxrt https://www.nxp.com/design/design-center/development-boards-and-designs/i-mx-evaluation-and-development-boards/i-mx-rt1010-evaluation-kit:MIMXRT1010-EVK
+mimxrt1015_evk i.MX RT1015 Evaluation Kit imxrt https://www.nxp.com/design/design-center/development-boards-and-designs/MIMXRT1015-EVK
+mimxrt1020_evk i.MX RT1020 Evaluation Kit imxrt https://www.nxp.com/design/design-center/development-boards-and-designs/MIMXRT1020-EVK
+mimxrt1024_evk i.MX RT1024 Evaluation Kit imxrt https://www.nxp.com/design/design-center/development-boards-and-designs/i-mx-evaluation-and-development-boards/i-mx-rt1024-evaluation-kit:MIMXRT1024-EVK
+mimxrt1050_evkb i.MX RT1050 Evaluation Kit revB imxrt https://www.nxp.com/part/IMXRT1050-EVKB
+mimxrt1060_evk i.MX RT1060 Evaluation Kit revB imxrt https://www.nxp.com/design/design-center/development-boards-and-designs/MIMXRT1060-EVKB
+mimxrt1064_evk i.MX RT1064 Evaluation Kit imxrt https://www.nxp.com/design/design-center/development-boards-and-designs/MIMXRT1064-EVK
+mimxrt1170_evkb i.MX RT1070 Evaluation Kit imxrt https://www.nxp.com/design/design-center/development-boards-and-designs/i-mx-evaluation-and-development-boards/i-mx-rt1170-evaluation-kit:MIMXRT1170-EVKB
+teensy_40 Teensy 4.0 imxrt https://www.pjrc.com/store/teensy40.html
+teensy_41 Teensy 4.1 imxrt https://www.pjrc.com/store/teensy41.html
+frdm_k64f Freedom K64F kinetis_k https://www.nxp.com/design/design-center/development-boards-and-designs/general-purpose-mcus/freedom-development-platform-for-kinetis-k64-k63-and-k24-mcus:FRDM-K64F
+teensy_35 Teensy 3.5 kinetis_k https://www.pjrc.com/store/teensy35.html
+frdm_k32l2a4s Freedom K32L2A4S kinetis_k32l2 https://www.nxp.com/design/design-center/development-boards-and-designs/FRDM-K32L2A4S
+frdm_k32l2b Freedom K32L2B3 kinetis_k32l2 https://www.nxp.com/design/design-center/development-boards-and-designs/general-purpose-mcus/nxp-freedom-development-platform-for-k32-l2b-mcus:FRDM-K32L2B3
+kuiic Kuiic kinetis_k32l2 https://github.com/nxf58843/kuiic
+frdm_kl25z fomu kinetis_kl https://www.nxp.com/design/design-center/development-boards-and-designs/general-purpose-mcus/freedom-development-platform-for-kinetis-kl14-kl15-kl24-kl25-mcus:FRDM-KL25Z
+lpcxpresso11u37 LPCXpresso11U37 lpc11 https://www.nxp.com/design/design-center/development-boards-and-designs/OM13074
+lpcxpresso11u68 LPCXpresso11U68 lpc11 https://www.nxp.com/design/design-center/development-boards-and-designs/OM13058
+lpcxpresso1347 LPCXpresso1347 lpc13 https://www.nxp.com/products/no-longer-manufactured/lpcxpresso-board-for-lpc1347:OM13045
+lpcxpresso1549 LPCXpresso1549 lpc15 https://www.nxp.com/design/design-center/development-boards-and-designs/OM13056
+lpcxpresso1769 LPCXpresso1769 lpc17 https://www.nxp.com/design/design-center/development-boards-and-designs/OM13000
+mbed1768 mbed 1768 lpc17 https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc1700-arm-cortex-m3/arm-mbed-lpc1768-board:OM11043
+lpcxpresso18s37 LPCXpresso18s37 lpc18 https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso18s37-development-board:OM13076
+mcb1800 Keil MCB1800 lpc18 https://www.keil.com/arm/mcb1800/
+ea4088_quickstart Embedded Artists LPC4088 QuickStart Board lpc40 https://www.embeddedartists.com/products/lpc4088-quickstart-board/
+ea4357 Embedded Artists LPC4357 Development Kit lpc43 https://www.embeddedartists.com/products/lpc4357-developers-kit/
+lpcxpresso43s67 LPCXpresso43S67 lpc43 https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso43s67-development-board:OM13084
+lpcxpresso51u68 LPCXpresso51u68 lpc51 https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpcxpresso51u68-for-the-lpc51u68-mcus:OM40005
+lpcxpresso54114 LPCXpresso54114 lpc54 https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso54114-board:OM13089
+lpcxpresso54608 LPCXpresso54608 lpc54 https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-development-board-for-lpc5460x-mcus:OM13092
+lpcxpresso54628 LPCXpresso54628 lpc54 https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso54628-development-board:OM13098
+double_m33_express Double M33 Express lpc55 https://www.crowdsupply.com/steiert-solutions/double-m33-express
+lpcxpresso55s28 LPCXpresso55s28 lpc55 https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso55s28-development-board:LPC55S28-EVK
+lpcxpresso55s69 LPCXpresso55s69 lpc55 https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso55s69-development-board:LPC55S69-EVK
+mcu_link MCU Link lpc55 https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcu-link-debug-probe:MCU-LINK
+frdm_mcxa153 Freedom MCXA153 mcx https://www.nxp.com/design/design-center/development-boards-and-designs/FRDM-MCXA153
+frdm_mcxn947 Freedom MCXN947 mcx https://www.nxp.com/design/design-center/development-boards-and-designs/FRDM-MCXN947
+mcxn947brk MCXN947 Breakout mcx n/a
+================== ========================================= ============= ========================================================================================================================================================================= ======
+
+Nordic Semiconductor
+--------------------
+
+=========================== ===================================== ======== ============================================================================== ======
+Board Name Family URL Note
+=========================== ===================================== ======== ============================================================================== ======
+adafruit_clue Adafruit CLUE nrf https://www.adafruit.com/product/4500
+arduino_nano33_ble Arduino Nano 33 BLE nrf https://store.arduino.cc/arduino-nano-33-ble
+circuitplayground_bluefruit Adafruit Circuit Playground Bluefruit nrf https://www.adafruit.com/product/4333
+feather_nrf52840_express Adafruit Feather nRF52840 Express nrf https://www.adafruit.com/product/4062
+feather_nrf52840_sense Adafruit Feather nRF52840 Sense nrf https://www.adafruit.com/product/4516
+itsybitsy_nrf52840 Adafruit ItsyBitsy nRF52840 Express nrf https://www.adafruit.com/product/4481
+pca10056 Nordic nRF52840DK nrf https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-DK
+pca10059 Nordic nRF52840 Dongle nrf https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-Dongle
+pca10095 Nordic nRF5340 DK nrf https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF5340-DK
+pca10100 Nordic nRF52833 DK nrf https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52833-DK
+=========================== ===================================== ======== ============================================================================== ======
+
+Raspberry Pi
+------------
+
+================= ================= ============== ========================================================== ======
+Board Name Family URL Note
+================= ================= ============== ========================================================== ======
+raspberrypi_zero Raspberry Pi Zero broadcom_32bit https://www.raspberrypi.org/products/raspberry-pi-zero/
+raspberrypi_cm4 Raspberry CM4 broadcom_64bit https://www.raspberrypi.org/products/compute-module-4
+raspberrypi_zero2 Raspberry Zero2 broadcom_64bit https://www.raspberrypi.org/products/raspberry-pi-zero-2-w
+================= ================= ============== ========================================================== ======
+
+Renesas
+-------
+
+============== =========================== ======== ================================================================================================================================================================ ======
+Board Name Family URL Note
+============== =========================== ======== ================================================================================================================================================================ ======
+da14695_dk_usb DA14695-00HQDEVKT-U da1469x https://www.renesas.com/en/products/wireless-connectivity/bluetooth-low-energy/da14695-00hqdevkt-u-smartbond-da14695-bluetooth-low-energy-52-usb-development-kit
+da1469x_dk_pro DA1469x Development Kit Pro da1469x https://lpccs-docs.renesas.com/um-b-090-da1469x_getting_started/DA1469x_The_hardware/DA1469x_The_hardware.html
+portenta_c33 Arduino Portenta C33 ra https://www.arduino.cc/pro/hardware-product-portenta-c33/
+ra2a1_ek RA2A1 EK ra https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra2a1-evaluation-kit-ra2a1-mcu-group
+ra4m1_ek RA4M1 EK ra https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4m1-evaluation-kit-ra4m1-mcu-group
+ra4m3_ek RA4M3 EK ra https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4m3-evaluation-kit-ra4m3-mcu-group
+ra6m1_ek RA6M1 EK ra https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m1-evaluation-kit-ra6m1-mcu-group
+ra6m5_ek RA6M5 EK ra https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m5-evaluation-kit-ra6m5-mcu-group
+ra8m1_ek RA8M1 EK ra https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra8m1-evaluation-kit-ra8m1-mcu-group
+uno_r4 Arduino UNO R4 ra https://store-usa.arduino.cc/pages/uno-r4
+============== =========================== ======== ================================================================================================================================================================ ======
+
+STMicroelectronics
+------------------
+
+=================== ================================= ======== ================================================================= ======
+Board Name Family URL Note
+=================== ================================= ======== ================================================================= ======
+stm32c071nucleo STM32C071 Nucleo stm32c0 https://www.st.com/en/evaluation-tools/nucleo-g071rb.html
+stm32f070rbnucleo STM32 F070 Nucleo stm32f0 https://www.st.com/en/evaluation-tools/nucleo-f070rb.html
+stm32f072disco STM32 F072 Discovery stm32f0 https://www.st.com/en/evaluation-tools/32f072bdiscovery.html
+stm32f072eval STM32 F072 Eval stm32f0 https://www.st.com/en/evaluation-tools/stm32072b-eval.html
+stm32f103_bluepill STM32 F103 Bluepill stm32f1 https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill
+stm32f103_mini_2 STM32 F103 Mini v2 stm32f1 https://stm32-base.org/boards/STM32F103RCT6-STM32-Mini-V2.0
+stm32f103ze_iar IAR STM32 F103ze starter kit stm32f1 n/a
+stm32f207nucleo STM32 F207 Nucleo stm32f2 https://www.st.com/en/evaluation-tools/nucleo-f207zg.html
+stm32f303disco STM32 F303 Discovery stm32f3 https://www.st.com/en/evaluation-tools/stm32f3discovery.html
+feather_stm32f405 Adafruit Feather STM32F405 stm32f4 https://www.adafruit.com/product/4382
+pyboardv11 Pyboard v1.1 stm32f4 https://www.adafruit.com/product/2390
+stm32f401blackpill STM32 F401 Blackpill stm32f4 https://stm32-base.org/boards/STM32F401CCU6-WeAct-Black-Pill-V1.2
+stm32f407blackvet STM32 F407 Blackvet stm32f4 https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0
+stm32f407disco STM32 F407 Discovery stm32f4 https://www.st.com/en/evaluation-tools/stm32f4discovery.html
+stm32f411blackpill STM32 F411 Blackpill stm32f4 https://stm32-base.org/boards/STM32F411CEU6-WeAct-Black-Pill-V2.0
+stm32f411disco STM32 F411 Discovery stm32f4 https://www.st.com/en/evaluation-tools/32f411ediscovery.html
+stm32f412disco STM32 F412 Discovery stm32f4 https://www.st.com/en/evaluation-tools/32f412gdiscovery.html
+stm32f412nucleo STM32 F412 Nucleo stm32f4 https://www.st.com/en/evaluation-tools/nucleo-f412zg.html
+stm32f439nucleo STM32 F439 Nucleo stm32f4 https://www.st.com/en/evaluation-tools/nucleo-f439zi.html
+stlinkv3mini Stlink-v3 mini stm32f7 https://www.st.com/en/development-tools/stlink-v3mini.html
+stm32f723disco STM32 F723 Discovery stm32f7 https://www.st.com/en/evaluation-tools/32f723ediscovery.html
+stm32f746disco STM32 F746 Discovery stm32f7 https://www.st.com/en/evaluation-tools/32f746gdiscovery.html
+stm32f746nucleo STM32 F746 Nucleo stm32f7 https://www.st.com/en/evaluation-tools/nucleo-f746zg.html
+stm32f767nucleo STM32 F767 Nucleo stm32f7 https://www.st.com/en/evaluation-tools/nucleo-f767zi.html
+stm32f769disco STM32 F769 Discovery stm32f7 https://www.st.com/en/evaluation-tools/32f769idiscovery.html
+stm32g0b1nucleo STM32 G0B1 Nucleo stm32g0 https://www.st.com/en/evaluation-tools/nucleo-g0b1re.html
+b_g474e_dpow1 STM32 B-G474E-DPOW1 Discovery kit stm32g4 https://www.st.com/en/evaluation-tools/b-g474e-dpow1.html
+stm32g474nucleo STM32 G474 Nucleo stm32g4 https://www.st.com/en/evaluation-tools/nucleo-g474re.html
+stm32g491nucleo STM32 G491 Nucleo stm32g4 https://www.st.com/en/evaluation-tools/nucleo-g491re.html
+stm32h503nucleo STM32 H503 Nucleo stm32h5 https://www.st.com/en/evaluation-tools/nucleo-h503rb.html
+stm32h563nucleo STM32 H563 Nucleo stm32h5 https://www.st.com/en/evaluation-tools/nucleo-h563zi.html
+stm32h573i_dk STM32 H573i Discovery stm32h5 https://www.st.com/en/evaluation-tools/stm32h573i-dk.html
+daisyseed Daisy Seed stm32h7 https://electro-smith.com/products/daisy-seed
+stm32h723nucleo STM32 H723 Nucleo stm32h7 https://www.st.com/en/evaluation-tools/nucleo-h723zg.html
+stm32h743eval STM32 H743 Eval stm32h7 https://www.st.com/en/evaluation-tools/stm32h743i-eval.html
+stm32h743nucleo STM32 H743 Nucleo stm32h7 https://www.st.com/en/evaluation-tools/nucleo-h743zi.html
+stm32h745disco STM32 H745 Discovery stm32h7 https://www.st.com/en/evaluation-tools/stm32h745i-disco.html
+stm32h750_weact STM32 H750 WeAct stm32h7 https://www.adafruit.com/product/5032
+stm32h750bdk STM32 H750b Discovery Kit stm32h7 https://www.st.com/en/evaluation-tools/stm32h750b-dk.html
+waveshare_openh743i Waveshare Open H743i stm32h7 https://www.waveshare.com/openh743i-c-standard.htm
+stm32l052dap52 STM32 L052 DAP stm32l0 n/a
+stm32l0538disco STM32 L0538 Discovery stm32l0 https://www.st.com/en/evaluation-tools/32l0538discovery.html
+stm32l412nucleo STM32 L412 Nucleo stm32l4 https://www.st.com/en/evaluation-tools/nucleo-l412kb.html
+stm32l476disco STM32 L476 Disco stm32l4 https://www.st.com/en/evaluation-tools/32l476gdiscovery.html
+stm32l4p5nucleo STM32 L4P5 Nucleo stm32l4 https://www.st.com/en/evaluation-tools/nucleo-l4p5zg.html
+stm32l4r5nucleo STM32 L4R5 Nucleo stm32l4 https://www.st.com/en/evaluation-tools/nucleo-l4r5zi.html
+b_u585i_iot2a STM32 B-U585i IOT2A Discovery kit stm32u5 https://www.st.com/en/evaluation-tools/b-u585i-iot02a.html
+stm32u545nucleo STM32 U545 Nucleo stm32u5 https://www.st.com/en/evaluation-tools/nucleo-u545re-q.html
+stm32u575eval STM32 U575 Eval stm32u5 https://www.st.com/en/evaluation-tools/stm32u575i-ev.html
+stm32u575nucleo STM32 U575 Nucleo stm32u5 https://www.st.com/en/evaluation-tools/nucleo-u575zi-q.html
+stm32u5a5nucleo STM32 U5a5 Nucleo stm32u5 https://www.st.com/en/evaluation-tools/nucleo-u5a5zj-q.html
+stm32wb55nucleo STM32 P-NUCLEO-WB55 stm32wb https://www.st.com/en/evaluation-tools/p-nucleo-wb55.html
+=================== ================================= ======== ================================================================= ======
+
+Sunxi
+-----
+
+======= ================= ======== ========================================= ======
+Board Name Family URL Note
+======= ================= ======== ========================================= ======
+f1c100s Lctech Pi F1C200s f1c100s https://linux-sunxi.org/Lctech_Pi_F1C200s
+======= ================= ======== ========================================= ======
+
+Texas Instruments
+-----------------
+
+================= ===================== ======== ========================================= ======
+Board Name Family URL Note
+================= ===================== ======== ========================================= ======
+msp_exp430f5529lp MSP430F5529 LaunchPad msp430 https://www.ti.com/tool/MSP-EXP430F5529LP
+msp_exp432e401y MSP432E401Y LaunchPad msp432e4 https://www.ti.com/tool/MSP-EXP432E401Y
+ek_tm4c123gxl TM4C123G LaunchPad tm4c https://www.ti.com/tool/EK-TM4C123GXL
+================= ===================== ======== ========================================= ======
+
+Tomu
+----
+
+======= ====== ======== ========================= ======
+Board Name Family URL Note
+======= ====== ======== ========================= ======
+fomu fomu fomu https://tomu.im/fomu.html
+======= ====== ======== ========================= ======
+
+WCH
+---
+
+================ ================ ======== ===================================================================== ======
+Board Name Family URL Note
+================ ================ ======== ===================================================================== ======
+ch32f205r-r0 CH32F205r-r0 ch32f20x https://github.com/openwch/ch32f20x
+ch32v103r_r1_1v0 CH32V103R-R1-1v1 ch32v10x https://github.com/openwch/ch32v103/tree/main/SCHPCB/CH32V103R-R1-1v1
+ch32v203c_r0_1v0 CH32V203C-R0-1v0 ch32v20x https://github.com/openwch/ch32v20x/tree/main/SCHPCB/CH32V203C-R0
+ch32v203g_r0_1v0 CH32V203G-R0-1v0 ch32v20x https://github.com/openwch/ch32v20x/tree/main/SCHPCB/CH32V203C-R0
+nanoch32v203 nanoCH32V203 ch32v20x https://github.com/wuxx/nanoCH32V203
+ch32v307v_r1_1v0 CH32V307V-R1-1v0 ch32v307 https://github.com/openwch/ch32v307/tree/main/SCHPCB/CH32V307V-R1-1v0
+================ ================ ======== ===================================================================== ======
diff --git a/docs/reference/dependencies.rst b/docs/reference/dependencies.rst
index 65ee31f22..e124466da 100644
--- a/docs/reference/dependencies.rst
+++ b/docs/reference/dependencies.rst
@@ -4,9 +4,9 @@ Dependencies
MCU low-level peripheral driver and external libraries for building TinyUSB examples
-======================================== ============================================================== ======================================== ==========================================================================================================================================================================================================================================================================================================================
+======================================== ============================================================== ======================================== ====================================================================================================================================================================================================================================================================================================================================
Local Path Repo Commit Required by
-======================================== ============================================================== ======================================== ==========================================================================================================================================================================================================================================================================================================================
+======================================== ============================================================== ======================================== ====================================================================================================================================================================================================================================================================================================================================
hw/mcu/allwinner https://github.com/hathach/allwinner_driver.git 8e5e89e8e132c0fd90e72d5422e5d3d68232b756 fc100s
hw/mcu/analog/max32 https://github.com/analogdevicesinc/msdk.git b20b398d3e5e2007594e54a74ba3d2a2e50ddd75 max32650 max32666 max32690 max78002
hw/mcu/bridgetek/ft9xx/ft90x-sdk https://github.com/BRTSG-FOSS/ft90x-sdk.git 91060164afe239fcb394122e8bf9eb24d3194eb1 brtmm90x
@@ -20,10 +20,11 @@ hw/mcu/nuvoton https://github.com/majbthrd/nuc_driver
hw/mcu/nxp/lpcopen https://github.com/hathach/nxp_lpcopen.git b41cf930e65c734d8ec6de04f1d57d46787c76ae lpc11 lpc13 lpc15 lpc17 lpc18 lpc40 lpc43
hw/mcu/nxp/mcux-sdk https://github.com/hathach/mcux-sdk.git 144f1eb7ea8c06512e12f12b27383601c0272410 kinetis_k kinetis_k32l2 kinetis_kl lpc51 lpc54 lpc55 mcx imxrt
hw/mcu/raspberry_pi/Pico-PIO-USB https://github.com/sekigon-gonnoc/Pico-PIO-USB.git fe9133fc513b82cc3dc62c67cb51f2339cf29ef7 rp2040
-hw/mcu/renesas/fsp https://github.com/renesas/fsp.git d52e5a6a59b7c638da860c2bb309b6e78e752ff8 ra
+hw/mcu/renesas/fsp https://github.com/renesas/fsp.git edcc97d684b6f716728a60d7a6fea049d9870bd6 ra
hw/mcu/renesas/rx https://github.com/kkitayam/rx_device.git 706b4e0cf485605c32351e2f90f5698267996023 rx
hw/mcu/silabs/cmsis-dfp-efm32gg12b https://github.com/cmsis-packs/cmsis-dfp-efm32gg12b.git f1c31b7887669cb230b3ea63f9b56769078960bc efm32
hw/mcu/sony/cxd56/spresense-exported-sdk https://github.com/sonydevworld/spresense-exported-sdk.git 2ec2a1538362696118dc3fdf56f33dacaf8f4067 spresense
+hw/mcu/st/cmsis_device_c0 https://github.com/STMicroelectronics/cmsis_device_c0.git fb56b1b70c73b74eacda2a4bcc36886444364ab3 stm32c0
hw/mcu/st/cmsis_device_f0 https://github.com/STMicroelectronics/cmsis_device_f0.git 2fc25ee22264bc27034358be0bd400b893ef837e stm32f0
hw/mcu/st/cmsis_device_f1 https://github.com/STMicroelectronics/cmsis_device_f1.git 6601104a6397299b7304fd5bcd9a491f56cb23a6 stm32f1
hw/mcu/st/cmsis_device_f2 https://github.com/STMicroelectronics/cmsis_device_f2.git 182fcb3681ce116816feb41b7764f1b019ce796f stm32f2
@@ -40,6 +41,8 @@ hw/mcu/st/cmsis_device_l4 https://github.com/STMicroelectronics/
hw/mcu/st/cmsis_device_l5 https://github.com/STMicroelectronics/cmsis_device_l5.git d922865fc0326a102c26211c44b8e42f52c1e53d stm32l5
hw/mcu/st/cmsis_device_u5 https://github.com/STMicroelectronics/cmsis_device_u5.git 5ad9797c54ec3e55eff770fc9b3cd4a1aefc1309 stm32u5
hw/mcu/st/cmsis_device_wb https://github.com/STMicroelectronics/cmsis_device_wb.git 9c5d1920dd9fabbe2548e10561d63db829bb744f stm32wb
+hw/mcu/st/stm32-mfxstm32l152 https://github.com/STMicroelectronics/stm32-mfxstm32l152.git 7f4389efee9c6a655b55e5df3fceef5586b35f9b stm32h7
+hw/mcu/st/stm32c0xx_hal_driver https://github.com/STMicroelectronics/stm32c0xx_hal_driver.git 41253e2f1d7ae4a4d0c379cf63f5bcf71fcf8eb3 stm32c0
hw/mcu/st/stm32f0xx_hal_driver https://github.com/STMicroelectronics/stm32f0xx_hal_driver.git 0e95cd88657030f640a11e690a8a5186c7712ea5 stm32f0
hw/mcu/st/stm32f1xx_hal_driver https://github.com/STMicroelectronics/stm32f1xx_hal_driver.git 1dd9d3662fb7eb2a7f7d3bc0a4c1dc7537915a29 stm32f1
hw/mcu/st/stm32f2xx_hal_driver https://github.com/STMicroelectronics/stm32f2xx_hal_driver.git c75ace9b908a9aca631193ebf2466963b8ea33d0 stm32f2
@@ -61,9 +64,10 @@ hw/mcu/wch/ch32f20x https://github.com/openwch/ch32f20x.gi
hw/mcu/wch/ch32v103 https://github.com/openwch/ch32v103.git 7578cae0b21f86dd053a1f781b2fc6ab99d0ec17 ch32v10x
hw/mcu/wch/ch32v20x https://github.com/openwch/ch32v20x.git c4c38f507e258a4e69b059ccc2dc27dde33cea1b ch32v20x
hw/mcu/wch/ch32v307 https://github.com/openwch/ch32v307.git 184f21b852cb95eed58e86e901837bc9fff68775 ch32v307
-lib/CMSIS_5 https://github.com/ARM-software/CMSIS_5.git 20285262657d1b482d132d20d755c8c330d55c1f imxrt kinetis_k32l2 kinetis_kl lpc51 lpc54 lpc55 mcx mm32 msp432e4 nrf ra saml2xlpc11 lpc13 lpc15 lpc17 lpc18 lpc40 lpc43stm32f0 stm32f1 stm32f2 stm32f3 stm32f4 stm32f7 stm32g0 stm32g4 stm32h5stm32h7 stm32l0 stm32l1 stm32l4 stm32l5 stm32u5 stm32wbsam3x samd11 samd21 samd51 samd5x_e5x same5x same7x saml2x samgtm4c
+lib/CMSIS_5 https://github.com/ARM-software/CMSIS_5.git 2b7495b8535bdcb306dac29b9ded4cfb679d7e5c imxrt kinetis_k32l2 kinetis_kl lpc51 lpc54 lpc55 mcx mm32 msp432e4 nrf saml2x lpc11 lpc13 lpc15 lpc17 lpc18 lpc40 lpc43 stm32c0 stm32f0 stm32f1 stm32f2 stm32f3 stm32f4 stm32f7 stm32g0 stm32g4 stm32h5 stm32h7 stm32l0 stm32l1 stm32l4 stm32l5 stm32u5 stm32wb sam3x samd11 samd21 samd51 samd5x_e5x same5x same7x saml2x samg tm4c
+lib/CMSIS_6 https://github.com/ARM-software/CMSIS_6.git b0bbb0423b278ca632cfe1474eb227961d835fd2 ra
lib/FreeRTOS-Kernel https://github.com/FreeRTOS/FreeRTOS-Kernel.git cc0e0707c0c748713485b870bb980852b210877f all
lib/lwip https://github.com/lwip-tcpip/lwip.git 159e31b689577dbf69cf0683bbaffbd71fa5ee10 all
lib/sct_neopixel https://github.com/gsteiert/sct_neopixel.git e73e04ca63495672d955f9268e003cffe168fcd8 lpc55
tools/uf2 https://github.com/microsoft/uf2.git c594542b2faa01cc33a2b97c9fbebc38549df80a all
-======================================== ============================================================== ======================================== ==========================================================================================================================================================================================================================================================================================================================
+======================================== ============================================================== ======================================== ====================================================================================================================================================================================================================================================================================================================================
diff --git a/docs/reference/getting_started.rst b/docs/reference/getting_started.rst
index ac4ab6392..963420f7b 100644
--- a/docs/reference/getting_started.rst
+++ b/docs/reference/getting_started.rst
@@ -10,7 +10,7 @@ It is relatively simple to incorporate tinyusb to your project
* Copy or ``git submodule`` this repo into your project in a subfolder. Let's say it is *your_project/tinyusb*
* Add all the .c in the ``tinyusb/src`` folder to your project
* Add *your_project/tinyusb/src* to your include path. Also make sure your current include path also contains the configuration file tusb_config.h.
-* Make sure all required macros are all defined properly in tusb_config.h (configure file in demo application is sufficient, but you need to add a few more such as CFG_TUSB_MCU, CFG_TUSB_OS since they are passed by IDE/compiler to maintain a unique configure for all boards).
+* Make sure all required macros are all defined properly in tusb_config.h (configure file in demo application is sufficient, but you need to add a few more such as ``CFG_TUSB_MCU``, ``CFG_TUSB_OS`` since they are passed by IDE/compiler to maintain a unique configure for all boards).
* If you use the device stack, make sure you have created/modified usb descriptors for your own need. Ultimately you need to implement all **tud descriptor** callbacks for the stack to work.
* Add tusb_init(rhport, role) call to your reset initialization code.
* Call ``tusb_int_handler(rhport, in_isr)`` in your USB IRQ Handler
@@ -20,8 +20,17 @@ It is relatively simple to incorporate tinyusb to your project
.. code-block::
int main(void) {
- your_init_code();
- tusb_init(0, TUSB_ROLE_DEVICE); // initialize device stack on roothub port 0
+ tusb_rhport_init_t dev_init = {
+ .role = TUSB_ROLE_DEVICE,
+ .speed = TUSB_SPEED_AUTO
+ };
+ tusb_init(0, &dev_init); // initialize device stack on roothub port 0
+
+ tusb_rhport_init_t host_init = {
+ .role = TUSB_ROLE_HOST,
+ .speed = TUSB_SPEED_AUTO
+ };
+ tusb_init(1, &host_init); // initialize host stack on roothub port 1
while(1) { // the mainloop
your_application_code();
@@ -30,10 +39,18 @@ It is relatively simple to incorporate tinyusb to your project
}
}
+ void USB0_IRQHandler(void) {
+ tusb_int_handler(0, true);
+ }
+
+ void USB1_IRQHandler(void) {
+ tusb_int_handler(1, true);
+ }
+
Examples
--------
-For your convenience, TinyUSB contains a handful of examples for both host and device with/without RTOS to quickly test the functionality as well as demonstrate how API() should be used. Most examples will work on most of `the supported boards `_. Firstly we need to ``git clone`` if not already
+For your convenience, TinyUSB contains a handful of examples for both host and device with/without RTOS to quickly test the functionality as well as demonstrate how API() should be used. Most examples will work on most of `the supported boards `_. Firstly we need to ``git clone`` if not already
.. code-block::
diff --git a/docs/reference/index.rst b/docs/reference/index.rst
index 9ecdf619b..8ac3cf924 100644
--- a/docs/reference/index.rst
+++ b/docs/reference/index.rst
@@ -1,85 +1,10 @@
-*********
-Reference
-*********
-
-.. figure:: ../assets/stack.svg
- :width: 1600px
- :alt: TinyUSB
-
-::
-
- .
- ├── docs # Documentation
- ├── examples # Examples with make and cmake build system
- ├── hw
- │ ├── bsp # Supported boards source files
- │ └── mcu # Low level mcu core & peripheral drivers
- ├── lib # Sources from 3rd party such as freeRTOS, fatfs ...
- ├── src # All sources files for TinyUSB stack itself.
- ├── test # Tests: unit test, fuzzing, hardware test
- └── tools # Files used internally
-
-
-Device Stack
-============
-
-Supports multiple device configurations by dynamically changing USB descriptors, low power functions such like suspend, resume, and remote wakeup. The following device classes are supported:
-
-- Audio Class 2.0 (UAC2)
-- Bluetooth Host Controller Interface (BTH HCI)
-- Communication Device Class (CDC)
-- Device Firmware Update (DFU): DFU mode (WIP) and Runtime
-- Human Interface Device (HID): Generic (In & Out), Keyboard, Mouse, Gamepad etc ...
-- Mass Storage Class (MSC): with multiple LUNs
-- Musical Instrument Digital Interface (MIDI)
-- Network with RNDIS, Ethernet Control Model (ECM), Network Control Model (NCM)
-- Test and Measurement Class (USBTMC)
-- Video class 1.5 (UVC): work in progress
-- Vendor-specific class support with generic In & Out endpoints. Can be used with MS OS 2.0 compatible descriptor to load winUSB driver without INF file.
-- `WebUSB `__ with vendor-specific class
-
-If you have a special requirement, `usbd_app_driver_get_cb()` can be used to write your own class driver without modifying the stack. Here is how the RPi team added their reset interface `raspberrypi/pico-sdk#197 `_
-
-Host Stack
-==========
-
-- Human Interface Device (HID): Keyboard, Mouse, Generic
-- Mass Storage Class (MSC)
-- Communication Device Class: CDC-ACM
-- Vendor serial over USB: FTDI, CP210x
-- Hub with multiple-level support
-
-Similar to the Device Stack, if you have a special requirement, `usbh_app_driver_get_cb()` can be used to write your own class driver without modifying the stack.
-
-TypeC PD Stack
-==============
-
-- Power Delivery 3.0 (PD3.0) with USB Type-C support (WIP)
-- Super early stage, only for testing purpose
-- Only support STM32 G4
-
-OS Abstraction layer
-====================
-
-TinyUSB is completely thread-safe by pushing all Interrupt Service Request (ISR) events into a central queue, then processing them later in the non-ISR context task function. It also uses semaphore/mutex to access shared resources such as Communication Device Class (CDC) FIFO. Therefore the stack needs to use some of the OS's basic APIs. Following OSes are already supported out of the box.
-
-- **No OS**
-- **FreeRTOS**
-- `RT-Thread `_: `repo `_
-- **Mynewt** Due to the newt package build system, Mynewt examples are better to be on its `own repo `_
-
-License
-=======
-
-All TinyUSB sources in the `src` folder are licensed under MIT license. However, each file can be individually licensed especially those in `lib` and `hw/mcu` folder. Please make sure you understand all the license term for files you use in your project.
-
Index
=====
.. toctree::
:maxdepth: 2
- supported
getting_started
+ boards
dependencies
concurrency
diff --git a/docs/reference/supported.rst b/docs/reference/supported.rst
deleted file mode 100644
index cbd6c4786..000000000
--- a/docs/reference/supported.rst
+++ /dev/null
@@ -1,442 +0,0 @@
-*****************
-Supported Devices
-*****************
-
-Supported MCUs
-==============
-
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| Manufacturer | Family | Device | Host | Highspeed | Driver | Note |
-+==============+=============================+========+======+===========+========================+===================+
-| Allwinner | F1C100s/F1C200s | ✔ | | ✔ | sunxi | musb variant |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| Analog | MAX3421E | | ✔ | ✖ | max3421 | via SPI |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | MAX32 650, 666, 690, | ✔ | | ✔ | musb | 1-dir ep |
-| | MAX78002 | | | | | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| Brigetek | FT90x | ✔ | | ✔ | ft9xx | 1-dir ep |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| Broadcom | BCM2711, BCM2837 | ✔ | | ✔ | dwc2 | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| Dialog | DA1469x | ✔ | ✖ | ✖ | da146xx | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| Espressif | S2, S3 | ✔ | ✔ | ✖ | dwc2 or esp32sx | |
-| ESP32 +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | P4 | ✔ | ✔ | ✔ | dwc2 | |
-+--------------+----+------------------------+--------+------+-----------+------------------------+-------------------+
-| GigaDevice | GD32VF103 | ✔ | | ✖ | dwc2 | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| Infineon | XMC4500 | ✔ | ✔ | ✖ | dwc2 | |
-+--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
-| MicroChip | SAM | D11, D21, L21, L22 | ✔ | | ✖ | samd | |
-| | +-----------------------+--------+------+-----------+------------------------+-------------------+
-| | | D51, E5x | ✔ | | ✖ | samd | |
-| | +-----------------------+--------+------+-----------+------------------------+-------------------+
-| | | G55 | ✔ | | ✖ | samg | 1-dir ep |
-| | +-----------------------+--------+------+-----------+------------------------+-------------------+
-| | | E70,S70,V70,V71 | ✔ | | ✔ | samx7x | 1-dir ep |
-| +-----+-----------------------+--------+------+-----------+------------------------+-------------------+
-| | PIC | 24 | ✔ | | | pic | ci_fs variant |
-| | +-----------------------+--------+------+-----------+------------------------+-------------------+
-| | | 32 mm, mk, mx | ✔ | | | pic | ci_fs variant |
-| | +-----------------------+--------+------+-----------+------------------------+-------------------+
-| | | dsPIC33 | ✔ | | | pic | ci_fs variant |
-| | +-----------------------+--------+------+-----------+------------------------+-------------------+
-| | | 32mz | ✔ | | | pic32mz | musb variant |
-+--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
-| Mind Montion | mm32 | ✔ | | ✖ | mm32f327x_otg | ci_fs variant |
-+--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
-| NordicSemi | nRF 52833, 52840, 5340 | ✔ | ✖ | ✖ | nrf5x | only ep8 is ISO |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| Nuvoton | NUC120 | ✔ | ✖ | ✖ | nuc120 | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | NUC121/NUC125 | ✔ | ✖ | ✖ | nuc121 | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | NUC126 | ✔ | ✖ | ✖ | nuc121 | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | NUC505 | ✔ | | ✔ | nuc505 | |
-+--------------+---------+-------------------+--------+------+-----------+------------------------+-------------------+
-| NXP | iMXRT | RT 10xx, 11xx | ✔ | ✔ | ✔ | ci_hs | |
-| +---------+-------------------+--------+------+-----------+------------------------+-------------------+
-| | Kinetis | KL | ✔ | ⚠ | ✖ | ci_fs, khci | |
-| | +-------------------+--------+------+-----------+------------------------+-------------------+
-| | | K32L2 | ✔ | | ✖ | khci | ci_fs variant |
-| +---------+-------------------+--------+------+-----------+------------------------+-------------------+
-| | LPC | 11u, 13, 15 | ✔ | ✖ | ✖ | lpc_ip3511 | |
-| | +-------------------+--------+------+-----------+------------------------+-------------------+
-| | | 17, 40 | ✔ | ⚠ | ✖ | lpc17_40 | |
-| | +-------------------+--------+------+-----------+------------------------+-------------------+
-| | | 18, 43 | ✔ | ✔ | ✔ | ci_hs | |
-| | +-------------------+--------+------+-----------+------------------------+-------------------+
-| | | 51u | ✔ | ✖ | ✖ | lpc_ip3511 | |
-| | +-------------------+--------+------+-----------+------------------------+-------------------+
-| | | 54, 55 | ✔ | | ✔ | lpc_ip3511 | |
-| +---------+-------------------+--------+------+-----------+------------------------+-------------------+
-| | MCX | N9, A15 | ✔ | | ✔ | ci_fs, ci_hs | |
-+--------------+---------+-------------------+--------+------+-----------+------------------------+-------------------+
-| Raspberry Pi | RP2040, RP2350 | ✔ | ✔ | ✖ | rp2040, pio_usb | |
-+--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
-| Renesas | RX | 63N, 65N, 72N | ✔ | ✔ | ✖ | rusb2 | |
-| +-----+-----------------------+--------+------+-----------+------------------------+-------------------+
-| | RA | 4M1, 4M3, 6M1 | ✔ | ✔ | ✖ | rusb2 | |
-| | +-----------------------+--------+------+-----------+------------------------+-------------------+
-| | | 6M5 | ✔ | ✔ | ✔ | rusb2 | |
-+--------------+-----+-----------------------+--------+------+-----------+------------------------+-------------------+
-| Silabs | EFM32GG12 | ✔ | | ✖ | dwc2 | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| Sony | CXD56 | ✔ | ✖ | ✔ | cxd56 | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| ST STM32 | F0 | ✔ | ✖ | ✖ | stm32_fsdev | |
-| +----+------------------------+--------+------+-----------+------------------------+-------------------+
-| | F1 | 102, 103 | ✔ | ✖ | ✖ | stm32_fsdev | |
-| | +------------------------+--------+------+-----------+------------------------+-------------------+
-| | | 105, 107 | ✔ | ✔ | ✖ | dwc2 | |
-| +----+------------------------+--------+------+-----------+------------------------+-------------------+
-| | F2, F4, F7, H7 | ✔ | ✔ | ✔ | dwc2 | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | F3 | ✔ | ✖ | ✖ | stm32_fsdev | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | C0, G0, H5 | ✔ | | ✖ | stm32_fsdev | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | G4 | ✔ | ✖ | ✖ | stm32_fsdev | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | L0, L1 | ✔ | ✖ | ✖ | stm32_fsdev | |
-| +----+------------------------+--------+------+-----------+------------------------+-------------------+
-| | L4 | 4x2, 4x3 | ✔ | ✖ | ✖ | stm32_fsdev | |
-| | +------------------------+--------+------+-----------+------------------------+-------------------+
-| | | 4x5, 4x6 | ✔ | ✔ | ✖ | dwc2 | |
-| +----+------------------------+--------+------+-----------+------------------------+-------------------+
-| | L4+ | ✔ | ✔ | ✖ | dwc2 | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | L5 | ✔ | ✖ | ✖ | stm32_fsdev | |
-| +----+------------------------+--------+------+-----------+------------------------+-------------------+
-| | U5 | 535, 545 | ✔ | | ✖ | stm32_fsdev | |
-| | +------------------------+--------+------+-----------+------------------------+-------------------+
-| | | 575, 585 | ✔ | ✔ | ✖ | dwc2 | |
-| | +------------------------+--------+------+-----------+------------------------+-------------------+
-| | | 59x,5Ax,5Fx,5Gx | ✔ | ✔ | ✔ | dwc2 | |
-| +----+------------------------+--------+------+-----------+------------------------+-------------------+
-| | WBx5 | ✔ | ✖ | ✖ | stm32_fsdev | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| TI | MSP430 | ✔ | ✖ | ✖ | msp430x5xx | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | MSP432E4 | ✔ | | ✖ | musb | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | TM4C123 | ✔ | | ✖ | musb | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| ValentyUSB | eptri | ✔ | ✖ | ✖ | eptri | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-| WCH | CH32F20x | ✔ | | ✔ | ch32_usbhs | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | CH32V20x | ✔ | | ✖ | stm32_fsdev/ch32_usbfs | |
-| +-----------------------------+--------+------+-----------+------------------------+-------------------+
-| | CH32V307 | ✔ | | ✔ | ch32_usbfs/hs | |
-+--------------+-----------------------------+--------+------+-----------+------------------------+-------------------+
-
-
-Table Legend
-------------
-
-========= =========================
-✔ Supported
-⚠ Partial support
-✖ Not supported by hardware
-\[empty\] Unknown
-========= =========================
-
-Supported Boards
-================
-
-The board support code is only used for self-contained examples and testing. It is not used when TinyUSB is part of a larger project. It is responsible for getting the MCU started and the USB peripheral clocked with minimal of on-board devices
-
-- One LED : for status
-- One Button : to get input from user
-- One UART : optional for device, but required for host examples
-
-The following boards are supported (sorted alphabetically):
-
-Broadcom
---------
-
-- `Raspberry Pi CM4 `__
-
-Dialog DA146xx
---------------
-
-- `DA14695 Development Kit – USB `__
-- `DA1469x Development Kit – Pro `__
-
-Espressif ESP32-S2
-------------------
-
-- `Adafruit Feather ESP32-S2 `__
-- `Adafruit Magtag 2.9" E-Ink WiFi Display `__
-- `Adafruit Metro ESP32-S2 `__
-- `ESP32-S2-Kaluga-1 `__
-- `ESP32-S2-Saola-1 `__
-
-GigaDevice
-----------
-
-- `Sipeed Longan Nano `__
-
-Infineon
----------
-
-XMC4000
-^^^^^^^
-
-- `XMC4500 Relax (Lite) Kit `__
-
-MicroChip
----------
-
-SAMD11 & SAMD21
-^^^^^^^^^^^^^^^
-
-- `Adafruit Circuit Playground Express `__
-- `Adafruit Feather M0 Express `__
-- `Adafruit ItsyBitsy M0 Express `__
-- `Adafruit Metro M0 Express `__
-- `Great Scott Gadgets Cynthion `__
-- `Microchip SAMD11 Xplained Pro `__
-- `Microchip SAMD21 Xplained Pro `__
-- `Seeeduino Xiao `__
-
-SAMD51 & SAME54
-^^^^^^^^^^^^^^^
-
-- `Adafruit Feather M4 Express `__
-- `Adafruit ItsyBitsy M4 Express `__
-- `Adafruit PyBadge `__
-- `Adafruit PyPortal `__
-- `Adafruit Metro M4 Express `__
-- `D5035-01 `__
-- `Microchip SAME54 Xplained Pro `__
-
-SAME7x
-^^^^^^
-
-- `Microchip SAME70 Xplained `_
-- `QMTECH ATSAME70N19 `_
-
-SAMG
-^^^^
-
-- `Microchip SAMG55 Xplained Pro `__
-
-SAML2x
-^^^^^^
-
-- `SAML21 Xplaind Pro `__
-- `SAML22 Feather `__
-- `Sensor Watch `__
-
-Nordic nRF5x
-------------
-
-- `Adafruit Circuit Playground Bluefruit `__
-- `Adafruit CLUE `__
-- `Adafruit Feather nRF52840 Express `__
-- `Adafruit Feather nRF52840 Sense `__
-- `Adafruit ItsyBitsy nRF52840 Express `__
-- `Arduino Nano 33 BLE `__
-- `Arduino Nano 33 BLE Sense `__
-- `Maker Diary nRF52840 MDK Dongle `__
-- `Nordic nRF52840 Development Kit (aka pca10056) `__
-- `Nordic nRF52840 Dongle (aka pca10059) `__
-- `Nordic nRF52833 Development Kit (aka pca10100) `__
-- `Raytac MDBT50Q-RX Dongle `__
-
-Nuvoton
--------
-
-- NuTiny SDK NUC120
-- `NuTiny NUC121S `__
-- `NuTiny NUC125S `__
-- `NuTiny NUC126V `__
-- `NuTiny SDK NUC505Y `__
-
-NXP
----
-
-iMX RT
-^^^^^^
-
-- `MIMX RT1010 Evaluation Kit `__
-- `MIMX RT1015 Evaluation Kit `__
-- `MIMX RT1020 Evaluation Kit `__
-- `MIMX RT1050 Evaluation Kit `__
-- `MIMX RT1060 Evaluation Kit `__
-- `MIMX RT1064 Evaluation Kit `__
-- `Teensy 4.0 Development Board `__
-- `Teensy 4.1 Development Board `__
-
-Kinetis
-^^^^^^^
-
-- `Freedom FRDM-KL25Z `__
-- `Freedom FRDM-K32L2A4S `__
-- `Freedom FRDM-K32L2B3 `__
-- `KUIIC `__
-
-LPC 11-13-15
-^^^^^^^^^^^^
-
-- `LPCXpresso 11u37 `__
-- `LPCXpresso 11u68 `__
-- `LPCXpresso 1347 `__
-- `LPCXpresso 1549 `__
-
-LPC 17-40
-^^^^^^^^^
-
-- `ARM mbed LPC1768 `__
-- `Embedded Artists LPC4088 Quick Start board `__
-- `LPCXpresso 1769 `__
-
-LPC 18-43
-^^^^^^^^^
-
-- `Embedded Artists LPC4357 Developer Kit `__
-- `Keil MCB1800 Evaluation Board `__
-- `LPCXpresso18S37 Development Board `__
-
-LPC 51
-^^^^^^
-
-- `LPCXpresso 51U68 `__
-
-LPC 54
-^^^^^^
-
-- `LPCXpresso 54114 `__
-
-LPC55
-^^^^^
-
-- `Double M33 Express `__
-- `LPCXpresso 55s28 EVK `__
-- `LPCXpresso 55s69 EVK `__
-- `MCU-Link `__
-
-Renesas
--------
-
-RA
-^^
-
-- `Evaluation Kit for RA4M1 `__
-- `Evaluation Kit for RA4M3 `__
-
-RX
-^^
-
-- `GR-CITRUS `__
-- `Renesas RX65N Target Board `__
-
-Raspberry Pi RP2040
--------------------
-
-- `Adafruit Feather RP2040 `__
-- `Adafruit ItsyBitsy RP2040 `__
-- `Adafruit QT Py RP2040 `__
-- `Raspberry Pi Pico `__
-
-Silabs
-------
-
-- `EFM32GG12 Thunderboard Kit (SLTB009A) `__
-
-Sony
-----
-
-- `Sony Spresense CXD5602 `__
-
-ST STM32
---------
-
-F0
-^^
-- `STM32 F070rb Nucleo `__
-- `STM32 F072 Evaluation `__
-- `STM32 F072rb Discovery `__
-
-F1
-^^
-- `STM32 F103c8 Blue Pill `__
-- `STM32 F103rc Mini v2.0 `__
-
-F2
-^^
-- `STM32 F207zg Nucleo `__
-
-F3
-^^
-- `STM32 F303vc Discovery `__
-
-F4
-^^
-- `Adafruit Feather STM32F405 `__
-- `Micro Python PyBoard v1.1 `__
-- `STM32 F401cc Black Pill `__
-- `STM32 F407vg Discovery `__
-- `STM32 F411ce Black Pill `__
-- `STM32 F411ve Discovery `__
-- `STM32 F412zg Discovery `__
-- `STM32 F412zg Nucleo `__
-- `STM32 F439zi Nucleo `__
-
-F7
-^^
-
-- `STLink-V3 Mini `__
-- `STM32 F723e Discovery `__
-- `STM32 F746zg Nucleo `__
-- `STM32 F746g Discovery `__
-- `STM32 F767zi Nucleo `__
-- `STM32 F769i Discovery `__
-
-H7
-^^
-- `STM32 H743zi Nucleo `__
-- `STM32 H743i Evaluation `__
-- `STM32 H745i Discovery `__
-- `Waveshare OpenH743I-C `__
-
-G4
-^^
-- `STM32 G474RE Nucleo `__
-
-L0
-^^
-- `STM32 L035c8 Discovery `__
-
-L4
-^^
-- `STM32 L476vg Discovery `__
-- `STM32 L4P5zg Nucleo `__
-- `STM32 L4R5zi Nucleo `__
-
-WB
-^^
-- `STM32 WB55 Nucleo `__
-
-TI
---
-
-- `MSP430F5529 USB LaunchPad Evaluation Kit `__
-- `MSP-EXP432E401Y LaunchPad Evaluation Kit `__
-- `TM4C123GXL LaunchPad Evaluation Kit `__
-
-Tomu
-----
-
-- `Fomu `__
-
-WCH
----
-
-- `CH32V307V-R1-1v0 `__
-- `CH32F205R-R0-1v0 `__
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index c603d0c22..d34c6ed5d 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
#set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
include(${CMAKE_CURRENT_SOURCE_DIR}/../hw/bsp/family_support.cmake)
diff --git a/examples/build_system/cmake/toolchain/arm_gcc.cmake b/examples/build_system/cmake/toolchain/arm_gcc.cmake
index 0b0949dd8..6a660e259 100644
--- a/examples/build_system/cmake/toolchain/arm_gcc.cmake
+++ b/examples/build_system/cmake/toolchain/arm_gcc.cmake
@@ -1,3 +1,7 @@
+if (RTOS STREQUAL zephyr)
+ return()
+endif ()
+
if (NOT DEFINED CMAKE_C_COMPILER)
set(CMAKE_C_COMPILER "arm-none-eabi-gcc")
endif ()
diff --git a/examples/build_system/cmake/toolchain/common.cmake b/examples/build_system/cmake/toolchain/common.cmake
index 688715914..4c181137b 100644
--- a/examples/build_system/cmake/toolchain/common.cmake
+++ b/examples/build_system/cmake/toolchain/common.cmake
@@ -4,6 +4,7 @@ include(CMakePrintHelpers)
# Common
# ----------------------------------------------------------------------------
set(CMAKE_SYSTEM_NAME Generic)
+set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_CPU})
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
# Look for includes and libraries only in the target system prefix.
@@ -13,8 +14,8 @@ set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# pass TOOLCHAIN_CPU to
-set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_SYSTEM_PROCESSOR)
-include(${CMAKE_CURRENT_LIST_DIR}/../cpu/${CMAKE_SYSTEM_PROCESSOR}.cmake)
+set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES CMAKE_SYSTEM_PROCESSOR CMAKE_SYSTEM_CPU)
+include(${CMAKE_CURRENT_LIST_DIR}/../cpu/${CMAKE_SYSTEM_CPU}.cmake)
# ----------------------------------------------------------------------------
# Compile flags
diff --git a/examples/device/CMakeLists.txt b/examples/device/CMakeLists.txt
index 26a808a21..bb7dd0a0f 100644
--- a/examples/device/CMakeLists.txt
+++ b/examples/device/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../hw/bsp/family_support.cmake)
diff --git a/examples/device/audio_4_channel_mic/CMakeLists.txt b/examples/device/audio_4_channel_mic/CMakeLists.txt
index 0f5d36193..c8086ae46 100644
--- a/examples/device/audio_4_channel_mic/CMakeLists.txt
+++ b/examples/device/audio_4_channel_mic/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/audio_4_channel_mic_freertos/CMakeLists.txt b/examples/device/audio_4_channel_mic_freertos/CMakeLists.txt
index 285d4490b..c50d4fef7 100644
--- a/examples/device/audio_4_channel_mic_freertos/CMakeLists.txt
+++ b/examples/device/audio_4_channel_mic_freertos/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/audio_test/CMakeLists.txt b/examples/device/audio_test/CMakeLists.txt
index f61e1b640..6a7e68c3d 100644
--- a/examples/device/audio_test/CMakeLists.txt
+++ b/examples/device/audio_test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/audio_test_freertos/CMakeLists.txt b/examples/device/audio_test_freertos/CMakeLists.txt
index 33f3b915f..6ce9e72fe 100644
--- a/examples/device/audio_test_freertos/CMakeLists.txt
+++ b/examples/device/audio_test_freertos/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/audio_test_multi_rate/CMakeLists.txt b/examples/device/audio_test_multi_rate/CMakeLists.txt
index f61e1b640..6a7e68c3d 100644
--- a/examples/device/audio_test_multi_rate/CMakeLists.txt
+++ b/examples/device/audio_test_multi_rate/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/board_test/CMakeLists.txt b/examples/device/board_test/CMakeLists.txt
index 012eff095..9a604a732 100644
--- a/examples/device/board_test/CMakeLists.txt
+++ b/examples/device/board_test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
@@ -15,18 +15,23 @@ if(FAMILY STREQUAL "espressif")
return()
endif()
-add_executable(${PROJECT})
+if (RTOS STREQUAL zephyr)
+ set(EXE_NAME app)
+else()
+ set(EXE_NAME ${PROJECT})
+ add_executable(${EXE_NAME})
+endif()
# Example source
-target_sources(${PROJECT} PUBLIC
+target_sources(${EXE_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
)
# Example include
-target_include_directories(${PROJECT} PUBLIC
+target_include_directories(${EXE_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src
)
# Configure compilation flags and libraries for the example without RTOS.
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
-family_configure_device_example(${PROJECT} noos)
+family_configure_device_example(${EXE_NAME} ${RTOS})
diff --git a/examples/device/cdc_dual_ports/CMakeLists.txt b/examples/device/cdc_dual_ports/CMakeLists.txt
index f61e1b640..6a7e68c3d 100644
--- a/examples/device/cdc_dual_ports/CMakeLists.txt
+++ b/examples/device/cdc_dual_ports/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/cdc_msc/CMakeLists.txt b/examples/device/cdc_msc/CMakeLists.txt
index c2f9cb095..b07f92342 100644
--- a/examples/device/cdc_msc/CMakeLists.txt
+++ b/examples/device/cdc_msc/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
#set_property(GLOBAL PROPERTY USE_FOLDERS ON)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
@@ -16,20 +16,25 @@ if(FAMILY STREQUAL "espressif")
return()
endif()
-add_executable(${PROJECT})
+if (RTOS STREQUAL zephyr)
+ set(EXE_NAME app)
+else()
+ set(EXE_NAME ${PROJECT})
+ add_executable(${EXE_NAME})
+endif()
# Example source
-target_sources(${PROJECT} PUBLIC
+target_sources(${EXE_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
${CMAKE_CURRENT_SOURCE_DIR}/src/msc_disk.c
${CMAKE_CURRENT_SOURCE_DIR}/src/usb_descriptors.c
)
# Example include
-target_include_directories(${PROJECT} PUBLIC
+target_include_directories(${EXE_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src
)
-# Configure compilation flags and libraries for the example... see the corresponding function
-# in hw/bsp/FAMILY/family.cmake for details.
-family_configure_device_example(${PROJECT} noos)
+# Configure compilation flags and libraries for the example without RTOS.
+# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
+family_configure_device_example(${EXE_NAME} ${RTOS})
diff --git a/examples/device/cdc_msc/prj.conf b/examples/device/cdc_msc/prj.conf
new file mode 100644
index 000000000..2f5139d9d
--- /dev/null
+++ b/examples/device/cdc_msc/prj.conf
@@ -0,0 +1,6 @@
+CONFIG_GPIO=y
+CONFIG_FPU=y
+CONFIG_NO_OPTIMIZATIONS=y
+CONFIG_UART_INTERRUPT_DRIVEN=y
+CONFIG_NRFX_POWER=y
+CONFIG_NRFX_UARTE0=y
diff --git a/examples/device/cdc_msc/src/msc_disk.c b/examples/device/cdc_msc/src/msc_disk.c
index d2f8628f1..d325d77fa 100644
--- a/examples/device/cdc_msc/src/msc_disk.c
+++ b/examples/device/cdc_msc/src/msc_disk.c
@@ -190,7 +190,14 @@ int32_t tud_msc_read10_cb(uint8_t lun, uint32_t lba, uint32_t offset, void* buff
(void) lun;
// out of ramdisk
- if ( lba >= DISK_BLOCK_NUM ) return -1;
+ if ( lba >= DISK_BLOCK_NUM ) {
+ return -1;
+ }
+
+ // Check for overflow of offset + bufsize
+ if ( offset + bufsize > DISK_BLOCK_SIZE ) {
+ return -1;
+ }
uint8_t const* addr = msc_disk[lba] + offset;
memcpy(buffer, addr, bufsize);
diff --git a/examples/device/cdc_msc_freertos/CMakeLists.txt b/examples/device/cdc_msc_freertos/CMakeLists.txt
index 32a9e2930..f7636a07a 100644
--- a/examples/device/cdc_msc_freertos/CMakeLists.txt
+++ b/examples/device/cdc_msc_freertos/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/cdc_msc_freertos/src/msc_disk.c b/examples/device/cdc_msc_freertos/src/msc_disk.c
index d2f8628f1..d325d77fa 100644
--- a/examples/device/cdc_msc_freertos/src/msc_disk.c
+++ b/examples/device/cdc_msc_freertos/src/msc_disk.c
@@ -190,7 +190,14 @@ int32_t tud_msc_read10_cb(uint8_t lun, uint32_t lba, uint32_t offset, void* buff
(void) lun;
// out of ramdisk
- if ( lba >= DISK_BLOCK_NUM ) return -1;
+ if ( lba >= DISK_BLOCK_NUM ) {
+ return -1;
+ }
+
+ // Check for overflow of offset + bufsize
+ if ( offset + bufsize > DISK_BLOCK_SIZE ) {
+ return -1;
+ }
uint8_t const* addr = msc_disk[lba] + offset;
memcpy(buffer, addr, bufsize);
diff --git a/examples/device/cdc_uac2/CMakeLists.txt b/examples/device/cdc_uac2/CMakeLists.txt
index 64e4374e9..c8c797637 100644
--- a/examples/device/cdc_uac2/CMakeLists.txt
+++ b/examples/device/cdc_uac2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/dfu/CMakeLists.txt b/examples/device/dfu/CMakeLists.txt
index a01eb3456..3da8ee3df 100644
--- a/examples/device/dfu/CMakeLists.txt
+++ b/examples/device/dfu/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/dfu_runtime/CMakeLists.txt b/examples/device/dfu_runtime/CMakeLists.txt
index a01eb3456..3da8ee3df 100644
--- a/examples/device/dfu_runtime/CMakeLists.txt
+++ b/examples/device/dfu_runtime/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/dynamic_configuration/CMakeLists.txt b/examples/device/dynamic_configuration/CMakeLists.txt
index 2b20d2234..8a62d6ba2 100644
--- a/examples/device/dynamic_configuration/CMakeLists.txt
+++ b/examples/device/dynamic_configuration/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/hid_boot_interface/CMakeLists.txt b/examples/device/hid_boot_interface/CMakeLists.txt
index a01eb3456..3da8ee3df 100644
--- a/examples/device/hid_boot_interface/CMakeLists.txt
+++ b/examples/device/hid_boot_interface/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/hid_composite/CMakeLists.txt b/examples/device/hid_composite/CMakeLists.txt
index a01eb3456..3da8ee3df 100644
--- a/examples/device/hid_composite/CMakeLists.txt
+++ b/examples/device/hid_composite/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/hid_composite_freertos/CMakeLists.txt b/examples/device/hid_composite_freertos/CMakeLists.txt
index 33f3b915f..6ce9e72fe 100644
--- a/examples/device/hid_composite_freertos/CMakeLists.txt
+++ b/examples/device/hid_composite_freertos/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/hid_generic_inout/CMakeLists.txt b/examples/device/hid_generic_inout/CMakeLists.txt
index a01eb3456..3da8ee3df 100644
--- a/examples/device/hid_generic_inout/CMakeLists.txt
+++ b/examples/device/hid_generic_inout/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/hid_multiple_interface/CMakeLists.txt b/examples/device/hid_multiple_interface/CMakeLists.txt
index a01eb3456..3da8ee3df 100644
--- a/examples/device/hid_multiple_interface/CMakeLists.txt
+++ b/examples/device/hid_multiple_interface/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/midi_test/CMakeLists.txt b/examples/device/midi_test/CMakeLists.txt
index f61e1b640..6a7e68c3d 100644
--- a/examples/device/midi_test/CMakeLists.txt
+++ b/examples/device/midi_test/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/midi_test_freertos/CMakeLists.txt b/examples/device/midi_test_freertos/CMakeLists.txt
index 33f3b915f..6ce9e72fe 100644
--- a/examples/device/midi_test_freertos/CMakeLists.txt
+++ b/examples/device/midi_test_freertos/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/msc_dual_lun/CMakeLists.txt b/examples/device/msc_dual_lun/CMakeLists.txt
index e69fead35..3955bfb49 100644
--- a/examples/device/msc_dual_lun/CMakeLists.txt
+++ b/examples/device/msc_dual_lun/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
@@ -15,20 +15,25 @@ if(FAMILY STREQUAL "espressif")
return()
endif()
-add_executable(${PROJECT})
+if (RTOS STREQUAL zephyr)
+ set(EXE_NAME app)
+else()
+ set(EXE_NAME ${PROJECT})
+ add_executable(${EXE_NAME})
+endif()
# Example source
-target_sources(${PROJECT} PUBLIC
+target_sources(${EXE_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/main.c
${CMAKE_CURRENT_SOURCE_DIR}/src/msc_disk_dual.c
${CMAKE_CURRENT_SOURCE_DIR}/src/usb_descriptors.c
)
# Example include
-target_include_directories(${PROJECT} PUBLIC
+target_include_directories(${EXE_NAME} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/src
)
# Configure compilation flags and libraries for the example without RTOS.
# See the corresponding function in hw/bsp/FAMILY/family.cmake for details.
-family_configure_device_example(${PROJECT} noos)
+family_configure_device_example(${EXE_NAME} ${RTOS})
diff --git a/examples/device/msc_dual_lun/prj.conf b/examples/device/msc_dual_lun/prj.conf
new file mode 100644
index 000000000..2f5139d9d
--- /dev/null
+++ b/examples/device/msc_dual_lun/prj.conf
@@ -0,0 +1,6 @@
+CONFIG_GPIO=y
+CONFIG_FPU=y
+CONFIG_NO_OPTIMIZATIONS=y
+CONFIG_UART_INTERRUPT_DRIVEN=y
+CONFIG_NRFX_POWER=y
+CONFIG_NRFX_UARTE0=y
diff --git a/examples/device/net_lwip_webserver/CMakeLists.txt b/examples/device/net_lwip_webserver/CMakeLists.txt
index 13923b583..87b92f4dc 100644
--- a/examples/device/net_lwip_webserver/CMakeLists.txt
+++ b/examples/device/net_lwip_webserver/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_LIST_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/uac2_headset/CMakeLists.txt b/examples/device/uac2_headset/CMakeLists.txt
index e92a57148..ced98a909 100644
--- a/examples/device/uac2_headset/CMakeLists.txt
+++ b/examples/device/uac2_headset/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/uac2_speaker_fb/CMakeLists.txt b/examples/device/uac2_speaker_fb/CMakeLists.txt
index f40ca8716..0ed3db646 100644
--- a/examples/device/uac2_speaker_fb/CMakeLists.txt
+++ b/examples/device/uac2_speaker_fb/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/usbtmc/CMakeLists.txt b/examples/device/usbtmc/CMakeLists.txt
index a63ca2d81..d2deb72d5 100644
--- a/examples/device/usbtmc/CMakeLists.txt
+++ b/examples/device/usbtmc/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/video_capture/CMakeLists.txt b/examples/device/video_capture/CMakeLists.txt
index 80dc39ca5..90788fa60 100644
--- a/examples/device/video_capture/CMakeLists.txt
+++ b/examples/device/video_capture/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/video_capture/src/main.c b/examples/device/video_capture/src/main.c
index 8bb924c61..04d4af4e5 100644
--- a/examples/device/video_capture/src/main.c
+++ b/examples/device/video_capture/src/main.c
@@ -185,7 +185,7 @@ static void fill_color_bar(uint8_t* buffer, unsigned start_position) {
#endif
-void video_send_frame(void) {
+static void video_send_frame(void) {
static unsigned start_ms = 0;
static unsigned already_sent = 0;
diff --git a/examples/device/video_capture_2ch/CMakeLists.txt b/examples/device/video_capture_2ch/CMakeLists.txt
index 80dc39ca5..90788fa60 100644
--- a/examples/device/video_capture_2ch/CMakeLists.txt
+++ b/examples/device/video_capture_2ch/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/device/webusb_serial/CMakeLists.txt b/examples/device/webusb_serial/CMakeLists.txt
index e92a57148..ced98a909 100644
--- a/examples/device/webusb_serial/CMakeLists.txt
+++ b/examples/device/webusb_serial/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/dual/CMakeLists.txt b/examples/dual/CMakeLists.txt
index f11074e93..c5e3ffce4 100644
--- a/examples/dual/CMakeLists.txt
+++ b/examples/dual/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../hw/bsp/family_support.cmake)
diff --git a/examples/dual/host_hid_to_device_cdc/CMakeLists.txt b/examples/dual/host_hid_to_device_cdc/CMakeLists.txt
index 54e36e3d3..6ae5b5766 100644
--- a/examples/dual/host_hid_to_device_cdc/CMakeLists.txt
+++ b/examples/dual/host_hid_to_device_cdc/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/dual/host_info_to_device_cdc/CMakeLists.txt b/examples/dual/host_info_to_device_cdc/CMakeLists.txt
index 54e36e3d3..6ae5b5766 100644
--- a/examples/dual/host_info_to_device_cdc/CMakeLists.txt
+++ b/examples/dual/host_info_to_device_cdc/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/host/CMakeLists.txt b/examples/host/CMakeLists.txt
index 793f6ab08..175646830 100644
--- a/examples/host/CMakeLists.txt
+++ b/examples/host/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../hw/bsp/family_support.cmake)
diff --git a/examples/host/bare_api/CMakeLists.txt b/examples/host/bare_api/CMakeLists.txt
index 76182d6fa..0efe84b60 100644
--- a/examples/host/bare_api/CMakeLists.txt
+++ b/examples/host/bare_api/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/host/cdc_msc_hid/CMakeLists.txt b/examples/host/cdc_msc_hid/CMakeLists.txt
index a7c372a34..e8928cda5 100644
--- a/examples/host/cdc_msc_hid/CMakeLists.txt
+++ b/examples/host/cdc_msc_hid/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/host/cdc_msc_hid_freertos/CMakeLists.txt b/examples/host/cdc_msc_hid_freertos/CMakeLists.txt
index b4004f8d7..78b2784fe 100644
--- a/examples/host/cdc_msc_hid_freertos/CMakeLists.txt
+++ b/examples/host/cdc_msc_hid_freertos/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/host/device_info/CMakeLists.txt b/examples/host/device_info/CMakeLists.txt
index 6a16155ec..33953233d 100644
--- a/examples/host/device_info/CMakeLists.txt
+++ b/examples/host/device_info/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/host/hid_controller/CMakeLists.txt b/examples/host/hid_controller/CMakeLists.txt
index c1b500dd8..fb5faf210 100644
--- a/examples/host/hid_controller/CMakeLists.txt
+++ b/examples/host/hid_controller/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/host/msc_file_explorer/CMakeLists.txt b/examples/host/msc_file_explorer/CMakeLists.txt
index 1a57c7466..5ac75c04a 100644
--- a/examples/host/msc_file_explorer/CMakeLists.txt
+++ b/examples/host/msc_file_explorer/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/host/msc_file_explorer/src/main.c b/examples/host/msc_file_explorer/src/main.c
index 9509035b4..8197c3c8d 100644
--- a/examples/host/msc_file_explorer/src/main.c
+++ b/examples/host/msc_file_explorer/src/main.c
@@ -62,15 +62,13 @@
#include "bsp/board_api.h"
#include "tusb.h"
+#include "msc_app.h"
+
//--------------------------------------------------------------------+
// MACRO CONSTANT TYPEDEF PROTYPES
//--------------------------------------------------------------------+
void led_blinking_task(void);
-// from msc_app.c
-extern bool msc_app_init(void);
-extern void msc_app_task(void);
-
/*------------- MAIN -------------*/
int main(void) {
board_init();
diff --git a/examples/host/msc_file_explorer/src/msc_app.c b/examples/host/msc_file_explorer/src/msc_app.c
index 035d74689..226c870ea 100644
--- a/examples/host/msc_file_explorer/src/msc_app.c
+++ b/examples/host/msc_file_explorer/src/msc_app.c
@@ -67,7 +67,9 @@ bool cli_init(void);
bool msc_app_init(void)
{
- for(size_t i=0; i 0 )
@@ -99,8 +103,7 @@ void msc_app_task(void)
//
//--------------------------------------------------------------------+
-bool inquiry_complete_cb(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_data)
-{
+static bool inquiry_complete_cb(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_data) {
msc_cbw_t const* cbw = cb_data->cbw;
msc_csw_t const* csw = cb_data->csw;
@@ -294,18 +297,11 @@ void cli_cmd_mkdir(EmbeddedCli *cli, char *args, void *context);
void cli_cmd_mv(EmbeddedCli *cli, char *args, void *context);
void cli_cmd_rm(EmbeddedCli *cli, char *args, void *context);
-void cli_write_char(EmbeddedCli *cli, char c)
-{
+static void cli_write_char(EmbeddedCli *cli, char c) {
(void) cli;
putchar((int) c);
}
-void cli_cmd_unknown(EmbeddedCli *cli, CliCommand *command)
-{
- (void) cli;
- printf("%s: command not found\r\n", command->name);
-}
-
bool cli_init(void)
{
EmbeddedCliConfig *config = embeddedCliDefaultConfig();
diff --git a/examples/host/msc_file_explorer/src/msc_app.h b/examples/host/msc_file_explorer/src/msc_app.h
new file mode 100644
index 000000000..3ba03d0dc
--- /dev/null
+++ b/examples/host/msc_file_explorer/src/msc_app.h
@@ -0,0 +1,35 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2025 Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ */
+#ifndef MSC_APP_H
+#define MSC_APP_H
+
+#include
+
+bool msc_app_init(void);
+void msc_app_task(void);
+
+
+#endif
diff --git a/examples/typec/CMakeLists.txt b/examples/typec/CMakeLists.txt
index c7641494e..24c25908a 100644
--- a/examples/typec/CMakeLists.txt
+++ b/examples/typec/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../hw/bsp/family_support.cmake)
diff --git a/examples/typec/power_delivery/CMakeLists.txt b/examples/typec/power_delivery/CMakeLists.txt
index 012eff095..837b4996a 100644
--- a/examples/typec/power_delivery/CMakeLists.txt
+++ b/examples/typec/power_delivery/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../hw/bsp/family_support.cmake)
diff --git a/examples/west.yml b/examples/west.yml
new file mode 100644
index 000000000..0683f6861
--- /dev/null
+++ b/examples/west.yml
@@ -0,0 +1,12 @@
+manifest:
+ remotes:
+ - name: zephyrproject-rtos
+ url-base: https://github.com/zephyrproject-rtos
+ projects:
+ - name: zephyr
+ remote: zephyrproject-rtos
+ revision: main
+ path: zephyr
+ import: true
+ self:
+ path: .
diff --git a/hw/bsp/board_api.h b/hw/bsp/board_api.h
index eaee1ee97..9cdbbf0d3 100644
--- a/hw/bsp/board_api.h
+++ b/hw/bsp/board_api.h
@@ -38,22 +38,24 @@ extern "C" {
#include "tusb.h"
-#if CFG_TUSB_OS == OPT_OS_FREERTOS
-#if TUSB_MCU_VENDOR_ESPRESSIF
- // ESP-IDF need "freertos/" prefix in include path.
- // CFG_TUSB_OS_INC_PATH should be defined accordingly.
- #include "freertos/FreeRTOS.h"
- #include "freertos/semphr.h"
- #include "freertos/queue.h"
- #include "freertos/task.h"
- #include "freertos/timers.h"
-#else
- #include "FreeRTOS.h"
- #include "semphr.h"
- #include "queue.h"
- #include "task.h"
- #include "timers.h"
-#endif
+#if CFG_TUSB_OS == OPT_OS_ZEPHYR
+ #include
+#elif CFG_TUSB_OS == OPT_OS_FREERTOS
+ #if TUSB_MCU_VENDOR_ESPRESSIF
+ // ESP-IDF need "freertos/" prefix in include path.
+ // CFG_TUSB_OS_INC_PATH should be defined accordingly.
+ #include "freertos/FreeRTOS.h"
+ #include "freertos/semphr.h"
+ #include "freertos/queue.h"
+ #include "freertos/task.h"
+ #include "freertos/timers.h"
+ #else
+ #include "FreeRTOS.h"
+ #include "semphr.h"
+ #include "queue.h"
+ #include "task.h"
+ #include "timers.h"
+ #endif
#endif
// Define the default baudrate
@@ -124,6 +126,10 @@ static inline uint32_t board_millis(void) {
// Implement your own board_millis() in any of .c file
uint32_t board_millis(void);
+#elif CFG_TUSB_OS == OPT_OS_ZEPHYR
+static inline uint32_t board_millis(void) {
+ return k_uptime_get_32();
+}
#else
#error "board_millis() is not implemented for this OS"
#endif
diff --git a/hw/bsp/broadcom_32bit/boards/raspberrypi_zero/board.cmake b/hw/bsp/broadcom_32bit/boards/raspberrypi_zero/board.cmake
index 2b8cc19e0..616a83fe2 100644
--- a/hw/bsp/broadcom_32bit/boards/raspberrypi_zero/board.cmake
+++ b/hw/bsp/broadcom_32bit/boards/raspberrypi_zero/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR arm1176jzf-s CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU arm1176jzf-s CACHE INTERNAL "System Processor")
#set(SUFFIX "")
function(update_board TARGET)
diff --git a/hw/bsp/broadcom_32bit/boards/raspberrypi_zero/board.h b/hw/bsp/broadcom_32bit/boards/raspberrypi_zero/board.h
index 84a106346..40a9dd198 100644
--- a/hw/bsp/broadcom_32bit/boards/raspberrypi_zero/board.h
+++ b/hw/bsp/broadcom_32bit/boards/raspberrypi_zero/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Raspberry Pi Zero
+ url: https://www.raspberrypi.org/products/raspberry-pi-zero/
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/broadcom_32bit/family.c b/hw/bsp/broadcom_32bit/family.c
index 0062e2e83..f8f3b0b70 100644
--- a/hw/bsp/broadcom_32bit/family.c
+++ b/hw/bsp/broadcom_32bit/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Raspberry Pi
+*/
+
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/broadcom_32bit/family.cmake b/hw/bsp/broadcom_32bit/family.cmake
index 09c32c7d4..5e57d8b1e 100644
--- a/hw/bsp/broadcom_32bit/family.cmake
+++ b/hw/bsp/broadcom_32bit/family.cmake
@@ -94,16 +94,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_BCM2835 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_BCM2835)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/broadcom_64bit/boards/raspberrypi_cm4/board.cmake b/hw/bsp/broadcom_64bit/boards/raspberrypi_cm4/board.cmake
index 919068f1d..6f1fc0225 100644
--- a/hw/bsp/broadcom_64bit/boards/raspberrypi_cm4/board.cmake
+++ b/hw/bsp/broadcom_64bit/boards/raspberrypi_cm4/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-a72 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-a72 CACHE INTERNAL "System Processor")
set(BCM_VERSION 2711)
function(update_board TARGET)
diff --git a/hw/bsp/broadcom_64bit/boards/raspberrypi_cm4/board.h b/hw/bsp/broadcom_64bit/boards/raspberrypi_cm4/board.h
index 84a106346..cadad2b27 100644
--- a/hw/bsp/broadcom_64bit/boards/raspberrypi_cm4/board.h
+++ b/hw/bsp/broadcom_64bit/boards/raspberrypi_cm4/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Raspberry CM4
+ url: https://www.raspberrypi.org/products/compute-module-4
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/broadcom_64bit/boards/raspberrypi_zero2/board.cmake b/hw/bsp/broadcom_64bit/boards/raspberrypi_zero2/board.cmake
index 85f84e947..80747363a 100644
--- a/hw/bsp/broadcom_64bit/boards/raspberrypi_zero2/board.cmake
+++ b/hw/bsp/broadcom_64bit/boards/raspberrypi_zero2/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-a53 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-a53 CACHE INTERNAL "System Processor")
set(BCM_VERSION 2837)
function(update_board TARGET)
diff --git a/hw/bsp/broadcom_64bit/boards/raspberrypi_zero2/board.h b/hw/bsp/broadcom_64bit/boards/raspberrypi_zero2/board.h
index 84a106346..e6caa0294 100644
--- a/hw/bsp/broadcom_64bit/boards/raspberrypi_zero2/board.h
+++ b/hw/bsp/broadcom_64bit/boards/raspberrypi_zero2/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Raspberry Zero2
+ url: https://www.raspberrypi.org/products/raspberry-pi-zero-2-w
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/broadcom_64bit/family.c b/hw/bsp/broadcom_64bit/family.c
index 0062e2e83..f8f3b0b70 100644
--- a/hw/bsp/broadcom_64bit/family.c
+++ b/hw/bsp/broadcom_64bit/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Raspberry Pi
+*/
+
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/broadcom_64bit/family.cmake b/hw/bsp/broadcom_64bit/family.cmake
index 566daefb3..1a088c2c0 100644
--- a/hw/bsp/broadcom_64bit/family.cmake
+++ b/hw/bsp/broadcom_64bit/family.cmake
@@ -101,16 +101,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_BCM${BCM_VERSION} ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_BCM${BCM_VERSION})
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/brtmm90x/boards/mm900evxb/board.h b/hw/bsp/brtmm90x/boards/mm900evxb/board.h
index 771779108..623033c2c 100644
--- a/hw/bsp/brtmm90x/boards/mm900evxb/board.h
+++ b/hw/bsp/brtmm90x/boards/mm900evxb/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MM900EVxB
+ url: https://brtchip.com/product/mm900ev1b
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/brtmm90x/family.c b/hw/bsp/brtmm90x/family.c
index 4d81e7d52..15ff4b8ee 100644
--- a/hw/bsp/brtmm90x/family.c
+++ b/hw/bsp/brtmm90x/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Bridgetek
+*/
+
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/ch32f20x/boards/ch32f205r-r0/board.h b/hw/bsp/ch32f20x/boards/ch32f205r-r0/board.h
index d5849bddb..b855804a9 100644
--- a/hw/bsp/ch32f20x/boards/ch32f205r-r0/board.h
+++ b/hw/bsp/ch32f20x/boards/ch32f205r-r0/board.h
@@ -22,6 +22,11 @@
* THE SOFTWARE.
*/
+/* metadata:
+ name: CH32F205r-r0
+ url: https://github.com/openwch/ch32f20x
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/ch32f20x/family.c b/hw/bsp/ch32f20x/family.c
index 9717832d6..7fef71d47 100644
--- a/hw/bsp/ch32f20x/family.c
+++ b/hw/bsp/ch32f20x/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: WCH
+*/
+
#include "stdio.h"
#include "debug_uart.h"
diff --git a/hw/bsp/ch32v10x/boards/ch32v103r_r1_1v0/board.h b/hw/bsp/ch32v10x/boards/ch32v103r_r1_1v0/board.h
index 3b1187c3a..1fde4244c 100644
--- a/hw/bsp/ch32v10x/boards/ch32v103r_r1_1v0/board.h
+++ b/hw/bsp/ch32v10x/boards/ch32v103r_r1_1v0/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: CH32V103R-R1-1v1
+ url: https://github.com/openwch/ch32v103/tree/main/SCHPCB/CH32V103R-R1-1v1
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/ch32v10x/family.c b/hw/bsp/ch32v10x/family.c
index 15f754e11..f25102494 100644
--- a/hw/bsp/ch32v10x/family.c
+++ b/hw/bsp/ch32v10x/family.c
@@ -1,3 +1,7 @@
+/* metadata:
+ manufacturer: WCH
+*/
+
#include
// https://github.com/openwch/ch32v307/pull/90
diff --git a/hw/bsp/ch32v10x/family.cmake b/hw/bsp/ch32v10x/family.cmake
index c0af0ef44..a73898050 100644
--- a/hw/bsp/ch32v10x/family.cmake
+++ b/hw/bsp/ch32v10x/family.cmake
@@ -9,7 +9,7 @@ set(SDK_SRC_DIR ${SDK_DIR}/EVT/EXAM/SRC)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR rv32imac-ilp32 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU rv32imac-ilp32 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/riscv_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS CH32V103 CACHE INTERNAL "")
@@ -98,15 +98,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_CH32V103 ${RTOS})
+ family_add_tinyusb(${TARGET} OPT_MCU_CH32V103)
- target_sources(${TARGET}-tinyusb PUBLIC
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/wch/dcd_ch32_usbfs.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/ch32v20x/boards/ch32v203c_r0_1v0/board.h b/hw/bsp/ch32v20x/boards/ch32v203c_r0_1v0/board.h
index 692cf11bf..256958088 100644
--- a/hw/bsp/ch32v20x/boards/ch32v203c_r0_1v0/board.h
+++ b/hw/bsp/ch32v20x/boards/ch32v203c_r0_1v0/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: CH32V203C-R0-1v0
+ url: https://github.com/openwch/ch32v20x/tree/main/SCHPCB/CH32V203C-R0
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/ch32v20x/boards/ch32v203g_r0_1v0/board.h b/hw/bsp/ch32v20x/boards/ch32v203g_r0_1v0/board.h
index 783831edd..827226d80 100644
--- a/hw/bsp/ch32v20x/boards/ch32v203g_r0_1v0/board.h
+++ b/hw/bsp/ch32v20x/boards/ch32v203g_r0_1v0/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: CH32V203G-R0-1v0
+ url: https://github.com/openwch/ch32v20x/tree/main/SCHPCB/CH32V203C-R0
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/ch32v20x/boards/nanoch32v203/board.h b/hw/bsp/ch32v20x/boards/nanoch32v203/board.h
index 64eaf931e..f02fceced 100644
--- a/hw/bsp/ch32v20x/boards/nanoch32v203/board.h
+++ b/hw/bsp/ch32v20x/boards/nanoch32v203/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: nanoCH32V203
+ url: https://github.com/wuxx/nanoCH32V203
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/ch32v20x/family.c b/hw/bsp/ch32v20x/family.c
index 43dd7e032..5f52d9447 100644
--- a/hw/bsp/ch32v20x/family.c
+++ b/hw/bsp/ch32v20x/family.c
@@ -1,3 +1,7 @@
+/* metadata:
+manufacturer: WCH
+*/
+
#include
// https://github.com/openwch/ch32v307/pull/90
diff --git a/hw/bsp/ch32v20x/family.cmake b/hw/bsp/ch32v20x/family.cmake
index 380ef190d..a5976e0ea 100644
--- a/hw/bsp/ch32v20x/family.cmake
+++ b/hw/bsp/ch32v20x/family.cmake
@@ -9,7 +9,7 @@ set(SDK_SRC_DIR ${SDK_DIR}/EVT/EXAM/SRC)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR rv32imac-ilp32 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU rv32imac-ilp32 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/riscv_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS CH32V20X CACHE INTERNAL "")
@@ -123,16 +123,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_CH32V20X ${RTOS})
+ family_add_tinyusb(${TARGET} OPT_MCU_CH32V20X)
- target_sources(${TARGET}-tinyusb PUBLIC
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/wch/dcd_ch32_usbfs.c
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.h b/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.h
index 7b488096e..491347034 100644
--- a/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.h
+++ b/hw/bsp/ch32v307/boards/ch32v307v_r1_1v0/board.h
@@ -22,6 +22,11 @@
* THE SOFTWARE.
*/
+/* metadata:
+ name: CH32V307V-R1-1v0
+ url: https://github.com/openwch/ch32v307/tree/main/SCHPCB/CH32V307V-R1-1v0
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/ch32v307/family.c b/hw/bsp/ch32v307/family.c
index adf2dbea5..48eb8a38c 100644
--- a/hw/bsp/ch32v307/family.c
+++ b/hw/bsp/ch32v307/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: WCH
+*/
+
#include "stdio.h"
// https://github.com/openwch/ch32v307/pull/90
diff --git a/hw/bsp/ch32v307/family.cmake b/hw/bsp/ch32v307/family.cmake
index d603af62d..446e850c5 100644
--- a/hw/bsp/ch32v307/family.cmake
+++ b/hw/bsp/ch32v307/family.cmake
@@ -8,7 +8,7 @@ set(SDK_SRC_DIR ${SDK_DIR}/EVT/EXAM/SRC)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR rv32imac-ilp32 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU rv32imac-ilp32 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/riscv_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS CH32V307 CACHE INTERNAL "")
@@ -113,15 +113,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_CH32V307 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_CH32V307)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/wch/dcd_ch32_usbhs.c
${TOP}/src/portable/wch/dcd_ch32_usbfs.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/da1469x/boards/da14695_dk_usb/board.h b/hw/bsp/da1469x/boards/da14695_dk_usb/board.h
index 5efdd43e0..c0810c2b6 100644
--- a/hw/bsp/da1469x/boards/da14695_dk_usb/board.h
+++ b/hw/bsp/da1469x/boards/da14695_dk_usb/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: DA14695-00HQDEVKT-U
+ url: https://www.renesas.com/en/products/wireless-connectivity/bluetooth-low-energy/da14695-00hqdevkt-u-smartbond-da14695-bluetooth-low-energy-52-usb-development-kit
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/da1469x/boards/da1469x_dk_pro/board.h b/hw/bsp/da1469x/boards/da1469x_dk_pro/board.h
index f969acf90..2b61e810e 100644
--- a/hw/bsp/da1469x/boards/da1469x_dk_pro/board.h
+++ b/hw/bsp/da1469x/boards/da1469x_dk_pro/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: DA1469x Development Kit Pro
+ url: https://lpccs-docs.renesas.com/um-b-090-da1469x_getting_started/DA1469x_The_hardware/DA1469x_The_hardware.html
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/da1469x/family.c b/hw/bsp/da1469x/family.c
index 70bedf6d9..a64ffce67 100644
--- a/hw/bsp/da1469x/family.c
+++ b/hw/bsp/da1469x/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Renesas
+*/
+
#include "bsp/board_api.h"
#include "board.h"
#include
diff --git a/hw/bsp/da1469x/family.cmake b/hw/bsp/da1469x/family.cmake
index 8c89141fe..20d6cbc44 100644
--- a/hw/bsp/da1469x/family.cmake
+++ b/hw/bsp/da1469x/family.cmake
@@ -5,7 +5,7 @@ set(MCU_DIR ${TOP}/hw/mcu/dialog/da1469x)
# include board specific
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
-set(CMAKE_SYSTEM_PROCESSOR cortex-m33-nodsp CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m33-nodsp CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS DA1469X CACHE INTERNAL "")
@@ -126,14 +126,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_DA1469X ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_DA1469X)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/dialog/da146xx/dcd_da146xx.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/espressif/boards/adafruit_feather_esp32_v2/board.h b/hw/bsp/espressif/boards/adafruit_feather_esp32_v2/board.h
index 0c53df06b..15e5091f9 100644
--- a/hw/bsp/espressif/boards/adafruit_feather_esp32_v2/board.h
+++ b/hw/bsp/espressif/boards/adafruit_feather_esp32_v2/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Feather ESP32 v2
+ url: https://www.adafruit.com/product/5400
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/adafruit_feather_esp32s2/board.h b/hw/bsp/espressif/boards/adafruit_feather_esp32s2/board.h
index 9aa2e7535..0f607c755 100644
--- a/hw/bsp/espressif/boards/adafruit_feather_esp32s2/board.h
+++ b/hw/bsp/espressif/boards/adafruit_feather_esp32s2/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Feather ESP32S2
+ url: https://www.adafruit.com/product/5000
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/adafruit_feather_esp32s3/board.h b/hw/bsp/espressif/boards/adafruit_feather_esp32s3/board.h
index 9aa2e7535..35c268cf5 100644
--- a/hw/bsp/espressif/boards/adafruit_feather_esp32s3/board.h
+++ b/hw/bsp/espressif/boards/adafruit_feather_esp32s3/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Feather ESP32S3
+ url: https://www.adafruit.com/product/5323
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/adafruit_magtag_29gray/board.h b/hw/bsp/espressif/boards/adafruit_magtag_29gray/board.h
index 084a7aaf2..b86089400 100644
--- a/hw/bsp/espressif/boards/adafruit_magtag_29gray/board.h
+++ b/hw/bsp/espressif/boards/adafruit_magtag_29gray/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit MagTag 2.9" Grayscale
+ url: https://www.adafruit.com/product/4800
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/adafruit_metro_esp32s2/board.h b/hw/bsp/espressif/boards/adafruit_metro_esp32s2/board.h
index 137ea71ae..bc45678f7 100644
--- a/hw/bsp/espressif/boards/adafruit_metro_esp32s2/board.h
+++ b/hw/bsp/espressif/boards/adafruit_metro_esp32s2/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Metro ESP32-S2
+ url: https://www.adafruit.com/product/4775
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/espressif_addax_1/board.h b/hw/bsp/espressif/boards/espressif_addax_1/board.h
index d4690f732..4a4a15e1b 100644
--- a/hw/bsp/espressif/boards/espressif_addax_1/board.h
+++ b/hw/bsp/espressif/boards/espressif_addax_1/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Espresif Addax-1
+ url: n/a
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/espressif_c3_devkitc/board.h b/hw/bsp/espressif/boards/espressif_c3_devkitc/board.h
index 243dd47f6..a03cb5052 100644
--- a/hw/bsp/espressif/boards/espressif_c3_devkitc/board.h
+++ b/hw/bsp/espressif/boards/espressif_c3_devkitc/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Espresif C3 DevKitC
+ url: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32c3/esp32-c3-devkitc-02/index.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/espressif_c6_devkitc/board.h b/hw/bsp/espressif/boards/espressif_c6_devkitc/board.h
index 243dd47f6..eedd36a89 100644
--- a/hw/bsp/espressif/boards/espressif_c6_devkitc/board.h
+++ b/hw/bsp/espressif/boards/espressif_c6_devkitc/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Espresif C6 DevKitC
+ url: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32c6/esp32-c6-devkitc-1/index.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/espressif_kaluga_1/board.h b/hw/bsp/espressif/boards/espressif_kaluga_1/board.h
index 613e6ae0c..d49dc2af6 100644
--- a/hw/bsp/espressif/boards/espressif_kaluga_1/board.h
+++ b/hw/bsp/espressif/boards/espressif_kaluga_1/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Espresif Kaluga 1
+ url: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s2/esp32-s2-kaluga-1/index.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/espressif_p4_function_ev/board.h b/hw/bsp/espressif/boards/espressif_p4_function_ev/board.h
index e57f7c51f..6f3229b70 100644
--- a/hw/bsp/espressif/boards/espressif_p4_function_ev/board.h
+++ b/hw/bsp/espressif/boards/espressif_p4_function_ev/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Espresif P4 Function EV
+ url: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/index.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/espressif_s2_devkitc/board.h b/hw/bsp/espressif/boards/espressif_s2_devkitc/board.h
index e068efef9..9c197591f 100644
--- a/hw/bsp/espressif/boards/espressif_s2_devkitc/board.h
+++ b/hw/bsp/espressif/boards/espressif_s2_devkitc/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Espresif S2 DevKitC
+ url: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s2/esp32-s2-devkitc-1/index.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/espressif_s3_devkitc/board.h b/hw/bsp/espressif/boards/espressif_s3_devkitc/board.h
index a319fbc61..6d7a94668 100644
--- a/hw/bsp/espressif/boards/espressif_s3_devkitc/board.h
+++ b/hw/bsp/espressif/boards/espressif_s3_devkitc/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Espresif S3 DevKitC
+ url: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-devkitc-1/index.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/espressif_s3_devkitm/board.h b/hw/bsp/espressif/boards/espressif_s3_devkitm/board.h
index a319fbc61..d01fdbe5b 100644
--- a/hw/bsp/espressif/boards/espressif_s3_devkitm/board.h
+++ b/hw/bsp/espressif/boards/espressif_s3_devkitm/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Espresif S3 DevKitM
+ url: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s3/esp32-s3-devkitm-1/index.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/espressif_saola_1/board.h b/hw/bsp/espressif/boards/espressif_saola_1/board.h
index e068efef9..ea369f19c 100644
--- a/hw/bsp/espressif/boards/espressif_saola_1/board.h
+++ b/hw/bsp/espressif/boards/espressif_saola_1/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Espresif S2 Saola 1
+ url: https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32s2/esp32-s2-saola-1/index.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/espressif/boards/family.c b/hw/bsp/espressif/boards/family.c
index 048b431fb..2f9ecfe4d 100644
--- a/hw/bsp/espressif/boards/family.c
+++ b/hw/bsp/espressif/boards/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Espressif
+*/
+
#include "bsp/board_api.h"
#include "board.h"
@@ -171,20 +175,14 @@ bool usb_init(void) {
// maybe we can use USB_OTG_MODE_DEFAULT and switch using dwc2 driver
#if CFG_TUD_ENABLED
.otg_mode = USB_OTG_MODE_DEVICE,
- .otg_speed = BOARD_TUD_RHPORT ? USB_PHY_SPEED_HIGH : USB_PHY_SPEED_FULL,
#elif CFG_TUH_ENABLED
.otg_mode = USB_OTG_MODE_HOST,
- .otg_speed= BOARD_TUH_RHPORT ? USB_PHY_SPEED_HIGH : USB_PHY_SPEED_FULL,
#endif
+ // https://github.com/hathach/tinyusb/issues/2943#issuecomment-2601888322
+ // Set speed to undefined (auto-detect) to avoid timinng/racing issue with S3 with host such as macOS
+ .otg_speed = USB_PHY_SPEED_UNDEFINED,
};
- // OTG IOs config
- // const usb_phy_otg_io_conf_t otg_io_conf = USB_PHY_SELF_POWERED_DEVICE(config->vbus_monitor_io);
- // if (config->self_powered) {
- // phy_conf.otg_io_conf = &otg_io_conf;
- // }
- // ESP_RETURN_ON_ERROR(usb_new_phy(&phy_conf, &phy_hdl), TAG, "Install USB PHY failed");
-
usb_new_phy(&phy_conf, &phy_hdl);
return true;
diff --git a/hw/bsp/f1c100s/boards/f1c100s/board.h b/hw/bsp/f1c100s/boards/f1c100s/board.h
index 3b56a3a57..44b78f8fb 100644
--- a/hw/bsp/f1c100s/boards/f1c100s/board.h
+++ b/hw/bsp/f1c100s/boards/f1c100s/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: Lctech Pi F1C200s
+ url: https://linux-sunxi.org/Lctech_Pi_F1C200s
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/f1c100s/family.c b/hw/bsp/f1c100s/family.c
index 6df4a0ed8..9e864363f 100644
--- a/hw/bsp/f1c100s/family.c
+++ b/hw/bsp/f1c100s/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Sunxi
+*/
+
#include
#include
#include
diff --git a/hw/bsp/f1c100s/family.cmake b/hw/bsp/f1c100s/family.cmake
index 032dfb77d..211c6645c 100644
--- a/hw/bsp/f1c100s/family.cmake
+++ b/hw/bsp/f1c100s/family.cmake
@@ -5,7 +5,7 @@ set(SDK_DIR ${TOP}/hw/mcu/allwinner/f1c100s)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR arm926ej-s CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU arm926ej-s CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS F1C100S CACHE INTERNAL "")
@@ -100,14 +100,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_F1C100S ${RTOS})
- target_sources(${TARGET}-tinyusb PRIVATE
+ family_add_tinyusb(${TARGET} OPT_MCU_F1C100S)
+ target_sources(${TARGET} PRIVATE
${TOP}/src/portable/sunxi/dcd_sunxi_musb.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/family_support.cmake b/hw/bsp/family_support.cmake
index ddb17cbb0..04d537376 100644
--- a/hw/bsp/family_support.cmake
+++ b/hw/bsp/family_support.cmake
@@ -8,6 +8,13 @@ get_filename_component(TOP ${TOP} ABSOLUTE)
set(UF2CONV_PY ${TOP}/tools/uf2/utils/uf2conv.py)
+#-------------------------------------------------------------
+# RTOS
+#-------------------------------------------------------------
+if (NOT DEFINED RTOS)
+ set(RTOS noos)
+endif ()
+
#-------------------------------------------------------------
# Toolchain
# Can be changed via -DTOOLCHAIN=gcc|iar or -DCMAKE_C_COMPILER=
@@ -27,7 +34,6 @@ if (DEFINED CMAKE_C_COMPILER)
endif ()
endif ()
-# default to gcc
if (NOT DEFINED TOOLCHAIN)
set(TOOLCHAIN gcc)
endif ()
@@ -53,6 +59,7 @@ if (NOT DEFINED FAMILY)
# replace / with ; so that we can get the first element as FAMILY
string(REPLACE "/" ";" BOARD_PATH ${BOARD_PATH})
list(GET BOARD_PATH 0 FAMILY)
+ set(FAMILY ${FAMILY} CACHE STRING "Board family")
endif ()
if (NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/${FAMILY}/family.cmake)
@@ -73,33 +80,14 @@ if (NOT NO_WARN_RWX_SEGMENTS_SUPPORTED)
set(NO_WARN_RWX_SEGMENTS_SUPPORTED 1)
endif()
-set(WARNING_FLAGS_GNU
- -Wall
- -Wextra
- -Werror
- -Wfatal-errors
- -Wdouble-promotion
- -Wstrict-prototypes
- -Wstrict-overflow
- -Werror-implicit-function-declaration
- -Wfloat-equal
- -Wundef
- -Wshadow
- -Wwrite-strings
- -Wsign-compare
- -Wmissing-format-attribute
- -Wunreachable-code
- -Wcast-align
- -Wcast-function-type
- -Wcast-qual
- -Wnull-dereference
- -Wuninitialized
- -Wunused
- -Wreturn-type
- -Wredundant-decls
- )
-
-set(WARNING_FLAGS_IAR "")
+#----------------------------------
+# Zephyr
+#----------------------------------
+if (RTOS STREQUAL zephyr)
+ set(BOARD_ROOT ${TOP}/hw/bsp/${FAMILY})
+ set(ZEPHYR_BOARD_ALIASES ${CMAKE_CURRENT_LIST_DIR}/zephyr_board_aliases.cmake)
+ find_package(Zephyr REQUIRED HINTS ${TOP}/zephyr)
+endif ()
#-------------------------------------------------------------
# Functions
@@ -177,7 +165,6 @@ endfunction()
# Add RTOS to example
function(family_add_rtos TARGET RTOS)
if (RTOS STREQUAL "freertos")
- # freertos config
if (NOT TARGET freertos_config)
add_library(freertos_config INTERFACE)
target_include_directories(freertos_config INTERFACE ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/${FAMILY}/FreeRTOSConfig)
@@ -185,12 +172,15 @@ function(family_add_rtos TARGET RTOS)
target_link_libraries(freertos_config INTERFACE board_${BOARD})
endif()
- # freertos kernel
if (NOT TARGET freertos_kernel)
add_subdirectory(${TOP}/lib/FreeRTOS-Kernel ${CMAKE_BINARY_DIR}/lib/freertos_kernel)
endif ()
target_link_libraries(${TARGET} PUBLIC freertos_kernel)
+ target_compile_definitions(${TARGET} PUBLIC CFG_TUSB_OS=OPT_OS_FREERTOS)
+ elseif (RTOS STREQUAL "zephyr")
+ target_compile_definitions(${TARGET} PUBLIC CFG_TUSB_OS=OPT_OS_ZEPHYR)
+ target_include_directories(${TARGET} PUBLIC ${ZEPHYR_BASE}/include)
endif ()
endfunction()
@@ -198,6 +188,7 @@ endfunction()
function(family_configure_common TARGET RTOS)
family_add_rtos(${TARGET} ${RTOS})
+ # Add BOARD_${BOARD} define
string(TOUPPER ${BOARD} BOARD_UPPER)
string(REPLACE "-" "_" BOARD_UPPER ${BOARD_UPPER})
target_compile_definitions(${TARGET} PUBLIC
@@ -210,20 +201,6 @@ function(family_configure_common TARGET RTOS)
target_compile_options(${TARGET} PUBLIC ${CFLAGS_CLI})
endif()
- target_compile_options(${TARGET} PUBLIC ${WARNING_FLAGS_${CMAKE_C_COMPILER_ID}})
-
- # Generate linker map file
- if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
- target_link_options(${TARGET} PUBLIC "LINKER:-Map=$.map")
- if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0 AND NO_WARN_RWX_SEGMENTS_SUPPORTED)
- target_link_options(${TARGET} PUBLIC "LINKER:--no-warn-rwx-segments")
- endif ()
- elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
- target_link_options(${TARGET} PUBLIC "LINKER:-Map=$.map")
- elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
- target_link_options(${TARGET} PUBLIC "LINKER:--map=$.map")
- endif()
-
# ETM Trace option
if (TRACE_ETM STREQUAL "1")
target_compile_definitions(${TARGET} PUBLIC TRACE_ETM)
@@ -234,68 +211,84 @@ function(family_configure_common TARGET RTOS)
target_compile_definitions(${TARGET} PUBLIC LOGGER_${LOGGER})
# Add segger rtt to example
if(LOGGER STREQUAL "RTT" OR LOGGER STREQUAL "rtt")
- if (NOT TARGET segger_rtt)
- add_library(segger_rtt STATIC ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c)
- target_include_directories(segger_rtt PUBLIC ${TOP}/lib/SEGGER_RTT/RTT)
-# target_compile_definitions(segger_rtt PUBLIC SEGGER_RTT_MODE_DEFAULT=SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL)
- endif()
- target_link_libraries(${TARGET} PUBLIC segger_rtt)
+ target_sources(${TARGET} PUBLIC ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c)
+ target_include_directories(${TARGET} PUBLIC ${TOP}/lib/SEGGER_RTT/RTT)
+# target_compile_definitions(${TARGET} PUBLIC SEGGER_RTT_MODE_DEFAULT=SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL)
endif ()
endif ()
+ if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ target_compile_options(${TARGET} PRIVATE
+ -Wall
+ -Wextra
+ #-Werror
+ -Wfatal-errors
+ -Wdouble-promotion
+ -Wstrict-prototypes
+ -Wstrict-overflow
+ -Werror-implicit-function-declaration
+ -Wfloat-equal
+ -Wundef
+ -Wshadow
+ -Wwrite-strings
+ -Wsign-compare
+ -Wmissing-format-attribute
+ -Wunreachable-code
+ -Wcast-align
+ -Wcast-function-type
+ -Wcast-qual
+ -Wnull-dereference
+ -Wuninitialized
+ -Wunused
+ -Wunused-function
+ -Wreturn-type
+ -Wredundant-decls
+ -Wmissing-prototypes
+ )
+ target_link_options(${TARGET} PUBLIC "LINKER:-Map=$.map")
+ if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0
+ AND NO_WARN_RWX_SEGMENTS_SUPPORTED AND (NOT RTOS STREQUAL zephyr))
+ target_link_options(${TARGET} PUBLIC "LINKER:--no-warn-rwx-segments")
+ endif ()
+ elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
+ target_link_options(${TARGET} PUBLIC "LINKER:--map=$.map")
+ endif ()
+
# run size after build
- find_program(SIZE_EXE ${CMAKE_SIZE})
- if(NOT ${SIZE_EXE} STREQUAL SIZE_EXE-NOTFOUND)
- add_custom_command(TARGET ${TARGET} POST_BUILD
- COMMAND ${SIZE_EXE} $
- )
- endif ()
+# find_program(SIZE_EXE ${CMAKE_SIZE})
+# if(NOT ${SIZE_EXE} STREQUAL SIZE_EXE-NOTFOUND)
+# add_custom_command(TARGET ${TARGET} POST_BUILD
+# COMMAND ${SIZE_EXE} $
+# )
+# endif ()
endfunction()
-# Add tinyusb to example
-function(family_add_tinyusb TARGET OPT_MCU RTOS)
- # tinyusb target is built for each example since it depends on example's tusb_config.h
- set(TINYUSB_TARGET_PREFIX ${TARGET}-)
- add_library(${TARGET}-tinyusb_config INTERFACE)
-
- # path to tusb_config.h
- target_include_directories(${TARGET}-tinyusb_config INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/src)
- target_compile_definitions(${TARGET}-tinyusb_config INTERFACE CFG_TUSB_MCU=${OPT_MCU})
-
- if (DEFINED LOG)
- target_compile_definitions(${TARGET}-tinyusb_config INTERFACE CFG_TUSB_DEBUG=${LOG})
- if (LOG STREQUAL "4")
- # no inline for debug level 4
- target_compile_definitions(${TARGET}-tinyusb_config INTERFACE TU_ATTR_ALWAYS_INLINE=)
- endif ()
- endif()
-
- if (RTOS STREQUAL "freertos")
- target_compile_definitions(${TARGET}-tinyusb_config INTERFACE CFG_TUSB_OS=OPT_OS_FREERTOS)
- endif ()
-
+# Add tinyusb to target
+function(family_add_tinyusb TARGET OPT_MCU)
# tinyusb's CMakeList.txt
add_subdirectory(${TOP}/src ${CMAKE_CURRENT_BINARY_DIR}/tinyusb)
- if (RTOS STREQUAL "freertos")
- # link tinyusb with freeRTOS kernel
- target_link_libraries(${TARGET}-tinyusb PUBLIC freertos_kernel)
- endif ()
+ # Add TinyUSB sources, include and common define
+ tinyusb_target_add(${TARGET})
+
+ # path to tusb_config.h
+ target_include_directories(${TARGET} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
+
+ target_compile_definitions(${TARGET} PUBLIC CFG_TUSB_MCU=${OPT_MCU})
+ if (DEFINED LOG)
+ target_compile_definitions(${TARGET} PUBLIC CFG_TUSB_DEBUG=${LOG})
+ if (LOG STREQUAL "4") # no inline for debug level 4
+ target_compile_definitions(${TARGET} PUBLIC TU_ATTR_ALWAYS_INLINE=)
+ endif ()
+ endif()
# use max3421 as host controller
if (MAX3421_HOST STREQUAL "1")
- target_compile_definitions(${TARGET}-tinyusb_config INTERFACE CFG_TUH_MAX3421=1)
- target_sources(${TARGET}-tinyusb PUBLIC
+ target_compile_definitions(${TARGET} PUBLIC CFG_TUH_MAX3421=1)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/analog/max3421/hcd_max3421.c
)
endif ()
-
- # compile define from command line
- if(DEFINED CFLAGS_CLI)
- separate_arguments(CFLAGS_CLI)
- target_compile_options(${TARGET}-tinyusb PUBLIC ${CFLAGS_CLI})
- endif()
-
endfunction()
# Add bin/hex output
@@ -321,10 +314,10 @@ function(family_add_uf2 TARGET FAMILY_ID)
VERBATIM)
endfunction()
-#----------------------------------
+#-------------------------------------------------------
# Example Target Configure (Default rule)
# These function can be redefined in FAMILY/family.cmake
-#----------------------------------
+#--------------------------------------------------------
function(family_configure_example TARGET RTOS)
# empty function, should be redefined in FAMILY/family.cmake
@@ -418,26 +411,28 @@ function(family_flash_jlink TARGET)
endif ()
separate_arguments(OPTION_LIST UNIX_COMMAND ${JLINK_OPTION})
+ if (RTOS STREQUAL zephyr)
+ set(BINARY_TARGET zephyr_final)
+ set(NAME_TARGET ${CMAKE_PROJECT_NAME})
+ else ()
+ set(BINARY_TARGET ${TARGET})
+ set(NAME_TARGET ${TARGET})
+ endif ()
+
file(GENERATE
- OUTPUT $/${TARGET}.jlink
+ OUTPUT $/${BINARY_TARGET}.jlink
CONTENT "halt
-loadfile $
+loadfile $
r
go
exit"
)
- add_custom_target(${TARGET}-jlink
- DEPENDS ${TARGET}
- COMMAND ${JLINKEXE} -device ${JLINK_DEVICE} ${OPTION_LIST} -if ${JLINK_IF} -JTAGConf -1,-1 -speed auto -CommandFile $/${TARGET}.jlink
+ add_custom_target(${NAME_TARGET}-jlink
+ DEPENDS ${BINARY_TARGET}
+ COMMAND ${JLINKEXE} -device ${JLINK_DEVICE} ${OPTION_LIST} -if ${JLINK_IF} -JTAGConf -1,-1 -speed auto -CommandFile $/${BINARY_TARGET}.jlink
VERBATIM
)
-
- # optional flash post build
-# add_custom_command(TARGET ${TARGET} POST_BUILD
-# COMMAND ${JLINKEXE} -device ${JLINK_DEVICE} ${OPTION_LIST} -if ${JLINK_IF} -JTAGConf -1,-1 -speed auto -CommandFile $/${TARGET}.jlink
-# VERBATIM
-# )
endfunction()
@@ -613,7 +608,6 @@ function(family_flash_msp430flasher TARGET)
)
endfunction()
-
function(family_flash_uniflash TARGET)
if (NOT DEFINED DSLITE)
set(DSLITE dslite.sh)
diff --git a/hw/bsp/fomu/boards/fomu/board.h b/hw/bsp/fomu/boards/fomu/board.h
index 666ba1d98..2651c823d 100644
--- a/hw/bsp/fomu/boards/fomu/board.h
+++ b/hw/bsp/fomu/boards/fomu/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: fomu
+ url: https://tomu.im/fomu.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/fomu/family.c b/hw/bsp/fomu/family.c
index ccf2b12f4..61943cb01 100644
--- a/hw/bsp/fomu/family.c
+++ b/hw/bsp/fomu/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Tomu
+*/
+
#include
#include
#include "csr.h"
diff --git a/hw/bsp/fomu/family.cmake b/hw/bsp/fomu/family.cmake
index 8d5ab144c..639373695 100644
--- a/hw/bsp/fomu/family.cmake
+++ b/hw/bsp/fomu/family.cmake
@@ -4,7 +4,7 @@ include_guard()
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR rv32i-ilp32 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU rv32i-ilp32 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/riscv_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS VALENTYUSB_EPTRI CACHE INTERNAL "")
@@ -77,14 +77,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_VALENTYUSB_EPTRI ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_VALENTYUSB_EPTRI)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/valentyusb/eptri/dcd_eptri.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/gd32vf103/boards/sipeed_longan_nano/board.h b/hw/bsp/gd32vf103/boards/sipeed_longan_nano/board.h
index fae7c40b7..cb564a340 100644
--- a/hw/bsp/gd32vf103/boards/sipeed_longan_nano/board.h
+++ b/hw/bsp/gd32vf103/boards/sipeed_longan_nano/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: Sipeed Longan Nano
+ url: https://longan.sipeed.com/en/
+*/
+
#ifndef _NUCLEI_SDK_HAL_H
#define _NUCLEI_SDK_HAL_H
diff --git a/hw/bsp/gd32vf103/family.c b/hw/bsp/gd32vf103/family.c
index d4a819fb3..9d15755fc 100644
--- a/hw/bsp/gd32vf103/family.c
+++ b/hw/bsp/gd32vf103/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: GigaDevice
+*/
+
#include "drv_usb_hw.h"
#include "drv_usb_dev.h"
diff --git a/hw/bsp/gd32vf103/family.cmake b/hw/bsp/gd32vf103/family.cmake
index 5ef551f25..a47871b38 100644
--- a/hw/bsp/gd32vf103/family.cmake
+++ b/hw/bsp/gd32vf103/family.cmake
@@ -7,7 +7,7 @@ set(SOC_DIR ${SDK_DIR}/SoC/gd32vf103)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR rv32imac-ilp32 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU rv32imac-ilp32 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/riscv_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS GD32VF103 CACHE INTERNAL "")
@@ -105,16 +105,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_GD32VF103 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_GD32VF103)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/imxrt/boards/metro_m7_1011/board.h b/hw/bsp/imxrt/boards/metro_m7_1011/board.h
index 24141f5f4..ccc4d6b9a 100644
--- a/hw/bsp/imxrt/boards/metro_m7_1011/board.h
+++ b/hw/bsp/imxrt/boards/metro_m7_1011/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Metro M7 1011
+ url: https://www.adafruit.com/product/5600
+*/
+
#ifndef BOARD_M7_1011_H_
#define BOARD_M7_1011_H_
diff --git a/hw/bsp/imxrt/boards/metro_m7_1011_sd/board.h b/hw/bsp/imxrt/boards/metro_m7_1011_sd/board.h
index 343e17f81..04d5b01b5 100644
--- a/hw/bsp/imxrt/boards/metro_m7_1011_sd/board.h
+++ b/hw/bsp/imxrt/boards/metro_m7_1011_sd/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Metro M7 1011 SD
+ url: https://www.adafruit.com/product/5600
+*/
+
#ifndef BOARD_METRO_M7_1011_SD_H_
#define BOARD_METRO_M7_1011_SD_H_
diff --git a/hw/bsp/imxrt/boards/mimxrt1010_evk/board.h b/hw/bsp/imxrt/boards/mimxrt1010_evk/board.h
index da12075a0..6b9ec0ae1 100644
--- a/hw/bsp/imxrt/boards/mimxrt1010_evk/board.h
+++ b/hw/bsp/imxrt/boards/mimxrt1010_evk/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: i.MX RT1010 Evaluation Kit
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/i-mx-evaluation-and-development-boards/i-mx-rt1010-evaluation-kit:MIMXRT1010-EVK
+*/
+
#ifndef BOARD_MIMXRT1010_EVK_H_
#define BOARD_MIMXRT1010_EVK_H_
diff --git a/hw/bsp/imxrt/boards/mimxrt1015_evk/board.h b/hw/bsp/imxrt/boards/mimxrt1015_evk/board.h
index 6ac78453f..e2ec4e627 100644
--- a/hw/bsp/imxrt/boards/mimxrt1015_evk/board.h
+++ b/hw/bsp/imxrt/boards/mimxrt1015_evk/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: i.MX RT1015 Evaluation Kit
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/MIMXRT1015-EVK
+*/
+
#ifndef BOARD_MIMXRT1015_EVK_H_
#define BOARD_MIMXRT1015_EVK_H_
diff --git a/hw/bsp/imxrt/boards/mimxrt1020_evk/board.h b/hw/bsp/imxrt/boards/mimxrt1020_evk/board.h
index 4f4593524..3f9c97e11 100644
--- a/hw/bsp/imxrt/boards/mimxrt1020_evk/board.h
+++ b/hw/bsp/imxrt/boards/mimxrt1020_evk/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: i.MX RT1020 Evaluation Kit
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/MIMXRT1020-EVK
+*/
+
#ifndef BOARD_MIMXRT1020_EVK_H_
#define BOARD_MIMXRT1020_EVK_H_
diff --git a/hw/bsp/imxrt/boards/mimxrt1024_evk/board.h b/hw/bsp/imxrt/boards/mimxrt1024_evk/board.h
index 27a64b464..39e63c472 100644
--- a/hw/bsp/imxrt/boards/mimxrt1024_evk/board.h
+++ b/hw/bsp/imxrt/boards/mimxrt1024_evk/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: i.MX RT1024 Evaluation Kit
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/i-mx-evaluation-and-development-boards/i-mx-rt1024-evaluation-kit:MIMXRT1024-EVK
+*/
+
#ifndef BOARD_MIMXRT1024_EVK_H_
#define BOARD_MIMXRT1024_EVK_H_
diff --git a/hw/bsp/imxrt/boards/mimxrt1050_evkb/board.h b/hw/bsp/imxrt/boards/mimxrt1050_evkb/board.h
index 97d1e446c..de7ab0535 100644
--- a/hw/bsp/imxrt/boards/mimxrt1050_evkb/board.h
+++ b/hw/bsp/imxrt/boards/mimxrt1050_evkb/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: i.MX RT1050 Evaluation Kit revB
+ url: https://www.nxp.com/part/IMXRT1050-EVKB
+*/
+
#ifndef BOARD_MIMXRT1050_EVKB_H_
#define BOARD_MIMXRT1050_EVKB_H_
diff --git a/hw/bsp/imxrt/boards/mimxrt1060_evk/board.h b/hw/bsp/imxrt/boards/mimxrt1060_evk/board.h
index 40b99860f..5bbacadaf 100644
--- a/hw/bsp/imxrt/boards/mimxrt1060_evk/board.h
+++ b/hw/bsp/imxrt/boards/mimxrt1060_evk/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: i.MX RT1060 Evaluation Kit revB
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/MIMXRT1060-EVKB
+*/
+
#ifndef BOARD_MIMXRT1060_EVKB_H_
#define BOARD_MIMXRT1060_EVKB_H_
diff --git a/hw/bsp/imxrt/boards/mimxrt1064_evk/board.h b/hw/bsp/imxrt/boards/mimxrt1064_evk/board.h
index 7fca5adef..6dc01e3e7 100644
--- a/hw/bsp/imxrt/boards/mimxrt1064_evk/board.h
+++ b/hw/bsp/imxrt/boards/mimxrt1064_evk/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: i.MX RT1064 Evaluation Kit
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/MIMXRT1064-EVK
+*/
+
#ifndef BOARD_MIMXRT1064_EVKB_H_
#define BOARD_MIMXRT1064_EVKB_H_
diff --git a/hw/bsp/imxrt/boards/mimxrt1170_evkb/board.cmake b/hw/bsp/imxrt/boards/mimxrt1170_evkb/board.cmake
index 46a97344f..d5629f8ba 100644
--- a/hw/bsp/imxrt/boards/mimxrt1170_evkb/board.cmake
+++ b/hw/bsp/imxrt/boards/mimxrt1170_evkb/board.cmake
@@ -4,7 +4,7 @@ if (M4 STREQUAL "1")
set(MCU_CORE _cm4)
set(JLINK_CORE _M4)
set(LD_FILE_GNU ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/${MCU_VARIANT}xxxxx${MCU_CORE}_ram.ld)
- set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+ set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
else ()
set(MCU_CORE _cm7)
set(JLINK_CORE _M7)
diff --git a/hw/bsp/imxrt/boards/mimxrt1170_evkb/board.h b/hw/bsp/imxrt/boards/mimxrt1170_evkb/board.h
index 303935517..c5d54b7a7 100644
--- a/hw/bsp/imxrt/boards/mimxrt1170_evkb/board.h
+++ b/hw/bsp/imxrt/boards/mimxrt1170_evkb/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: i.MX RT1070 Evaluation Kit
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/i-mx-evaluation-and-development-boards/i-mx-rt1170-evaluation-kit:MIMXRT1170-EVKB
+*/
+
#ifndef BOARD_MIMXRT1170_EVKB_H_
#define BOARD_MIMXRT1170_EVKB_H_
diff --git a/hw/bsp/imxrt/boards/teensy_40/board.h b/hw/bsp/imxrt/boards/teensy_40/board.h
index 4a173c834..ae749e894 100644
--- a/hw/bsp/imxrt/boards/teensy_40/board.h
+++ b/hw/bsp/imxrt/boards/teensy_40/board.h
@@ -24,11 +24,14 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Teensy 4.0
+ url: https://www.pjrc.com/store/teensy40.html
+*/
#ifndef BOARD_H_
#define BOARD_H_
-
// required since iMXRT MCUX-SDK include this file for board size
#define BOARD_FLASH_SIZE (2 * 1024 * 1024)
diff --git a/hw/bsp/imxrt/boards/teensy_41/board.h b/hw/bsp/imxrt/boards/teensy_41/board.h
index 358684126..1bc022c54 100644
--- a/hw/bsp/imxrt/boards/teensy_41/board.h
+++ b/hw/bsp/imxrt/boards/teensy_41/board.h
@@ -24,11 +24,14 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Teensy 4.1
+ url: https://www.pjrc.com/store/teensy41.html
+*/
#ifndef BOARD_H_
#define BOARD_H_
-
// required since iMXRT MCUX-SDK include this file for board size
#define BOARD_FLASH_SIZE (8 * 1024 * 1024)
diff --git a/hw/bsp/imxrt/family.c b/hw/bsp/imxrt/family.c
index f365981f5..ad529a227 100644
--- a/hw/bsp/imxrt/family.c
+++ b/hw/bsp/imxrt/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "bsp/board_api.h"
#include "board/clock_config.h"
#include "board/pin_mux.h"
diff --git a/hw/bsp/imxrt/family.cmake b/hw/bsp/imxrt/family.cmake
index 27a5f26aa..f08ccb3e5 100644
--- a/hw/bsp/imxrt/family.cmake
+++ b/hw/bsp/imxrt/family.cmake
@@ -8,8 +8,8 @@ include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
set(MCU_VARIANT_WITH_CORE ${MCU_VARIANT}${MCU_CORE})
# toolchain set up
-if (NOT DEFINED CMAKE_SYSTEM_PROCESSOR)
- set(CMAKE_SYSTEM_PROCESSOR cortex-m7 CACHE INTERNAL "System Processor")
+if (NOT DEFINED CMAKE_SYSTEM_CPU)
+ set(CMAKE_SYSTEM_CPU cortex-m7 CACHE INTERNAL "System Processor")
endif ()
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
@@ -138,16 +138,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_MIMXRT1XXX ${RTOS})
- target_sources(${TARGET}-tinyusb PRIVATE
+ family_add_tinyusb(${TARGET} OPT_MCU_MIMXRT1XXX)
+ target_sources(${TARGET} PRIVATE
${TOP}/src/portable/chipidea/ci_hs/dcd_ci_hs.c
${TOP}/src/portable/chipidea/ci_hs/hcd_ci_hs.c
${TOP}/src/portable/ehci/ehci.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/kinetis_k/boards/frdm_k64f/board.h b/hw/bsp/kinetis_k/boards/frdm_k64f/board.h
index ae8c66182..75a10f961 100644
--- a/hw/bsp/kinetis_k/boards/frdm_k64f/board.h
+++ b/hw/bsp/kinetis_k/boards/frdm_k64f/board.h
@@ -22,6 +22,11 @@
* THE SOFTWARE.
*/
+/* metadata:
+ name: Freedom K64F
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/general-purpose-mcus/freedom-development-platform-for-kinetis-k64-k63-and-k24-mcus:FRDM-K64F
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/kinetis_k/boards/teensy_35/board.h b/hw/bsp/kinetis_k/boards/teensy_35/board.h
index f8173447a..4718a0241 100644
--- a/hw/bsp/kinetis_k/boards/teensy_35/board.h
+++ b/hw/bsp/kinetis_k/boards/teensy_35/board.h
@@ -22,6 +22,11 @@
* THE SOFTWARE.
*/
+/* metadata:
+ name: Teensy 3.5
+ url: https://www.pjrc.com/store/teensy35.html
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/kinetis_k/family.c b/hw/bsp/kinetis_k/family.c
index 30dfe6d76..59d80fa18 100644
--- a/hw/bsp/kinetis_k/family.c
+++ b/hw/bsp/kinetis_k/family.c
@@ -23,6 +23,10 @@
* THE SOFTWARE.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "bsp/board_api.h"
#include "board.h"
#include "fsl_device_registers.h"
diff --git a/hw/bsp/kinetis_k/family.cmake b/hw/bsp/kinetis_k/family.cmake
index c621de388..ce91777c9 100644
--- a/hw/bsp/kinetis_k/family.cmake
+++ b/hw/bsp/kinetis_k/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS KINETIS_K CACHE INTERNAL "")
@@ -97,15 +97,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_KINETIS_K ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_KINETIS_K)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/chipidea/ci_fs/dcd_ci_fs.c
${TOP}/src/portable/nxp/khci/hcd_khci.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/kinetis_k32l2/boards/frdm_k32l2a4s/board.h b/hw/bsp/kinetis_k32l2/boards/frdm_k32l2a4s/board.h
index 16f832722..9e2534307 100644
--- a/hw/bsp/kinetis_k32l2/boards/frdm_k32l2a4s/board.h
+++ b/hw/bsp/kinetis_k32l2/boards/frdm_k32l2a4s/board.h
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Freedom K32L2A4S
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/FRDM-K32L2A4S
+*/
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/kinetis_k32l2/boards/frdm_k32l2b/board.h b/hw/bsp/kinetis_k32l2/boards/frdm_k32l2b/board.h
index 790d6fcb0..854340d6d 100644
--- a/hw/bsp/kinetis_k32l2/boards/frdm_k32l2b/board.h
+++ b/hw/bsp/kinetis_k32l2/boards/frdm_k32l2b/board.h
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Freedom K32L2B3
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/general-purpose-mcus/nxp-freedom-development-platform-for-k32-l2b-mcus:FRDM-K32L2B3
+*/
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/kinetis_k32l2/boards/kuiic/board.h b/hw/bsp/kinetis_k32l2/boards/kuiic/board.h
index ec3702376..f5895fc65 100644
--- a/hw/bsp/kinetis_k32l2/boards/kuiic/board.h
+++ b/hw/bsp/kinetis_k32l2/boards/kuiic/board.h
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Kuiic
+ url: https://github.com/nxf58843/kuiic
+*/
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/kinetis_k32l2/family.c b/hw/bsp/kinetis_k32l2/family.c
index 92f5ba6d3..2fcc1b2af 100644
--- a/hw/bsp/kinetis_k32l2/family.c
+++ b/hw/bsp/kinetis_k32l2/family.c
@@ -25,6 +25,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "fsl_gpio.h"
#include "fsl_port.h"
#include "fsl_clock.h"
diff --git a/hw/bsp/kinetis_k32l2/family.cmake b/hw/bsp/kinetis_k32l2/family.cmake
index e0843b5a4..946614a03 100644
--- a/hw/bsp/kinetis_k32l2/family.cmake
+++ b/hw/bsp/kinetis_k32l2/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS KINETIS_K32L CACHE INTERNAL "")
@@ -92,15 +92,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_KINETIS_K32L ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_KINETIS_K32L)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/nxp/khci/dcd_khci.c
${TOP}/src/portable/nxp/khci/hcd_khci.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_flash_jlink(${TARGET})
diff --git a/hw/bsp/kinetis_kl/boards/frdm_kl25z/board.h b/hw/bsp/kinetis_kl/boards/frdm_kl25z/board.h
index 23f144666..b03fe91a8 100644
--- a/hw/bsp/kinetis_kl/boards/frdm_kl25z/board.h
+++ b/hw/bsp/kinetis_kl/boards/frdm_kl25z/board.h
@@ -22,6 +22,11 @@
* THE SOFTWARE.
*/
+/* metadata:
+ name: fomu
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/general-purpose-mcus/freedom-development-platform-for-kinetis-kl14-kl15-kl24-kl25-mcus:FRDM-KL25Z
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/kinetis_kl/family.c b/hw/bsp/kinetis_kl/family.c
index 254a95176..fe864f3a0 100644
--- a/hw/bsp/kinetis_kl/family.c
+++ b/hw/bsp/kinetis_kl/family.c
@@ -23,6 +23,10 @@
* THE SOFTWARE.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "bsp/board_api.h"
#include "board.h"
#include "fsl_device_registers.h"
diff --git a/hw/bsp/kinetis_kl/family.cmake b/hw/bsp/kinetis_kl/family.cmake
index 21a264e53..51a646258 100644
--- a/hw/bsp/kinetis_kl/family.cmake
+++ b/hw/bsp/kinetis_kl/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS KINETIS_KL CACHE INTERNAL "")
@@ -96,15 +96,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_KINETIS_KL ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_KINETIS_KL)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/chipidea/ci_fs/dcd_ci_fs.c
${TOP}/src/portable/nxp/khci/hcd_khci.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc11/boards/lpcxpresso11u37/board.h b/hw/bsp/lpc11/boards/lpcxpresso11u37/board.h
index 930462f28..c8a48eecb 100644
--- a/hw/bsp/lpc11/boards/lpcxpresso11u37/board.h
+++ b/hw/bsp/lpc11/boards/lpcxpresso11u37/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: LPCXpresso11U37
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/OM13074
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/lpc11/boards/lpcxpresso11u68/board.h b/hw/bsp/lpc11/boards/lpcxpresso11u68/board.h
index a12fcbef1..50141e4a5 100644
--- a/hw/bsp/lpc11/boards/lpcxpresso11u68/board.h
+++ b/hw/bsp/lpc11/boards/lpcxpresso11u68/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: LPCXpresso11U68
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/OM13058
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/lpc11/family.c b/hw/bsp/lpc11/family.c
index e75bc4919..b5371632c 100644
--- a/hw/bsp/lpc11/family.c
+++ b/hw/bsp/lpc11/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-parameter"
@@ -38,6 +42,10 @@
#include "bsp/board_api.h"
#include "board.h"
+extern void USB_IRQHandler(void);
+extern void SysTick_Handler(void);
+void SystemInit(void);
+
//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
diff --git a/hw/bsp/lpc11/family.cmake b/hw/bsp/lpc11/family.cmake
index 13ed4c922..6781b20c6 100644
--- a/hw/bsp/lpc11/family.cmake
+++ b/hw/bsp/lpc11/family.cmake
@@ -11,7 +11,7 @@ else()
endif()
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC11UXX CACHE INTERNAL "")
@@ -49,7 +49,10 @@ function(add_board_target BOARD_TARGET)
update_board(${BOARD_TARGET})
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
- target_compile_options(${BOARD_TARGET} PUBLIC -nostdlib)
+ target_compile_options(${BOARD_TARGET} PUBLIC
+ -nostdlib
+ -Wno-error=incompatible-pointer-types
+ )
target_link_options(${BOARD_TARGET} PUBLIC
"LINKER:--script=${LD_FILE_GNU}"
--specs=nosys.specs --specs=nano.specs
@@ -90,14 +93,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC11UXX ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC11UXX)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc13/boards/lpcxpresso1347/board.h b/hw/bsp/lpc13/boards/lpcxpresso1347/board.h
index 71e608b46..acf29fdc6 100644
--- a/hw/bsp/lpc13/boards/lpcxpresso1347/board.h
+++ b/hw/bsp/lpc13/boards/lpcxpresso1347/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: LPCXpresso1347
+ url: https://www.nxp.com/products/no-longer-manufactured/lpcxpresso-board-for-lpc1347:OM13045
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/lpc13/family.c b/hw/bsp/lpc13/family.c
index 7e04c1cf5..1faa54485 100644
--- a/hw/bsp/lpc13/family.c
+++ b/hw/bsp/lpc13/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "chip.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/lpc13/family.cmake b/hw/bsp/lpc13/family.cmake
index 4d0f0110f..e3c0b18c7 100644
--- a/hw/bsp/lpc13/family.cmake
+++ b/hw/bsp/lpc13/family.cmake
@@ -8,7 +8,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m3 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m3 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC13XX CACHE INTERNAL "")
@@ -87,14 +87,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC13XX ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC13XX)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc15/boards/lpcxpresso1549/board.h b/hw/bsp/lpc15/boards/lpcxpresso1549/board.h
index 5ed5b75b2..1be2045a9 100644
--- a/hw/bsp/lpc15/boards/lpcxpresso1549/board.h
+++ b/hw/bsp/lpc15/boards/lpcxpresso1549/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: LPCXpresso1549
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/OM13056
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc15/family.c b/hw/bsp/lpc15/family.c
index b9ce39648..e23fdec43 100644
--- a/hw/bsp/lpc15/family.c
+++ b/hw/bsp/lpc15/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-prototypes"
diff --git a/hw/bsp/lpc15/family.cmake b/hw/bsp/lpc15/family.cmake
index c87001943..761c5a619 100644
--- a/hw/bsp/lpc15/family.cmake
+++ b/hw/bsp/lpc15/family.cmake
@@ -8,7 +8,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m3 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m3 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC15XX CACHE INTERNAL "")
@@ -89,14 +89,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC15XX ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC15XX)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc17/boards/lpcxpresso1769/board.h b/hw/bsp/lpc17/boards/lpcxpresso1769/board.h
index d6aa98ed9..6f5c12854 100644
--- a/hw/bsp/lpc17/boards/lpcxpresso1769/board.h
+++ b/hw/bsp/lpc17/boards/lpcxpresso1769/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: LPCXpresso1769
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/OM13000
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc17/boards/mbed1768/board.h b/hw/bsp/lpc17/boards/mbed1768/board.h
index 2b3ddc905..2c75cede4 100644
--- a/hw/bsp/lpc17/boards/mbed1768/board.h
+++ b/hw/bsp/lpc17/boards/mbed1768/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: mbed 1768
+ url: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpc1700-arm-cortex-m3/arm-mbed-lpc1768-board:OM11043
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc17/family.c b/hw/bsp/lpc17/family.c
index 79281ba41..7d3231f6a 100644
--- a/hw/bsp/lpc17/family.c
+++ b/hw/bsp/lpc17/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "chip.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/lpc17/family.cmake b/hw/bsp/lpc17/family.cmake
index 0f7485f0f..771a0f405 100644
--- a/hw/bsp/lpc17/family.cmake
+++ b/hw/bsp/lpc17/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m3 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m3 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC175X_6X CACHE INTERNAL "")
@@ -86,16 +86,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC175X_6X ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC175X_6X)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/nxp/lpc17_40/dcd_lpc17_40.c
${TOP}/src/portable/nxp/lpc17_40/hcd_lpc17_40.c
${TOP}/src/portable/ohci/ohci.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc18/boards/lpcxpresso18s37/board.h b/hw/bsp/lpc18/boards/lpcxpresso18s37/board.h
index f4c85ddc9..2cf4dbdf8 100644
--- a/hw/bsp/lpc18/boards/lpcxpresso18s37/board.h
+++ b/hw/bsp/lpc18/boards/lpcxpresso18s37/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: LPCXpresso18s37
+ url: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso18s37-development-board:OM13076
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc18/boards/mcb1800/board.h b/hw/bsp/lpc18/boards/mcb1800/board.h
index 93b3cd112..dba7a62a3 100644
--- a/hw/bsp/lpc18/boards/mcb1800/board.h
+++ b/hw/bsp/lpc18/boards/mcb1800/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Keil MCB1800
+ url: https://www.keil.com/arm/mcb1800/
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc18/family.c b/hw/bsp/lpc18/family.c
index 55ef31ee4..0db5c83b6 100644
--- a/hw/bsp/lpc18/family.c
+++ b/hw/bsp/lpc18/family.c
@@ -24,10 +24,19 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "chip.h"
#include "bsp/board_api.h"
#include "board.h"
+extern void USB0_IRQHandler(void);
+extern void USB1_IRQHandler(void);
+extern void SysTick_Handler(void);
+void SystemInit(void);
+
//--------------------------------------------------------------------+
// USB Interrupt Handler
//--------------------------------------------------------------------+
diff --git a/hw/bsp/lpc18/family.cmake b/hw/bsp/lpc18/family.cmake
index ed948c6e8..6af1149bf 100644
--- a/hw/bsp/lpc18/family.cmake
+++ b/hw/bsp/lpc18/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m3 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m3 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC18XX CACHE INTERNAL "")
@@ -84,16 +84,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC18XX ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC18XX)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/chipidea/ci_hs/dcd_ci_hs.c
${TOP}/src/portable/chipidea/ci_hs/hcd_ci_hs.c
${TOP}/src/portable/ehci/ehci.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc18/family.mk b/hw/bsp/lpc18/family.mk
index f625e926a..f120f63b2 100644
--- a/hw/bsp/lpc18/family.mk
+++ b/hw/bsp/lpc18/family.mk
@@ -12,7 +12,7 @@ CFLAGS += \
-DCFG_TUSB_MCU=OPT_MCU_LPC18XX
# mcu driver cause following warnings
-CFLAGS += -Wno-error=unused-parameter -Wno-error=strict-prototypes -Wno-error=cast-qual
+CFLAGS += -Wno-error=unused-parameter -Wno-error=cast-qual
LDFLAGS_GCC += --specs=nosys.specs --specs=nano.specs
diff --git a/hw/bsp/lpc40/boards/ea4088_quickstart/board.h b/hw/bsp/lpc40/boards/ea4088_quickstart/board.h
index d5489c154..ede0a306d 100644
--- a/hw/bsp/lpc40/boards/ea4088_quickstart/board.h
+++ b/hw/bsp/lpc40/boards/ea4088_quickstart/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Embedded Artists LPC4088 QuickStart Board
+ url: https://www.embeddedartists.com/products/lpc4088-quickstart-board/
+*/
+
#ifndef EA4088QS__BOARD_H
#define EA4088QS__BOARD_H
diff --git a/hw/bsp/lpc40/family.c b/hw/bsp/lpc40/family.c
index d6c8ef32a..b8bc99452 100644
--- a/hw/bsp/lpc40/family.c
+++ b/hw/bsp/lpc40/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "chip.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/lpc40/family.cmake b/hw/bsp/lpc40/family.cmake
index f1e8fa50d..3a680eae6 100644
--- a/hw/bsp/lpc40/family.cmake
+++ b/hw/bsp/lpc40/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC40XX CACHE INTERNAL "")
@@ -87,16 +87,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC40XX ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC40XX)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/nxp/lpc17_40/dcd_lpc17_40.c
${TOP}/src/portable/nxp/lpc17_40/hcd_lpc17_40.c
${TOP}/src/portable/ohci/ohci.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc43/boards/ea4357/board.h b/hw/bsp/lpc43/boards/ea4357/board.h
index fb52e32a7..fca617361 100644
--- a/hw/bsp/lpc43/boards/ea4357/board.h
+++ b/hw/bsp/lpc43/boards/ea4357/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Embedded Artists LPC4357 Development Kit
+ url: https://www.embeddedartists.com/products/lpc4357-developers-kit/
+*/
+
#ifndef _BOARD_EA4357_H
#define _BOARD_EA4357_H
diff --git a/hw/bsp/lpc43/boards/lpcxpresso43s67/board.h b/hw/bsp/lpc43/boards/lpcxpresso43s67/board.h
index 4dd90fe29..4427905e8 100644
--- a/hw/bsp/lpc43/boards/lpcxpresso43s67/board.h
+++ b/hw/bsp/lpc43/boards/lpcxpresso43s67/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: LPCXpresso43S67
+ url: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso43s67-development-board:OM13084
+*/
+
#ifndef _BOARD_LPCXPRESSO43S67_H_
#define _BOARD_LPCXPRESSO43S67_H_
diff --git a/hw/bsp/lpc43/family.c b/hw/bsp/lpc43/family.c
index dfee9f5ea..591090c36 100644
--- a/hw/bsp/lpc43/family.c
+++ b/hw/bsp/lpc43/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
// Suppress warning caused by mcu driver
#ifdef __GNUC__
#pragma GCC diagnostic push
@@ -43,6 +47,11 @@
const uint32_t OscRateIn = 12000000;
const uint32_t ExtRateIn = 0;
+extern void USB0_IRQHandler(void);
+extern void USB1_IRQHandler(void);
+extern void SysTick_Handler(void);
+void SystemInit(void);
+
/*------------------------------------------------------------------*/
/* BOARD API
*------------------------------------------------------------------*/
diff --git a/hw/bsp/lpc43/family.cmake b/hw/bsp/lpc43/family.cmake
index 73842c7e7..23c4aecea 100644
--- a/hw/bsp/lpc43/family.cmake
+++ b/hw/bsp/lpc43/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC43XX CACHE INTERNAL "")
@@ -51,7 +51,10 @@ function(add_board_target BOARD_TARGET)
update_board(${BOARD_TARGET})
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
- target_compile_options(${BOARD_TARGET} PUBLIC -nostdlib)
+ target_compile_options(${BOARD_TARGET} PUBLIC
+ -nostdlib
+ -Wno-error=incompatible-pointer-types
+ )
target_link_options(${BOARD_TARGET} PUBLIC
"LINKER:--script=${LD_FILE_GNU}"
--specs=nosys.specs --specs=nano.specs
@@ -92,16 +95,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC43XX ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC43XX)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/chipidea/ci_hs/dcd_ci_hs.c
${TOP}/src/portable/chipidea/ci_hs/hcd_ci_hs.c
${TOP}/src/portable/ehci/ehci.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc43/family.mk b/hw/bsp/lpc43/family.mk
index 84e7c30b3..e1406aae7 100644
--- a/hw/bsp/lpc43/family.mk
+++ b/hw/bsp/lpc43/family.mk
@@ -14,7 +14,6 @@ CFLAGS += \
# mcu driver cause following warnings
CFLAGS += \
-Wno-error=unused-parameter \
- -Wno-error=strict-prototypes \
-Wno-error=cast-qual \
-Wno-error=incompatible-pointer-types \
diff --git a/hw/bsp/lpc51/boards/lpcxpresso51u68/board.h b/hw/bsp/lpc51/boards/lpcxpresso51u68/board.h
index 0a3b37fda..151fae24b 100644
--- a/hw/bsp/lpc51/boards/lpcxpresso51u68/board.h
+++ b/hw/bsp/lpc51/boards/lpcxpresso51u68/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: LPCXpresso51u68
+ url: https://www.nxp.com/products/processors-and-microcontrollers/arm-microcontrollers/general-purpose-mcus/lpcxpresso51u68-for-the-lpc51u68-mcus:OM40005
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/lpc51/family.c b/hw/bsp/lpc51/family.c
index a0667a741..0afe33d41 100644
--- a/hw/bsp/lpc51/family.c
+++ b/hw/bsp/lpc51/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "fsl_device_registers.h"
#include "fsl_gpio.h"
#include "fsl_power.h"
diff --git a/hw/bsp/lpc51/family.cmake b/hw/bsp/lpc51/family.cmake
index bd72c6067..2146c29f7 100644
--- a/hw/bsp/lpc51/family.cmake
+++ b/hw/bsp/lpc51/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC51 CACHE INTERNAL "")
@@ -106,14 +106,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC51 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC51)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc54/boards/lpcxpresso54114/board.h b/hw/bsp/lpc54/boards/lpcxpresso54114/board.h
index b1ad4258c..c43ca9d7d 100644
--- a/hw/bsp/lpc54/boards/lpcxpresso54114/board.h
+++ b/hw/bsp/lpc54/boards/lpcxpresso54114/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: LPCXpresso54114
+ url: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso54114-board:OM13089
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc54/boards/lpcxpresso54608/board.h b/hw/bsp/lpc54/boards/lpcxpresso54608/board.h
index 8bbe18155..e985e97e0 100644
--- a/hw/bsp/lpc54/boards/lpcxpresso54608/board.h
+++ b/hw/bsp/lpc54/boards/lpcxpresso54608/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: LPCXpresso54608
+ url: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-development-board-for-lpc5460x-mcus:OM13092
+*/
+
#ifndef BOARD_LPCXPRESSO54608_H_
#define BOARD_LPCXPRESSO54608_H_
diff --git a/hw/bsp/lpc54/boards/lpcxpresso54628/board.h b/hw/bsp/lpc54/boards/lpcxpresso54628/board.h
index 670277512..837d26aef 100644
--- a/hw/bsp/lpc54/boards/lpcxpresso54628/board.h
+++ b/hw/bsp/lpc54/boards/lpcxpresso54628/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: LPCXpresso54628
+ url: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso54628-development-board:OM13098
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc54/family.c b/hw/bsp/lpc54/family.c
index 5e6ff2231..9b9b5841b 100644
--- a/hw/bsp/lpc54/family.c
+++ b/hw/bsp/lpc54/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "fsl_device_registers.h"
#include "fsl_gpio.h"
#include "fsl_power.h"
diff --git a/hw/bsp/lpc54/family.cmake b/hw/bsp/lpc54/family.cmake
index 0e4994ab1..90497b9fb 100644
--- a/hw/bsp/lpc54/family.cmake
+++ b/hw/bsp/lpc54/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC54 CACHE INTERNAL "")
@@ -139,14 +139,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC54 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC54)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/lpc55/boards/double_m33_express/board.h b/hw/bsp/lpc55/boards/double_m33_express/board.h
index 975e74e92..dc11e47fc 100644
--- a/hw/bsp/lpc55/boards/double_m33_express/board.h
+++ b/hw/bsp/lpc55/boards/double_m33_express/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Double M33 Express
+ url: https://www.crowdsupply.com/steiert-solutions/double-m33-express
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc55/boards/lpcxpresso55s28/board.h b/hw/bsp/lpc55/boards/lpcxpresso55s28/board.h
index f85701b08..907aee6a4 100644
--- a/hw/bsp/lpc55/boards/lpcxpresso55s28/board.h
+++ b/hw/bsp/lpc55/boards/lpcxpresso55s28/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: LPCXpresso55s28
+ url: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso55s28-development-board:LPC55S28-EVK
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc55/boards/lpcxpresso55s69/board.h b/hw/bsp/lpc55/boards/lpcxpresso55s69/board.h
index f85701b08..e18d5bbad 100644
--- a/hw/bsp/lpc55/boards/lpcxpresso55s69/board.h
+++ b/hw/bsp/lpc55/boards/lpcxpresso55s69/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: LPCXpresso55s69
+ url: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/lpcxpresso-boards/lpcxpresso55s69-development-board:LPC55S69-EVK
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc55/boards/mcu_link/board.h b/hw/bsp/lpc55/boards/mcu_link/board.h
index 5e17cf9fd..1d71b3e79 100644
--- a/hw/bsp/lpc55/boards/mcu_link/board.h
+++ b/hw/bsp/lpc55/boards/mcu_link/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MCU Link
+ url: https://www.nxp.com/design/design-center/software/development-software/mcuxpresso-software-and-tools-/mcu-link-debug-probe:MCU-LINK
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/lpc55/family.c b/hw/bsp/lpc55/family.c
index 68ccf52d5..dbf8d71b7 100644
--- a/hw/bsp/lpc55/family.c
+++ b/hw/bsp/lpc55/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "bsp/board_api.h"
#include "board.h"
#include "fsl_device_registers.h"
diff --git a/hw/bsp/lpc55/family.cmake b/hw/bsp/lpc55/family.cmake
index 367cb3bbd..cd1eb5f78 100644
--- a/hw/bsp/lpc55/family.cmake
+++ b/hw/bsp/lpc55/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m33 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS LPC55 CACHE INTERNAL "")
@@ -140,14 +140,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_LPC55 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_LPC55)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/max32650/boards/max32650evkit/board.h b/hw/bsp/max32650/boards/max32650evkit/board.h
index 196abdaca..65ed2659e 100644
--- a/hw/bsp/max32650/boards/max32650evkit/board.h
+++ b/hw/bsp/max32650/boards/max32650evkit/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MAX32650 EVKIT
+ url: https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32650-evkit.html#eb-overview
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/max32650/boards/max32650fthr/board.h b/hw/bsp/max32650/boards/max32650fthr/board.h
index d80a8fcae..755fa15b5 100644
--- a/hw/bsp/max32650/boards/max32650fthr/board.h
+++ b/hw/bsp/max32650/boards/max32650fthr/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MAX32650 Feather
+ url: https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32650fthr.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/max32650/boards/max32651evkit/board.h b/hw/bsp/max32650/boards/max32651evkit/board.h
index 196abdaca..0b49ff309 100644
--- a/hw/bsp/max32650/boards/max32651evkit/board.h
+++ b/hw/bsp/max32650/boards/max32651evkit/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MAX32651 EVKIT
+ url: https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32651-evkit.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/max32650/family.c b/hw/bsp/max32650/family.c
index bb382cdd4..8f0e56734 100644
--- a/hw/bsp/max32650/family.c
+++ b/hw/bsp/max32650/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Analog Devices
+*/
+
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-prototypes" // _mxc_crit_get_state()
diff --git a/hw/bsp/max32650/family.cmake b/hw/bsp/max32650/family.cmake
index 3545e1c3a..b1d5dded7 100644
--- a/hw/bsp/max32650/family.cmake
+++ b/hw/bsp/max32650/family.cmake
@@ -11,7 +11,7 @@ include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
set(LD_FILE_Clang ${LD_FILE_GNU})
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(JLINK_DEVICE max32650)
set(OPENOCD_OPTION "-f interface/cmsis-dap.cfg -f target/max32650.cfg")
@@ -130,21 +130,20 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_MAX32650 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_MAX32650)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/mentor/musb/dcd_musb.c
)
target_compile_options(${TARGET} PRIVATE
-Wno-error=strict-prototypes
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
- target_compile_options(${TARGET}-tinyusb PRIVATE
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+ target_compile_options(${TARGET} PRIVATE
-Wno-error=strict-prototypes
)
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
+
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/max32666/boards/max32666evkit/board.h b/hw/bsp/max32666/boards/max32666evkit/board.h
index 0ab1483b8..54589444d 100644
--- a/hw/bsp/max32666/boards/max32666evkit/board.h
+++ b/hw/bsp/max32666/boards/max32666evkit/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MAX32666 EVKIT
+ url: https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32666evkit.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/max32666/boards/max32666fthr/board.h b/hw/bsp/max32666/boards/max32666fthr/board.h
index c719b748a..0caea5934 100644
--- a/hw/bsp/max32666/boards/max32666fthr/board.h
+++ b/hw/bsp/max32666/boards/max32666fthr/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MAX32666 Feather
+ url: https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32666fthr.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/max32666/family.c b/hw/bsp/max32666/family.c
index f96393fe1..05306c6c9 100644
--- a/hw/bsp/max32666/family.c
+++ b/hw/bsp/max32666/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Analog Devices
+*/
+
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-prototypes" // _mxc_crit_get_state()
diff --git a/hw/bsp/max32666/family.cmake b/hw/bsp/max32666/family.cmake
index b921b71ce..49798729a 100644
--- a/hw/bsp/max32666/family.cmake
+++ b/hw/bsp/max32666/family.cmake
@@ -12,7 +12,7 @@ set(LD_FILE_GNU ${CMAKE_CURRENT_LIST_DIR}/max32666.ld)
set(LD_FILE_Clang ${LD_FILE_GNU})
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(JLINK_DEVICE max32666)
set(OPENOCD_OPTION "-f interface/cmsis-dap.cfg -f target/max32665.cfg")
@@ -125,21 +125,20 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_MAX32666 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_MAX32666)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/mentor/musb/dcd_musb.c
)
target_compile_options(${TARGET} PRIVATE
-Wno-error=strict-prototypes
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
- target_compile_options(${TARGET}-tinyusb PRIVATE
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+ target_compile_options(${TARGET} PRIVATE
-Wno-error=strict-prototypes
)
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
+
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/max32690/boards/apard32690/board.h b/hw/bsp/max32690/boards/apard32690/board.h
index f94097ca9..87b9c4e88 100644
--- a/hw/bsp/max32690/boards/apard32690/board.h
+++ b/hw/bsp/max32690/boards/apard32690/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: APARD32690-SL
+ url: https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/ad-apard32690-sl.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/max32690/boards/max32690evkit/board.h b/hw/bsp/max32690/boards/max32690evkit/board.h
index 05d60f220..aa8dbb1de 100644
--- a/hw/bsp/max32690/boards/max32690evkit/board.h
+++ b/hw/bsp/max32690/boards/max32690evkit/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MAX32690 EVKIT
+ url: https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max32690evkit.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/max32690/family.c b/hw/bsp/max32690/family.c
index 2418168d4..7ba5fbef3 100644
--- a/hw/bsp/max32690/family.c
+++ b/hw/bsp/max32690/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Analog Devices
+*/
+
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-prototypes" // _mxc_crit_get_state()
diff --git a/hw/bsp/max32690/family.cmake b/hw/bsp/max32690/family.cmake
index 9ce8892f1..0d544d9e6 100644
--- a/hw/bsp/max32690/family.cmake
+++ b/hw/bsp/max32690/family.cmake
@@ -12,7 +12,7 @@ set(LD_FILE_GNU ${CMAKE_CURRENT_LIST_DIR}/max32690.ld)
set(LD_FILE_Clang ${LD_FILE_GNU})
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(JLINK_DEVICE max32690)
set(OPENOCD_OPTION "-f interface/cmsis-dap.cfg -f target/max32690.cfg")
@@ -130,21 +130,20 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_MAX32690 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_MAX32690)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/mentor/musb/dcd_musb.c
)
target_compile_options(${TARGET} PRIVATE
-Wno-error=strict-prototypes
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
- target_compile_options(${TARGET}-tinyusb PRIVATE
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+ target_compile_options(${TARGET} PRIVATE
-Wno-error=strict-prototypes
)
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
+
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/max78002/boards/max78002evkit/board.h b/hw/bsp/max78002/boards/max78002evkit/board.h
index f8102c394..85d55d7de 100644
--- a/hw/bsp/max78002/boards/max78002evkit/board.h
+++ b/hw/bsp/max78002/boards/max78002evkit/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MAX78002 EVKIT
+ url: https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max78002evkit.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/max78002/family.c b/hw/bsp/max78002/family.c
index 8d51f141c..5c23f40f9 100644
--- a/hw/bsp/max78002/family.c
+++ b/hw/bsp/max78002/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Analog Devices
+*/
+
#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-prototypes" // _mxc_crit_get_state()
diff --git a/hw/bsp/max78002/family.cmake b/hw/bsp/max78002/family.cmake
index 4c9bf806b..ce0fcfa08 100644
--- a/hw/bsp/max78002/family.cmake
+++ b/hw/bsp/max78002/family.cmake
@@ -12,7 +12,7 @@ set(LD_FILE_GNU ${CMAKE_CURRENT_LIST_DIR}/max78002.ld)
set(LD_FILE_Clang ${LD_FILE_GNU})
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(JLINK_DEVICE max78000)
@@ -134,18 +134,17 @@ function(family_configure_example TARGET RTOS)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_MAX78002 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_MAX78002)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/mentor/musb/dcd_musb.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
- target_compile_options(${TARGET}-tinyusb PRIVATE
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+ target_compile_options(${TARGET} PRIVATE
-Wno-error=strict-prototypes
-Wno-error=redundant-decls
)
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
+
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/mcx/boards/frdm_mcxa153/board.h b/hw/bsp/mcx/boards/frdm_mcxa153/board.h
index e207d89d9..fb1290088 100644
--- a/hw/bsp/mcx/boards/frdm_mcxa153/board.h
+++ b/hw/bsp/mcx/boards/frdm_mcxa153/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Freedom MCXA153
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/FRDM-MCXA153
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/mcx/boards/frdm_mcxn947/board.h b/hw/bsp/mcx/boards/frdm_mcxn947/board.h
index acb73363f..a35b6818a 100644
--- a/hw/bsp/mcx/boards/frdm_mcxn947/board.h
+++ b/hw/bsp/mcx/boards/frdm_mcxn947/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Freedom MCXN947
+ url: https://www.nxp.com/design/design-center/development-boards-and-designs/FRDM-MCXN947
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/mcx/boards/mcxn947brk/board.h b/hw/bsp/mcx/boards/mcxn947brk/board.h
index eae98bfa7..eef281787 100644
--- a/hw/bsp/mcx/boards/mcxn947brk/board.h
+++ b/hw/bsp/mcx/boards/mcxn947brk/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MCXN947 Breakout
+ url: n/a
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/mcx/family.c b/hw/bsp/mcx/family.c
index ce54097fe..2b9c60beb 100644
--- a/hw/bsp/mcx/family.c
+++ b/hw/bsp/mcx/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: NXP
+*/
+
#include "bsp/board_api.h"
#include "fsl_device_registers.h"
#include "fsl_gpio.h"
diff --git a/hw/bsp/mcx/family.cmake b/hw/bsp/mcx/family.cmake
index b1d2a18ec..413c1b372 100644
--- a/hw/bsp/mcx/family.cmake
+++ b/hw/bsp/mcx/family.cmake
@@ -8,10 +8,10 @@ include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
if (MCU_VARIANT STREQUAL "MCXA153")
- set(CMAKE_SYSTEM_PROCESSOR cortex-m33-nodsp-nofp CACHE INTERNAL "System Processor")
+ set(CMAKE_SYSTEM_CPU cortex-m33-nodsp-nofp CACHE INTERNAL "System Processor")
set(FAMILY_MCUS MCXA15 CACHE INTERNAL "")
elseif (MCU_VARIANT STREQUAL "MCXN947")
- set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor")
+ set(CMAKE_SYSTEM_CPU cortex-m33 CACHE INTERNAL "System Processor")
set(FAMILY_MCUS MCXN9 CACHE INTERNAL "")
else()
message(FATAL_ERROR "MCU_VARIANT not supported")
@@ -110,19 +110,18 @@ function(family_configure_example TARGET RTOS)
# Add TinyUSB target and port source
if (${FAMILY_MCUS} STREQUAL "MCXN9")
- family_add_tinyusb(${TARGET} OPT_MCU_MCXN9 ${RTOS})
+ family_add_tinyusb(${TARGET} OPT_MCU_MCXN9)
elseif(${FAMILY_MCUS} STREQUAL "MCXA15")
- family_add_tinyusb(${TARGET} OPT_MCU_MCXA15 ${RTOS})
+ family_add_tinyusb(${TARGET} OPT_MCU_MCXA15)
endif()
- target_sources(${TARGET}-tinyusb PUBLIC
+ target_sources(${TARGET} PUBLIC
# TinyUSB: Port0 is chipidea FS, Port1 is chipidea HS
${TOP}/src/portable/chipidea/$
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/mm32/boards/mm32f327x_mb39/board.h b/hw/bsp/mm32/boards/mm32f327x_mb39/board.h
index 3ac048cf1..ee0800030 100644
--- a/hw/bsp/mm32/boards/mm32f327x_mb39/board.h
+++ b/hw/bsp/mm32/boards/mm32f327x_mb39/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: MM32F3273G9P MB-039
+ url: https://www.mindmotion.com.cn/support/development_tools/evaluation_boards/evboard/mm32f3273g9p/
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/mm32/boards/mm32f327x_pitaya_lite/board.h b/hw/bsp/mm32/boards/mm32f327x_pitaya_lite/board.h
index 2b3f54a60..522d494a8 100644
--- a/hw/bsp/mm32/boards/mm32f327x_pitaya_lite/board.h
+++ b/hw/bsp/mm32/boards/mm32f327x_pitaya_lite/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: DshanMCU Pitaya Lite with MM32F3273G8P
+ url: https://gitee.com/weidongshan/DshanMCU-Pitaya-c
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/mm32/family.c b/hw/bsp/mm32/family.c
index f0fd6d334..979efb6ca 100644
--- a/hw/bsp/mm32/family.c
+++ b/hw/bsp/mm32/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: MindMotion
+*/
+
#include "hal_conf.h"
#include "mm32_device.h"
diff --git a/hw/bsp/mm32/family.cmake b/hw/bsp/mm32/family.cmake
index 93f297b8e..0561a63a0 100644
--- a/hw/bsp/mm32/family.cmake
+++ b/hw/bsp/mm32/family.cmake
@@ -7,7 +7,7 @@ set(SDK_DIR ${TOP}/hw/mcu/mindmotion/mm32sdk/${MCU_VARIANT_UPPER})
set(CMSIS_5 ${TOP}/lib/CMSIS_5)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m3 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m3 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS MM32F327X CACHE INTERNAL "")
@@ -87,14 +87,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_MM32F327X ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_MM32F327X)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/mindmotion/mm32/dcd_mm32f327x_otg.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/msp430/boards/msp_exp430f5529lp/board.h b/hw/bsp/msp430/boards/msp_exp430f5529lp/board.h
index ccfe321c2..8fbe5cc49 100644
--- a/hw/bsp/msp430/boards/msp_exp430f5529lp/board.h
+++ b/hw/bsp/msp430/boards/msp_exp430f5529lp/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MSP430F5529 LaunchPad
+ url: https://www.ti.com/tool/MSP-EXP430F5529LP
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/msp430/family.c b/hw/bsp/msp430/family.c
index 5bb3d3866..a45bd5f93 100644
--- a/hw/bsp/msp430/family.c
+++ b/hw/bsp/msp430/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Texas Instruments
+*/
+
#include "bsp/board_api.h"
#include "board.h"
#include "msp430.h"
diff --git a/hw/bsp/msp430/family.cmake b/hw/bsp/msp430/family.cmake
index e0b4ed28a..ddd54b675 100644
--- a/hw/bsp/msp430/family.cmake
+++ b/hw/bsp/msp430/family.cmake
@@ -6,7 +6,7 @@ set(SDK_DIR ${TOP}/hw/mcu/ti/msp430/msp430-gcc-support-files/include)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR msp430 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU msp430 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/msp430_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS MSP430x5xx CACHE INTERNAL "")
@@ -69,14 +69,12 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_MSP430x5xx ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_MSP430x5xx)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/msp432e4/boards/msp_exp432e401y/board.h b/hw/bsp/msp432e4/boards/msp_exp432e401y/board.h
index 3130d663b..6206bb247 100644
--- a/hw/bsp/msp432e4/boards/msp_exp432e401y/board.h
+++ b/hw/bsp/msp432e4/boards/msp_exp432e401y/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: MSP432E401Y LaunchPad
+ url: https://www.ti.com/tool/MSP-EXP432E401Y
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/msp432e4/family.c b/hw/bsp/msp432e4/family.c
index d5ef7f930..9a3b48b66 100644
--- a/hw/bsp/msp432e4/family.c
+++ b/hw/bsp/msp432e4/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Texas Instruments
+*/
+
#include "bsp/board_api.h"
#include "board.h"
#include "msp.h"
diff --git a/hw/bsp/msp432e4/family.cmake b/hw/bsp/msp432e4/family.cmake
index f06e0d4c9..f6939ecfe 100644
--- a/hw/bsp/msp432e4/family.cmake
+++ b/hw/bsp/msp432e4/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS MSP432E4 CACHE INTERNAL "")
@@ -85,15 +85,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_MSP432E4 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_MSP432E4)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/mentor/musb/dcd_musb.c
${TOP}/src/portable/mentor/musb/hcd_musb.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/nrf/boards/adafruit_clue/board.h b/hw/bsp/nrf/boards/adafruit_clue/board.h
index 8d6df786e..a5d90f608 100644
--- a/hw/bsp/nrf/boards/adafruit_clue/board.h
+++ b/hw/bsp/nrf/boards/adafruit_clue/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit CLUE
+ url: https://www.adafruit.com/product/4500
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/boards/arduino_nano33_ble/board.h b/hw/bsp/nrf/boards/arduino_nano33_ble/board.h
index 00fa8d8ea..6e6a079ab 100644
--- a/hw/bsp/nrf/boards/arduino_nano33_ble/board.h
+++ b/hw/bsp/nrf/boards/arduino_nano33_ble/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Arduino Nano 33 BLE
+ url: https://store.arduino.cc/arduino-nano-33-ble
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/boards/circuitplayground_bluefruit/board.h b/hw/bsp/nrf/boards/circuitplayground_bluefruit/board.h
index 3dd354efa..4cdac5f9f 100644
--- a/hw/bsp/nrf/boards/circuitplayground_bluefruit/board.h
+++ b/hw/bsp/nrf/boards/circuitplayground_bluefruit/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Circuit Playground Bluefruit
+ url: https://www.adafruit.com/product/4333
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/boards/feather_nrf52840_express/board.h b/hw/bsp/nrf/boards/feather_nrf52840_express/board.h
index 3d59516d8..bfbb98677 100644
--- a/hw/bsp/nrf/boards/feather_nrf52840_express/board.h
+++ b/hw/bsp/nrf/boards/feather_nrf52840_express/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Feather nRF52840 Express
+ url: https://www.adafruit.com/product/4062
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/boards/feather_nrf52840_sense/board.h b/hw/bsp/nrf/boards/feather_nrf52840_sense/board.h
index 605deea24..288a1b52e 100644
--- a/hw/bsp/nrf/boards/feather_nrf52840_sense/board.h
+++ b/hw/bsp/nrf/boards/feather_nrf52840_sense/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Feather nRF52840 Sense
+ url: https://www.adafruit.com/product/4516
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/boards/itsybitsy_nrf52840/board.h b/hw/bsp/nrf/boards/itsybitsy_nrf52840/board.h
index 33c370f53..5f065eec0 100644
--- a/hw/bsp/nrf/boards/itsybitsy_nrf52840/board.h
+++ b/hw/bsp/nrf/boards/itsybitsy_nrf52840/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit ItsyBitsy nRF52840 Express
+ url: https://www.adafruit.com/product/4481
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/boards/pca10056/board.cmake b/hw/bsp/nrf/boards/pca10056/board.cmake
index cc370aac8..85314f3bc 100644
--- a/hw/bsp/nrf/boards/pca10056/board.cmake
+++ b/hw/bsp/nrf/boards/pca10056/board.cmake
@@ -2,3 +2,9 @@ set(MCU_VARIANT nrf52840)
function(update_board TARGET)
endfunction()
+
+#board_runner_args(jlink "--device=nRF52840_xxAA" "--speed=4000")
+#include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake)
+#include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake)
+#include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
+#include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake)
diff --git a/hw/bsp/nrf/boards/pca10056/board.h b/hw/bsp/nrf/boards/pca10056/board.h
index 24d3faa65..ec632e769 100644
--- a/hw/bsp/nrf/boards/pca10056/board.h
+++ b/hw/bsp/nrf/boards/pca10056/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Nordic nRF52840DK
+ url: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-DK
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/boards/pca10059/board.h b/hw/bsp/nrf/boards/pca10059/board.h
index ea3f4030d..3b95481ad 100644
--- a/hw/bsp/nrf/boards/pca10059/board.h
+++ b/hw/bsp/nrf/boards/pca10059/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Nordic nRF52840 Dongle
+ url: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52840-Dongle
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/boards/pca10095/board.cmake b/hw/bsp/nrf/boards/pca10095/board.cmake
index 95dd30969..6d183dde6 100644
--- a/hw/bsp/nrf/boards/pca10095/board.cmake
+++ b/hw/bsp/nrf/boards/pca10095/board.cmake
@@ -2,6 +2,6 @@ set(MCU_VARIANT nrf5340_application)
function(update_board TARGET)
target_sources(${TARGET} PRIVATE
- ${NRFX_DIR}/drivers/src/nrfx_usbreg.c
+ ${NRFX_PATH}/drivers/src/nrfx_usbreg.c
)
endfunction()
diff --git a/hw/bsp/nrf/boards/pca10095/board.h b/hw/bsp/nrf/boards/pca10095/board.h
index 846c2ee5b..1c7981049 100644
--- a/hw/bsp/nrf/boards/pca10095/board.h
+++ b/hw/bsp/nrf/boards/pca10095/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Nordic nRF5340 DK
+ url: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF5340-DK
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/boards/pca10100/board.h b/hw/bsp/nrf/boards/pca10100/board.h
index 2b2579732..8aca6dce9 100644
--- a/hw/bsp/nrf/boards/pca10100/board.h
+++ b/hw/bsp/nrf/boards/pca10100/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Nordic nRF52833 DK
+ url: https://www.nordicsemi.com/Software-and-Tools/Development-Kits/nRF52833-DK
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/nrf/family.c b/hw/bsp/nrf/family.c
index 885910f9a..298ca2302 100644
--- a/hw/bsp/nrf/family.c
+++ b/hw/bsp/nrf/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Nordic Semiconductor
+*/
+
#include "bsp/board_api.h"
#include "board.h"
@@ -40,10 +44,10 @@
#include "nrfx.h"
#include "hal/nrf_gpio.h"
-#include "drivers/include/nrfx_gpiote.h"
-#include "drivers/include/nrfx_power.h"
-#include "drivers/include/nrfx_uarte.h"
-#include "drivers/include/nrfx_spim.h"
+#include "nrfx_gpiote.h"
+#include "nrfx_power.h"
+#include "nrfx_uarte.h"
+#include "nrfx_spim.h"
#ifdef SOFTDEVICE_PRESENT
#include "nrf_sdm.h"
@@ -133,8 +137,20 @@ void board_init(void) {
// Button
nrf_gpio_cfg_input(BUTTON_PIN, NRF_GPIO_PIN_PULLUP);
+#if CFG_TUSB_OS == OPT_OS_NONE
// 1ms tick timer
SysTick_Config(SystemCoreClock / 1000);
+#elif CFG_TUSB_OS == OPT_OS_ZEPHYR
+ #ifdef CONFIG_HAS_HW_NRF_USBREG
+ // IRQ_CONNECT(USBREGULATOR_IRQn, DT_IRQ(DT_INST(0, nordic_nrf_clock), priority), nrfx_isr, nrfx_usbreg_irq_handler, 0);
+ // irq_enable(USBREGULATOR_IRQn);
+ #endif
+
+ /* USB device controller access from devicetree */
+ #define DT_DRV_COMPAT nordic_nrf_usbd
+ IRQ_CONNECT(DT_INST_IRQN(0), DT_INST_IRQ(0, priority), nrfx_isr, USBD_IRQHandler, 0);
+ irq_enable(DT_INST_IRQN(0));
+#endif
// UART
#if NRFX_VER <= 2
@@ -167,7 +183,7 @@ void board_init(void) {
};
#endif
- nrfx_uarte_init(&_uart_id, &uart_cfg, NULL); //uart_handler);
+ nrfx_uarte_init(&_uart_id, &uart_cfg, NULL);
//------------- USB -------------//
#if CFG_TUD_ENABLED
@@ -211,8 +227,12 @@ void board_init(void) {
#endif
}
- if ( usb_reg & VBUSDETECT_Msk ) tusb_hal_nrf_power_event(USB_EVT_DETECTED);
- if ( usb_reg & OUTPUTRDY_Msk ) tusb_hal_nrf_power_event(USB_EVT_READY);
+ if ( usb_reg & VBUSDETECT_Msk ) {
+ tusb_hal_nrf_power_event(USB_EVT_DETECTED);
+ }
+ if ( usb_reg & OUTPUTRDY_Msk ) {
+ tusb_hal_nrf_power_event(USB_EVT_READY);
+ }
#endif
#if CFG_TUH_ENABLED && defined(CFG_TUH_MAX3421) && CFG_TUH_MAX3421
@@ -224,7 +244,6 @@ void board_init(void) {
//--------------------------------------------------------------------+
// Board porting API
//--------------------------------------------------------------------+
-
void board_led_write(bool state) {
nrf_gpio_pin_write(LED_PIN, state ? LED_STATE_ON : (1 - LED_STATE_ON));
}
diff --git a/hw/bsp/nrf/family.cmake b/hw/bsp/nrf/family.cmake
index 7a433d82d..7d0a9f6de 100644
--- a/hw/bsp/nrf/family.cmake
+++ b/hw/bsp/nrf/family.cmake
@@ -1,17 +1,20 @@
include_guard()
-set(NRFX_DIR ${TOP}/hw/mcu/nordic/nrfx)
+set(NRFX_PATH ${TOP}/hw/mcu/nordic/nrfx)
set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
-# include board specific
-include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
+# include board specific, for zephyr BOARD_ALIAS may be used instead
+include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake OPTIONAL RESULT_VARIABLE board_cmake_included)
+if (NOT board_cmake_included)
+ include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD_ALIAS}/board.cmake)
+endif ()
# toolchain set up
if (MCU_VARIANT STREQUAL "nrf5340_application")
- set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor")
+ set(CMAKE_SYSTEM_CPU cortex-m33 CACHE INTERNAL "System Processor")
set(JLINK_DEVICE nrf5340_xxaa_app)
else ()
- set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+ set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(JLINK_DEVICE ${MCU_VARIANT}_xxaa)
endif ()
@@ -19,7 +22,6 @@ set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOL
set(FAMILY_MCUS NRF5X CACHE INTERNAL "")
-
#------------------------------------
# BOARD_TARGET
#------------------------------------
@@ -40,18 +42,18 @@ function(add_board_target BOARD_TARGET)
endif ()
if (NOT DEFINED STARTUP_FILE_${CMAKE_C_COMPILER_ID})
- set(STARTUP_FILE_GNU ${NRFX_DIR}/mdk/gcc_startup_${MCU_VARIANT}.S)
+ set(STARTUP_FILE_GNU ${NRFX_PATH}/mdk/gcc_startup_${MCU_VARIANT}.S)
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
endif ()
add_library(${BOARD_TARGET} STATIC
- ${NRFX_DIR}/helpers/nrfx_flag32_allocator.c
- ${NRFX_DIR}/drivers/src/nrfx_gpiote.c
- ${NRFX_DIR}/drivers/src/nrfx_power.c
- ${NRFX_DIR}/drivers/src/nrfx_spim.c
- ${NRFX_DIR}/drivers/src/nrfx_uarte.c
- ${NRFX_DIR}/mdk/system_${MCU_VARIANT}.c
- ${NRFX_DIR}/soc/nrfx_atomic.c
+ ${NRFX_PATH}/helpers/nrfx_flag32_allocator.c
+ ${NRFX_PATH}/drivers/src/nrfx_gpiote.c
+ ${NRFX_PATH}/drivers/src/nrfx_power.c
+ ${NRFX_PATH}/drivers/src/nrfx_spim.c
+ ${NRFX_PATH}/drivers/src/nrfx_uarte.c
+ ${NRFX_PATH}/mdk/system_${MCU_VARIANT}.c
+ ${NRFX_PATH}/soc/nrfx_atomic.c
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
)
string(TOUPPER "${MCU_VARIANT_XXAA}" MCU_VARIANT_XXAA_UPPER)
@@ -67,12 +69,10 @@ function(add_board_target BOARD_TARGET)
endif ()
target_include_directories(${BOARD_TARGET} PUBLIC
- ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
- ${NRFX_DIR}
- ${NRFX_DIR}/mdk
- ${NRFX_DIR}/hal
- ${NRFX_DIR}/drivers/include
- ${NRFX_DIR}/drivers/src
+ ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/nrfx_config
+ ${NRFX_PATH}
+ ${NRFX_PATH}/mdk
+ ${NRFX_PATH}/drivers/include
${CMSIS_DIR}/CMSIS/Core/Include
)
@@ -81,14 +81,14 @@ function(add_board_target BOARD_TARGET)
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
target_link_options(${BOARD_TARGET} PUBLIC
"LINKER:--script=${LD_FILE_GNU}"
- -L${NRFX_DIR}/mdk
+ -L${NRFX_PATH}/mdk
--specs=nosys.specs --specs=nano.specs
-nostartfiles
)
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
target_link_options(${BOARD_TARGET} PUBLIC
"LINKER:--script=${LD_FILE_GNU}"
- -L${NRFX_DIR}/mdk
+ -L${NRFX_PATH}/mdk
)
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
target_link_options(${BOARD_TARGET} PUBLIC
@@ -111,14 +111,17 @@ endfunction()
function(family_configure_example TARGET RTOS)
- family_configure_common(${TARGET} ${RTOS})
-
# Board target
- add_board_target(board_${BOARD})
+ if (NOT RTOS STREQUAL zephyr)
+ add_board_target(board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+ endif ()
+
+ family_configure_common(${TARGET} ${RTOS})
#---------- Port Specific ----------
# These files are built for each example since it depends on example's tusb_config.h
- target_sources(${TARGET} PUBLIC
+ target_sources(${TARGET} PRIVATE
# BSP
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c
@@ -129,19 +132,18 @@ function(family_configure_example TARGET RTOS)
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}
)
+ if (RTOS STREQUAL zephyr AND DEFINED BOARD_ALIAS AND NOT BOARD STREQUAL BOARD_ALIAS)
+ target_include_directories(${TARGET} PUBLIC ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD_ALIAS})
+ endif ()
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_NRF5X ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_NRF5X)
+ target_sources(${TARGET} PRIVATE
${TOP}/src/portable/nordic/nrf5x/dcd_nrf5x.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
-
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
- family_add_bin_hex(${TARGET})
+# family_add_bin_hex(${TARGET})
family_flash_jlink(${TARGET})
# family_flash_adafruit_nrfutil(${TARGET})
endfunction()
diff --git a/hw/bsp/nrf/family.mk b/hw/bsp/nrf/family.mk
index b3c05e6db..a8acb1624 100644
--- a/hw/bsp/nrf/family.mk
+++ b/hw/bsp/nrf/family.mk
@@ -1,6 +1,6 @@
UF2_FAMILY_ID = 0xADA52840
-NRFX_DIR = hw/mcu/nordic/nrfx
+NRFX_PATH = hw/mcu/nordic/nrfx
include $(TOP)/$(BOARD_PATH)/board.mk
@@ -28,31 +28,32 @@ CFLAGS_GCC += \
LDFLAGS_GCC += \
-nostartfiles \
--specs=nosys.specs --specs=nano.specs \
- -L$(TOP)/${NRFX_DIR}/mdk
+ -L$(TOP)/${NRFX_PATH}/mdk
LDFLAGS_CLANG += \
- -L$(TOP)/${NRFX_DIR}/mdk \
+ -L$(TOP)/${NRFX_PATH}/mdk \
SRC_C += \
src/portable/nordic/nrf5x/dcd_nrf5x.c \
- ${NRFX_DIR}/helpers/nrfx_flag32_allocator.c \
- ${NRFX_DIR}/drivers/src/nrfx_gpiote.c \
- ${NRFX_DIR}/drivers/src/nrfx_power.c \
- ${NRFX_DIR}/drivers/src/nrfx_spim.c \
- ${NRFX_DIR}/drivers/src/nrfx_uarte.c \
- ${NRFX_DIR}/mdk/system_$(MCU_VARIANT).c \
- ${NRFX_DIR}/soc/nrfx_atomic.c
+ ${NRFX_PATH}/helpers/nrfx_flag32_allocator.c \
+ ${NRFX_PATH}/drivers/src/nrfx_gpiote.c \
+ ${NRFX_PATH}/drivers/src/nrfx_power.c \
+ ${NRFX_PATH}/drivers/src/nrfx_spim.c \
+ ${NRFX_PATH}/drivers/src/nrfx_uarte.c \
+ ${NRFX_PATH}/mdk/system_$(MCU_VARIANT).c \
+ ${NRFX_PATH}/soc/nrfx_atomic.c
INC += \
$(TOP)/$(BOARD_PATH) \
+ $(TOP)/$(FAMILY_PATH)/nrfx_config \
$(TOP)/lib/CMSIS_5/CMSIS/Core/Include \
- $(TOP)/${NRFX_DIR} \
- $(TOP)/${NRFX_DIR}/mdk \
- $(TOP)/${NRFX_DIR}/hal \
- $(TOP)/${NRFX_DIR}/drivers/include \
- $(TOP)/${NRFX_DIR}/drivers/src \
+ $(TOP)/${NRFX_PATH} \
+ $(TOP)/${NRFX_PATH}/mdk \
+ $(TOP)/${NRFX_PATH}/hal \
+ $(TOP)/${NRFX_PATH}/drivers/include \
+ $(TOP)/${NRFX_PATH}/drivers/src \
-SRC_S += ${NRFX_DIR}/mdk/gcc_startup_$(MCU_VARIANT).S
+SRC_S += ${NRFX_PATH}/mdk/gcc_startup_$(MCU_VARIANT).S
ASFLAGS += -D__HEAP_SIZE=0
diff --git a/hw/bsp/nrf/nrfx_config.h b/hw/bsp/nrf/nrfx_config/nrfx_config.h
similarity index 100%
rename from hw/bsp/nrf/nrfx_config.h
rename to hw/bsp/nrf/nrfx_config/nrfx_config.h
diff --git a/hw/bsp/nrf/nrfx_glue.h b/hw/bsp/nrf/nrfx_config/nrfx_glue.h
similarity index 95%
rename from hw/bsp/nrf/nrfx_glue.h
rename to hw/bsp/nrf/nrfx_config/nrfx_glue.h
index ef756c670..bc3b3689b 100644
--- a/hw/bsp/nrf/nrfx_glue.h
+++ b/hw/bsp/nrf/nrfx_config/nrfx_glue.h
@@ -1,7 +1,9 @@
/*
- * Copyright (c) 2017 - 2018, Nordic Semiconductor ASA
+ * Copyright (c) 2017 - 2024, Nordic Semiconductor ASA
* All rights reserved.
*
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
@@ -60,14 +62,14 @@ extern "C" {
/**
* @brief Macro for placing a runtime assertion.
*
- * @param expression Expression to evaluate.
+ * @param expression Expression to be evaluated.
*/
#define NRFX_ASSERT(expression)
/**
* @brief Macro for placing a compile time assertion.
*
- * @param expression Expression to evaluate.
+ * @param expression Expression to be evaluated.
*/
#define NRFX_STATIC_ASSERT(expression)
@@ -76,8 +78,8 @@ extern "C" {
/**
* @brief Macro for setting the priority of a specific IRQ.
*
- * @param irq_number IRQ number.
- * @param priority Priority to set.
+ * @param irq_number IRQ number.
+ * @param priority Priority to be set.
*/
#define NRFX_IRQ_PRIORITY_SET(irq_number, priority) _NRFX_IRQ_PRIORITY_SET(irq_number, priority)
static inline void _NRFX_IRQ_PRIORITY_SET(IRQn_Type irq_number,
@@ -158,14 +160,10 @@ static inline bool _NRFX_IRQ_IS_PENDING(IRQn_Type irq_number)
return (NVIC_GetPendingIRQ(irq_number) == 1);
}
-/**
- * @brief Macro for entering into a critical section.
- */
+/** @brief Macro for entering into a critical section. */
#define NRFX_CRITICAL_SECTION_ENTER()
-/**
- * @brief Macro for exiting from a critical section.
- */
+/** @brief Macro for exiting from a critical section. */
#define NRFX_CRITICAL_SECTION_EXIT()
//------------------------------------------------------------------------------
diff --git a/hw/bsp/nrf/nrfx_log.h b/hw/bsp/nrf/nrfx_config/nrfx_log.h
similarity index 100%
rename from hw/bsp/nrf/nrfx_log.h
rename to hw/bsp/nrf/nrfx_config/nrfx_log.h
diff --git a/hw/bsp/pic32mz/boards/olimex_emz64/board.h b/hw/bsp/pic32mz/boards/olimex_emz64/board.h
new file mode 100644
index 000000000..7f42e024f
--- /dev/null
+++ b/hw/bsp/pic32mz/boards/olimex_emz64/board.h
@@ -0,0 +1,43 @@
+/*
+* The MIT License (MIT)
+ *
+ * Copyright (c) 2020, Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ */
+
+/* metadata:
+ name: Olimex PIC32-EMZ64
+ url: https://www.olimex.com/Products/PIC/Development/PIC32-EMZ64/open-source-hardware
+*/
+
+#ifndef BOARD_H_
+#define BOARD_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* BOARD_H_ */
diff --git a/hw/bsp/pic32mz/boards/olimex_hmz144/board.h b/hw/bsp/pic32mz/boards/olimex_hmz144/board.h
new file mode 100644
index 000000000..c9c07bf77
--- /dev/null
+++ b/hw/bsp/pic32mz/boards/olimex_hmz144/board.h
@@ -0,0 +1,43 @@
+/*
+* The MIT License (MIT)
+ *
+ * Copyright (c) 2020, Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ */
+
+/* metadata:
+ name: Olimex PIC32-HMZ144
+ url: https://www.olimex.com/Products/PIC/Development/PIC32-HMZ144/open-source-hardware
+*/
+
+#ifndef BOARD_H_
+#define BOARD_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* BOARD_H_ */
diff --git a/hw/bsp/pic32mz/family.c b/hw/bsp/pic32mz/family.c
index 895e23899..da97f67a9 100644
--- a/hw/bsp/pic32mz/family.c
+++ b/hw/bsp/pic32mz/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Microchip
+*/
+
#include
#include
#include
diff --git a/hw/bsp/ra/boards/portenta_c33/board.cmake b/hw/bsp/ra/boards/portenta_c33/board.cmake
index 520686daa..a1545f070 100644
--- a/hw/bsp/ra/boards/portenta_c33/board.cmake
+++ b/hw/bsp/ra/boards/portenta_c33/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m33 CACHE INTERNAL "System Processor")
set(MCU_VARIANT ra6m5)
set(JLINK_DEVICE R7FA6M5BH)
diff --git a/hw/bsp/ra/boards/portenta_c33/board.h b/hw/bsp/ra/boards/portenta_c33/board.h
index ba663d040..7853c2dbd 100644
--- a/hw/bsp/ra/boards/portenta_c33/board.h
+++ b/hw/bsp/ra/boards/portenta_c33/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Arduino Portenta C33
+ url: https://www.arduino.cc/pro/hardware-product-portenta-c33/
+*/
+
#ifndef _BOARD_H_
#define _BOARD_H_
diff --git a/hw/bsp/ra/boards/ra2a1_ek/board.cmake b/hw/bsp/ra/boards/ra2a1_ek/board.cmake
index 4d083ca98..9c679c4b5 100644
--- a/hw/bsp/ra/boards/ra2a1_ek/board.cmake
+++ b/hw/bsp/ra/boards/ra2a1_ek/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-m23 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m23 CACHE INTERNAL "System Processor")
set(MCU_VARIANT ra2a1)
set(JLINK_DEVICE R7FA2A1AB)
diff --git a/hw/bsp/ra/boards/ra2a1_ek/board.h b/hw/bsp/ra/boards/ra2a1_ek/board.h
index ba663d040..d925fc551 100644
--- a/hw/bsp/ra/boards/ra2a1_ek/board.h
+++ b/hw/bsp/ra/boards/ra2a1_ek/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: RA2A1 EK
+ url: https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra2a1-evaluation-kit-ra2a1-mcu-group
+*/
+
#ifndef _BOARD_H_
#define _BOARD_H_
diff --git a/hw/bsp/ra/boards/ra4m1_ek/board.cmake b/hw/bsp/ra/boards/ra4m1_ek/board.cmake
index 7bb48bf44..247dea619 100644
--- a/hw/bsp/ra/boards/ra4m1_ek/board.cmake
+++ b/hw/bsp/ra/boards/ra4m1_ek/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(MCU_VARIANT ra4m1)
set(JLINK_DEVICE R7FA4M1AB)
diff --git a/hw/bsp/ra/boards/ra4m1_ek/board.h b/hw/bsp/ra/boards/ra4m1_ek/board.h
index ba663d040..e146261be 100644
--- a/hw/bsp/ra/boards/ra4m1_ek/board.h
+++ b/hw/bsp/ra/boards/ra4m1_ek/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: RA4M1 EK
+ url: https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4m1-evaluation-kit-ra4m1-mcu-group
+*/
+
#ifndef _BOARD_H_
#define _BOARD_H_
diff --git a/hw/bsp/ra/boards/ra4m3_ek/board.cmake b/hw/bsp/ra/boards/ra4m3_ek/board.cmake
index dfd5fc95a..b413abc36 100644
--- a/hw/bsp/ra/boards/ra4m3_ek/board.cmake
+++ b/hw/bsp/ra/boards/ra4m3_ek/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m33 CACHE INTERNAL "System Processor")
set(MCU_VARIANT ra4m3)
set(JLINK_DEVICE R7FA4M3AF)
diff --git a/hw/bsp/ra/boards/ra4m3_ek/board.h b/hw/bsp/ra/boards/ra4m3_ek/board.h
index 9dd2545a0..8b277f6f0 100644
--- a/hw/bsp/ra/boards/ra4m3_ek/board.h
+++ b/hw/bsp/ra/boards/ra4m3_ek/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: RA4M3 EK
+ url: https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra4m3-evaluation-kit-ra4m3-mcu-group
+*/
+
#ifndef _BOARD_H_
#define _BOARD_H_
diff --git a/hw/bsp/ra/boards/ra6m1_ek/board.cmake b/hw/bsp/ra/boards/ra6m1_ek/board.cmake
index b2f41a354..957e8394d 100644
--- a/hw/bsp/ra/boards/ra6m1_ek/board.cmake
+++ b/hw/bsp/ra/boards/ra6m1_ek/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(MCU_VARIANT ra6m1)
set(JLINK_DEVICE R7FA6M1AD)
diff --git a/hw/bsp/ra/boards/ra6m1_ek/board.h b/hw/bsp/ra/boards/ra6m1_ek/board.h
index ba663d040..2024a0335 100644
--- a/hw/bsp/ra/boards/ra6m1_ek/board.h
+++ b/hw/bsp/ra/boards/ra6m1_ek/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: RA6M1 EK
+ url: https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m1-evaluation-kit-ra6m1-mcu-group
+*/
+
#ifndef _BOARD_H_
#define _BOARD_H_
diff --git a/hw/bsp/ra/boards/ra6m5_ek/board.cmake b/hw/bsp/ra/boards/ra6m5_ek/board.cmake
index 568d5d78f..bc99845a1 100644
--- a/hw/bsp/ra/boards/ra6m5_ek/board.cmake
+++ b/hw/bsp/ra/boards/ra6m5_ek/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m33 CACHE INTERNAL "System Processor")
set(MCU_VARIANT ra6m5)
set(JLINK_DEVICE R7FA6M5BH)
diff --git a/hw/bsp/ra/boards/ra6m5_ek/board.h b/hw/bsp/ra/boards/ra6m5_ek/board.h
index 33dda99b4..32ede3a97 100644
--- a/hw/bsp/ra/boards/ra6m5_ek/board.h
+++ b/hw/bsp/ra/boards/ra6m5_ek/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: RA6M5 EK
+ url: https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra6m5-evaluation-kit-ra6m5-mcu-group
+*/
+
#ifndef _BOARD_H_
#define _BOARD_H_
diff --git a/hw/bsp/ra/boards/ra8m1_ek/board.cmake b/hw/bsp/ra/boards/ra8m1_ek/board.cmake
index 9c797c3b7..c61166f38 100644
--- a/hw/bsp/ra/boards/ra8m1_ek/board.cmake
+++ b/hw/bsp/ra/boards/ra8m1_ek/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-m85 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m85 CACHE INTERNAL "System Processor")
set(MCU_VARIANT ra8m1)
set(JLINK_DEVICE R7FA8M1AH)
diff --git a/hw/bsp/ra/boards/ra8m1_ek/board.h b/hw/bsp/ra/boards/ra8m1_ek/board.h
index 33dda99b4..54672452f 100644
--- a/hw/bsp/ra/boards/ra8m1_ek/board.h
+++ b/hw/bsp/ra/boards/ra8m1_ek/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: RA8M1 EK
+ url: https://www.renesas.com/en/products/microcontrollers-microprocessors/ra-cortex-m-mcus/ek-ra8m1-evaluation-kit-ra8m1-mcu-group
+*/
+
#ifndef _BOARD_H_
#define _BOARD_H_
diff --git a/hw/bsp/ra/boards/uno_r4/board.cmake b/hw/bsp/ra/boards/uno_r4/board.cmake
index 3aa6045be..735a93035 100644
--- a/hw/bsp/ra/boards/uno_r4/board.cmake
+++ b/hw/bsp/ra/boards/uno_r4/board.cmake
@@ -1,4 +1,4 @@
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(MCU_VARIANT ra4m1)
set(JLINK_DEVICE R7FA4M1AB)
diff --git a/hw/bsp/ra/boards/uno_r4/board.h b/hw/bsp/ra/boards/uno_r4/board.h
index 2c262bb9b..4e7ebb5ce 100644
--- a/hw/bsp/ra/boards/uno_r4/board.h
+++ b/hw/bsp/ra/boards/uno_r4/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Arduino UNO R4
+ url: https://store-usa.arduino.cc/pages/uno-r4
+*/
+
#ifndef _BOARD_H_
#define _BOARD_H_
diff --git a/hw/bsp/ra/family.c b/hw/bsp/ra/family.c
index 523b6ff55..0fd24e493 100644
--- a/hw/bsp/ra/family.c
+++ b/hw/bsp/ra/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Renesas
+*/
+
#include
#ifdef __GNUC__
diff --git a/hw/bsp/ra/family.cmake b/hw/bsp/ra/family.cmake
index f920a8219..42a32631c 100644
--- a/hw/bsp/ra/family.cmake
+++ b/hw/bsp/ra/family.cmake
@@ -147,16 +147,15 @@ function(family_configure_example TARGET RTOS)
# endif ()
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_RAXXX ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_RAXXX)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/renesas/rusb2/dcd_rusb2.c
${TOP}/src/portable/renesas/rusb2/hcd_rusb2.c
${TOP}/src/portable/renesas/rusb2/rusb2_common.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_flash_jlink(${TARGET})
diff --git a/hw/bsp/rp2040/board.h b/hw/bsp/rp2040/board.h
index 733e93797..5dbb1dd37 100644
--- a/hw/bsp/rp2040/board.h
+++ b/hw/bsp/rp2040/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Pico
+ url: https://www.raspberrypi.org/products/raspberry-pi-pico/
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/rp2040/family.c b/hw/bsp/rp2040/family.c
index 452a5568f..24aa0b616 100644
--- a/hw/bsp/rp2040/family.c
+++ b/hw/bsp/rp2040/family.c
@@ -25,6 +25,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Raspberry Pi
+*/
+
#include "pico/stdlib.h"
#include "pico/binary_info.h"
#include "pico/unique_id.h"
diff --git a/hw/bsp/rx/boards/gr_citrus/board.h b/hw/bsp/rx/boards/gr_citrus/board.h
new file mode 100644
index 000000000..617d309c3
--- /dev/null
+++ b/hw/bsp/rx/boards/gr_citrus/board.h
@@ -0,0 +1,43 @@
+/*
+* The MIT License (MIT)
+ *
+ * Copyright (c) 2020, Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ */
+
+/* metadata:
+ name: GR Citrus
+ url: https://www.renesas.com/en/products/gadget-renesas/boards/gr-citrus
+*/
+
+#ifndef BOARD_H_
+#define BOARD_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* BOARD_H_ */
diff --git a/hw/bsp/rx/boards/rx65n_target/board.h b/hw/bsp/rx/boards/rx65n_target/board.h
new file mode 100644
index 000000000..8c8e7b95f
--- /dev/null
+++ b/hw/bsp/rx/boards/rx65n_target/board.h
@@ -0,0 +1,43 @@
+/*
+* The MIT License (MIT)
+ *
+ * Copyright (c) 2020, Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ */
+
+/* metadata:
+ name: RX65N Target Board
+ url: https://www.renesas.com/en/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rtk5rx65n0c00000br-target-board-rx65n
+*/
+
+#ifndef BOARD_H_
+#define BOARD_H_
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+#ifdef __cplusplus
+ }
+#endif
+
+#endif /* BOARD_H_ */
diff --git a/hw/bsp/samd11/boards/cynthion_d11/board.h b/hw/bsp/samd11/boards/cynthion_d11/board.h
index b13c8eeea..8916e9b83 100644
--- a/hw/bsp/samd11/boards/cynthion_d11/board.h
+++ b/hw/bsp/samd11/boards/cynthion_d11/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Great Scott Gadgets Cynthion
+ url: https://greatscottgadgets.com/cynthion/
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd11/boards/samd11_xplained/board.h b/hw/bsp/samd11/boards/samd11_xplained/board.h
index 2bbec4958..13045ac1d 100644
--- a/hw/bsp/samd11/boards/samd11_xplained/board.h
+++ b/hw/bsp/samd11/boards/samd11_xplained/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: SAMD11 Xplained Pro
+ url: https://www.microchip.com/en-us/development-tool/ATSAMD11-XPRO
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd11/family.c b/hw/bsp/samd11/family.c
index a6588805a..79ca9de02 100644
--- a/hw/bsp/samd11/family.c
+++ b/hw/bsp/samd11/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Microchip
+*/
+
#include "sam.h"
// Suppress warning caused by mcu driver
diff --git a/hw/bsp/samd11/family.cmake b/hw/bsp/samd11/family.cmake
index c9ccc86f8..965b1cfb5 100644
--- a/hw/bsp/samd11/family.cmake
+++ b/hw/bsp/samd11/family.cmake
@@ -7,7 +7,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS SAMD11 CACHE INTERNAL "")
@@ -100,14 +100,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_SAMD11 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_SAMD11)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/microchip/samd/dcd_samd.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/samd21/boards/atsamd21_xpro/board.h b/hw/bsp/samd21/boards/atsamd21_xpro/board.h
index 315e40c78..6d2e40c56 100644
--- a/hw/bsp/samd21/boards/atsamd21_xpro/board.h
+++ b/hw/bsp/samd21/boards/atsamd21_xpro/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: SAMD21 Xplained Pro
+ url: https://www.microchip.com/DevelopmentTools/ProductDetails/ATSAMD21-XPRO
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/circuitplayground_express/board.h b/hw/bsp/samd21/boards/circuitplayground_express/board.h
index 0037db00d..6a4ec32a9 100644
--- a/hw/bsp/samd21/boards/circuitplayground_express/board.h
+++ b/hw/bsp/samd21/boards/circuitplayground_express/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Circuit Playground Express
+ url: https://www.adafruit.com/product/3333
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/curiosity_nano/board.h b/hw/bsp/samd21/boards/curiosity_nano/board.h
index 1a4a833a3..78d701ec9 100644
--- a/hw/bsp/samd21/boards/curiosity_nano/board.h
+++ b/hw/bsp/samd21/boards/curiosity_nano/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: SAMD21 Curiosty Nano
+ url: https://www.microchip.com/en-us/development-tool/dm320119
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/cynthion_d21/board.h b/hw/bsp/samd21/boards/cynthion_d21/board.h
index 776063636..6a2b8c5c6 100644
--- a/hw/bsp/samd21/boards/cynthion_d21/board.h
+++ b/hw/bsp/samd21/boards/cynthion_d21/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Great Scott Gadgets Cynthion
+ url: https://greatscottgadgets.com/cynthion/
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/feather_m0_express/board.h b/hw/bsp/samd21/boards/feather_m0_express/board.h
index 56ae3230d..a7f9122ee 100644
--- a/hw/bsp/samd21/boards/feather_m0_express/board.h
+++ b/hw/bsp/samd21/boards/feather_m0_express/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Feather M0 Express
+ url: https://www.adafruit.com/product/3403
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/itsybitsy_m0/board.h b/hw/bsp/samd21/boards/itsybitsy_m0/board.h
index 6ee814da5..15a0afb15 100644
--- a/hw/bsp/samd21/boards/itsybitsy_m0/board.h
+++ b/hw/bsp/samd21/boards/itsybitsy_m0/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit ItsyBitsy M0
+ url: https://www.adafruit.com/product/3727
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/metro_m0_express/board.h b/hw/bsp/samd21/boards/metro_m0_express/board.h
index 6dd53e901..405c92b02 100644
--- a/hw/bsp/samd21/boards/metro_m0_express/board.h
+++ b/hw/bsp/samd21/boards/metro_m0_express/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Metro M0 Express
+ url: https://www.adafruit.com/product/3505
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/qtpy/board.h b/hw/bsp/samd21/boards/qtpy/board.h
index 9ba39e966..29a9f727f 100644
--- a/hw/bsp/samd21/boards/qtpy/board.h
+++ b/hw/bsp/samd21/boards/qtpy/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit QT Py
+ url: https://www.adafruit.com/product/4600
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/seeeduino_xiao/board.h b/hw/bsp/samd21/boards/seeeduino_xiao/board.h
index 1bd63d6d9..0a6d1fc7d 100644
--- a/hw/bsp/samd21/boards/seeeduino_xiao/board.h
+++ b/hw/bsp/samd21/boards/seeeduino_xiao/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Seeeduino XIAO
+ url: https://wiki.seeedstudio.com/Seeeduino-XIAO/
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/sparkfun_samd21_mini_usb/board.h b/hw/bsp/samd21/boards/sparkfun_samd21_mini_usb/board.h
index 60a86d743..85be34008 100644
--- a/hw/bsp/samd21/boards/sparkfun_samd21_mini_usb/board.h
+++ b/hw/bsp/samd21/boards/sparkfun_samd21_mini_usb/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: SparkFun SAMD21 Mini
+ url: https://www.sparkfun.com/products/13664
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd21/boards/trinket_m0/board.h b/hw/bsp/samd21/boards/trinket_m0/board.h
index c94a3abb6..22e7cb77f 100644
--- a/hw/bsp/samd21/boards/trinket_m0/board.h
+++ b/hw/bsp/samd21/boards/trinket_m0/board.h
@@ -23,6 +23,11 @@
*
*/
+/* metadata:
+ name: Adafruit Trinket M0
+ url: https://www.adafruit.com/product/3500
+*/
+
#pragma once
// LED
diff --git a/hw/bsp/samd21/family.c b/hw/bsp/samd21/family.c
index 7ca20c458..c360a4a5a 100644
--- a/hw/bsp/samd21/family.c
+++ b/hw/bsp/samd21/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Microchip
+*/
+
#include "sam.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/samd21/family.cmake b/hw/bsp/samd21/family.cmake
index c836b85d9..4a10d6224 100644
--- a/hw/bsp/samd21/family.cmake
+++ b/hw/bsp/samd21/family.cmake
@@ -6,7 +6,7 @@ set(SDK_DIR ${TOP}/hw/mcu/microchip/samd21)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS SAMD21 CACHE INTERNAL "")
@@ -96,14 +96,11 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_SAMD21 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_SAMD21)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/microchip/samd/dcd_samd.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
-
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/samd5x_e5x/boards/d5035_01/board.h b/hw/bsp/samd5x_e5x/boards/d5035_01/board.h
index 2cf59f5d1..4eb4a4ebe 100644
--- a/hw/bsp/samd5x_e5x/boards/d5035_01/board.h
+++ b/hw/bsp/samd5x_e5x/boards/d5035_01/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: D5035-01
+ url: https://github.com/RudolphRiedel/USB_CAN-FD
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd5x_e5x/boards/feather_m4_express/board.h b/hw/bsp/samd5x_e5x/boards/feather_m4_express/board.h
index 83de04266..edb965c9d 100644
--- a/hw/bsp/samd5x_e5x/boards/feather_m4_express/board.h
+++ b/hw/bsp/samd5x_e5x/boards/feather_m4_express/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Feather M4 Express
+ url: https://www.adafruit.com/product/3857
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd5x_e5x/boards/itsybitsy_m4/board.h b/hw/bsp/samd5x_e5x/boards/itsybitsy_m4/board.h
index 272315771..d41ca4ac3 100644
--- a/hw/bsp/samd5x_e5x/boards/itsybitsy_m4/board.h
+++ b/hw/bsp/samd5x_e5x/boards/itsybitsy_m4/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit ItsyBitsy M4
+ url: https://www.adafruit.com/product/3800
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd5x_e5x/boards/metro_m4_express/board.h b/hw/bsp/samd5x_e5x/boards/metro_m4_express/board.h
index b3b80db89..b2eaaa54d 100644
--- a/hw/bsp/samd5x_e5x/boards/metro_m4_express/board.h
+++ b/hw/bsp/samd5x_e5x/boards/metro_m4_express/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Metro M4 Express
+ url: https://www.adafruit.com/product/3382
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd5x_e5x/boards/pybadge/board.h b/hw/bsp/samd5x_e5x/boards/pybadge/board.h
index 4629643fd..a5d447db6 100644
--- a/hw/bsp/samd5x_e5x/boards/pybadge/board.h
+++ b/hw/bsp/samd5x_e5x/boards/pybadge/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit PyBadge
+ url: https://www.adafruit.com/product/4200
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd5x_e5x/boards/pyportal/board.h b/hw/bsp/samd5x_e5x/boards/pyportal/board.h
index ff04c900b..e635e1375 100644
--- a/hw/bsp/samd5x_e5x/boards/pyportal/board.h
+++ b/hw/bsp/samd5x_e5x/boards/pyportal/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit PyPortal
+ url: https://www.adafruit.com/product/4116
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd5x_e5x/boards/same54_xplained/board.h b/hw/bsp/samd5x_e5x/boards/same54_xplained/board.h
index faaa52b8e..6c252f9d0 100644
--- a/hw/bsp/samd5x_e5x/boards/same54_xplained/board.h
+++ b/hw/bsp/samd5x_e5x/boards/same54_xplained/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: SAME54 Xplained Pro
+ url: https://www.microchip.com/DevelopmentTools/ProductDetails/ATSAME54-XPRO
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/samd5x_e5x/family.c b/hw/bsp/samd5x_e5x/family.c
index abaee353b..8ceddb1be 100644
--- a/hw/bsp/samd5x_e5x/family.c
+++ b/hw/bsp/samd5x_e5x/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Microchip
+*/
+
#include "sam.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/samd5x_e5x/family.cmake b/hw/bsp/samd5x_e5x/family.cmake
index fd95ce10e..50e0ec66d 100644
--- a/hw/bsp/samd5x_e5x/family.cmake
+++ b/hw/bsp/samd5x_e5x/family.cmake
@@ -6,7 +6,7 @@ set(SDK_DIR ${TOP}/hw/mcu/microchip/${SAM_FAMILY})
set(CMSIS_5 ${TOP}/lib/CMSIS_5)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS SAMD51 SAME54 CACHE INTERNAL "")
@@ -93,14 +93,11 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_SAMD51 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_SAMD51)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/microchip/samd/dcd_samd.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
-
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/samg/boards/samg55_xplained/board.h b/hw/bsp/samg/boards/samg55_xplained/board.h
index c94cda198..53c557ef0 100644
--- a/hw/bsp/samg/boards/samg55_xplained/board.h
+++ b/hw/bsp/samg/boards/samg55_xplained/board.h
@@ -1,3 +1,8 @@
+/* metadata:
+ name: SAMG55 Xplained Pro
+ url: https://www.microchip.com/DevelopmentTools/ProductDetails/ATSAMG55-XPRO
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/samg/family.c b/hw/bsp/samg/family.c
index 63db5739d..8db429e79 100644
--- a/hw/bsp/samg/family.c
+++ b/hw/bsp/samg/family.c
@@ -23,6 +23,10 @@
*
*/
+/* metadata:
+ manufacturer: Microchip
+*/
+
#include "sam.h"
// Suppress warning caused by mcu driver
diff --git a/hw/bsp/samg/family.cmake b/hw/bsp/samg/family.cmake
index 1cc715ce6..eb00c8c52 100644
--- a/hw/bsp/samg/family.cmake
+++ b/hw/bsp/samg/family.cmake
@@ -7,7 +7,7 @@ set(SDK_DIR ${TOP}/hw/mcu/microchip/samg55)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS SAMG CACHE INTERNAL "")
@@ -98,14 +98,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_SAMG ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_SAMG)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/microchip/samg/dcd_samg.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/saml2x/boards/atsaml21_xpro/board.h b/hw/bsp/saml2x/boards/atsaml21_xpro/board.h
index 315e40c78..b93b4e591 100644
--- a/hw/bsp/saml2x/boards/atsaml21_xpro/board.h
+++ b/hw/bsp/saml2x/boards/atsaml21_xpro/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: SAML21 Xplained Pro
+ url: https://www.microchip.com/en-us/development-tool/atsaml21-xpro-b
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/saml2x/boards/saml22_feather/board.h b/hw/bsp/saml2x/boards/saml22_feather/board.h
index 72e9897b6..f8660c3f8 100644
--- a/hw/bsp/saml2x/boards/saml22_feather/board.h
+++ b/hw/bsp/saml2x/boards/saml22_feather/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: SAML22 Feather
+ url: https://github.com/joeycastillo/Feather-Projects/tree/main/SAML22%20Feather
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/saml2x/boards/sensorwatch_m0/board.h b/hw/bsp/saml2x/boards/sensorwatch_m0/board.h
index 735f6afc8..502c799db 100644
--- a/hw/bsp/saml2x/boards/sensorwatch_m0/board.h
+++ b/hw/bsp/saml2x/boards/sensorwatch_m0/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: SensorWatch
+ url: https://github.com/joeycastillo/Sensor-Watch
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/saml2x/family.c b/hw/bsp/saml2x/family.c
index 11977b036..cdc65baf1 100644
--- a/hw/bsp/saml2x/family.c
+++ b/hw/bsp/saml2x/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Microchip
+*/
+
#include "sam.h"
// Suppress warning caused by mcu driver
diff --git a/hw/bsp/saml2x/family.cmake b/hw/bsp/saml2x/family.cmake
index 2338d1916..49f2e3e75 100644
--- a/hw/bsp/saml2x/family.cmake
+++ b/hw/bsp/saml2x/family.cmake
@@ -7,7 +7,7 @@ set(SDK_DIR ${TOP}/hw/mcu/microchip/${SAM_FAMILY})
set(CMSIS_5 ${TOP}/lib/CMSIS_5)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS SAML21 SAML22 CACHE INTERNAL "")
@@ -100,14 +100,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_SAML22 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_SAML22)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/microchip/samd/dcd_samd.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32c0/boards/stm32c071nucleo/board.h b/hw/bsp/stm32c0/boards/stm32c071nucleo/board.h
index f08762736..c7d809717 100644
--- a/hw/bsp/stm32c0/boards/stm32c071nucleo/board.h
+++ b/hw/bsp/stm32c0/boards/stm32c071nucleo/board.h
@@ -25,6 +25,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32C071 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-g071rb.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32c0/family.c b/hw/bsp/stm32c0/family.c
index dba6a8af1..ace3f2a71 100644
--- a/hw/bsp/stm32c0/family.c
+++ b/hw/bsp/stm32c0/family.c
@@ -25,6 +25,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32c0xx_hal.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/stm32c0/family.cmake b/hw/bsp/stm32c0/family.cmake
index 7c5328ab0..c6a90fff6 100644
--- a/hw/bsp/stm32c0/family.cmake
+++ b/hw/bsp/stm32c0/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32C0 CACHE INTERNAL "")
@@ -102,15 +102,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32C0 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32C0)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
${TOP}/src/portable/st/typec/typec_stm32.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32f0/boards/stm32f070rbnucleo/board.h b/hw/bsp/stm32f0/boards/stm32f070rbnucleo/board.h
index 9af81e63c..82ad309a3 100644
--- a/hw/bsp/stm32f0/boards/stm32f070rbnucleo/board.h
+++ b/hw/bsp/stm32f0/boards/stm32f070rbnucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F070 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-f070rb.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f0/boards/stm32f072disco/board.h b/hw/bsp/stm32f0/boards/stm32f072disco/board.h
index 1febd01e8..3ca1b3641 100644
--- a/hw/bsp/stm32f0/boards/stm32f072disco/board.h
+++ b/hw/bsp/stm32f0/boards/stm32f072disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F072 Discovery
+ url: https://www.st.com/en/evaluation-tools/32f072bdiscovery.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f0/boards/stm32f072eval/board.h b/hw/bsp/stm32f0/boards/stm32f072eval/board.h
index 7dcfa3e85..2828000b9 100644
--- a/hw/bsp/stm32f0/boards/stm32f072eval/board.h
+++ b/hw/bsp/stm32f0/boards/stm32f072eval/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F072 Eval
+ url: https://www.st.com/en/evaluation-tools/stm32072b-eval.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f0/family.c b/hw/bsp/stm32f0/family.c
index 3079a1ed3..ea1373e6c 100644
--- a/hw/bsp/stm32f0/family.c
+++ b/hw/bsp/stm32f0/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32f0xx_hal.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/stm32f0/family.cmake b/hw/bsp/stm32f0/family.cmake
index 8b70411e8..12c7b592c 100644
--- a/hw/bsp/stm32f0/family.cmake
+++ b/hw/bsp/stm32f0/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32F0 CACHE INTERNAL "")
@@ -100,14 +100,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32F0 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32F0)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32f1/boards/stm32f103_bluepill/board.h b/hw/bsp/stm32f1/boards/stm32f103_bluepill/board.h
index 2f30a09d4..c8a74337f 100644
--- a/hw/bsp/stm32f1/boards/stm32f103_bluepill/board.h
+++ b/hw/bsp/stm32f1/boards/stm32f103_bluepill/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F103 Bluepill
+ url: https://stm32-base.org/boards/STM32F103C8T6-Blue-Pill
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f1/boards/stm32f103_mini_2/board.h b/hw/bsp/stm32f1/boards/stm32f103_mini_2/board.h
index c8dba4268..d4824686f 100644
--- a/hw/bsp/stm32f1/boards/stm32f103_mini_2/board.h
+++ b/hw/bsp/stm32f1/boards/stm32f103_mini_2/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F103 Mini v2
+ url: https://stm32-base.org/boards/STM32F103RCT6-STM32-Mini-V2.0
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f1/boards/stm32f103ze_iar/board.h b/hw/bsp/stm32f1/boards/stm32f103ze_iar/board.h
index d31102d32..1253c5a48 100644
--- a/hw/bsp/stm32f1/boards/stm32f103ze_iar/board.h
+++ b/hw/bsp/stm32f1/boards/stm32f103ze_iar/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: IAR STM32 F103ze starter kit
+ url: n/a
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f1/family.c b/hw/bsp/stm32f1/family.c
index 600fc28c0..29785397f 100644
--- a/hw/bsp/stm32f1/family.c
+++ b/hw/bsp/stm32f1/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32f1xx_hal.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/stm32f1/family.cmake b/hw/bsp/stm32f1/family.cmake
index 31801c035..cbb9c3568 100644
--- a/hw/bsp/stm32f1/family.cmake
+++ b/hw/bsp/stm32f1/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m3 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m3 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32F1 CACHE INTERNAL "")
@@ -99,14 +99,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32F1 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32F1)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32f2/boards/stm32f207nucleo/board.h b/hw/bsp/stm32f2/boards/stm32f207nucleo/board.h
index 3301ede27..8d8c52f60 100644
--- a/hw/bsp/stm32f2/boards/stm32f207nucleo/board.h
+++ b/hw/bsp/stm32f2/boards/stm32f207nucleo/board.h
@@ -1,3 +1,9 @@
+
+/* metadata:
+ name: STM32 F207 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-f207zg.html
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/stm32f2/family.c b/hw/bsp/stm32f2/family.c
index 62cca327b..c1333382a 100644
--- a/hw/bsp/stm32f2/family.c
+++ b/hw/bsp/stm32f2/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32f2xx_hal.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/stm32f2/family.cmake b/hw/bsp/stm32f2/family.cmake
index 2bae07b99..dc6bc2885 100644
--- a/hw/bsp/stm32f2/family.cmake
+++ b/hw/bsp/stm32f2/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m3 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m3 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32F2 CACHE INTERNAL "")
@@ -99,16 +99,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32F2 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32F2)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32f3/boards/stm32f303disco/board.h b/hw/bsp/stm32f3/boards/stm32f303disco/board.h
index 706149b49..c79dea945 100644
--- a/hw/bsp/stm32f3/boards/stm32f303disco/board.h
+++ b/hw/bsp/stm32f3/boards/stm32f303disco/board.h
@@ -1,3 +1,9 @@
+
+/* metadata:
+ name: STM32 F303 Discovery
+ url: https://www.st.com/en/evaluation-tools/stm32f3discovery.html
+*/
+
#ifndef BOARD_H
#define BOARD_H
diff --git a/hw/bsp/stm32f3/family.c b/hw/bsp/stm32f3/family.c
index f94dd95cf..84612d416 100644
--- a/hw/bsp/stm32f3/family.c
+++ b/hw/bsp/stm32f3/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32f3xx_hal.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/stm32f3/family.cmake b/hw/bsp/stm32f3/family.cmake
index 6f4e866f8..0ba2920d5 100644
--- a/hw/bsp/stm32f3/family.cmake
+++ b/hw/bsp/stm32f3/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m3 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m3 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32F3 CACHE INTERNAL "")
@@ -97,14 +97,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32F3 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32F3)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32f4/boards/feather_stm32f405/board.h b/hw/bsp/stm32f4/boards/feather_stm32f405/board.h
index 670ce8012..11e976a42 100644
--- a/hw/bsp/stm32f4/boards/feather_stm32f405/board.h
+++ b/hw/bsp/stm32f4/boards/feather_stm32f405/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Adafruit Feather STM32F405
+ url: https://www.adafruit.com/product/4382
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/boards/pyboardv11/board.h b/hw/bsp/stm32f4/boards/pyboardv11/board.h
index 077313518..9583a924b 100644
--- a/hw/bsp/stm32f4/boards/pyboardv11/board.h
+++ b/hw/bsp/stm32f4/boards/pyboardv11/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Pyboard v1.1
+ url: https://www.adafruit.com/product/2390
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/boards/stm32f401blackpill/board.h b/hw/bsp/stm32f4/boards/stm32f401blackpill/board.h
index ef40089c9..8a3fe8409 100644
--- a/hw/bsp/stm32f4/boards/stm32f401blackpill/board.h
+++ b/hw/bsp/stm32f4/boards/stm32f401blackpill/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F401 Blackpill
+ url: https://stm32-base.org/boards/STM32F401CCU6-WeAct-Black-Pill-V1.2
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/boards/stm32f407blackvet/board.h b/hw/bsp/stm32f4/boards/stm32f407blackvet/board.h
index 6879d066b..effbf2be8 100644
--- a/hw/bsp/stm32f4/boards/stm32f407blackvet/board.h
+++ b/hw/bsp/stm32f4/boards/stm32f407blackvet/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F407 Blackvet
+ url: https://stm32-base.org/boards/STM32F407VET6-STM32-F4VE-V2.0
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/boards/stm32f407blackvet/board.mk b/hw/bsp/stm32f4/boards/stm32f407blackvet/board.mk
index 2593978ec..c46a78f81 100644
--- a/hw/bsp/stm32f4/boards/stm32f407blackvet/board.mk
+++ b/hw/bsp/stm32f4/boards/stm32f407blackvet/board.mk
@@ -1,12 +1,12 @@
CFLAGS += -DSTM32F407xx
# GCC
-GCC_SRC_S += $(ST_CMSIS)/Source/Templates/gcc/startup_stm32f407xx.s
-GCC_LD_FILE = $(BOARD_PATH)/STM32F407VETX_FLASH.ld
+SRC_S_GCC += $(ST_CMSIS)/Source/Templates/gcc/startup_stm32f407xx.s
+LD_FILE_GCC = $(BOARD_PATH)/STM32F407VETx_FLASH.ld
# IAR
-IAR_SRC_S += $(ST_CMSIS)/Source/Templates/iar/startup_stm32f407xx.s
-IAR_LD_FILE = $(ST_CMSIS)/Source/Templates/iar/linker/stm32f407xx_flash.icf
+SRC_S_IAR += $(ST_CMSIS)/Source/Templates/iar/startup_stm32f407xx.s
+LD_FILE_IAR = $(ST_CMSIS)/Source/Templates/iar/linker/stm32f407xx_flash.icf
# For flash-jlink target
diff --git a/hw/bsp/stm32f4/boards/stm32f407disco/board.h b/hw/bsp/stm32f4/boards/stm32f407disco/board.h
index 380f8e391..19a029768 100644
--- a/hw/bsp/stm32f4/boards/stm32f407disco/board.h
+++ b/hw/bsp/stm32f4/boards/stm32f407disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F407 Discovery
+ url: https://www.st.com/en/evaluation-tools/stm32f4discovery.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/boards/stm32f411blackpill/board.h b/hw/bsp/stm32f4/boards/stm32f411blackpill/board.h
index efa618b72..61e5de70d 100644
--- a/hw/bsp/stm32f4/boards/stm32f411blackpill/board.h
+++ b/hw/bsp/stm32f4/boards/stm32f411blackpill/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F411 Blackpill
+ url: https://stm32-base.org/boards/STM32F411CEU6-WeAct-Black-Pill-V2.0
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/boards/stm32f411disco/board.h b/hw/bsp/stm32f4/boards/stm32f411disco/board.h
index d4bad8e40..d7b02e79d 100644
--- a/hw/bsp/stm32f4/boards/stm32f411disco/board.h
+++ b/hw/bsp/stm32f4/boards/stm32f411disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F411 Discovery
+ url: https://www.st.com/en/evaluation-tools/32f411ediscovery.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/boards/stm32f412disco/board.h b/hw/bsp/stm32f4/boards/stm32f412disco/board.h
index 74e664418..d5146ae3c 100644
--- a/hw/bsp/stm32f4/boards/stm32f412disco/board.h
+++ b/hw/bsp/stm32f4/boards/stm32f412disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F412 Discovery
+ url: https://www.st.com/en/evaluation-tools/32f412gdiscovery.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/boards/stm32f412nucleo/board.h b/hw/bsp/stm32f4/boards/stm32f412nucleo/board.h
index 8900a1e6b..f7026ce61 100644
--- a/hw/bsp/stm32f4/boards/stm32f412nucleo/board.h
+++ b/hw/bsp/stm32f4/boards/stm32f412nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F412 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-f412zg.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/boards/stm32f439nucleo/board.h b/hw/bsp/stm32f4/boards/stm32f439nucleo/board.h
index aa9de4073..9a348f33f 100644
--- a/hw/bsp/stm32f4/boards/stm32f439nucleo/board.h
+++ b/hw/bsp/stm32f4/boards/stm32f439nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F439 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-f439zi.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f4/family.c b/hw/bsp/stm32f4/family.c
index 866a09d6f..3a1507dbf 100644
--- a/hw/bsp/stm32f4/family.c
+++ b/hw/bsp/stm32f4/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32f4xx_hal.h"
#include "bsp/board_api.h"
diff --git a/hw/bsp/stm32f4/family.cmake b/hw/bsp/stm32f4/family.cmake
index 487f0cf06..db5736192 100644
--- a/hw/bsp/stm32f4/family.cmake
+++ b/hw/bsp/stm32f4/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32F4 CACHE INTERNAL "")
@@ -125,16 +125,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32F4 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32F4)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32f7/boards/stlinkv3mini/board.h b/hw/bsp/stm32f7/boards/stlinkv3mini/board.h
index 632fd99ed..06adb79ad 100644
--- a/hw/bsp/stm32f7/boards/stlinkv3mini/board.h
+++ b/hw/bsp/stm32f7/boards/stlinkv3mini/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Stlink-v3 mini
+ url: https://www.st.com/en/development-tools/stlink-v3mini.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f7/boards/stm32f723disco/board.h b/hw/bsp/stm32f7/boards/stm32f723disco/board.h
index d45ceec5c..35102c1f2 100644
--- a/hw/bsp/stm32f7/boards/stm32f723disco/board.h
+++ b/hw/bsp/stm32f7/boards/stm32f723disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F723 Discovery
+ url: https://www.st.com/en/evaluation-tools/32f723ediscovery.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f7/boards/stm32f746disco/board.h b/hw/bsp/stm32f7/boards/stm32f746disco/board.h
index d8e92931e..2964ebada 100644
--- a/hw/bsp/stm32f7/boards/stm32f746disco/board.h
+++ b/hw/bsp/stm32f7/boards/stm32f746disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F746 Discovery
+ url: https://www.st.com/en/evaluation-tools/32f746gdiscovery.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f7/boards/stm32f746nucleo/board.h b/hw/bsp/stm32f7/boards/stm32f746nucleo/board.h
index 55e77fe5f..b039f5543 100644
--- a/hw/bsp/stm32f7/boards/stm32f746nucleo/board.h
+++ b/hw/bsp/stm32f7/boards/stm32f746nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F746 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-f746zg.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f7/boards/stm32f767nucleo/board.h b/hw/bsp/stm32f7/boards/stm32f767nucleo/board.h
index 81cb60aeb..b5b3841f1 100644
--- a/hw/bsp/stm32f7/boards/stm32f767nucleo/board.h
+++ b/hw/bsp/stm32f7/boards/stm32f767nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F767 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-f767zi.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f7/boards/stm32f769disco/board.h b/hw/bsp/stm32f7/boards/stm32f769disco/board.h
index 268919b61..8ac520619 100644
--- a/hw/bsp/stm32f7/boards/stm32f769disco/board.h
+++ b/hw/bsp/stm32f7/boards/stm32f769disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 F769 Discovery
+ url: https://www.st.com/en/evaluation-tools/32f769idiscovery.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32f7/family.c b/hw/bsp/stm32f7/family.c
index 527fbfe5c..5f63834d0 100644
--- a/hw/bsp/stm32f7/family.c
+++ b/hw/bsp/stm32f7/family.c
@@ -26,6 +26,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32f7xx_hal.h"
#include "bsp/board_api.h"
diff --git a/hw/bsp/stm32f7/family.cmake b/hw/bsp/stm32f7/family.cmake
index df1d2a3cf..1a3365332 100644
--- a/hw/bsp/stm32f7/family.cmake
+++ b/hw/bsp/stm32f7/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m7-fpsp CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m7-fpsp CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32F7 CACHE INTERNAL "")
@@ -127,16 +127,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32F7 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32F7)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32g0/boards/stm32g0b1nucleo/board.h b/hw/bsp/stm32g0/boards/stm32g0b1nucleo/board.h
index 9ebaf73f0..14d309da1 100644
--- a/hw/bsp/stm32g0/boards/stm32g0b1nucleo/board.h
+++ b/hw/bsp/stm32g0/boards/stm32g0b1nucleo/board.h
@@ -25,6 +25,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 G0B1 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-g0b1re.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32g0/family.c b/hw/bsp/stm32g0/family.c
index d1635be12..67b0b3f1c 100644
--- a/hw/bsp/stm32g0/family.c
+++ b/hw/bsp/stm32g0/family.c
@@ -25,6 +25,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32g0xx_hal.h"
#include "bsp/board_api.h"
#include "board.h"
@@ -39,7 +43,9 @@ void USB_UCPD1_2_IRQHandler(void) {
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
+#ifdef UART_DEV
UART_HandleTypeDef UartHandle;
+#endif
void board_init(void) {
HAL_Init(); // required for HAL_RCC_Osc TODO check with freeRTOS
@@ -55,8 +61,6 @@ void board_init(void) {
__HAL_RCC_SYSCFG_CLK_ENABLE();
__HAL_RCC_PWR_CLK_ENABLE();
- UART_CLK_EN();
-
#if CFG_TUSB_OS == OPT_OS_NONE
// 1ms tick timer
SysTick_Config(SystemCoreClock / 1000);
@@ -87,6 +91,8 @@ void board_init(void) {
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
#ifdef UART_DEV
+ UART_CLK_EN();
+
// UART
GPIO_InitStruct.Pin = UART_TX_PIN | UART_RX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
@@ -163,7 +169,6 @@ int board_uart_write(void const *buf, int len) {
#else
(void) buf;
(void) len;
- (void) UartHandle;
return 0;
#endif
}
diff --git a/hw/bsp/stm32g0/family.cmake b/hw/bsp/stm32g0/family.cmake
index 7129cebd8..4da26f27e 100644
--- a/hw/bsp/stm32g0/family.cmake
+++ b/hw/bsp/stm32g0/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32G0 CACHE INTERNAL "")
@@ -101,15 +101,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32G0 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32G0)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
${TOP}/src/portable/st/typec/typec_stm32.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32g4/boards/b_g474e_dpow1/board.h b/hw/bsp/stm32g4/boards/b_g474e_dpow1/board.h
index e61b13170..d569783fc 100644
--- a/hw/bsp/stm32g4/boards/b_g474e_dpow1/board.h
+++ b/hw/bsp/stm32g4/boards/b_g474e_dpow1/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 B-G474E-DPOW1 Discovery kit
+ url: https://www.st.com/en/evaluation-tools/b-g474e-dpow1.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32g4/boards/stm32g474nucleo/board.h b/hw/bsp/stm32g4/boards/stm32g474nucleo/board.h
index aa2bf20bb..cfef1c09f 100644
--- a/hw/bsp/stm32g4/boards/stm32g474nucleo/board.h
+++ b/hw/bsp/stm32g4/boards/stm32g474nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 G474 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-g474re.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32g4/boards/stm32g491nucleo/board.h b/hw/bsp/stm32g4/boards/stm32g491nucleo/board.h
index 7dd4ed9ae..be3d44645 100644
--- a/hw/bsp/stm32g4/boards/stm32g491nucleo/board.h
+++ b/hw/bsp/stm32g4/boards/stm32g491nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 G491 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-g491re.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32g4/family.c b/hw/bsp/stm32g4/family.c
index 2259cb9e2..49ef86db9 100644
--- a/hw/bsp/stm32g4/family.c
+++ b/hw/bsp/stm32g4/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32g4xx_hal.h"
#include "stm32g4xx_ll_bus.h"
@@ -53,7 +57,9 @@ void UCPD1_IRQHandler(void) {
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
+#ifdef UART_DEV
UART_HandleTypeDef UartHandle;
+#endif
void board_init(void) {
HAL_Init();
@@ -67,8 +73,6 @@ void board_init(void) {
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOG_CLK_ENABLE();
- UART_CLK_EN();
-
#if CFG_TUSB_OS == OPT_OS_NONE
// 1ms tick timer
SysTick_Config(SystemCoreClock / 1000);
@@ -103,6 +107,8 @@ void board_init(void) {
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
#ifdef UART_DEV
+ UART_CLK_EN();
+
// UART
memset(&GPIO_InitStruct, 0, sizeof(GPIO_InitStruct));
GPIO_InitStruct.Pin = UART_TX_PIN | UART_RX_PIN;
@@ -193,7 +199,6 @@ int board_uart_write(void const *buf, int len) {
#else
(void) buf;
(void) len;
- (void) UartHandle;
return 0;
#endif
}
diff --git a/hw/bsp/stm32g4/family.cmake b/hw/bsp/stm32g4/family.cmake
index 6c4e90d40..5ec9926fe 100644
--- a/hw/bsp/stm32g4/family.cmake
+++ b/hw/bsp/stm32g4/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32G4 CACHE INTERNAL "")
@@ -97,15 +97,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32G4 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32G4)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
${TOP}/src/portable/st/typec/typec_stm32.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32h5/boards/stm32h503nucleo/board.h b/hw/bsp/stm32h5/boards/stm32h503nucleo/board.h
index da20cfa3a..c8b5e31f5 100644
--- a/hw/bsp/stm32h5/boards/stm32h503nucleo/board.h
+++ b/hw/bsp/stm32h5/boards/stm32h503nucleo/board.h
@@ -25,6 +25,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 H503 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-h503rb.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h5/boards/stm32h563nucleo/board.h b/hw/bsp/stm32h5/boards/stm32h563nucleo/board.h
index c4e0f680b..adc3d751a 100644
--- a/hw/bsp/stm32h5/boards/stm32h563nucleo/board.h
+++ b/hw/bsp/stm32h5/boards/stm32h563nucleo/board.h
@@ -25,6 +25,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 H563 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-h563zi.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h b/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h
index 7baef6ca6..d75114397 100644
--- a/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h
+++ b/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h
@@ -25,6 +25,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 H573i Discovery
+ url: https://www.st.com/en/evaluation-tools/stm32h573i-dk.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h5/family.c b/hw/bsp/stm32h5/family.c
index 02500db4e..26ba34ac3 100644
--- a/hw/bsp/stm32h5/family.c
+++ b/hw/bsp/stm32h5/family.c
@@ -25,6 +25,9 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
// Suppress warning caused by mcu driver
#ifdef __GNUC__
@@ -55,7 +58,9 @@ void USB_DRD_FS_IRQHandler(void) {
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
+#ifdef UART_DEV
UART_HandleTypeDef UartHandle;
+#endif
void board_init(void) {
HAL_Init(); // required for HAL_RCC_Osc TODO check with freeRTOS
@@ -79,8 +84,6 @@ void board_init(void) {
__HAL_RCC_GPIOI_CLK_ENABLE();
#endif
- UART_CLK_EN();
-
#if CFG_TUSB_OS == OPT_OS_NONE
// 1ms tick timer
SysTick_Config(SystemCoreClock / 1000);
@@ -111,6 +114,8 @@ void board_init(void) {
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
#ifdef UART_DEV
+ UART_CLK_EN();
+
// UART
GPIO_InitStruct.Pin = UART_TX_PIN | UART_RX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
@@ -189,7 +194,6 @@ int board_uart_write(void const* buf, int len) {
#else
(void) buf;
(void) len;
- (void) UartHandle;
return 0;
#endif
}
diff --git a/hw/bsp/stm32h5/family.cmake b/hw/bsp/stm32h5/family.cmake
index 804b13768..1df6bcb90 100644
--- a/hw/bsp/stm32h5/family.cmake
+++ b/hw/bsp/stm32h5/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m33 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32H5 CACHE INTERNAL "")
@@ -101,15 +101,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32H5 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32H5)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
${TOP}/src/portable/st/typec/typec_stm32.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32h7/boards/daisyseed/board.h b/hw/bsp/stm32h7/boards/daisyseed/board.h
index 2d681d640..300ecb8b2 100644
--- a/hw/bsp/stm32h7/boards/daisyseed/board.h
+++ b/hw/bsp/stm32h7/boards/daisyseed/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Daisy Seed
+ url: https://electro-smith.com/products/daisy-seed
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h7/boards/stm32h723nucleo/board.h b/hw/bsp/stm32h7/boards/stm32h723nucleo/board.h
index c5257901d..f623149bd 100644
--- a/hw/bsp/stm32h7/boards/stm32h723nucleo/board.h
+++ b/hw/bsp/stm32h7/boards/stm32h723nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 H723 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-h723zg.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h7/boards/stm32h743eval/board.h b/hw/bsp/stm32h7/boards/stm32h743eval/board.h
index fa9721be3..334876e51 100644
--- a/hw/bsp/stm32h7/boards/stm32h743eval/board.h
+++ b/hw/bsp/stm32h7/boards/stm32h743eval/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 H743 Eval
+ url: https://www.st.com/en/evaluation-tools/stm32h743i-eval.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h7/boards/stm32h743nucleo/board.h b/hw/bsp/stm32h7/boards/stm32h743nucleo/board.h
index 0606f395a..0277d05c7 100644
--- a/hw/bsp/stm32h7/boards/stm32h743nucleo/board.h
+++ b/hw/bsp/stm32h7/boards/stm32h743nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 H743 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-h743zi.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h7/boards/stm32h745disco/board.h b/hw/bsp/stm32h7/boards/stm32h745disco/board.h
index b9d9cdea4..ebdd5a17a 100644
--- a/hw/bsp/stm32h7/boards/stm32h745disco/board.h
+++ b/hw/bsp/stm32h7/boards/stm32h745disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 H745 Discovery
+ url: https://www.st.com/en/evaluation-tools/stm32h745i-disco.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h7/boards/stm32h750_weact/board.h b/hw/bsp/stm32h7/boards/stm32h750_weact/board.h
index f1c363082..e11a55103 100644
--- a/hw/bsp/stm32h7/boards/stm32h750_weact/board.h
+++ b/hw/bsp/stm32h7/boards/stm32h750_weact/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 H750 WeAct
+ url: https://www.adafruit.com/product/5032
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h7/boards/stm32h750bdk/board.h b/hw/bsp/stm32h7/boards/stm32h750bdk/board.h
index 2895f0973..ac417601b 100644
--- a/hw/bsp/stm32h7/boards/stm32h750bdk/board.h
+++ b/hw/bsp/stm32h7/boards/stm32h750bdk/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 H750b Discovery Kit
+ url: https://www.st.com/en/evaluation-tools/stm32h750b-dk.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h7/boards/waveshare_openh743i/board.h b/hw/bsp/stm32h7/boards/waveshare_openh743i/board.h
index 625c6a137..bfaf42784 100644
--- a/hw/bsp/stm32h7/boards/waveshare_openh743i/board.h
+++ b/hw/bsp/stm32h7/boards/waveshare_openh743i/board.h
@@ -26,6 +26,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: Waveshare Open H743i
+ url: https://www.waveshare.com/openh743i-c-standard.htm
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32h7/family.c b/hw/bsp/stm32h7/family.c
index 0be18350c..e5228b29b 100644
--- a/hw/bsp/stm32h7/family.c
+++ b/hw/bsp/stm32h7/family.c
@@ -27,6 +27,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32h7xx_hal.h"
#include "bsp/board_api.h"
diff --git a/hw/bsp/stm32h7/family.cmake b/hw/bsp/stm32h7/family.cmake
index 6af79736d..b4f0bebbf 100644
--- a/hw/bsp/stm32h7/family.cmake
+++ b/hw/bsp/stm32h7/family.cmake
@@ -12,7 +12,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m7 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m7 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32H7 CACHE INTERNAL "")
@@ -132,16 +132,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32H7 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32H7)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32l0/boards/stm32l052dap52/board.h b/hw/bsp/stm32l0/boards/stm32l052dap52/board.h
index ee83bbcbc..50bbafadb 100644
--- a/hw/bsp/stm32l0/boards/stm32l052dap52/board.h
+++ b/hw/bsp/stm32l0/boards/stm32l052dap52/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 L052 DAP
+ url: n/a
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32l0/boards/stm32l0538disco/board.h b/hw/bsp/stm32l0/boards/stm32l0538disco/board.h
index 5cda1c15a..29402f00a 100644
--- a/hw/bsp/stm32l0/boards/stm32l0538disco/board.h
+++ b/hw/bsp/stm32l0/boards/stm32l0538disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 L0538 Discovery
+ url: https://www.st.com/en/evaluation-tools/32l0538discovery.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32l0/family.c b/hw/bsp/stm32l0/family.c
index c8c88d687..b28903e00 100644
--- a/hw/bsp/stm32l0/family.c
+++ b/hw/bsp/stm32l0/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32l0xx_hal.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/stm32l0/family.cmake b/hw/bsp/stm32l0/family.cmake
index a2324f123..954bdb158 100644
--- a/hw/bsp/stm32l0/family.cmake
+++ b/hw/bsp/stm32l0/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m0plus CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32L0 CACHE INTERNAL "")
@@ -101,14 +101,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32L0 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32L0)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32l4/boards/stm32l412nucleo/board.h b/hw/bsp/stm32l4/boards/stm32l412nucleo/board.h
index 72d17b760..980e1e321 100644
--- a/hw/bsp/stm32l4/boards/stm32l412nucleo/board.h
+++ b/hw/bsp/stm32l4/boards/stm32l412nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 L412 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-l412kb.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32l4/boards/stm32l476disco/board.h b/hw/bsp/stm32l4/boards/stm32l476disco/board.h
index 9d4351b39..8c766d8ea 100644
--- a/hw/bsp/stm32l4/boards/stm32l476disco/board.h
+++ b/hw/bsp/stm32l4/boards/stm32l476disco/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 L476 Disco
+ url: https://www.st.com/en/evaluation-tools/32l476gdiscovery.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32l4/boards/stm32l4p5nucleo/board.h b/hw/bsp/stm32l4/boards/stm32l4p5nucleo/board.h
index 47ada6bb9..f522e7522 100644
--- a/hw/bsp/stm32l4/boards/stm32l4p5nucleo/board.h
+++ b/hw/bsp/stm32l4/boards/stm32l4p5nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 L4P5 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-l4p5zg.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32l4/boards/stm32l4r5nucleo/board.h b/hw/bsp/stm32l4/boards/stm32l4r5nucleo/board.h
index 47ada6bb9..c181f5d4a 100644
--- a/hw/bsp/stm32l4/boards/stm32l4r5nucleo/board.h
+++ b/hw/bsp/stm32l4/boards/stm32l4r5nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 L4R5 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-l4r5zi.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32l4/family.c b/hw/bsp/stm32l4/family.c
index 965c4810a..2b555b5c2 100644
--- a/hw/bsp/stm32l4/family.c
+++ b/hw/bsp/stm32l4/family.c
@@ -26,6 +26,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32l4xx_hal.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/stm32l4/family.cmake b/hw/bsp/stm32l4/family.cmake
index 67c5be7d8..eebcff4f3 100644
--- a/hw/bsp/stm32l4/family.cmake
+++ b/hw/bsp/stm32l4/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32L4 CACHE INTERNAL "")
@@ -101,17 +101,16 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_${FAMILY_MCUS} ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_${FAMILY_MCUS})
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32u5/boards/b_u585i_iot2a/board.h b/hw/bsp/stm32u5/boards/b_u585i_iot2a/board.h
index 2f1c451db..cf3f63ea5 100644
--- a/hw/bsp/stm32u5/boards/b_u585i_iot2a/board.h
+++ b/hw/bsp/stm32u5/boards/b_u585i_iot2a/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 B-U585i IOT2A Discovery kit
+ url: https://www.st.com/en/evaluation-tools/b-u585i-iot02a.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32u5/boards/stm32u545nucleo/board.h b/hw/bsp/stm32u5/boards/stm32u545nucleo/board.h
index 7f3bf462c..0c3439b2c 100644
--- a/hw/bsp/stm32u5/boards/stm32u545nucleo/board.h
+++ b/hw/bsp/stm32u5/boards/stm32u545nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 U545 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-u545re-q.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32u5/boards/stm32u575eval/board.h b/hw/bsp/stm32u5/boards/stm32u575eval/board.h
index bd91502af..b11f6a747 100644
--- a/hw/bsp/stm32u5/boards/stm32u575eval/board.h
+++ b/hw/bsp/stm32u5/boards/stm32u575eval/board.h
@@ -25,6 +25,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 U575 Eval
+ url: https://www.st.com/en/evaluation-tools/stm32u575i-ev.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32u5/boards/stm32u575nucleo/board.h b/hw/bsp/stm32u5/boards/stm32u575nucleo/board.h
index 6d244d418..be037b68a 100644
--- a/hw/bsp/stm32u5/boards/stm32u575nucleo/board.h
+++ b/hw/bsp/stm32u5/boards/stm32u575nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 U575 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-u575zi-q.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32u5/boards/stm32u5a5nucleo/board.h b/hw/bsp/stm32u5/boards/stm32u5a5nucleo/board.h
index 062fb807f..0785fb36b 100644
--- a/hw/bsp/stm32u5/boards/stm32u5a5nucleo/board.h
+++ b/hw/bsp/stm32u5/boards/stm32u5a5nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 U5a5 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-u5a5zj-q.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32u5/family.c b/hw/bsp/stm32u5/family.c
index 3cc7cc511..032c01f34 100644
--- a/hw/bsp/stm32u5/family.c
+++ b/hw/bsp/stm32u5/family.c
@@ -25,6 +25,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
// Suppress warning caused by mcu driver
#ifdef __GNUC__
#pragma GCC diagnostic push
diff --git a/hw/bsp/stm32u5/family.cmake b/hw/bsp/stm32u5/family.cmake
index 3be6702fd..7a5935961 100644
--- a/hw/bsp/stm32u5/family.cmake
+++ b/hw/bsp/stm32u5/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m33 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m33 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32U5 CACHE INTERNAL "")
@@ -101,18 +101,17 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_STM32U5 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_STM32U5)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
#${TOP}/src/portable/st/typec/typec_stm32.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/stm32wb/boards/stm32wb55nucleo/board.h b/hw/bsp/stm32wb/boards/stm32wb55nucleo/board.h
index ea975df03..704592506 100644
--- a/hw/bsp/stm32wb/boards/stm32wb55nucleo/board.h
+++ b/hw/bsp/stm32wb/boards/stm32wb55nucleo/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: STM32 P-NUCLEO-WB55
+ url: https://www.st.com/en/evaluation-tools/p-nucleo-wb55.html
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/stm32wb/family.c b/hw/bsp/stm32wb/family.c
index 6051388a7..ba37b7cc3 100644
--- a/hw/bsp/stm32wb/family.c
+++ b/hw/bsp/stm32wb/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: STMicroelectronics
+*/
+
#include "stm32wbxx_hal.h"
#include "bsp/board_api.h"
#include "board.h"
@@ -42,7 +46,9 @@ void USB_LP_IRQHandler(void) {
//--------------------------------------------------------------------+
// MACRO TYPEDEF CONSTANT ENUM
//--------------------------------------------------------------------+
+#ifdef UART_DEV
UART_HandleTypeDef UartHandle;
+#endif
void board_init(void) {
board_clock_init();
@@ -54,8 +60,6 @@ void board_init(void) {
__HAL_RCC_GPIOD_CLK_ENABLE();
__HAL_RCC_GPIOE_CLK_ENABLE();
- UART_CLK_EN();
-
#if CFG_TUSB_OS == OPT_OS_NONE
// 1ms tick timer
SysTick_Config(SystemCoreClock / 1000);
@@ -98,6 +102,8 @@ void board_init(void) {
HAL_GPIO_Init(BUTTON_PORT, &GPIO_InitStruct);
#ifdef UART_DEV
+ UART_CLK_EN();
+
// UART
GPIO_InitStruct.Pin = UART_TX_PIN | UART_RX_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
@@ -155,7 +161,7 @@ int board_uart_write(void const* buf, int len) {
HAL_UART_Transmit(&UartHandle, (uint8_t*) (uintptr_t) buf, len, 0xffff);
return len;
#else
- (void) buf; (void) len; (void) UartHandle;
+ (void) buf; (void) len;
return 0;
#endif
}
diff --git a/hw/bsp/stm32wb/family.cmake b/hw/bsp/stm32wb/family.cmake
index 4f958045d..0ea937257 100644
--- a/hw/bsp/stm32wb/family.cmake
+++ b/hw/bsp/stm32wb/family.cmake
@@ -11,7 +11,7 @@ set(CMSIS_5 ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS STM32WB CACHE INTERNAL "")
@@ -104,14 +104,13 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_${FAMILY_MCUS} ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_${FAMILY_MCUS})
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/tm4c/boards/ek_tm4c123gxl/board.h b/hw/bsp/tm4c/boards/ek_tm4c123gxl/board.h
index 5732056ae..c0ceb4cd8 100644
--- a/hw/bsp/tm4c/boards/ek_tm4c123gxl/board.h
+++ b/hw/bsp/tm4c/boards/ek_tm4c123gxl/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: TM4C123G LaunchPad
+ url: https://www.ti.com/tool/EK-TM4C123GXL
+*/
+
#ifndef _BOARD_H_
#define _BOARD_H_
diff --git a/hw/bsp/tm4c/family.c b/hw/bsp/tm4c/family.c
index 5e1f6d3ff..4e5491005 100644
--- a/hw/bsp/tm4c/family.c
+++ b/hw/bsp/tm4c/family.c
@@ -1,3 +1,7 @@
+/* metadata:
+ manufacturer: Texas Instruments
+*/
+
#include "TM4C123.h"
#include "bsp/board_api.h"
#include "board.h"
diff --git a/hw/bsp/tm4c/family.cmake b/hw/bsp/tm4c/family.cmake
index 9c083759b..e1cf94e96 100644
--- a/hw/bsp/tm4c/family.cmake
+++ b/hw/bsp/tm4c/family.cmake
@@ -9,7 +9,7 @@ set(SDK_DIR ${TOP}/hw/mcu/ti/${MCU_VARIANT}xx)
set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS TM4C123 CACHE INTERNAL "")
@@ -79,15 +79,14 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_TM4C123 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_TM4C123)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/mentor/musb/dcd_musb.c
${TOP}/src/portable/mentor/musb/hcd_musb.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/xmc4000/boards/xmc4500_relax/board.h b/hw/bsp/xmc4000/boards/xmc4500_relax/board.h
index 2d4764f40..3d0e92b2c 100644
--- a/hw/bsp/xmc4000/boards/xmc4500_relax/board.h
+++ b/hw/bsp/xmc4000/boards/xmc4500_relax/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: XMC4500 relax kit
+ url: https://www.infineon.com/cms/en/product/evaluation-boards/kit_xmc45_relax_v1/
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/xmc4000/boards/xmc4700_relax/board.h b/hw/bsp/xmc4000/boards/xmc4700_relax/board.h
index aa12fde3b..f3972980c 100644
--- a/hw/bsp/xmc4000/boards/xmc4700_relax/board.h
+++ b/hw/bsp/xmc4000/boards/xmc4700_relax/board.h
@@ -24,6 +24,11 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ name: XMC4700 relax kit
+ url: https://www.infineon.com/cms/en/product/evaluation-boards/kit_xmc47_relax_v1/
+*/
+
#ifndef BOARD_H_
#define BOARD_H_
diff --git a/hw/bsp/xmc4000/family.c b/hw/bsp/xmc4000/family.c
index c776cb58a..1acce024b 100644
--- a/hw/bsp/xmc4000/family.c
+++ b/hw/bsp/xmc4000/family.c
@@ -24,6 +24,10 @@
* This file is part of the TinyUSB stack.
*/
+/* metadata:
+ manufacturer: Infineon
+*/
+
#include "xmc_gpio.h"
#include "xmc_scu.h"
#include "xmc_uart.h"
diff --git a/hw/bsp/xmc4000/family.cmake b/hw/bsp/xmc4000/family.cmake
index e73f0f216..6edd72caf 100644
--- a/hw/bsp/xmc4000/family.cmake
+++ b/hw/bsp/xmc4000/family.cmake
@@ -6,7 +6,7 @@ set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
+set(CMAKE_SYSTEM_CPU cortex-m4 CACHE INTERNAL "System Processor")
set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
set(FAMILY_MCUS XMC4000 CACHE INTERNAL "")
@@ -83,16 +83,15 @@ function(family_configure_example TARGET RTOS)
)
# Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_XMC4000 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
+ family_add_tinyusb(${TARGET} OPT_MCU_XMC4000)
+ target_sources(${TARGET} PUBLIC
${TOP}/src/portable/synopsys/dwc2/dcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/hcd_dwc2.c
${TOP}/src/portable/synopsys/dwc2/dwc2_common.c
)
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
+ target_link_libraries(${TARGET} PUBLIC board_${BOARD})
+
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
# Flashing
family_add_bin_hex(${TARGET})
diff --git a/hw/bsp/zephyr_board_aliases.cmake b/hw/bsp/zephyr_board_aliases.cmake
new file mode 100644
index 000000000..91ffc3a39
--- /dev/null
+++ b/hw/bsp/zephyr_board_aliases.cmake
@@ -0,0 +1 @@
+set(pca10056_BOARD_ALIAS nrf52840dk/nrf52840)
diff --git a/library.json b/library.json
index c945d4b52..f1bfd6387 100644
--- a/library.json
+++ b/library.json
@@ -1,6 +1,6 @@
{
"name": "TinyUSB",
- "version": "0.17.0",
+ "version": "0.18.0",
"description": "TinyUSB is an open-source cross-platform USB Host/Device stack for embedded system, designed to be memory-safe with no dynamic allocation and thread-safe with all interrupt events are deferred then handled in the non-ISR task function.",
"keywords": "usb, host, device",
"repository":
diff --git a/pkg.yml b/pkg.yml
index 331445024..841307847 100644
--- a/pkg.yml
+++ b/pkg.yml
@@ -1,5 +1,5 @@
pkg.name: tinyusb
-pkg.description: A silly USB stack for embedded
+pkg.description: An open source cross-platform USB stack for embedded system
pkg.author: "Ha Thach "
pkg.homepage: "https://github.com/hathach/tinyusb"
pkg.keywords:
diff --git a/repository.yml b/repository.yml
index df7895e84..31c9eddc5 100644
--- a/repository.yml
+++ b/repository.yml
@@ -15,5 +15,6 @@ repo.versions:
"0.15.0": "0.15.0"
"0.16.0": "0.16.0"
"0.17.0": "0.17.0"
- "0-latest": "0.17.0"
+ "0.18.0": "0.18.0"
+ "0-latest": "0.18.0"
"0-dev": "0.0.0"
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index cf6878389..7b3ab4d42 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,11 +1,10 @@
# TODO more docs and example on how to use this file
-# Usage: requires target tinyusb_config which expose tusb_config.h file
# TINYUSB_TARGET_PREFIX and TINYUSB_TARGET_SUFFIX can be used to change the name of the target
-cmake_minimum_required(VERSION 3.17)
+cmake_minimum_required(VERSION 3.20)
-# Add tinyusb to a target, if user don't want to compile tinyusb as a library
-function(add_tinyusb TARGET)
+# Add tinyusb to a existing target
+function(tinyusb_target_add TARGET)
target_sources(${TARGET} PRIVATE
# common
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/tusb.c
@@ -40,68 +39,4 @@ function(add_tinyusb TARGET)
# TODO for net driver, should be removed/changed
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../lib/networking
)
-
- if (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
- target_compile_options(${TARGET} PRIVATE
- -Wall
- -Wextra
- -Werror
- -Wfatal-errors
- -Wdouble-promotion
- -Wstrict-prototypes
- -Wstrict-overflow
- -Werror-implicit-function-declaration
- -Wfloat-equal
- -Wundef
- -Wshadow
- -Wwrite-strings
- -Wsign-compare
- -Wmissing-format-attribute
- -Wunreachable-code
- -Wcast-align
- -Wcast-function-type
- -Wcast-qual
- -Wnull-dereference
- -Wuninitialized
- -Wunused
- -Wunused-function
- -Wreturn-type
- -Wredundant-decls
- -Wmissing-prototypes
- )
- elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
-
- endif ()
endfunction()
-
-#------------------------------------
-# TinyUSB as library target
-#------------------------------------
-if (NOT DEFINED TINYUSB_TARGET)
- set(TINYUSB_TARGET "tinyusb")
-endif ()
-
-set(TINYUSB_CONFIG_TARGET "${TINYUSB_TARGET}_config")
-
-if (DEFINED TINYUSB_TARGET_PREFIX)
- set(TINYUSB_TARGET "${TINYUSB_TARGET_PREFIX}${TINYUSB_TARGET}")
- set(TINYUSB_CONFIG_TARGET "${TINYUSB_TARGET_PREFIX}${TINYUSB_CONFIG_TARGET}")
-endif ()
-
-if (DEFINED TINYUSB_TARGET_SUFFIX)
- set(TINYUSB_TARGET "${TINYUSB_TARGET}${TINYUSB_TARGET_SUFFIX}")
- set(TINYUSB_CONFIG_TARGET "${TINYUSB_CONFIG_TARGET}${TINYUSB_TARGET_SUFFIX}")
-endif ()
-
-add_library(${TINYUSB_TARGET} STATIC)
-add_tinyusb(${TINYUSB_TARGET})
-
-# Check if tinyusb_config target is defined
-if (NOT TARGET ${TINYUSB_CONFIG_TARGET})
- message(FATAL_ERROR "${TINYUSB_CONFIG_TARGET} target is not defined")
-endif()
-
-# Link with tinyusb_config target
-target_link_libraries(${TINYUSB_TARGET} PUBLIC
- ${TINYUSB_CONFIG_TARGET}
- )
diff --git a/src/class/hid/hid_host.c b/src/class/hid/hid_host.c
index eef584d74..a3cc7d6d7 100644
--- a/src/class/hid/hid_host.c
+++ b/src/class/hid/hid_host.c
@@ -410,7 +410,7 @@ bool tuh_hid_send_report(uint8_t daddr, uint8_t idx, uint8_t report_id, const vo
++len; // 1 more byte for report_id
}
- TU_LOG3_MEM(p_hid->epout_buf, len, 2);
+ TU_LOG3_MEM(epbuf->epout, len, 2);
if (!usbh_edpt_xfer(daddr, p_hid->ep_out, epbuf->epout, len)) {
usbh_edpt_release(daddr, p_hid->ep_out);
@@ -445,7 +445,7 @@ bool hidh_xfer_cb(uint8_t daddr, uint8_t ep_addr, xfer_result_t result, uint32_t
if (dir == TUSB_DIR_IN) {
TU_LOG_DRV(" Get Report callback (%u, %u)\r\n", daddr, idx);
- TU_LOG3_MEM(p_hid->epin_buf, xferred_bytes, 2);
+ TU_LOG3_MEM(epbuf->epin, xferred_bytes, 2);
tuh_hid_report_received_cb(daddr, idx, epbuf->epin, (uint16_t) xferred_bytes);
} else {
if (tuh_hid_report_sent_cb) {
diff --git a/src/class/net/ncm_device.c b/src/class/net/ncm_device.c
index 4e6088340..f9fda0698 100644
--- a/src/class/net/ncm_device.c
+++ b/src/class/net/ncm_device.c
@@ -390,7 +390,7 @@ static bool xmit_requested_datagram_fits_into_current_ntb(uint16_t datagram_size
if (ncm_interface.xmit_glue_ntb_datagram_ndx >= CFG_TUD_NCM_IN_MAX_DATAGRAMS_PER_NTB) {
return false;
}
- if (ncm_interface.xmit_glue_ntb->nth.wBlockLength + datagram_size + XMIT_ALIGN_OFFSET(datagram_size) > CFG_TUD_NCM_OUT_NTB_MAX_SIZE) {
+ if (ncm_interface.xmit_glue_ntb->nth.wBlockLength + datagram_size + XMIT_ALIGN_OFFSET(datagram_size) > CFG_TUD_NCM_IN_NTB_MAX_SIZE) {
return false;
}
return true;
@@ -674,7 +674,7 @@ static void recv_transfer_datagram_to_glue_logic(void) {
bool tud_network_can_xmit(uint16_t size) {
TU_LOG_DRV("tud_network_can_xmit(%d)\n", size);
- TU_ASSERT(size <= CFG_TUD_NCM_OUT_NTB_MAX_SIZE - (sizeof(nth16_t) + sizeof(ndp16_t) + 2 * sizeof(ndp16_datagram_t)), false);
+ TU_ASSERT(size <= CFG_TUD_NCM_IN_NTB_MAX_SIZE - (sizeof(nth16_t) + sizeof(ndp16_t) + 2 * sizeof(ndp16_datagram_t)), false);
if (xmit_requested_datagram_fits_into_current_ntb(size) || xmit_setup_next_glue_ntb()) {
// -> everything is fine
@@ -709,7 +709,7 @@ void tud_network_xmit(void *ref, uint16_t arg) {
ntb->nth.wBlockLength += (uint16_t) (size + XMIT_ALIGN_OFFSET(size));
- if (ntb->nth.wBlockLength > CFG_TUD_NCM_OUT_NTB_MAX_SIZE) {
+ if (ntb->nth.wBlockLength > CFG_TUD_NCM_IN_NTB_MAX_SIZE) {
TU_LOG_DRV("(EE) tud_network_xmit: buffer overflow\n"); // must not happen (really)
return;
}
@@ -857,7 +857,8 @@ bool netd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_
// - if there is a free receive buffer, initiate reception
if (!recv_validate_datagram(ncm_interface.recv_tinyusb_ntb, xferred_bytes)) {
// verification failed: ignore NTB and return it to free
- TU_LOG_DRV("(EE) VALIDATION FAILED. WHAT CAN WE DO IN THIS CASE?\n");
+ TU_LOG_DRV("Invalid datatagram. Ignoring NTB\n");
+ recv_put_ntb_into_free_list(ncm_interface.recv_tinyusb_ntb);
} else {
// packet ok -> put it into ready list
recv_put_ntb_into_ready_list(ncm_interface.recv_tinyusb_ntb);
diff --git a/src/osal/osal.h b/src/osal/osal.h
index 8f45ea5c1..38d45da44 100644
--- a/src/osal/osal.h
+++ b/src/osal/osal.h
@@ -63,6 +63,8 @@ typedef void (*osal_task_func_t)( void * );
#include "osal_rtthread.h"
#elif CFG_TUSB_OS == OPT_OS_RTX4
#include "osal_rtx4.h"
+#elif CFG_TUSB_OS == OPT_OS_ZEPHYR
+ #include "osal_zephyr.h"
#elif CFG_TUSB_OS == OPT_OS_CUSTOM
#include "tusb_os_custom.h" // implemented by application
#else
diff --git a/src/osal/osal_zephyr.h b/src/osal/osal_zephyr.h
new file mode 100644
index 000000000..8ecb13c6d
--- /dev/null
+++ b/src/osal/osal_zephyr.h
@@ -0,0 +1,123 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2025 Ha Thach (tinyusb.org)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ */
+#ifndef TUSB_OSAL_ZEPHYR_H
+#define TUSB_OSAL_ZEPHYR_H
+
+#include
+
+//--------------------------------------------------------------------+
+// TASK API
+//--------------------------------------------------------------------+
+TU_ATTR_ALWAYS_INLINE static inline void osal_task_delay(uint32_t msec) {
+ k_msleep(msec);
+}
+
+//--------------------------------------------------------------------+
+// Binary Semaphore API
+//--------------------------------------------------------------------+
+typedef struct k_sem osal_semaphore_def_t, * osal_semaphore_t;
+
+TU_ATTR_ALWAYS_INLINE static inline osal_semaphore_t osal_semaphore_create(osal_semaphore_def_t* semdef) {
+ k_sem_init(semdef, 0, 255);
+ return semdef;
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_semaphore_delete(osal_semaphore_t semd_hdl) {
+ (void) semd_hdl;
+ return true; // nothing to do
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_semaphore_post(osal_semaphore_t sem_hdl, bool in_isr) {
+ (void) in_isr;
+ k_sem_give(sem_hdl);
+ return true;
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_semaphore_wait(osal_semaphore_t sem_hdl, uint32_t msec) {
+ return 0 == k_sem_take(sem_hdl, K_MSEC(msec));
+}
+
+TU_ATTR_ALWAYS_INLINE static inline void osal_semaphore_reset(osal_semaphore_t sem_hdl) {
+ k_sem_reset(sem_hdl);
+}
+
+//--------------------------------------------------------------------+
+// MUTEX API
+//--------------------------------------------------------------------+
+typedef struct k_mutex osal_mutex_def_t, *osal_mutex_t;
+
+TU_ATTR_ALWAYS_INLINE static inline osal_mutex_t osal_mutex_create(osal_mutex_def_t* mdef) {
+ if ( 0 == k_mutex_init(mdef) ) {
+ return mdef;
+ } else {
+ return NULL;
+ }
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_mutex_delete(osal_mutex_t mutex_hdl) {
+ (void) mutex_hdl;
+ return true; // nothing to do
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_mutex_lock(osal_mutex_t mutex_hdl, uint32_t msec) {
+ return 0 == k_mutex_lock(mutex_hdl, K_MSEC(msec));
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_mutex_unlock(osal_mutex_t mutex_hdl) {
+ return 0 == k_mutex_unlock(mutex_hdl);
+}
+
+//--------------------------------------------------------------------+
+// QUEUE API
+//--------------------------------------------------------------------+
+typedef struct k_msgq osal_queue_def_t, * osal_queue_t;
+
+// role device/host is used by OS NONE for mutex (disable usb isr) only
+#define OSAL_QUEUE_DEF(_int_set, _name, _depth, _type) K_MSGQ_DEFINE(_name, sizeof(_type), _depth, 4)
+
+TU_ATTR_ALWAYS_INLINE static inline osal_queue_t osal_queue_create(osal_queue_def_t* qdef) {
+ // K_MSGQ_DEFINE already initializes the queue
+ return (osal_queue_t) qdef;
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_queue_delete(osal_queue_t qhdl) {
+ (void) qhdl;
+ return true;
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_queue_receive(osal_queue_t qhdl, void* data, uint32_t msec) {
+ return 0 == k_msgq_get(qhdl, data, K_MSEC(msec));
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_queue_send(osal_queue_t qhdl, void const* data, bool in_isr) {
+ return 0 == k_msgq_put(qhdl, data, in_isr ? K_NO_WAIT : K_FOREVER);
+}
+
+TU_ATTR_ALWAYS_INLINE static inline bool osal_queue_empty(osal_queue_t qhdl) {
+ return 0 == k_msgq_num_used_get(qhdl);
+}
+
+#endif
diff --git a/src/portable/nordic/nrf5x/dcd_nrf5x.c b/src/portable/nordic/nrf5x/dcd_nrf5x.c
index 5bfedae17..9e5f5117f 100644
--- a/src/portable/nordic/nrf5x/dcd_nrf5x.c
+++ b/src/portable/nordic/nrf5x/dcd_nrf5x.c
@@ -39,8 +39,8 @@
#endif
#include "nrf.h"
-#include "nrf_clock.h"
-#include "nrfx_usbd_errata.h"
+#include "nrfx_clock.h"
+#include "nrf_erratas.h"
#ifdef __GNUC__
#pragma GCC diagnostic pop
@@ -926,7 +926,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
#ifdef NRF52_SERIES // NRF53 does not need this errata
// ERRATA 171, 187, 166
- if (nrfx_usbd_errata_187()) {
+ if (nrf52_errata_187()) {
// CRITICAL_REGION_ENTER();
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
@@ -938,7 +938,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
// CRITICAL_REGION_EXIT();
}
- if (nrfx_usbd_errata_171()) {
+ if (nrf52_errata_171()) {
// CRITICAL_REGION_ENTER();
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
@@ -974,7 +974,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
__DSB(); // for sync
#ifdef NRF52_SERIES
- if (nrfx_usbd_errata_171()) {
+ if (nrf52_errata_171()) {
// CRITICAL_REGION_ENTER();
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
@@ -987,7 +987,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
// CRITICAL_REGION_EXIT();
}
- if (nrfx_usbd_errata_187()) {
+ if (nrf52_errata_187()) {
// CRITICAL_REGION_ENTER();
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
@@ -999,7 +999,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
// CRITICAL_REGION_EXIT();
}
- if (nrfx_usbd_errata_166()) {
+ if (nrf52_errata_166()) {
*((volatile uint32_t*) (NRF_USBD_BASE + 0x800)) = 0x7E3;
*((volatile uint32_t*) (NRF_USBD_BASE + 0x804)) = 0x40;
diff --git a/src/portable/nxp/khci/dcd_khci.c b/src/portable/nxp/khci/dcd_khci.c
index 8398b09bf..3d5e195a9 100644
--- a/src/portable/nxp/khci/dcd_khci.c
+++ b/src/portable/nxp/khci/dcd_khci.c
@@ -565,7 +565,7 @@ void dcd_int_handler(uint8_t rhport)
if (is & USB_ISTAT_SOFTOK_MASK) {
KHCI->ISTAT = USB_ISTAT_SOFTOK_MASK;
- dcd_event_bus_signal(rhport, DCD_EVENT_SOF, true);
+ dcd_event_sof(rhport, tu_u16(KHCI->FRMNUMH, KHCI->FRMNUML), true);
}
if (is & USB_ISTAT_STALL_MASK) {
diff --git a/src/portable/wch/dcd_ch32_usbfs.c b/src/portable/wch/dcd_ch32_usbfs.c
index 4e8e25a00..c248ba14e 100644
--- a/src/portable/wch/dcd_ch32_usbfs.c
+++ b/src/portable/wch/dcd_ch32_usbfs.c
@@ -192,7 +192,8 @@ void dcd_int_handler(uint8_t rhport) {
data.xfer[0][TUSB_DIR_OUT].max_size = 64;
data.xfer[0][TUSB_DIR_IN].max_size = 64;
- dcd_event_bus_signal(rhport, DCD_EVENT_BUS_RESET, true);
+ //dcd_event_bus_reset(rhport, (USBOTG_FS->BASE_CTRL & USBFS_CTRL_LOW_SPEED) ? TUSB_SPEED_LOW : TUSB_SPEED_FULL, true);
+ dcd_event_bus_reset(rhport, (USBOTG_FS->UDEV_CTRL & USBFS_UDEV_CTRL_LOW_SPEED) ? TUSB_SPEED_LOW : TUSB_SPEED_FULL, true);
USBOTG_FS->DEV_ADDR = 0x00;
EP_RX_CTRL(0) = USBFS_EP_R_RES_ACK;
diff --git a/src/tusb_option.h b/src/tusb_option.h
index 8b1a6af01..29fdcb0d6 100644
--- a/src/tusb_option.h
+++ b/src/tusb_option.h
@@ -31,7 +31,7 @@
// Version is release as major.minor.revision eg 1.0.0
#define TUSB_VERSION_MAJOR 0
-#define TUSB_VERSION_MINOR 17
+#define TUSB_VERSION_MINOR 18
#define TUSB_VERSION_REVISION 0
#define TUSB_VERSION_NUMBER (TUSB_VERSION_MAJOR * 10000 + TUSB_VERSION_MINOR * 100 + TUSB_VERSION_REVISION)
@@ -152,7 +152,7 @@
#define OPT_MCU_RX63X 1400 ///< Renesas RX63N/631
#define OPT_MCU_RX65X 1401 ///< Renesas RX65N/RX651
#define OPT_MCU_RX72N 1402 ///< Renesas RX72N
-#define OPT_MCU_RAXXX 1420 ///< Renesas RA generic
+#define OPT_MCU_RAXXX 1403 ///< Renesas RA generic
// Mind Motion
#define OPT_MCU_MM32F327X 1500 ///< Mind Motion MM32F327
@@ -215,6 +215,7 @@
#define OPT_OS_PICO 5 ///< Raspberry Pi Pico SDK
#define OPT_OS_RTTHREAD 6 ///< RT-Thread
#define OPT_OS_RTX4 7 ///< Keil RTX 4
+#define OPT_OS_ZEPHYR 8 ///< Zephyr
//--------------------------------------------------------------------+
// Mode and Speed
diff --git a/test/unit-test/project.yml b/test/unit-test/project.yml
index 7fbbabfe6..6c86b0205 100644
--- a/test/unit-test/project.yml
+++ b/test/unit-test/project.yml
@@ -1,102 +1,226 @@
+# =========================================================================
+# Ceedling - Test-Centered Build System for C
+# ThrowTheSwitch.org
+# Copyright (c) 2010-25 Mike Karlesky, Mark VanderVoord, & Greg Williams
+# SPDX-License-Identifier: MIT
+# =========================================================================
+
---
-
-# Notes:
-# Sample project C code is not presently written to produce a release artifact.
-# As such, release build options are disabled.
-# This sample, therefore, only demonstrates running a collection of unit tests.
-
:project:
- :use_exceptions: TRUE
+ # how to use ceedling. If you're not sure, leave this as `gem` and `?`
+ :which_ceedling: gem
+ :ceedling_version: 1.0.0
+ :verbosity: 3
+
+ # optional features. If you don't need them, keep them turned off for performance
:use_mocks: TRUE
- :use_test_preprocessor: TRUE
- :use_auxiliary_dependencies: TRUE
- :use_deep_dependencies: TRUE
+ :use_test_preprocessor: :mocks # options are :none, :mocks, :tests, or :all
+ :use_deep_dependencies: :all # options are :none, :mocks, :tests, or :all
+ :use_backtrace: :simple # options are :none, :simple, or :gdb
+ :use_decorators: :auto # decorate Ceedling's output text. options are :auto, :all, or :none
+
+ # tweak the way ceedling handles automatic tasks
:build_root: _build
-# :release_build: TRUE
:test_file_prefix: test_
- :which_ceedling: vendor/ceedling
- :ceedling_version: 0.31.1
:default_tasks:
- test:all
-#:test_build:
-# :use_assembly: TRUE
+ # performance options. If your tools start giving mysterious errors, consider
+ # dropping this to 1 to force single-tasking
+ :test_threads: 8
+ :compile_threads: 8
-#:release_build:
-# :output: MyApp.out
-# :use_assembly: FALSE
+ # enable release build (more details in release_build section below)
+ :release_build: FALSE
-:environment:
+# Specify where to find mixins and any that should be enabled automatically
+:mixins:
+ :enabled: []
+ :load_paths: []
+# further details to configure the way Ceedling handles test code
+:test_build:
+ :use_assembly: FALSE
+
+:test_runner:
+ # Insert additional #include statements in a generated runner
+ :includes:
+ - osal.h
+
+# further details to configure the way Ceedling handles release code
+:release_build:
+ :output: MyApp.out
+ :use_assembly: FALSE
+ :artifacts: []
+
+# Plugins are optional Ceedling features which can be enabled. Ceedling supports
+# a variety of plugins which may effect the way things are compiled, reported,
+# or may provide new command options. Refer to the readme in each plugin for
+# details on how to use it.
+:plugins:
+ :load_paths: []
+ :enabled:
+ #- beep # beeps when finished, so you don't waste time waiting for ceedling
+ - module_generator # handy for quickly creating source, header, and test templates
+ #- gcov # test coverage using gcov. Requires gcc, gcov, and a coverage analyzer like gcovr
+ #- bullseye # test coverage using bullseye. Requires bullseye for your platform
+ #- command_hooks # write custom actions to be called at different points during the build process
+ #- compile_commands_json_db # generate a compile_commands.json file
+ #- dependencies # automatically fetch 3rd party libraries, etc.
+ #- subprojects # managing builds and test for static libraries
+ #- fake_function_framework # use FFF instead of CMock
+
+ # Report options (You'll want to choose one stdout option, but may choose multiple stored options if desired)
+ #- report_build_warnings_log
+ #- report_tests_gtestlike_stdout
+ #- report_tests_ide_stdout
+ #- report_tests_log_factory
+ - report_tests_pretty_stdout
+ #- report_tests_raw_output_log
+ #- report_tests_teamcity_stdout
+
+# Specify which reports you'd like from the log factory
+:report_tests_log_factory:
+ :reports:
+ - json
+ - junit
+ - cppunit
+ - html
+
+# override the default extensions for your system and toolchain
:extension:
+ #:header: .h
+ #:source: .c
+ #:assembly: .s
+ #:dependencies: .d
+ #:object: .o
:executable: .out
+ #:testpass: .pass
+ #:testfail: .fail
+ #:subprojects: .a
+# This is where Ceedling should look for your source and test files.
+# see documentation for the many options for specifying this.
:paths:
:test:
- +:test/**
- -:test/support
:source:
- ../../src/**
+ :include:
+ - ../../src/**
:support:
- test/support
+ :libraries: []
+# You can even specify specific files to add or remove from your test
+# and release collections. Usually it's better to use paths and let
+# Ceedling do the work for you!
+:files:
+ :test: []
+ :source: []
+
+# Compilation symbols to be injected into builds
+# See documentation for advanced options:
+# - Test name matchers for different symbols per test executable build
+# - Referencing symbols in multiple lists using advanced YAML
+# - Specifying symbols used during test preprocessing
:defines:
- # in order to add common defines:
- # 1) remove the trailing [] from the :common: section
- # 2) add entries to the :common: section (e.g. :test: has TEST defined)
- :common: &common_defines []
:test:
- _UNITY_TEST_
- #- *common_defines
- :test_preprocess:
- - _UNITY_TEST_
- #- *common_defines
+ :release: []
+ # Enable to inject name of a test as a unique compilation symbol into its respective executable build.
+ :use_test_definition: FALSE
+
+# Configure additional command line flags provided to tools used in each build step
+# :flags:
+# :release:
+# :compile: # Add '-Wall' and '--02' to compilation of all files in release target
+# - -Wall
+# - --O2
+# :test:
+# :compile:
+# '(_|-)special': # Add '-pedantic' to compilation of all files in all test executables with '_special' or '-special' in their names
+# - -pedantic
+# '*': # Add '-foo' to compilation of all files in all test executables
+# - -foo
+
+# Configuration Options specific to CMock. See CMock docs for details
:cmock:
- :mock_prefix: mock_
- :when_no_prototypes: :warn
- :enforce_strict_ordering: TRUE
- :plugins:
+ # Core configuration
+ :plugins: # What plugins should be used by CMock?
- :ignore
- :ignore_arg
- :return_thru_ptr
- :callback
- :array
- :treat_as:
+ :verbosity: 2 # the options being 0 errors only, 1 warnings and errors, 2 normal info, 3 verbose
+ :when_no_prototypes: :warn # the options being :ignore, :warn, or :error
+
+ # File configuration
+ :skeleton_path: '' # Subdirectory to store stubs when generated (default: '')
+ :mock_prefix: 'mock_' # Prefix to append to filenames for mocks
+ :mock_suffix: '' # Suffix to append to filenames for mocks
+
+ # Parser configuration
+ :strippables: ['(?:__attribute__\s*\([ (]*.*?[ )]*\)+)']
+ :attributes:
+ - __ramfunc
+ - __irq
+ - __fiq
+ - register
+ - extern
+ :c_calling_conventions:
+ - __stdcall
+ - __cdecl
+ - __fastcall
+ :treat_externs: :exclude # the options being :include or :exclud
+ :treat_inlines: :exclude # the options being :include or :exclud
+
+ # Type handling configuration
+ #:unity_helper_path: '' # specify a string of where to find a unity_helper.h file to discover custom type assertions
+ :treat_as: # optionally add additional types to map custom types
uint8: HEX8
uint16: HEX16
uint32: UINT32
int8: INT8
bool: UINT8
+ #:treat_as_array: {} # hint to cmock that these types are pointers to something
+ #:treat_as_void: [] # hint to cmock that these types are actually aliases of void
+ :memcmp_if_unknown: true # allow cmock to use the memory comparison assertions for unknown types
+ :when_ptr: :compare_data # hint to cmock how to handle pointers in general, the options being :compare_ptr, :compare_data, or :smart
-# Add -gcov to the plugins list to make sure of the gcov plugin
-# You will need to have gcov and gcovr both installed to make it work.
-# For more information on these options, see docs in plugins/gcov
-:gcov:
- :html_report: TRUE
- :html_report_type: detailed
- :html_medium_threshold: 75
- :html_high_threshold: 90
- :xml_report: FALSE
+ # Mock generation configuration
+ :weak: '' # Symbol to use to declare weak functions
+ :enforce_strict_ordering: true # Do we want cmock to enforce ordering of all function calls?
+ :fail_on_unexpected_calls: true # Do we want cmock to fail when it encounters a function call that wasn't expected?
+ :callback_include_count: true # Do we want cmock to include the number of calls to this callback, when using callbacks?
+ :callback_after_arg_check: false # Do we want cmock to enforce an argument check first when using a callback?
+ #:includes: [] # You can add additional includes here, or specify the location with the options below
+ #:includes_h_pre_orig_header: []
+ #:includes_h_post_orig_header: []
+ #:includes_c_pre_header: []
+ #:includes_c_post_header: []
+ #:array_size_type: [] # Specify a type or types that should be used for array lengths
+ #:array_size_name: 'size|len' # Specify a name or names that CMock might automatically recognize as the length of an array
+ :exclude_setjmp_h: false # Don't use setjmp when running CMock. Note that this might result in late reporting or out-of-order failures.
-:tools:
- :test_compiler:
- :executable: gcc
- :name: 'gcc compiler'
- :arguments:
- - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE #expands to -I search paths
- - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR #expands to -I search paths
- - -D$: COLLECTION_DEFINES_TEST_AND_VENDOR #expands to all -D defined symbols
- #- -fsanitize=address
- - -c ${1} #source code input file (Ruby method call param list sub)
- - -o ${2} #object file output (Ruby method call param list sub)
- :test_linker:
- :executable: gcc
- :name: 'gcc linker'
- :arguments:
- #- -fsanitize=address
- - ${1} #list of object files to link (Ruby method call param list sub)
- - -o ${2} #executable file output (Ruby method call param list sub)
+# Configuration options specific to Unity.
+:unity:
+ :defines:
+ - UNITY_EXCLUDE_FLOAT
+
+# You can optionally have ceedling create environment variables for you before
+# performing the rest of its tasks.
+:environment: []
+# :environment:
+# # List enforces order allowing later to reference earlier with inline Ruby substitution
+# - :var1: value
+# - :var2: another value
+# - :path: # Special PATH handling with platform-specific path separators
+# - #{ENV['PATH']} # Environment variables can use inline Ruby substitution
+# - /another/path/to/include
# LIBRARIES
# These libraries are automatically injected into the build process. Those specified as
@@ -104,19 +228,210 @@
# tests or releases. These options are MERGED with the options in supplemental yaml files.
:libraries:
:placement: :end
- :flag: "${1}" # or "-L ${1}" for example
- :common: &common_libraries []
- :test:
- #- *common_libraries
- :release:
- #- *common_libraries
+ :flag: "-l${1}"
+ :path_flag: "-L ${1}"
+ :system: [] # for example, you might list 'm' to grab the math library
+ :test: []
+ :release: []
-:plugins:
- :load_paths:
- - vendor/ceedling/plugins
- :enabled:
- - stdout_pretty_tests_report
- - module_generator
- - raw_output_report
- - colour_report
+################################################################
+# PLUGIN CONFIGURATION
+################################################################
+
+# Add -gcov to the plugins list to make sure of the gcov plugin
+# You will need to have gcov and gcovr both installed to make it work.
+# For more information on these options, see docs in plugins/gcov
+:gcov:
+ :summaries: TRUE # Enable simple coverage summaries to console after tests
+ :report_task: FALSE # Disabled dedicated report generation task (this enables automatic report generation)
+ :utilities:
+ - gcovr # Use gcovr to create the specified reports (default).
+ #- ReportGenerator # Use ReportGenerator to create the specified reports.
+ :reports: # Specify one or more reports to generate.
+ # Make an HTML summary report.
+ - HtmlBasic
+ # - HtmlDetailed
+ # - Text
+ # - Cobertura
+ # - SonarQube
+ # - JSON
+ # - HtmlInline
+ # - HtmlInlineAzure
+ # - HtmlInlineAzureDark
+ # - HtmlChart
+ # - MHtml
+ # - Badges
+ # - CsvSummary
+ # - Latex
+ # - LatexSummary
+ # - PngChart
+ # - TeamCitySummary
+ # - lcov
+ # - Xml
+ # - XmlSummary
+ :gcovr:
+ # :html_artifact_filename: TestCoverageReport.html
+ # :html_title: Test Coverage Report
+ :html_medium_threshold: 75
+ :html_high_threshold: 90
+ # :html_absolute_paths: TRUE
+ # :html_encoding: UTF-8
+
+# :module_generator:
+# :project_root: ./
+# :source_root: source/
+# :inc_root: includes/
+# :test_root: tests/
+# :naming: :snake #options: :bumpy, :camel, :caps, or :snake
+# :includes:
+# :tst: []
+# :src: []
+# :boilerplates:
+# :src: ""
+# :inc: ""
+# :tst: ""
+
+# :dependencies:
+# :libraries:
+# - :name: WolfSSL
+# :source_path: third_party/wolfssl/source
+# :build_path: third_party/wolfssl/build
+# :artifact_path: third_party/wolfssl/install
+# :fetch:
+# :method: :zip
+# :source: \\shared_drive\third_party_libs\wolfssl\wolfssl-4.2.0.zip
+# :environment:
+# - CFLAGS+=-DWOLFSSL_DTLS_ALLOW_FUTURE
+# :build:
+# - "autoreconf -i"
+# - "./configure --enable-tls13 --enable-singlethreaded"
+# - make
+# - make install
+# :artifacts:
+# :static_libraries:
+# - lib/wolfssl.a
+# :dynamic_libraries:
+# - lib/wolfssl.so
+# :includes:
+# - include/**
+
+# :subprojects:
+# :paths:
+# - :name: libprojectA
+# :source:
+# - ./subprojectA/source
+# :include:
+# - ./subprojectA/include
+# :build_root: ./subprojectA/build
+# :defines: []
+
+# :command_hooks:
+# :pre_mock_preprocess:
+# :post_mock_preprocess:
+# :pre_test_preprocess:
+# :post_test_preprocess:
+# :pre_mock_generate:
+# :post_mock_generate:
+# :pre_runner_generate:
+# :post_runner_generate:
+# :pre_compile_execute:
+# :post_compile_execute:
+# :pre_link_execute:
+# :post_link_execute:
+# :pre_test_fixture_execute:
+# :post_test_fixture_execute:
+# :pre_test:
+# :post_test:
+# :pre_release:
+# :post_release:
+# :pre_build:
+# :post_build:
+# :post_error:
+
+################################################################
+# TOOLCHAIN CONFIGURATION
+################################################################
+
+#:tools:
+# Ceedling defaults to using gcc for compiling, linking, etc.
+# As [:tools] is blank, gcc will be used (so long as it's in your system path)
+# See documentation to configure a given toolchain for use
+#:tools:
+# :test_compiler:
+# :executable: gcc
+# :name: 'gcc compiler'
+# :arguments:
+# - -I"$": COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE #expands to -I search paths
+# - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR #expands to -I search paths
+# - -D$: COLLECTION_DEFINES_TEST_AND_VENDOR #expands to all -D defined symbols
+# #- -fsanitize=address
+# - -c ${1} #source code input file (Ruby method call param list sub)
+# - -o ${2} #object file output (Ruby method call param list sub)
+# :test_linker:
+# :executable: gcc
+# :name: 'gcc linker'
+# :arguments:
+# #- -fsanitize=address
+# - ${1} #list of object files to link (Ruby method call param list sub)
+# - -o ${2} #executable file output (Ruby method call param list sub)
+# :test_compiler:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :test_linker:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :test_assembler:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :test_fixture:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :test_includes_preprocessor:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :test_file_preprocessor:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :test_file_preprocessor_directives:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :test_dependencies_generator:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :release_compiler:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :release_linker:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :release_assembler:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
+# :release_dependencies_generator:
+# :executable:
+# :arguments: []
+# :name:
+# :optional: FALSE
...
diff --git a/test/unit-test/test/device/msc/test_msc_device.c b/test/unit-test/test/device/msc/test_msc_device.c
index 55b690313..3ab46b0f9 100644
--- a/test/unit-test/test/device/msc/test_msc_device.c
+++ b/test/unit-test/test/device/msc/test_msc_device.c
@@ -32,8 +32,8 @@
#include "tusb_fifo.h"
#include "tusb.h"
#include "usbd.h"
-TEST_FILE("usbd_control.c")
-TEST_FILE("msc_device.c")
+TEST_SOURCE_FILE("usbd_control.c")
+TEST_SOURCE_FILE("msc_device.c")
// Mock File
#include "mock_dcd.h"
diff --git a/test/unit-test/test/device/usbd/test_usbd.c b/test/unit-test/test/device/usbd/test_usbd.c
index e7c6a8578..f0153da3f 100644
--- a/test/unit-test/test/device/usbd/test_usbd.c
+++ b/test/unit-test/test/device/usbd/test_usbd.c
@@ -29,7 +29,7 @@
#include "tusb_fifo.h"
#include "tusb.h"
#include "usbd.h"
-TEST_FILE("usbd_control.c")
+TEST_SOURCE_FILE("usbd_control.c")
// Mock File
#include "mock_dcd.h"
diff --git a/test/unit-test/vendor/ceedling/bin/ceedling b/test/unit-test/vendor/ceedling/bin/ceedling
deleted file mode 100644
index b317db2f1..000000000
--- a/test/unit-test/vendor/ceedling/bin/ceedling
+++ /dev/null
@@ -1,350 +0,0 @@
-#!/usr/bin/env ruby
-
-#these are always used
-require 'rubygems'
-require 'fileutils'
-
-# Check for the main project file (either the one defined in the ENV or the default)
-main_filepath = ENV['CEEDLING_MAIN_PROJECT_FILE']
-project_found = (!main_filepath.nil? && File.exists?(main_filepath))
-if (!project_found)
- main_filepath = "project.yml"
- project_found = File.exists?(main_filepath)
-end
-
-def is_windows?
- return ((RbConfig::CONFIG['host_os'] =~ /mswin|mingw/) ? true : false) if defined?(RbConfig)
- return ((Config::CONFIG['host_os'] =~ /mswin|mingw/) ? true : false)
-end
-
-unless (project_found)
-#===================================== We Do Not Have A Project ================================================
-
- puts "Welcome to Ceedling!"
- require 'thor'
-
- def here
- File.dirname(__FILE__) + "/.."
- end
-
- class CeedlingTasks < Thor
- include Thor::Actions
-
- desc "new PROJECT_NAME", "create a new ceedling project"
- method_option :docs, :type => :boolean, :default => false, :desc => "Add docs in project vendor directory"
- method_option :local, :type => :boolean, :default => false, :desc => "Create a copy of Ceedling in the project vendor directory"
- method_option :gitignore, :type => :boolean, :default => false, :desc => "Create a gitignore file for ignoring ceedling generated files"
- method_option :no_configs, :type => :boolean, :default => false, :desc => "Don't install starter configuration files"
- method_option :noconfigs, :type => :boolean, :default => false
-
- #deprecated:
- method_option :no_docs, :type => :boolean, :default => false
- method_option :nodocs, :type => :boolean, :default => false
- method_option :as_gem, :type => :boolean, :default => false
- method_option :asgem, :type => :boolean, :default => false
- method_option :with_ignore, :type => :boolean, :default => false
- method_option :withignore, :type => :boolean, :default => false
- def new(name, silent = false)
- copy_assets_and_create_structure(name, silent, false, options)
- end
-
- desc "upgrade PROJECT_NAME", "upgrade ceedling for a project (not req'd if gem used)"
- def upgrade(name, silent = false)
- as_local = true
- begin
- require "yaml"
- as_local = (YAML.load_file(File.join(name, "project.yml"))[:project][:which_ceedling] != 'gem')
- rescue
- raise "ERROR: Could not find valid project file '#{yaml_path}'"
- end
- found_docs = File.exists?( File.join(name, "docs", "CeedlingPacket.md") )
- copy_assets_and_create_structure(name, silent, true, {:upgrade => true, :no_configs => true, :local => as_local, :docs => found_docs})
- end
-
- no_commands do
- def copy_assets_and_create_structure(name, silent=false, force=false, options = {})
-
- puts "WARNING: --no_docs deprecated. It is now the default. Specify -docs if you want docs installed." if (options[:no_docs] || options[:nodocs])
- puts "WARNING: --as_gem deprecated. It is now the default. Specify -local if you want ceedling installed to this project." if (options[:as_gem] || options[:asgem])
- puts "WARNING: --with_ignore deprecated. It is now called -gitignore" if (options[:with_ignore] || options[:with_ignore])
-
- use_docs = options[:docs] || false
- use_configs = !(options[:no_configs] || options[:noconfigs] || false)
- use_gem = !(options[:local])
- use_ignore = options[:gitignore] || false
- is_upgrade = options[:upgrade] || false
-
- ceedling_path = File.join(name, 'vendor', 'ceedling')
- source_path = File.join(name, 'src')
- test_path = File.join(name, 'test')
- test_support_path = File.join(name, 'test/support')
-
- # If it's not an upgrade, make sure we have the paths we expect
- if (!is_upgrade)
- [source_path, test_path, test_support_path].each do |d|
- FileUtils.mkdir_p d
- end
- end
-
- # Generate gitkeep in test support path
- FileUtils.touch(File.join(test_support_path, '.gitkeep'))
-
- # If documentation requested, create a place to dump them and do so
- doc_path = ""
- if use_docs
- doc_path = use_gem ? File.join(name, 'docs') : File.join(ceedling_path, 'docs')
- FileUtils.mkdir_p doc_path
-
- in_doc_path = lambda {|f| File.join(doc_path, f)}
-
- # Add documentation from main projects to list
- doc_files = {}
- ['docs','vendor/unity/docs','vendor/cmock/docs','vendor/cexception/docs'].each do |p|
- Dir[ File.expand_path(File.join(here, p, '*.md')) ].each do |f|
- doc_files[ File.basename(f) ] = f unless(doc_files.include? f)
- end
- end
-
- # Add documentation from plugins to list
- Dir[ File.join(here, 'plugins/**/README.md') ].each do |plugin_path|
- k = "plugin_" + plugin_path.split(/\\|\//)[-2] + ".md"
- doc_files[ k ] = File.expand_path(plugin_path)
- end
-
- # Copy all documentation
- doc_files.each_pair do |k, v|
- copy_file(v, in_doc_path.call(k), :force => force)
- end
- end
-
- # If installed locally to project, copy ceedling, unity, cmock, & supports to vendor
- unless use_gem
- FileUtils.mkdir_p ceedling_path
-
- #copy full folders from ceedling gem into project
- %w{plugins lib bin}.map do |f|
- {:src => f, :dst => File.join(ceedling_path, f)}
- end.each do |f|
- directory(f[:src], f[:dst], :force => force)
- end
-
- # mark ceedling as an executable
- File.chmod(0755, File.join(ceedling_path, 'bin', 'ceedling')) unless is_windows?
-
- #copy necessary subcomponents from ceedling gem into project
- sub_components = [
- {:src => 'vendor/c_exception/lib/', :dst => 'vendor/c_exception/lib'},
- {:src => 'vendor/cmock/config/', :dst => 'vendor/cmock/config'},
- {:src => 'vendor/cmock/lib/', :dst => 'vendor/cmock/lib'},
- {:src => 'vendor/cmock/src/', :dst => 'vendor/cmock/src'},
- {:src => 'vendor/diy/lib', :dst => 'vendor/diy/lib'},
- {:src => 'vendor/unity/auto/', :dst => 'vendor/unity/auto'},
- {:src => 'vendor/unity/src/', :dst => 'vendor/unity/src'},
- ]
-
- sub_components.each do |c|
- directory(c[:src], File.join(ceedling_path, c[:dst]), :force => force)
- end
- end
-
- # We're copying in a configuration file if we haven't said not to
- if (use_configs)
- dst_yaml = File.join(name, 'project.yml')
- src_yaml = if use_gem
- File.join(here, 'assets', 'project_as_gem.yml')
- else
- if is_windows?
- copy_file(File.join('assets', 'ceedling.cmd'), File.join(name, 'ceedling.cmd'), :force => force)
- else
- copy_file(File.join('assets', 'ceedling'), File.join(name, 'ceedling'), :force => force)
- File.chmod(0755, File.join(name, 'ceedling'))
- end
- File.join(here, 'assets', 'project_with_guts.yml')
- end
-
- # Perform the actual clone of the config file, while updating the version
- File.open(dst_yaml,'w') do |dst|
- require File.expand_path(File.join(File.dirname(__FILE__),"..","lib","ceedling","version.rb"))
- dst << File.read(src_yaml).gsub(":ceedling_version: '?'",":ceedling_version: #{Ceedling::Version::CEEDLING}")
- puts " create #{dst_yaml}"
- end
- end
-
- # Copy the gitignore file if requested
- if (use_ignore)
- copy_file(File.join('assets', 'default_gitignore'), File.join(name, '.gitignore'), :force => force)
- end
-
- unless silent
- puts "\n"
- puts "Project '#{name}' #{force ? "upgraded" : "created"}!"
- puts " - Tool documentation is located in #{doc_path}" if use_docs
- puts " - Execute 'ceedling help' from #{name} to view available test & build tasks"
- puts ''
- end
- end
- end
-
- desc "examples", "list available example projects"
- def examples()
- puts "Available sample projects:"
- FileUtils.cd(File.join(here, "examples")) do
- Dir["*"].each {|proj| puts " #{proj}"}
- end
- end
-
- desc "example PROJ_NAME [DEST]", "new specified example project (in DEST, if specified)"
- def example(proj_name, dest=nil)
- if dest.nil? then dest = proj_name end
-
- copy_assets_and_create_structure(dest, true, false, {:local=>true, :docs=>true})
-
- dest_src = File.join(dest,'src')
- dest_test = File.join(dest,'test')
- dest_project = File.join(dest,'project.yml')
-
- directory "examples/#{proj_name}/src", dest_src
- directory "examples/#{proj_name}/test", dest_test
- remove_file dest_project
- copy_file "examples/#{proj_name}/project.yml", dest_project
-
- puts "\n"
- puts "Example project '#{proj_name}' created!"
- puts " - Tool documentation is located in vendor/ceedling/docs"
- puts " - Execute 'ceedling help' to view available test & build tasks"
- puts ''
- end
-
- desc "version", "return the version of the tools installed"
- def version()
- require File.expand_path(File.join(File.dirname(__FILE__),"..","lib","ceedling","version.rb"))
- puts " Ceedling:: #{Ceedling::Version::CEEDLING}"
- puts " CMock:: #{Ceedling::Version::CMOCK}"
- puts " Unity:: #{Ceedling::Version::UNITY}"
- puts " CException:: #{Ceedling::Version::CEXCEPTION}"
- end
- end
-
- if (ARGV[0] =~ /^\-T$/)
- puts "\n(No Project Detected, Therefore Showing Options to Create Projects)"
- CeedlingTasks.tasks.each_pair do |k,v|
- puts v.usage.ljust(25,' ') + v.description
- end
- puts "\n"
- else
- CeedlingTasks.source_root here
- CeedlingTasks.start
- end
-
-#===================================== We Have A Project Already ================================================
-else
- require 'yaml'
- require 'rbconfig'
-
- #determine platform
- platform = begin
- case(RbConfig::CONFIG['host_os'])
- when /mswin|mingw|cygwin/i
- :mswin
- when /darwin/
- :osx
- else
- :linux
- end
- rescue
- :linux
- end
-
- #create our default meta-runner option set
- options = {
- :pretest => nil,
- :args => [],
- :add_path => [],
- :path_connector => (platform == :mswin) ? ";" : ":",
- :graceful_fail => false,
- :which_ceedling => (Dir.exists?("vendor/ceedling") ? "vendor/ceedling" : 'gem'),
- :default_tasks => [ 'test:all' ],
- :list_tasks => false
- }
-
- #guess that we need a special script file first if it exists
- if (platform == :mswin)
- options[:pretest] = File.exists?("#{ platform.to_s }_setup.bat") ? "#{ platform.to_s }_setup.bat" : nil
- else
- options[:pretest] = File.exists?("#{ platform.to_s }_setup.sh") ? "source #{ platform.to_s }_setup.sh" : nil
- end
-
- #merge in project settings if they can be found here
- yaml_options = YAML.load_file(main_filepath)
- if (yaml_options[:paths])
- options[:add_path] = yaml_options[:paths][:tools] || []
- else
- options[:add_path] = []
- end
- options[:graceful_fail] = yaml_options[:graceful_fail] if yaml_options[:graceful_fail]
- options[:which_ceedling] = yaml_options[:project][:which_ceedling] if (yaml_options[:project] && yaml_options[:project][:which_ceedling])
- options[:default_tasks] = yaml_options[:default_tasks] if yaml_options[:default_tasks]
-
- #sort through command line options
- ARGV.each do |v|
- case(v)
- when /^(?:new|examples?|templates?)$/
- puts "\nOops. You called ceedling with argument '#{v}'.\n" +
- " This is an operation that will create a new project... \n" +
- " but it looks like you're already in a project. If you really \n" +
- " want to do this, try moving to an empty folder.\n\n"
- abort
- when /^help$/
- options[:list_tasks] = true
- when /^-T$/
- options[:list_tasks] = true
- when /^--tasks$/
- options[:list_tasks] = true
- when /^project:(\w+)/
- ENV['CEEDLING_USER_PROJECT_FILE'] = "#{$1}.yml"
- else
- options[:args].push(v)
- end
- end
-
- #add to the path
- if (options[:add_path] && !options[:add_path].empty?)
- path = ENV["PATH"]
- options[:add_path].each do |p|
- f = File.expand_path(File.dirname(__FILE__),p)
- path = (f + options[:path_connector] + path) unless path.include? f
- end
- ENV["PATH"] = path
- end
-
- # Load Ceedling (either through the rakefile OR directly)
- if (File.exists?("rakefile.rb"))
- load 'rakefile.rb'
- else
- if (options[:which_ceedling] == 'gem')
- require 'ceedling'
- else
- load "#{options[:which_ceedling]}/lib/ceedling.rb"
- end
- Ceedling.load_project
- end
-
- Rake.application.standard_exception_handling do
- if options[:list_tasks]
- # Display helpful task list when requested. This required us to dig into Rake internals a bit
- Rake.application.define_singleton_method(:name=) {|n| @name = n}
- Rake.application.name = 'ceedling'
- Rake.application.options.show_tasks = :tasks
- Rake.application.options.show_task_pattern = /^(?!.*build).*$/
- Rake.application.display_tasks_and_comments()
- else
- task :default => options[:default_tasks]
-
- # Run our Tasks!
- Rake.application.collect_command_line_tasks(options[:args])
- Rake.application.top_level
- end
- end
- true
-#===================================================================================================================
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling.rb b/test/unit-test/vendor/ceedling/lib/ceedling.rb
deleted file mode 100644
index 063cfddd5..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-##
-# This module defines the interface for interacting with and loading a project
-# with Ceedling.
-module Ceedling
- ##
- # Returns the location where the gem is installed.
- # === Return
- # _String_ - The location where the gem lives.
- def self.location
- File.join( File.dirname(__FILE__), '..')
- end
-
- ##
- # Return the path to the "built-in" plugins.
- # === Return
- # _String_ - The path where the default plugins live.
- def self.load_path
- File.join( self.location, 'plugins')
- end
-
- ##
- # Return the path to the Ceedling Rakefile
- # === Return
- # _String_
- def self.rakefile
- File.join( self.location, 'lib', 'ceedling', 'rakefile.rb' )
- end
-
- ##
- # This method selects the project file that Ceedling will use by setting the
- # CEEDLING_MAIN_PROJECT_FILE environment variable before loading the ceedling
- # rakefile. A path supplied as an argument to this method will override the
- # current value of the environment variable. If no path is supplied as an
- # argument then the existing value of the environment variable is used. If
- # the environment variable has not been set and no argument has been supplied
- # then a default path of './project.yml' will be used.
- #
- # === Arguments
- # +options+ _Hash_::
- # A hash containing the options for ceedling. Currently the following
- # options are supported:
- # * +config+ - The path to the project YAML configuration file.
- # * +root+ - The root of the project directory.
- # * +prefix+ - A prefix to prepend to plugin names in order to determine the
- # corresponding gem name.
- # * +plugins+ - The list of ceedling plugins to load
- def self.load_project(options = {})
- # Make sure our path to the yaml file is setup
- if options.has_key? :config
- ENV['CEEDLING_MAIN_PROJECT_FILE'] = options[:config]
- elsif ENV['CEEDLING_MAIN_PROJECT_FILE'].nil?
- ENV['CEEDLING_MAIN_PROJECT_FILE'] = './project.yml'
- end
-
- # Register the plugins
- if options.has_key? :plugins
- options[:plugins].each do |plugin|
- register_plugin( plugin, options[:prefix] )
- end
- end
-
- # Define the root of the project if specified
- Object.const_set('PROJECT_ROOT', options[:root]) if options.has_key? :root
-
- # Load ceedling
- load "#{self.rakefile}"
- end
-
- ##
- # Register a plugin for ceedling to use when a project is loaded. This method
- # *must* be called prior to calling the _load_project_ method.
- #
- # This method is intended to be used for loading plugins distributed via the
- # RubyGems mechanism. As such, the following gem structure is assumed for
- # plugins.
- #
- # * The gem name must be prefixed with 'ceedling-' followed by the plugin
- # name (ex. 'ceedling-bullseye')
- #
- # * The contents of the plugin must be installed into a subdirectory of
- # the gem with the same name as the plugin (ex. 'bullseye/')
- #
- # === Arguments
- # +name+ _String_:: The name of the plugin to load.
- # +prefix+ _String_::
- # (optional, default = nil) The prefix to use for the full gem name.
- def self.register_plugin(name, prefix=nil)
- # Figure out the full name of the gem and location
- prefix ||= 'ceedling-'
- gem_name = prefix + name
- gem_dir = Gem::Specification.find_by_name(gem_name).gem_dir()
-
- # Register the plugin with Ceedling
- require 'ceedling/defaults'
- DEFAULT_CEEDLING_CONFIG[:plugins][:enabled] << name
- DEFAULT_CEEDLING_CONFIG[:plugins][:load_paths] << gem_dir
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/build_invoker_utils.rb b/test/unit-test/vendor/ceedling/lib/ceedling/build_invoker_utils.rb
deleted file mode 100644
index 31abe6d99..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/build_invoker_utils.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'ceedling/constants'
-
-##
-# Utilities for raiser and reporting errors during building.
-class BuildInvokerUtils
-
- constructor :configurator, :streaminator
-
- ##
- # Processes exceptions and tries to display a useful message for the user.
- #
- # ==== Attributes
- #
- # * _exception_: The exception given by a rescue statement.
- # * _context_: A symbol representing where in the build the exception
- # occurs.
- # * _test_build_: A bool to signify if the exception occurred while building
- # from test or source.
- #
- def process_exception(exception, context, test_build=true)
- if (exception.message =~ /Don't know how to build task '(.+)'/i)
- error_header = "ERROR: Rake could not find file referenced in source"
- error_header += " or test" if (test_build)
- error_header += ": '#{$1}'. Possible stale dependency."
-
- @streaminator.stderr_puts( error_header )
-
- if (@configurator.project_use_deep_dependencies)
- help_message = "Try fixing #include statements or adding missing file. Then run '#{REFRESH_TASK_ROOT}#{context.to_s}' task and try again."
- @streaminator.stderr_puts( help_message )
- end
-
- raise ''
- else
- raise exception
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/cacheinator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/cacheinator.rb
deleted file mode 100644
index fd7451fa7..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/cacheinator.rb
+++ /dev/null
@@ -1,47 +0,0 @@
-
-class Cacheinator
-
- constructor :cacheinator_helper, :file_path_utils, :file_wrapper, :yaml_wrapper
-
- def cache_test_config(hash)
- @yaml_wrapper.dump( @file_path_utils.form_test_build_cache_path( INPUT_CONFIGURATION_CACHE_FILE), hash )
- end
-
- def cache_release_config(hash)
- @yaml_wrapper.dump( @file_path_utils.form_release_build_cache_path( INPUT_CONFIGURATION_CACHE_FILE ), hash )
- end
-
-
- def diff_cached_test_file( filepath )
- cached_filepath = @file_path_utils.form_test_build_cache_path( filepath )
-
- if (@file_wrapper.exist?( cached_filepath ) and (!@file_wrapper.compare( filepath, cached_filepath )))
- @file_wrapper.cp(filepath, cached_filepath, {:preserve => false})
- return filepath
- elsif (!@file_wrapper.exist?( cached_filepath ))
- @file_wrapper.cp(filepath, cached_filepath, {:preserve => false})
- return filepath
- end
-
- return cached_filepath
- end
-
- def diff_cached_test_config?(hash)
- cached_filepath = @file_path_utils.form_test_build_cache_path(INPUT_CONFIGURATION_CACHE_FILE)
-
- return @cacheinator_helper.diff_cached_config?( cached_filepath, hash )
- end
-
- def diff_cached_test_defines?(files)
- cached_filepath = @file_path_utils.form_test_build_cache_path(DEFINES_DEPENDENCY_CACHE_FILE)
-
- return @cacheinator_helper.diff_cached_defines?( cached_filepath, files )
- end
-
- def diff_cached_release_config?(hash)
- cached_filepath = @file_path_utils.form_release_build_cache_path(INPUT_CONFIGURATION_CACHE_FILE)
-
- return @cacheinator_helper.diff_cached_config?( cached_filepath, hash )
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/cacheinator_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/cacheinator_helper.rb
deleted file mode 100644
index b7fa5863f..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/cacheinator_helper.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-
-class CacheinatorHelper
-
- constructor :file_wrapper, :yaml_wrapper
-
- def diff_cached_config?(cached_filepath, hash)
- return false if ( not @file_wrapper.exist?(cached_filepath) )
- return true if (@yaml_wrapper.load(cached_filepath) != hash)
- return false
- end
-
- def diff_cached_defines?(cached_filepath, files)
- changed_defines = false
- current_defines = COLLECTION_DEFINES_TEST_AND_VENDOR.reject(&:empty?)
-
- current_dependencies = Hash[files.collect { |source| [source, current_defines.dup] }]
- if not @file_wrapper.exist?(cached_filepath)
- @yaml_wrapper.dump(cached_filepath, current_dependencies)
- return changed_defines
- end
-
- dependencies = @yaml_wrapper.load(cached_filepath)
- common_dependencies = current_dependencies.select { |file, defines| dependencies.has_key?(file) }
-
- if dependencies.values_at(*common_dependencies.keys) != common_dependencies.values
- changed_defines = true
- end
-
- dependencies.merge!(current_dependencies)
- @yaml_wrapper.dump(cached_filepath, dependencies)
-
- return changed_defines
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/cmock_builder.rb b/test/unit-test/vendor/ceedling/lib/ceedling/cmock_builder.rb
deleted file mode 100644
index 82ef96135..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/cmock_builder.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'cmock'
-
-class CmockBuilder
-
- attr_accessor :cmock
-
- def setup
- @cmock = nil
- end
-
- def manufacture(cmock_config)
- @cmock = CMock.new(cmock_config)
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/configurator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/configurator.rb
deleted file mode 100644
index 8dc11aa5a..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/configurator.rb
+++ /dev/null
@@ -1,381 +0,0 @@
-require 'ceedling/defaults'
-require 'ceedling/constants'
-require 'ceedling/file_path_utils'
-require 'deep_merge'
-
-
-
-class Configurator
-
- attr_reader :project_config_hash, :script_plugins, :rake_plugins
- attr_accessor :project_logging, :project_debug, :project_verbosity, :sanity_checks
-
- constructor(:configurator_setup, :configurator_builder, :configurator_plugins, :cmock_builder, :yaml_wrapper, :system_wrapper) do
- @project_logging = false
- @project_debug = false
- @project_verbosity = Verbosity::NORMAL
- @sanity_checks = TestResultsSanityChecks::NORMAL
- end
-
- def setup
- # special copy of cmock config to provide to cmock for construction
- @cmock_config_hash = {}
-
- # note: project_config_hash is an instance variable so constants and accessors created
- # in eval() statements in build() have something of proper scope and persistence to reference
- @project_config_hash = {}
- @project_config_hash_backup = {}
-
- @script_plugins = []
- @rake_plugins = []
- end
-
-
- def replace_flattened_config(config)
- @project_config_hash.merge!(config)
- @configurator_setup.build_constants_and_accessors(@project_config_hash, binding())
- end
-
-
- def store_config
- @project_config_hash_backup = @project_config_hash.clone
- end
-
-
- def restore_config
- @project_config_hash = @project_config_hash_backup
- @configurator_setup.build_constants_and_accessors(@project_config_hash, binding())
- end
-
-
- def reset_defaults(config)
- [:test_compiler,
- :test_linker,
- :test_fixture,
- :test_includes_preprocessor,
- :test_file_preprocessor,
- :test_file_preprocessor_directives,
- :test_dependencies_generator,
- :release_compiler,
- :release_assembler,
- :release_linker,
- :release_dependencies_generator].each do |tool|
- config[:tools].delete(tool) if (not (config[:tools][tool].nil?))
- end
- end
-
-
- # The default values defined in defaults.rb (eg. DEFAULT_TOOLS_TEST) are populated
- # into @param config
- def populate_defaults(config)
- new_config = DEFAULT_CEEDLING_CONFIG.deep_clone
- new_config.deep_merge!(config)
- config.replace(new_config)
-
- @configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST )
- @configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST_PREPROCESSORS ) if (config[:project][:use_test_preprocessor])
- @configurator_builder.populate_defaults( config, DEFAULT_TOOLS_TEST_DEPENDENCIES ) if (config[:project][:use_deep_dependencies])
-
- @configurator_builder.populate_defaults( config, DEFAULT_TOOLS_RELEASE ) if (config[:project][:release_build])
- @configurator_builder.populate_defaults( config, DEFAULT_TOOLS_RELEASE_ASSEMBLER ) if (config[:project][:release_build] and config[:release_build][:use_assembly])
- @configurator_builder.populate_defaults( config, DEFAULT_TOOLS_RELEASE_DEPENDENCIES ) if (config[:project][:release_build] and config[:project][:use_deep_dependencies])
- end
-
-
- def populate_unity_defaults(config)
- unity = config[:unity] || {}
- @runner_config = unity.merge(@runner_config || config[:test_runner] || {})
- end
-
- def populate_cmock_defaults(config)
- # cmock has its own internal defaults handling, but we need to set these specific values
- # so they're present for the build environment to access;
- # note: these need to end up in the hash given to initialize cmock for this to be successful
- cmock = config[:cmock] || {}
-
- # yes, we're duplicating the default mock_prefix in cmock, but it's because we need CMOCK_MOCK_PREFIX always available in Ceedling's environment
- cmock[:mock_prefix] = 'Mock' if (cmock[:mock_prefix].nil?)
-
- # just because strict ordering is the way to go
- cmock[:enforce_strict_ordering] = true if (cmock[:enforce_strict_ordering].nil?)
-
- cmock[:mock_path] = File.join(config[:project][:build_root], TESTS_BASE_PATH, 'mocks') if (cmock[:mock_path].nil?)
- cmock[:verbosity] = @project_verbosity if (cmock[:verbosity].nil?)
-
- cmock[:plugins] = [] if (cmock[:plugins].nil?)
- cmock[:plugins].map! { |plugin| plugin.to_sym }
- cmock[:plugins] << (:cexception) if (!cmock[:plugins].include?(:cexception) and (config[:project][:use_exceptions]))
- cmock[:plugins].uniq!
-
- cmock[:unity_helper] = false if (cmock[:unity_helper].nil?)
-
- if (cmock[:unity_helper])
- cmock[:unity_helper] = [cmock[:unity_helper]] if cmock[:unity_helper].is_a? String
- cmock[:includes] += cmock[:unity_helper].map{|helper| File.basename(helper) }
- cmock[:includes].uniq!
- end
-
- @runner_config = cmock.merge(@runner_config || config[:test_runner] || {})
-
- @cmock_builder.manufacture(cmock)
- end
-
-
- def get_runner_config
- @runner_config
- end
-
-
- # grab tool names from yaml and insert into tool structures so available for error messages
- # set up default values
- def tools_setup(config)
- config[:tools].each_key do |name|
- tool = config[:tools][name]
-
- # populate name if not given
- tool[:name] = name.to_s if (tool[:name].nil?)
-
- # handle inline ruby string substitution in executable
- if (tool[:executable] =~ RUBY_STRING_REPLACEMENT_PATTERN)
- tool[:executable].replace(@system_wrapper.module_eval(tool[:executable]))
- end
-
- # populate stderr redirect option
- tool[:stderr_redirect] = StdErrRedirect::NONE if (tool[:stderr_redirect].nil?)
-
- # populate background execution option
- tool[:background_exec] = BackgroundExec::NONE if (tool[:background_exec].nil?)
-
- # populate optional option to control verification of executable in search paths
- tool[:optional] = false if (tool[:optional].nil?)
- end
- end
-
-
- def tools_supplement_arguments(config)
- tools_name_prefix = 'tools_'
- config[:tools].each_key do |name|
- tool = @project_config_hash[(tools_name_prefix + name.to_s).to_sym]
-
- # smoosh in extra arguments if specified at top-level of config (useful for plugins & default gcc tools)
- # arguments are squirted in at _end_ of list
- top_level_tool = (tools_name_prefix + name.to_s).to_sym
- if (not config[top_level_tool].nil?)
- # adding and flattening is not a good idea: might over-flatten if there's array nesting in tool args
- tool[:arguments].concat config[top_level_tool][:arguments]
- end
- end
- end
-
-
- def find_and_merge_plugins(config)
- # plugins must be loaded before generic path evaluation & magic that happen later;
- # perform path magic here as discrete step
- config[:plugins][:load_paths].each do |path|
- path.replace(@system_wrapper.module_eval(path)) if (path =~ RUBY_STRING_REPLACEMENT_PATTERN)
- FilePathUtils::standardize(path)
- end
-
- config[:plugins][:load_paths] << FilePathUtils::standardize(Ceedling.load_path)
- config[:plugins][:load_paths].uniq!
-
- paths_hash = @configurator_plugins.add_load_paths(config)
-
- @rake_plugins = @configurator_plugins.find_rake_plugins(config, paths_hash)
- @script_plugins = @configurator_plugins.find_script_plugins(config, paths_hash)
- config_plugins = @configurator_plugins.find_config_plugins(config, paths_hash)
- plugin_yml_defaults = @configurator_plugins.find_plugin_yml_defaults(config, paths_hash)
- plugin_hash_defaults = @configurator_plugins.find_plugin_hash_defaults(config, paths_hash)
-
- config_plugins.each do |plugin|
- plugin_config = @yaml_wrapper.load(plugin)
- config.deep_merge(plugin_config)
- end
-
- plugin_yml_defaults.each do |defaults|
- @configurator_builder.populate_defaults( config, @yaml_wrapper.load(defaults) )
- end
-
- plugin_hash_defaults.each do |defaults|
- @configurator_builder.populate_defaults( config, defaults )
- end
-
- # special plugin setting for results printing
- config[:plugins][:display_raw_test_results] = true if (config[:plugins][:display_raw_test_results].nil?)
-
- paths_hash.each_pair { |name, path| config[:plugins][name] = path }
- end
-
-
- def merge_imports(config)
- if config[:import]
- if config[:import].is_a? Array
- until config[:import].empty?
- path = config[:import].shift
- path = @system_wrapper.module_eval(path) if (path =~ RUBY_STRING_REPLACEMENT_PATTERN)
- config.deep_merge!(@yaml_wrapper.load(path))
- end
- else
- config[:import].each_value do |path|
- if !path.nil?
- path = @system_wrapper.module_eval(path) if (path =~ RUBY_STRING_REPLACEMENT_PATTERN)
- config.deep_merge!(@yaml_wrapper.load(path))
- end
- end
- end
- end
- config.delete(:import)
- end
-
-
- def eval_environment_variables(config)
- config[:environment].each do |hash|
- key = hash.keys[0]
- value = hash[key]
- items = []
-
- interstitial = ((key == :path) ? File::PATH_SEPARATOR : '')
- items = ((value.class == Array) ? hash[key] : [value])
-
- items.each do |item|
- if item.is_a? String and item =~ RUBY_STRING_REPLACEMENT_PATTERN
- item.replace( @system_wrapper.module_eval( item ) )
- end
- end
- hash[key] = items.join( interstitial )
-
- @system_wrapper.env_set( key.to_s.upcase, hash[key] )
- end
- end
-
-
- def eval_paths(config)
- # [:plugins]:[load_paths] already handled
-
- paths = [ # individual paths that don't follow convention processed below
- config[:project][:build_root],
- config[:release_build][:artifacts]]
-
- eval_path_list( paths )
-
- config[:paths].each_pair { |collection, paths| eval_path_list( paths ) }
-
- config[:files].each_pair { |collection, files| eval_path_list( files ) }
-
- # all other paths at secondary hash key level processed by convention:
- # ex. [:toplevel][:foo_path] & [:toplevel][:bar_paths] are evaluated
- config.each_pair { |parent, child| eval_path_list( collect_path_list( child ) ) }
- end
-
-
- def standardize_paths(config)
- # [:plugins]:[load_paths] already handled
-
- paths = [ # individual paths that don't follow convention processed below
- config[:project][:build_root],
- config[:release_build][:artifacts]] # cmock path in case it was explicitly set in config
-
- paths.flatten.each { |path| FilePathUtils::standardize( path ) }
-
- config[:paths].each_pair do |collection, paths|
- # ensure that list is an array (i.e. handle case of list being a single string,
- # or a multidimensional array)
- config[:paths][collection] = [paths].flatten.map{|path| FilePathUtils::standardize( path )}
- end
-
- config[:files].each_pair { |collection, files| files.each{ |path| FilePathUtils::standardize( path ) } }
-
- config[:tools].each_pair { |tool, config| FilePathUtils::standardize( config[:executable] ) if (config.include? :executable) }
-
- # all other paths at secondary hash key level processed by convention:
- # ex. [:toplevel][:foo_path] & [:toplevel][:bar_paths] are standardized
- config.each_pair do |parent, child|
- collect_path_list( child ).each { |path| FilePathUtils::standardize( path ) }
- end
- end
-
-
- def validate(config)
- # collect felonies and go straight to jail
- raise if (not @configurator_setup.validate_required_sections( config ))
-
- # collect all misdemeanors, everybody on probation
- blotter = []
- blotter << @configurator_setup.validate_required_section_values( config )
- blotter << @configurator_setup.validate_paths( config )
- blotter << @configurator_setup.validate_tools( config )
- blotter << @configurator_setup.validate_plugins( config )
-
- raise if (blotter.include?( false ))
- end
-
-
- # create constants and accessors (attached to this object) from given hash
- def build(config, *keys)
- # create flattened & expanded configuration hash
- built_config = @configurator_setup.build_project_config( config, @configurator_builder.flattenify( config ) )
-
- @project_config_hash = built_config.clone
- store_config()
-
- @configurator_setup.build_constants_and_accessors(built_config, binding())
-
- # top-level keys disappear when we flatten, so create global constants & accessors to any specified keys
- keys.each do |key|
- hash = { key => config[key] }
- @configurator_setup.build_constants_and_accessors(hash, binding())
- end
- end
-
-
- # add to constants and accessors as post build step
- def build_supplement(config_base, config_more)
- # merge in our post-build additions to base configuration hash
- config_base.deep_merge!( config_more )
-
- # flatten our addition hash
- config_more_flattened = @configurator_builder.flattenify( config_more )
-
- # merge our flattened hash with built hash from previous build
- @project_config_hash.deep_merge!( config_more_flattened )
- store_config()
-
- # create more constants and accessors
- @configurator_setup.build_constants_and_accessors(config_more_flattened, binding())
-
- # recreate constants & update accessors with new merged, base values
- config_more.keys.each do |key|
- hash = { key => config_base[key] }
- @configurator_setup.build_constants_and_accessors(hash, binding())
- end
- end
-
-
- def insert_rake_plugins(plugins)
- plugins.each do |plugin|
- @project_config_hash[:project_rakefile_component_files] << plugin
- end
- end
-
- ### private ###
-
- private
-
- def collect_path_list( container )
- paths = []
- container.each_key { |key| paths << container[key] if (key.to_s =~ /_path(s)?$/) } if (container.class == Hash)
- return paths.flatten
- end
-
- def eval_path_list( paths )
- if paths.kind_of?(Array)
- paths = Array.new(paths)
- end
-
- paths.flatten.each do |path|
- path.replace( @system_wrapper.module_eval( path ) ) if (path =~ RUBY_STRING_REPLACEMENT_PATTERN)
- end
- end
-
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/configurator_builder.rb b/test/unit-test/vendor/ceedling/lib/ceedling/configurator_builder.rb
deleted file mode 100644
index f202d8a65..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/configurator_builder.rb
+++ /dev/null
@@ -1,475 +0,0 @@
-require 'rubygems'
-require 'rake' # for ext() method
-require 'ceedling/file_path_utils' # for class methods
-require 'ceedling/defaults'
-require 'ceedling/constants' # for Verbosity constants class & base file paths
-
-
-
-class ConfiguratorBuilder
-
- constructor :file_system_utils, :file_wrapper, :system_wrapper
-
-
- def build_global_constants(config)
- config.each_pair do |key, value|
- formatted_key = key.to_s.upcase
- # undefine global constant if it already exists
- Object.send(:remove_const, formatted_key.to_sym) if @system_wrapper.constants_include?(formatted_key)
- # create global constant
- Object.module_eval("#{formatted_key} = value")
- end
- end
-
-
- def build_accessor_methods(config, context)
- config.each_pair do |key, value|
- # fill configurator object with accessor methods
- eval("def #{key.to_s.downcase}() return @project_config_hash[:#{key.to_s}] end", context)
- end
- end
-
-
- # create a flattened hash from the original configuration structure
- def flattenify(config)
- new_hash = {}
-
- config.each_key do | parent |
-
- # gracefully handle empty top-level entries
- next if (config[parent].nil?)
-
- case config[parent]
- when Array
- config[parent].each do |hash|
- key = "#{parent.to_s.downcase}_#{hash.keys[0].to_s.downcase}".to_sym
- new_hash[key] = hash[hash.keys[0]]
- end
- when Hash
- config[parent].each_pair do | child, value |
- key = "#{parent.to_s.downcase}_#{child.to_s.downcase}".to_sym
- new_hash[key] = value
- end
- # handle entries with no children, only values
- else
- new_hash["#{parent.to_s.downcase}".to_sym] = config[parent]
- end
-
- end
-
- return new_hash
- end
-
-
- def populate_defaults(config, defaults)
- defaults.keys.sort.each do |section|
- defaults[section].keys.sort.each do |entry|
- config[section] = {} if config[section].nil?
- config[section][entry] = defaults[section][entry].deep_clone if (config[section][entry].nil?)
- end
- end
- end
-
-
- def clean(in_hash)
- # ensure that include files inserted into test runners have file extensions & proper ones at that
- in_hash[:test_runner_includes].map!{|include| include.ext(in_hash[:extension_header])}
- end
-
-
- def set_build_paths(in_hash)
- out_hash = {}
-
- project_build_artifacts_root = File.join(in_hash[:project_build_root], 'artifacts')
- project_build_tests_root = File.join(in_hash[:project_build_root], TESTS_BASE_PATH)
- project_build_release_root = File.join(in_hash[:project_build_root], RELEASE_BASE_PATH)
-
- paths = [
- [:project_build_artifacts_root, project_build_artifacts_root, true ],
- [:project_build_tests_root, project_build_tests_root, true ],
- [:project_build_release_root, project_build_release_root, in_hash[:project_release_build] ],
-
- [:project_test_artifacts_path, File.join(project_build_artifacts_root, TESTS_BASE_PATH), true ],
- [:project_test_runners_path, File.join(project_build_tests_root, 'runners'), true ],
- [:project_test_results_path, File.join(project_build_tests_root, 'results'), true ],
- [:project_test_build_output_path, File.join(project_build_tests_root, 'out'), true ],
- [:project_test_build_output_asm_path, File.join(project_build_tests_root, 'out', 'asm'), true ],
- [:project_test_build_output_c_path, File.join(project_build_tests_root, 'out', 'c'), true ],
- [:project_test_build_cache_path, File.join(project_build_tests_root, 'cache'), true ],
- [:project_test_dependencies_path, File.join(project_build_tests_root, 'dependencies'), true ],
-
- [:project_release_artifacts_path, File.join(project_build_artifacts_root, RELEASE_BASE_PATH), in_hash[:project_release_build] ],
- [:project_release_build_cache_path, File.join(project_build_release_root, 'cache'), in_hash[:project_release_build] ],
- [:project_release_build_output_path, File.join(project_build_release_root, 'out'), in_hash[:project_release_build] ],
- [:project_release_build_output_asm_path, File.join(project_build_release_root, 'out', 'asm'), in_hash[:project_release_build] ],
- [:project_release_build_output_c_path, File.join(project_build_release_root, 'out', 'c'), in_hash[:project_release_build] ],
- [:project_release_dependencies_path, File.join(project_build_release_root, 'dependencies'), in_hash[:project_release_build] ],
-
- [:project_log_path, File.join(in_hash[:project_build_root], 'logs'), true ],
- [:project_temp_path, File.join(in_hash[:project_build_root], 'temp'), true ],
-
- [:project_test_preprocess_includes_path, File.join(project_build_tests_root, 'preprocess/includes'), in_hash[:project_use_test_preprocessor] ],
- [:project_test_preprocess_files_path, File.join(project_build_tests_root, 'preprocess/files'), in_hash[:project_use_test_preprocessor] ],
- ]
-
- out_hash[:project_build_paths] = []
-
- # fetch already set mock path
- out_hash[:project_build_paths] << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
-
- paths.each do |path|
- build_path_name = path[0]
- build_path = path[1]
- build_path_add_condition = path[2]
-
- # insert path into build paths if associated with true condition
- out_hash[:project_build_paths] << build_path if build_path_add_condition
- # set path symbol name and path for each entry in paths array
- out_hash[build_path_name] = build_path
- end
-
- return out_hash
- end
-
-
- def set_force_build_filepaths(in_hash)
- out_hash = {}
-
- out_hash[:project_test_force_rebuild_filepath] = File.join( in_hash[:project_test_dependencies_path], 'force_build' )
- out_hash[:project_release_force_rebuild_filepath] = File.join( in_hash[:project_release_dependencies_path], 'force_build' ) if (in_hash[:project_release_build])
-
- return out_hash
- end
-
-
- def set_rakefile_components(in_hash)
- out_hash = {
- :project_rakefile_component_files =>
- [File.join(CEEDLING_LIB, 'ceedling', 'tasks_base.rake'),
- File.join(CEEDLING_LIB, 'ceedling', 'tasks_filesystem.rake'),
- File.join(CEEDLING_LIB, 'ceedling', 'tasks_tests.rake'),
- File.join(CEEDLING_LIB, 'ceedling', 'tasks_vendor.rake'),
- File.join(CEEDLING_LIB, 'ceedling', 'rules_tests.rake')]}
-
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_cmock.rake') if (in_hash[:project_use_mocks])
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_preprocess.rake') if (in_hash[:project_use_test_preprocessor])
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'tasks_tests_deep_dependencies.rake') if (in_hash[:project_use_deep_dependencies])
-
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'rules_release.rake') if (in_hash[:project_release_build])
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'tasks_release_deep_dependencies.rake') if (in_hash[:project_release_build] and in_hash[:project_use_deep_dependencies])
- out_hash[:project_rakefile_component_files] << File.join(CEEDLING_LIB, 'ceedling', 'tasks_release.rake') if (in_hash[:project_release_build])
-
- return out_hash
- end
-
-
- def set_release_target(in_hash)
- return {} if (not in_hash[:project_release_build])
-
- release_target_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_executable])) : in_hash[:release_build_output])
- release_map_file = ((in_hash[:release_build_output].nil?) ? (DEFAULT_RELEASE_TARGET_NAME.ext(in_hash[:extension_map])) : in_hash[:release_build_output].ext(in_hash[:extension_map]))
-
- return {
- # tempted to make a helper method in file_path_utils? stop right there, pal. you'll introduce a cyclical dependency
- :project_release_build_target => File.join(in_hash[:project_build_release_root], release_target_file),
- :project_release_build_map => File.join(in_hash[:project_build_release_root], release_map_file)
- }
- end
-
-
- def collect_project_options(in_hash)
- options = []
-
- in_hash[:project_options_paths].each do |path|
- options << @file_wrapper.directory_listing( File.join(path, '*.yml') )
- end
-
- return {
- :collection_project_options => options.flatten
- }
- end
-
-
- def expand_all_path_globs(in_hash)
- out_hash = {}
- path_keys = []
-
- in_hash.each_key do |key|
- next if (not key.to_s[0..4] == 'paths')
- path_keys << key
- end
-
- # sorted to provide assured order of traversal in test calls on mocks
- path_keys.sort.each do |key|
- out_hash["collection_#{key.to_s}".to_sym] = @file_system_utils.collect_paths( in_hash[key] )
- end
-
- return out_hash
- end
-
-
- def collect_source_and_include_paths(in_hash)
- return {
- :collection_paths_source_and_include =>
- ( in_hash[:collection_paths_source] +
- in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
- }
- end
-
-
- def collect_source_include_vendor_paths(in_hash)
- extra_paths = []
- extra_paths << File.join(in_hash[:cexception_vendor_path], CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
-
- return {
- :collection_paths_source_include_vendor =>
- in_hash[:collection_paths_source_and_include] +
- extra_paths
- }
- end
-
-
- def collect_test_support_source_include_paths(in_hash)
- return {
- :collection_paths_test_support_source_include =>
- (in_hash[:collection_paths_test] +
- in_hash[:collection_paths_support] +
- in_hash[:collection_paths_source] +
- in_hash[:collection_paths_include] ).select {|x| File.directory?(x)}
- }
- end
-
-
- def collect_vendor_paths(in_hash)
- return {:collection_paths_vendor => get_vendor_paths(in_hash)}
- end
-
-
- def collect_test_support_source_include_vendor_paths(in_hash)
- return {
- :collection_paths_test_support_source_include_vendor =>
- get_vendor_paths(in_hash) +
- in_hash[:collection_paths_test_support_source_include]
- }
- end
-
-
- def collect_tests(in_hash)
- all_tests = @file_wrapper.instantiate_file_list
-
- in_hash[:collection_paths_test].each do |path|
- all_tests.include( File.join(path, "#{in_hash[:project_test_file_prefix]}*#{in_hash[:extension_source]}") )
- end
-
- @file_system_utils.revise_file_list( all_tests, in_hash[:files_test] )
-
- return {:collection_all_tests => all_tests}
- end
-
-
- def collect_assembly(in_hash)
- all_assembly = @file_wrapper.instantiate_file_list
-
- return {:collection_all_assembly => all_assembly} if ((not in_hash[:release_build_use_assembly]) && (not in_hash[:test_build_use_assembly]))
-
- # Sprinkle in all assembly files we can find in the source folders
- in_hash[:collection_paths_source].each do |path|
- all_assembly.include( File.join(path, "*#{in_hash[:extension_assembly]}") )
- end
-
- # Also add all assembly files we can find in the support folders
- in_hash[:collection_paths_support].each do |path|
- all_assembly.include( File.join(path, "*#{in_hash[:extension_assembly]}") )
- end
-
- # Also add files that we are explicitly adding via :files:assembly: section
- @file_system_utils.revise_file_list( all_assembly, in_hash[:files_assembly] )
-
- return {:collection_all_assembly => all_assembly}
- end
-
-
- def collect_source(in_hash)
- all_source = @file_wrapper.instantiate_file_list
- in_hash[:collection_paths_source].each do |path|
- if File.exists?(path) and not File.directory?(path)
- all_source.include( path )
- else
- all_source.include( File.join(path, "*#{in_hash[:extension_source]}") )
- end
- end
- @file_system_utils.revise_file_list( all_source, in_hash[:files_source] )
-
- return {:collection_all_source => all_source}
- end
-
-
- def collect_headers(in_hash)
- all_headers = @file_wrapper.instantiate_file_list
-
- paths =
- in_hash[:collection_paths_test] +
- in_hash[:collection_paths_support] +
- in_hash[:collection_paths_source] +
- in_hash[:collection_paths_include]
-
- paths.each do |path|
- all_headers.include( File.join(path, "*#{in_hash[:extension_header]}") )
- end
-
- @file_system_utils.revise_file_list( all_headers, in_hash[:files_include] )
-
- return {:collection_all_headers => all_headers}
- end
-
-
- def collect_release_existing_compilation_input(in_hash)
- release_input = @file_wrapper.instantiate_file_list
-
- paths =
- in_hash[:collection_paths_source] +
- in_hash[:collection_paths_include]
-
- paths << File.join(in_hash[:cexception_vendor_path], CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
-
- paths.each do |path|
- release_input.include( File.join(path, "*#{in_hash[:extension_header]}") )
- if File.exists?(path) and not File.directory?(path)
- release_input.include( path )
- else
- release_input.include( File.join(path, "*#{in_hash[:extension_source]}") )
- end
- end
-
- @file_system_utils.revise_file_list( release_input, in_hash[:files_source] )
- @file_system_utils.revise_file_list( release_input, in_hash[:files_include] )
- # finding assembly files handled explicitly through other means
-
- return {:collection_release_existing_compilation_input => release_input}
- end
-
-
- def collect_all_existing_compilation_input(in_hash)
- all_input = @file_wrapper.instantiate_file_list
-
- paths =
- in_hash[:collection_paths_test] +
- in_hash[:collection_paths_support] +
- in_hash[:collection_paths_source] +
- in_hash[:collection_paths_include] +
- [File.join(in_hash[:unity_vendor_path], UNITY_LIB_PATH)]
-
- paths << File.join(in_hash[:cexception_vendor_path], CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
- paths << File.join(in_hash[:cmock_vendor_path], CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
-
- paths.each do |path|
- all_input.include( File.join(path, "*#{in_hash[:extension_header]}") )
- if File.exists?(path) and not File.directory?(path)
- all_input.include( path )
- else
- all_input.include( File.join(path, "*#{in_hash[:extension_source]}") )
- all_input.include( File.join(path, "*#{in_hash[:extension_assembly]}") ) if (defined?(TEST_BUILD_USE_ASSEMBLY) && TEST_BUILD_USE_ASSEMBLY)
- end
- end
-
- @file_system_utils.revise_file_list( all_input, in_hash[:files_test] )
- @file_system_utils.revise_file_list( all_input, in_hash[:files_support] )
- @file_system_utils.revise_file_list( all_input, in_hash[:files_source] )
- @file_system_utils.revise_file_list( all_input, in_hash[:files_include] )
- # finding assembly files handled explicitly through other means
-
- return {:collection_all_existing_compilation_input => all_input}
- end
-
-
- def get_vendor_defines(in_hash)
- defines = in_hash[:unity_defines].clone
- defines.concat(in_hash[:cmock_defines]) if (in_hash[:project_use_mocks])
- defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
-
- return defines
- end
-
-
- def collect_vendor_defines(in_hash)
- return {:collection_defines_vendor => get_vendor_defines(in_hash)}
- end
-
-
- def collect_test_and_vendor_defines(in_hash)
- defines = in_hash[:defines_test].clone
- vendor_defines = get_vendor_defines(in_hash)
- defines.concat(vendor_defines) if vendor_defines
-
- return {:collection_defines_test_and_vendor => defines}
- end
-
-
- def collect_release_and_vendor_defines(in_hash)
- release_defines = in_hash[:defines_release].clone
-
- release_defines.concat(in_hash[:cexception_defines]) if (in_hash[:project_use_exceptions])
-
- return {:collection_defines_release_and_vendor => release_defines}
- end
-
-
- def collect_release_artifact_extra_link_objects(in_hash)
- objects = []
-
- # no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
- objects << CEXCEPTION_C_FILE.ext( in_hash[:extension_object] ) if (in_hash[:project_use_exceptions])
-
- return {:collection_release_artifact_extra_link_objects => objects}
- end
-
-
- def collect_test_fixture_extra_link_objects(in_hash)
- # Note: Symbols passed to compiler at command line can change Unity and CException behavior / configuration;
- # we also handle those dependencies elsewhere in compilation dependencies
-
- sources = [UNITY_C_FILE]
-
- in_hash[:files_support].each { |file| sources << file }
-
- # we don't include paths here because use of plugins or mixing different compilers may require different build paths
- sources << CEXCEPTION_C_FILE if (in_hash[:project_use_exceptions])
- sources << CMOCK_C_FILE if (in_hash[:project_use_mocks])
-
- # if we're using mocks & a unity helper is defined & that unity helper includes a source file component (not only a header of macros),
- # then link in the unity_helper object file too
- if ( in_hash[:project_use_mocks] and in_hash[:cmock_unity_helper] )
- in_hash[:cmock_unity_helper].each do |helper|
- if @file_wrapper.exist?(helper.ext(in_hash[:extension_source]))
- sources << helper
- end
- end
- end
-
- # create object files from all the sources
- objects = sources.map { |file| File.basename(file) }
-
- # no build paths here so plugins can remap if necessary (i.e. path mapping happens at runtime)
- objects.map! { |object| object.ext(in_hash[:extension_object]) }
-
- return { :collection_all_support => sources,
- :collection_test_fixture_extra_link_objects => objects
- }
- end
-
-
- private
-
- def get_vendor_paths(in_hash)
- vendor_paths = []
- vendor_paths << File.join(in_hash[:unity_vendor_path], UNITY_LIB_PATH)
- vendor_paths << File.join(in_hash[:cexception_vendor_path], CEXCEPTION_LIB_PATH) if (in_hash[:project_use_exceptions])
- vendor_paths << File.join(in_hash[:cmock_vendor_path], CMOCK_LIB_PATH) if (in_hash[:project_use_mocks])
- vendor_paths << in_hash[:cmock_mock_path] if (in_hash[:project_use_mocks])
-
- return vendor_paths
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/configurator_plugins.rb b/test/unit-test/vendor/ceedling/lib/ceedling/configurator_plugins.rb
deleted file mode 100644
index c2e198597..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/configurator_plugins.rb
+++ /dev/null
@@ -1,131 +0,0 @@
-require 'ceedling/constants'
-
-class ConfiguratorPlugins
-
- constructor :stream_wrapper, :file_wrapper, :system_wrapper
- attr_reader :rake_plugins, :script_plugins
-
- def setup
- @rake_plugins = []
- @script_plugins = []
- end
-
-
- def add_load_paths(config)
- plugin_paths = {}
-
- config[:plugins][:enabled].each do |plugin|
- config[:plugins][:load_paths].each do |root|
- path = File.join(root, plugin)
-
- is_script_plugin = ( not @file_wrapper.directory_listing( File.join( path, 'lib', '*.rb' ) ).empty? )
- is_rake_plugin = ( not @file_wrapper.directory_listing( File.join( path, '*.rake' ) ).empty? )
-
- if is_script_plugin or is_rake_plugin
- plugin_paths[(plugin + '_path').to_sym] = path
-
- if is_script_plugin
- @system_wrapper.add_load_path( File.join( path, 'lib') )
- @system_wrapper.add_load_path( File.join( path, 'config') )
- end
- break
- end
- end
- end
-
- return plugin_paths
- end
-
-
- # gather up and return .rake filepaths that exist on-disk
- def find_rake_plugins(config, plugin_paths)
- @rake_plugins = []
- plugins_with_path = []
-
- config[:plugins][:enabled].each do |plugin|
- if path = plugin_paths[(plugin + '_path').to_sym]
- rake_plugin_path = File.join(path, "#{plugin}.rake")
- if (@file_wrapper.exist?(rake_plugin_path))
- plugins_with_path << rake_plugin_path
- @rake_plugins << plugin
- end
- end
- end
-
- return plugins_with_path
- end
-
-
- # gather up and return just names of .rb classes that exist on-disk
- def find_script_plugins(config, plugin_paths)
- @script_plugins = []
-
- config[:plugins][:enabled].each do |plugin|
- if path = plugin_paths[(plugin + '_path').to_sym]
- script_plugin_path = File.join(path, "lib", "#{plugin}.rb")
-
- if @file_wrapper.exist?(script_plugin_path)
- @script_plugins << plugin
- end
- end
- end
-
- return @script_plugins
- end
-
-
- # gather up and return configuration .yml filepaths that exist on-disk
- def find_config_plugins(config, plugin_paths)
- plugins_with_path = []
-
- config[:plugins][:enabled].each do |plugin|
- if path = plugin_paths[(plugin + '_path').to_sym]
- config_plugin_path = File.join(path, "config", "#{plugin}.yml")
-
- if @file_wrapper.exist?(config_plugin_path)
- plugins_with_path << config_plugin_path
- end
- end
- end
-
- return plugins_with_path
- end
-
-
- # gather up and return default .yml filepaths that exist on-disk
- def find_plugin_yml_defaults(config, plugin_paths)
- defaults_with_path = []
-
- config[:plugins][:enabled].each do |plugin|
- if path = plugin_paths[(plugin + '_path').to_sym]
- default_path = File.join(path, 'config', 'defaults.yml')
-
- if @file_wrapper.exist?(default_path)
- defaults_with_path << default_path
- end
- end
- end
-
- return defaults_with_path
- end
-
- # gather up and return
- def find_plugin_hash_defaults(config, plugin_paths)
- defaults_hash= []
-
- config[:plugins][:enabled].each do |plugin|
- if path = plugin_paths[(plugin + '_path').to_sym]
- default_path = File.join(path, "config", "defaults_#{plugin}.rb")
- if @file_wrapper.exist?(default_path)
- @system_wrapper.require_file( "defaults_#{plugin}.rb")
-
- object = eval("get_default_config()")
- defaults_hash << object
- end
- end
- end
-
- return defaults_hash
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/configurator_setup.rb b/test/unit-test/vendor/ceedling/lib/ceedling/configurator_setup.rb
deleted file mode 100644
index cba88df3c..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/configurator_setup.rb
+++ /dev/null
@@ -1,128 +0,0 @@
-
-# add sort-ability to symbol so we can order keys array in hash for test-ability
-class Symbol
- include Comparable
-
- def <=>(other)
- self.to_s <=> other.to_s
- end
-end
-
-
-class ConfiguratorSetup
-
- constructor :configurator_builder, :configurator_validator, :configurator_plugins, :stream_wrapper
-
-
- def build_project_config(config, flattened_config)
- ### flesh out config
- @configurator_builder.clean(flattened_config)
-
- ### add to hash values we build up from configuration & file system contents
- flattened_config.merge!(@configurator_builder.set_build_paths(flattened_config))
- flattened_config.merge!(@configurator_builder.set_force_build_filepaths(flattened_config))
- flattened_config.merge!(@configurator_builder.set_rakefile_components(flattened_config))
- flattened_config.merge!(@configurator_builder.set_release_target(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_project_options(flattened_config))
-
- ### iterate through all entries in paths section and expand any & all globs to actual paths
- flattened_config.merge!(@configurator_builder.expand_all_path_globs(flattened_config))
-
- flattened_config.merge!(@configurator_builder.collect_vendor_paths(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_source_and_include_paths(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_source_include_vendor_paths(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_test_support_source_include_paths(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_test_support_source_include_vendor_paths(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_tests(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_assembly(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_source(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_headers(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_release_existing_compilation_input(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_all_existing_compilation_input(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_vendor_defines(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_test_and_vendor_defines(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_release_and_vendor_defines(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_release_artifact_extra_link_objects(flattened_config))
- flattened_config.merge!(@configurator_builder.collect_test_fixture_extra_link_objects(flattened_config))
-
- return flattened_config
- end
-
-
- def build_constants_and_accessors(config, context)
- @configurator_builder.build_global_constants(config)
- @configurator_builder.build_accessor_methods(config, context)
- end
-
-
- def validate_required_sections(config)
- validation = []
- validation << @configurator_validator.exists?(config, :project)
- validation << @configurator_validator.exists?(config, :paths)
-
- return false if (validation.include?(false))
- return true
- end
-
- def validate_required_section_values(config)
- validation = []
- validation << @configurator_validator.exists?(config, :project, :build_root)
- validation << @configurator_validator.exists?(config, :paths, :test)
- validation << @configurator_validator.exists?(config, :paths, :source)
-
- return false if (validation.include?(false))
- return true
- end
-
- def validate_paths(config)
- validation = []
-
- if config[:cmock][:unity_helper]
- config[:cmock][:unity_helper].each do |path|
- validation << @configurator_validator.validate_filepath_simple( path, :cmock, :unity_helper )
- end
- end
-
- config[:project][:options_paths].each do |path|
- validation << @configurator_validator.validate_filepath_simple( path, :project, :options_paths )
- end
-
- config[:plugins][:load_paths].each do |path|
- validation << @configurator_validator.validate_filepath_simple( path, :plugins, :load_paths )
- end
-
- config[:paths].keys.sort.each do |key|
- validation << @configurator_validator.validate_path_list(config, :paths, key)
- end
-
- return false if (validation.include?(false))
- return true
- end
-
- def validate_tools(config)
- validation = []
-
- config[:tools].keys.sort.each do |key|
- validation << @configurator_validator.exists?(config, :tools, key, :executable)
- validation << @configurator_validator.validate_executable_filepath(config, :tools, key, :executable) if (not config[:tools][key][:optional])
- validation << @configurator_validator.validate_tool_stderr_redirect(config, :tools, key)
- end
-
- return false if (validation.include?(false))
- return true
- end
-
- def validate_plugins(config)
- missing_plugins =
- Set.new( config[:plugins][:enabled] ) -
- Set.new( @configurator_plugins.rake_plugins ) -
- Set.new( @configurator_plugins.script_plugins )
-
- missing_plugins.each do |plugin|
- @stream_wrapper.stderr_puts("ERROR: Ceedling plugin '#{plugin}' contains no rake or ruby class entry point. (Misspelled or missing files?)")
- end
-
- return ( (missing_plugins.size > 0) ? false : true )
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/configurator_validator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/configurator_validator.rb
deleted file mode 100644
index fc2950e0b..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/configurator_validator.rb
+++ /dev/null
@@ -1,193 +0,0 @@
-require 'rubygems'
-require 'rake' # for ext()
-require 'ceedling/constants'
-require 'ceedling/tool_executor' # for argument replacement pattern
-require 'ceedling/file_path_utils' # for glob handling class methods
-
-
-class ConfiguratorValidator
-
- constructor :file_wrapper, :stream_wrapper, :system_wrapper
-
- # walk into config hash verify existence of data at key depth
- def exists?(config, *keys)
- hash = retrieve_value(config, keys)
- exist = !hash[:value].nil?
-
- if (not exist)
- # no verbosity checking since this is lowest level anyhow & verbosity checking depends on configurator
- @stream_wrapper.stderr_puts("ERROR: Required config file entry #{format_key_sequence(keys, hash[:depth])} does not exist.")
- end
-
- return exist
- end
-
-
- # walk into config hash. verify directory path(s) at given key depth
- def validate_path_list(config, *keys)
- hash = retrieve_value(config, keys)
- list = hash[:value]
-
- # return early if we couldn't walk into hash and find a value
- return false if (list.nil?)
-
- path_list = []
- exist = true
-
- case list
- when String then path_list << list
- when Array then path_list = list
- end
-
- path_list.each do |path|
- base_path = FilePathUtils::extract_path(path) # lop off add/subtract notation & glob specifiers
-
- if (not @file_wrapper.exist?(base_path))
- # no verbosity checking since this is lowest level anyhow & verbosity checking depends on configurator
- @stream_wrapper.stderr_puts("ERROR: Config path #{format_key_sequence(keys, hash[:depth])}['#{base_path}'] does not exist on disk.")
- exist = false
- end
- end
-
- return exist
- end
-
-
- # simple path verification
- def validate_filepath_simple(path, *keys)
- validate_path = path
-
- if (not @file_wrapper.exist?(validate_path))
- # no verbosity checking since this is lowest level anyhow & verbosity checking depends on configurator
- @stream_wrapper.stderr_puts("ERROR: Config path '#{validate_path}' associated with #{format_key_sequence(keys, keys.size)} does not exist on disk.")
- return false
- end
-
- return true
- end
-
- # walk into config hash. verify specified file exists.
- def validate_filepath(config, *keys)
- hash = retrieve_value(config, keys)
- filepath = hash[:value]
-
- # return early if we couldn't walk into hash and find a value
- return false if (filepath.nil?)
-
- # skip everything if we've got an argument replacement pattern
- return true if (filepath =~ TOOL_EXECUTOR_ARGUMENT_REPLACEMENT_PATTERN)
-
- if (not @file_wrapper.exist?(filepath))
-
- # See if we can deal with it internally.
- if GENERATED_DIR_PATH.include?(filepath)
- # we already made this directory before let's make it again.
- FileUtils.mkdir_p File.join(File.dirname(__FILE__), filepath)
- @stream_wrapper.stderr_puts("WARNING: Generated filepath #{format_key_sequence(keys, hash[:depth])}['#{filepath}'] does not exist on disk. Recreating")
-
- else
- # no verbosity checking since this is lowest level anyhow & verbosity checking depends on configurator
- @stream_wrapper.stderr_puts("ERROR: Config filepath #{format_key_sequence(keys, hash[:depth])}['#{filepath}'] does not exist on disk.")
- return false
- end
- end
-
- return true
- end
-
- # walk into config hash. verify specified file exists.
- def validate_executable_filepath(config, *keys)
- exe_extension = config[:extension][:executable]
- hash = retrieve_value(config, keys)
- filepath = hash[:value]
-
- # return early if we couldn't walk into hash and find a value
- return false if (filepath.nil?)
-
- # skip everything if we've got an argument replacement pattern
- return true if (filepath =~ TOOL_EXECUTOR_ARGUMENT_REPLACEMENT_PATTERN)
-
- # if there's no path included, verify file exists somewhere in system search paths
- if (not filepath.include?('/'))
- exists = false
-
- @system_wrapper.search_paths.each do |path|
- if (@file_wrapper.exist?( File.join(path, filepath)) )
- exists = true
- break
- end
-
- if (@file_wrapper.exist?( (File.join(path, filepath)).ext( exe_extension ) ))
- exists = true
- break
- elsif (@system_wrapper.windows? and @file_wrapper.exist?( (File.join(path, filepath)).ext( EXTENSION_WIN_EXE ) ))
- exists = true
- break
- end
- end
-
- if (not exists)
- # no verbosity checking since this is lowest level anyhow & verbosity checking depends on configurator
- @stream_wrapper.stderr_puts("ERROR: Config filepath #{format_key_sequence(keys, hash[:depth])}['#{filepath}'] does not exist in system search paths.")
- return false
- end
-
- # if there is a path included, check that explicit filepath exists
- else
- if (not @file_wrapper.exist?(filepath))
- # no verbosity checking since this is lowest level anyhow & verbosity checking depends on configurator
- @stream_wrapper.stderr_puts("ERROR: Config filepath #{format_key_sequence(keys, hash[:depth])}['#{filepath}'] does not exist on disk.")
- return false
- end
- end
-
- return true
- end
-
- def validate_tool_stderr_redirect(config, tools, tool)
- redirect = config[tools][tool][:stderr_redirect]
- if (redirect.class == Symbol)
- # map constants and force to array of strings for runtime universality across ruby versions
- if (not StdErrRedirect.constants.map{|constant| constant.to_s}.include?(redirect.to_s.upcase))
- error = "ERROR: [:#{tools}][:#{tool}][:stderr_redirect][:#{redirect}] is not a recognized option " +
- "{#{StdErrRedirect.constants.map{|constant| ':' + constant.to_s.downcase}.join(', ')}}."
- @stream_wrapper.stderr_puts(error)
- return false
- end
- end
-
- return true
- end
-
- private #########################################
-
-
- def retrieve_value(config, keys)
- value = nil
- hash = config
- depth = 0
-
- # walk into hash & extract value at requested key sequence
- keys.each do |symbol|
- depth += 1
- if (not hash[symbol].nil?)
- hash = hash[symbol]
- value = hash
- else
- value = nil
- break
- end
- end
-
- return {:value => value, :depth => depth}
- end
-
-
- def format_key_sequence(keys, depth)
- walked_keys = keys.slice(0, depth)
- formatted_keys = walked_keys.map{|key| "[:#{key.to_s}]"}
-
- return formatted_keys.join
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/constants.rb b/test/unit-test/vendor/ceedling/lib/ceedling/constants.rb
deleted file mode 100644
index 19484f063..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/constants.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-
-class Verbosity
- SILENT = 0 # as silent as possible (though there are some messages that must be spit out)
- ERRORS = 1 # only errors
- COMPLAIN = 2 # spit out errors and warnings/notices
- NORMAL = 3 # errors, warnings/notices, standard status messages
- OBNOXIOUS = 4 # all messages including extra verbose output (used for lite debugging / verification)
- DEBUG = 5 # special extra verbose output for hardcore debugging
-end
-
-
-class TestResultsSanityChecks
- NONE = 0 # no sanity checking of test results
- NORMAL = 1 # perform non-problematic checks
- THOROUGH = 2 # perform checks that require inside knowledge of system workings
-end
-
-
-class StdErrRedirect
- NONE = :none
- AUTO = :auto
- WIN = :win
- UNIX = :unix
- TCSH = :tcsh
-end
-
-
-class BackgroundExec
- NONE = :none
- AUTO = :auto
- WIN = :win
- UNIX = :unix
-end
-
-unless defined?(PROJECT_ROOT)
- PROJECT_ROOT = Dir.pwd()
-end
-
-GENERATED_DIR_PATH = [['vendor', 'ceedling'], 'src', "test", ['test', 'support'], 'build'].each{|p| File.join(*p)}
-
-EXTENSION_WIN_EXE = '.exe'
-EXTENSION_NONWIN_EXE = '.out'
-
-
-CEXCEPTION_ROOT_PATH = 'c_exception'
-CEXCEPTION_LIB_PATH = "#{CEXCEPTION_ROOT_PATH}/lib"
-CEXCEPTION_C_FILE = 'CException.c'
-CEXCEPTION_H_FILE = 'CException.h'
-
-UNITY_ROOT_PATH = 'unity'
-UNITY_LIB_PATH = "#{UNITY_ROOT_PATH}/src"
-UNITY_C_FILE = 'unity.c'
-UNITY_H_FILE = 'unity.h'
-UNITY_INTERNALS_H_FILE = 'unity_internals.h'
-
-CMOCK_ROOT_PATH = 'cmock'
-CMOCK_LIB_PATH = "#{CMOCK_ROOT_PATH}/src"
-CMOCK_C_FILE = 'cmock.c'
-CMOCK_H_FILE = 'cmock.h'
-
-
-DEFAULT_CEEDLING_MAIN_PROJECT_FILE = 'project.yml' unless defined?(DEFAULT_CEEDLING_MAIN_PROJECT_FILE) # main project file
-DEFAULT_CEEDLING_USER_PROJECT_FILE = 'user.yml' unless defined?(DEFAULT_CEEDLING_USER_PROJECT_FILE) # supplemental user config file
-
-INPUT_CONFIGURATION_CACHE_FILE = 'input.yml' unless defined?(INPUT_CONFIGURATION_CACHE_FILE) # input configuration file dump
-DEFINES_DEPENDENCY_CACHE_FILE = 'defines_dependency.yml' unless defined?(DEFINES_DEPENDENCY_CACHE_FILE) # preprocessor definitions for files
-
-TEST_ROOT_NAME = 'test' unless defined?(TEST_ROOT_NAME)
-TEST_TASK_ROOT = TEST_ROOT_NAME + ':' unless defined?(TEST_TASK_ROOT)
-TEST_SYM = TEST_ROOT_NAME.to_sym unless defined?(TEST_SYM)
-
-RELEASE_ROOT_NAME = 'release' unless defined?(RELEASE_ROOT_NAME)
-RELEASE_TASK_ROOT = RELEASE_ROOT_NAME + ':' unless defined?(RELEASE_TASK_ROOT)
-RELEASE_SYM = RELEASE_ROOT_NAME.to_sym unless defined?(RELEASE_SYM)
-
-REFRESH_ROOT_NAME = 'refresh' unless defined?(REFRESH_ROOT_NAME)
-REFRESH_TASK_ROOT = REFRESH_ROOT_NAME + ':' unless defined?(REFRESH_TASK_ROOT)
-REFRESH_SYM = REFRESH_ROOT_NAME.to_sym unless defined?(REFRESH_SYM)
-
-UTILS_ROOT_NAME = 'utils' unless defined?(UTILS_ROOT_NAME)
-UTILS_TASK_ROOT = UTILS_ROOT_NAME + ':' unless defined?(UTILS_TASK_ROOT)
-UTILS_SYM = UTILS_ROOT_NAME.to_sym unless defined?(UTILS_SYM)
-
-OPERATION_COMPILE_SYM = :compile unless defined?(OPERATION_COMPILE_SYM)
-OPERATION_ASSEMBLE_SYM = :assemble unless defined?(OPERATION_ASSEMBLE_SYM)
-OPERATION_LINK_SYM = :link unless defined?(OPERATION_LINK_SYM)
-
-
-RUBY_STRING_REPLACEMENT_PATTERN = /#\{.+\}/
-RUBY_EVAL_REPLACEMENT_PATTERN = /^\{(.+)\}$/
-TOOL_EXECUTOR_ARGUMENT_REPLACEMENT_PATTERN = /(\$\{(\d+)\})/
-TEST_STDOUT_STATISTICS_PATTERN = /\n-+\s*(\d+)\s+Tests\s+(\d+)\s+Failures\s+(\d+)\s+Ignored\s+(OK|FAIL)\s*/i
-
-NULL_FILE_PATH = '/dev/null'
-
-TESTS_BASE_PATH = TEST_ROOT_NAME
-RELEASE_BASE_PATH = RELEASE_ROOT_NAME
-
-VENDORS_FILES = %w(unity UnityHelper cmock CException).freeze
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/defaults.rb b/test/unit-test/vendor/ceedling/lib/ceedling/defaults.rb
deleted file mode 100644
index 1300a1aab..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/defaults.rb
+++ /dev/null
@@ -1,471 +0,0 @@
-require 'ceedling/constants'
-require 'ceedling/system_wrapper'
-require 'ceedling/file_path_utils'
-
-#this should be defined already, but not always during system specs
-CEEDLING_VENDOR = File.expand_path(File.dirname(__FILE__) + '/../../vendor') unless defined? CEEDLING_VENDOR
-CEEDLING_PLUGINS = [] unless defined? CEEDLING_PLUGINS
-
-DEFAULT_TEST_COMPILER_TOOL = {
- :executable => ENV['CC'].nil? ? FilePathUtils.os_executable_ext('gcc').freeze : ENV['CC'].split[0],
- :name => 'default_test_compiler'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- ENV['CC'].nil? ? "" : ENV['CC'].split[1..-1],
- ENV['CPPFLAGS'].nil? ? "" : ENV['CPPFLAGS'].split,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR'}.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE'}.freeze,
- {"-D$" => 'COLLECTION_DEFINES_TEST_AND_VENDOR'}.freeze,
- "-DGNU_COMPILER".freeze,
- "-g".freeze,
- ENV['CFLAGS'].nil? ? "" : ENV['CFLAGS'].split,
- "-c \"${1}\"".freeze,
- "-o \"${2}\"".freeze,
- # gcc's list file output options are complex; no use of ${3} parameter in default config
- "-MMD".freeze,
- "-MF \"${4}\"".freeze,
- ].freeze
- }
-
-DEFAULT_TEST_LINKER_TOOL = {
- :executable => ENV['CCLD'].nil? ? FilePathUtils.os_executable_ext('gcc').freeze : ENV['CCLD'].split[0],
- :name => 'default_test_linker'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- ENV['CCLD'].nil? ? "" : ENV['CCLD'].split[1..-1],
- ENV['CFLAGS'].nil? ? "" : ENV['CFLAGS'].split,
- ENV['LDFLAGS'].nil? ? "" : ENV['LDFLAGS'].split,
- "\"${1}\"".freeze,
- "${5}".freeze,
- "-o \"${2}\"".freeze,
- "".freeze,
- "${4}".freeze,
- ENV['LDLIBS'].nil? ? "" : ENV['LDLIBS'].split
- ].freeze
- }
-
-DEFAULT_TEST_FIXTURE_TOOL = {
- :executable => '${1}'.freeze,
- :name => 'default_test_fixture'.freeze,
- :stderr_redirect => StdErrRedirect::AUTO.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [].freeze
- }
-
-DEFAULT_TEST_INCLUDES_PREPROCESSOR_TOOL = {
- :executable => ENV['CC'].nil? ? FilePathUtils.os_executable_ext('gcc').freeze : ENV['CC'].split[0],
- :name => 'default_test_includes_preprocessor'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- ENV['CC'].nil? ? "" : ENV['CC'].split[1..-1],
- ENV['CPPFLAGS'].nil? ? "" : ENV['CPPFLAGS'].split,
- '-E'.freeze, # OSX clang
- '-MM'.freeze,
- '-MG'.freeze,
- # avoid some possibility of deep system lib header file complications by omitting vendor paths
- # if cpp is run on *nix system, escape spaces in paths; if cpp on windows just use the paths collection as is
- # {"-I\"$\"" => "{SystemWrapper.windows? ? COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE : COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE.map{|path| path.gsub(\/ \/, \'\\\\ \') }}"}.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR'}.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE'}.freeze,
- {"-D$" => 'COLLECTION_DEFINES_TEST_AND_VENDOR'}.freeze,
- {"-D$" => 'DEFINES_TEST_PREPROCESS'}.freeze,
- "-DGNU_COMPILER".freeze, # OSX clang
- # '-nostdinc'.freeze, # disabled temporarily due to stdio access violations on OSX
- "\"${1}\"".freeze
- ].freeze
- }
-
-DEFAULT_TEST_FILE_PREPROCESSOR_TOOL = {
- :executable => ENV['CC'].nil? ? FilePathUtils.os_executable_ext('gcc').freeze : ENV['CC'].split[0],
- :name => 'default_test_file_preprocessor'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- ENV['CC'].nil? ? "" : ENV['CC'].split[1..-1],
- ENV['CPPFLAGS'].nil? ? "" : ENV['CPPFLAGS'].split,
- '-E'.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR'}.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE'}.freeze,
- {"-D$" => 'COLLECTION_DEFINES_TEST_AND_VENDOR'}.freeze,
- {"-D$" => 'DEFINES_TEST_PREPROCESS'}.freeze,
- "-DGNU_COMPILER".freeze,
- # '-nostdinc'.freeze, # disabled temporarily due to stdio access violations on OSX
- "\"${1}\"".freeze,
- "-o \"${2}\"".freeze
- ].freeze
- }
-
-DEFAULT_TEST_FILE_PREPROCESSOR_DIRECTIVES_TOOL = {
- :executable => FilePathUtils.os_executable_ext('gcc').freeze,
- :name => 'default_test_file_preprocessor_directives'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- '-E'.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR'}.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE'}.freeze,
- {"-D$" => 'COLLECTION_DEFINES_TEST_AND_VENDOR'}.freeze,
- {"-D$" => 'DEFINES_TEST_PREPROCESS'}.freeze,
- "-DGNU_COMPILER".freeze,
- '-fdirectives-only'.freeze,
- # '-nostdinc'.freeze, # disabled temporarily due to stdio access violations on OSX
- "\"${1}\"".freeze,
- "-o \"${2}\"".freeze
- ].freeze
- }
-
-# Disable the -MD flag for OSX LLVM Clang, since unsupported
-if RUBY_PLATFORM =~ /darwin/ && `gcc --version 2> /dev/null` =~ /Apple LLVM version .* \(clang/m # OSX w/LLVM Clang
- MD_FLAG = '' # Clang doesn't support the -MD flag
-else
- MD_FLAG = '-MD'
-end
-
-DEFAULT_TEST_DEPENDENCIES_GENERATOR_TOOL = {
- :executable => ENV['CC'].nil? ? FilePathUtils.os_executable_ext('gcc').freeze : ENV['CC'].split[0],
- :name => 'default_test_dependencies_generator'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- ENV['CC'].nil? ? "" : ENV['CC'].split[1..-1],
- ENV['CPPFLAGS'].nil? ? "" : ENV['CPPFLAGS'].split,
- '-E'.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR'}.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_TEST_TOOLCHAIN_INCLUDE'}.freeze,
- {"-D$" => 'COLLECTION_DEFINES_TEST_AND_VENDOR'}.freeze,
- {"-D$" => 'DEFINES_TEST_PREPROCESS'}.freeze,
- "-DGNU_COMPILER".freeze,
- "-MT \"${3}\"".freeze,
- '-MM'.freeze,
- MD_FLAG.freeze,
- '-MG'.freeze,
- "-MF \"${2}\"".freeze,
- "-c \"${1}\"".freeze,
- # '-nostdinc'.freeze,
- ].freeze
- }
-
-DEFAULT_RELEASE_DEPENDENCIES_GENERATOR_TOOL = {
- :executable => ENV['CC'].nil? ? FilePathUtils.os_executable_ext('gcc').freeze : ENV['CC'].split[0],
- :name => 'default_release_dependencies_generator'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- ENV['CC'].nil? ? "" : ENV['CC'].split[1..-1],
- ENV['CPPFLAGS'].nil? ? "" : ENV['CPPFLAGS'].split,
- '-E'.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_SOURCE_INCLUDE_VENDOR'}.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_RELEASE_TOOLCHAIN_INCLUDE'}.freeze,
- {"-D$" => 'COLLECTION_DEFINES_RELEASE_AND_VENDOR'}.freeze,
- {"-D$" => 'DEFINES_RELEASE_PREPROCESS'}.freeze,
- "-DGNU_COMPILER".freeze,
- "-MT \"${3}\"".freeze,
- '-MM'.freeze,
- MD_FLAG.freeze,
- '-MG'.freeze,
- "-MF \"${2}\"".freeze,
- "-c \"${1}\"".freeze,
- # '-nostdinc'.freeze,
- ].freeze
- }
-
-
-DEFAULT_RELEASE_COMPILER_TOOL = {
- :executable => ENV['CC'].nil? ? FilePathUtils.os_executable_ext('gcc').freeze : ENV['CC'].split[0],
- :name => 'default_release_compiler'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- ENV['CC'].nil? ? "" : ENV['CC'].split[1..-1],
- ENV['CPPFLAGS'].nil? ? "" : ENV['CPPFLAGS'].split,
- {"-I\"$\"" => 'COLLECTION_PATHS_SOURCE_INCLUDE_VENDOR'}.freeze,
- {"-I\"$\"" => 'COLLECTION_PATHS_RELEASE_TOOLCHAIN_INCLUDE'}.freeze,
- {"-D$" => 'COLLECTION_DEFINES_RELEASE_AND_VENDOR'}.freeze,
- "-DGNU_COMPILER".freeze,
- ENV['CFLAGS'].nil? ? "" : ENV['CFLAGS'].split,
- "-c \"${1}\"".freeze,
- "-o \"${2}\"".freeze,
- # gcc's list file output options are complex; no use of ${3} parameter in default config
- "-MMD".freeze,
- "-MF \"${4}\"".freeze,
- ].freeze
- }
-
-DEFAULT_RELEASE_ASSEMBLER_TOOL = {
- :executable => ENV['AS'].nil? ? FilePathUtils.os_executable_ext('as').freeze : ENV['AS'].split[0],
- :name => 'default_release_assembler'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- ENV['AS'].nil? ? "" : ENV['AS'].split[1..-1],
- ENV['ASFLAGS'].nil? ? "" : ENV['ASFLAGS'].split,
- {"-I\"$\"" => 'COLLECTION_PATHS_SOURCE_AND_INCLUDE'}.freeze,
- "\"${1}\"".freeze,
- "-o \"${2}\"".freeze,
- ].freeze
- }
-
-DEFAULT_RELEASE_LINKER_TOOL = {
- :executable => ENV['CCLD'].nil? ? FilePathUtils.os_executable_ext('gcc').freeze : ENV['CCLD'].split[0],
- :name => 'default_release_linker'.freeze,
- :stderr_redirect => StdErrRedirect::NONE.freeze,
- :background_exec => BackgroundExec::NONE.freeze,
- :optional => false.freeze,
- :arguments => [
- ENV['CCLD'].nil? ? "" : ENV['CCLD'].split[1..-1],
- ENV['CFLAGS'].nil? ? "" : ENV['CFLAGS'].split,
- ENV['LDFLAGS'].nil? ? "" : ENV['LDFLAGS'].split,
- "\"${1}\"".freeze,
- "${5}".freeze,
- "-o \"${2}\"".freeze,
- "".freeze,
- "${4}".freeze,
- ENV['LDLIBS'].nil? ? "" : ENV['LDLIBS'].split
- ].freeze
- }
-
-
-DEFAULT_TOOLS_TEST = {
- :tools => {
- :test_compiler => DEFAULT_TEST_COMPILER_TOOL,
- :test_linker => DEFAULT_TEST_LINKER_TOOL,
- :test_fixture => DEFAULT_TEST_FIXTURE_TOOL,
- }
- }
-
-DEFAULT_TOOLS_TEST_PREPROCESSORS = {
- :tools => {
- :test_includes_preprocessor => DEFAULT_TEST_INCLUDES_PREPROCESSOR_TOOL,
- :test_file_preprocessor => DEFAULT_TEST_FILE_PREPROCESSOR_TOOL,
- :test_file_preprocessor_directives => DEFAULT_TEST_FILE_PREPROCESSOR_DIRECTIVES_TOOL,
- }
- }
-
-DEFAULT_TOOLS_TEST_DEPENDENCIES = {
- :tools => {
- :test_dependencies_generator => DEFAULT_TEST_DEPENDENCIES_GENERATOR_TOOL,
- }
- }
-
-
-DEFAULT_TOOLS_RELEASE = {
- :tools => {
- :release_compiler => DEFAULT_RELEASE_COMPILER_TOOL,
- :release_linker => DEFAULT_RELEASE_LINKER_TOOL,
- }
- }
-
-DEFAULT_TOOLS_RELEASE_ASSEMBLER = {
- :tools => {
- :release_assembler => DEFAULT_RELEASE_ASSEMBLER_TOOL,
- }
- }
-
-DEFAULT_TOOLS_RELEASE_DEPENDENCIES = {
- :tools => {
- :release_dependencies_generator => DEFAULT_RELEASE_DEPENDENCIES_GENERATOR_TOOL,
- }
- }
-
-
-DEFAULT_RELEASE_TARGET_NAME = 'project'
-
-DEFAULT_CEEDLING_CONFIG = {
- :project => {
- # :build_root must be set by user
- :use_exceptions => true,
- :use_mocks => true,
- :compile_threads => 1,
- :test_threads => 1,
- :use_test_preprocessor => false,
- :use_preprocessor_directives => false,
- :use_deep_dependencies => false,
- :generate_deep_dependencies => true, # only applicable if use_deep_dependencies is true
- :auto_link_deep_dependencies => false,
- :test_file_prefix => 'test_',
- :options_paths => [],
- :release_build => false,
- },
-
- :release_build => {
- # :output is set while building configuration -- allows smart default system-dependent file extension handling
- :use_assembly => false,
- :artifacts => [],
- },
-
- :paths => {
- :test => [], # must be populated by user
- :source => [], # must be populated by user
- :support => [],
- :include => [],
- :libraries => [],
- :test_toolchain_include => [],
- :release_toolchain_include => [],
- },
-
- :files => {
- :test => [],
- :source => [],
- :assembly => [],
- :support => [],
- :include => [],
- },
-
- # unlike other top-level entries, environment's value is an array to preserve order
- :environment => [
- # when evaluated, this provides wider text field for rake task comments
- {:rake_columns => '120'},
- ],
-
- :defines => {
- :test => [],
- :test_preprocess => [],
- :release => [],
- :release_preprocess => [],
- :use_test_definition => false,
- },
-
- :libraries => {
- :flag => '-l${1}',
- :path_flag => '-L ${1}',
- :test => [],
- :test_preprocess => [],
- :release => [],
- :release_preprocess => [],
- },
-
- :flags => {},
-
- :extension => {
- :header => '.h',
- :source => '.c',
- :assembly => '.s',
- :object => '.o',
- :libraries => ['.a','.so'],
- :executable => ( SystemWrapper.windows? ? EXTENSION_WIN_EXE : EXTENSION_NONWIN_EXE ),
- :map => '.map',
- :list => '.lst',
- :testpass => '.pass',
- :testfail => '.fail',
- :dependencies => '.d',
- },
-
- :unity => {
- :vendor_path => CEEDLING_VENDOR,
- :defines => []
- },
-
- :cmock => {
- :vendor_path => CEEDLING_VENDOR,
- :defines => [],
- :includes => []
- },
-
- :cexception => {
- :vendor_path => CEEDLING_VENDOR,
- :defines => []
- },
-
- :test_runner => {
- :includes => [],
- :file_suffix => '_runner',
- },
-
- # all tools populated while building up config structure
- :tools => {},
-
- # empty argument lists for default tools
- # (these can be overridden in project file to add arguments to tools without totally redefining tools)
- :test_compiler => { :arguments => [] },
- :test_linker => { :arguments => [] },
- :test_fixture => {
- :arguments => [],
- :link_objects => [], # compiled object files to always be linked in (e.g. cmock.o if using mocks)
- },
- :test_includes_preprocessor => { :arguments => [] },
- :test_file_preprocessor => { :arguments => [] },
- :test_file_preprocessor_directives => { :arguments => [] },
- :test_dependencies_generator => { :arguments => [] },
- :release_compiler => { :arguments => [] },
- :release_linker => { :arguments => [] },
- :release_assembler => { :arguments => [] },
- :release_dependencies_generator => { :arguments => [] },
-
- :plugins => {
- :load_paths => CEEDLING_PLUGINS,
- :enabled => [],
- }
- }.freeze
-
-
-DEFAULT_TESTS_RESULTS_REPORT_TEMPLATE = %q{
-% ignored = hash[:results][:counts][:ignored]
-% failed = hash[:results][:counts][:failed]
-% stdout_count = hash[:results][:counts][:stdout]
-% header_prepend = ((hash[:header].length > 0) ? "#{hash[:header]}: " : '')
-% banner_width = 25 + header_prepend.length # widest message
-
-% if (stdout_count > 0)
-<%=@ceedling[:plugin_reportinator].generate_banner(header_prepend + 'TEST OUTPUT')%>
-% hash[:results][:stdout].each do |string|
-% string[:collection].each do |item|
-<%=string[:source][:path]%><%=File::SEPARATOR%><%=string[:source][:file]%>: "<%=item%>"
-% end
-% end
-
-% end
-% if (ignored > 0)
-<%=@ceedling[:plugin_reportinator].generate_banner(header_prepend + 'IGNORED TEST SUMMARY')%>
-% hash[:results][:ignores].each do |ignore|
-% ignore[:collection].each do |item|
-<%=ignore[:source][:path]%><%=File::SEPARATOR%><%=ignore[:source][:file]%>:<%=item[:line]%>:<%=item[:test]%>
-% if (item[:message].length > 0)
-: "<%=item[:message]%>"
-% else
-<%="\n"%>
-% end
-% end
-% end
-
-% end
-% if (failed > 0)
-<%=@ceedling[:plugin_reportinator].generate_banner(header_prepend + 'FAILED TEST SUMMARY')%>
-% hash[:results][:failures].each do |failure|
-% failure[:collection].each do |item|
-<%=failure[:source][:path]%><%=File::SEPARATOR%><%=failure[:source][:file]%>:<%=item[:line]%>:<%=item[:test]%>
-% if (item[:message].length > 0)
-: "<%=item[:message]%>"
-% else
-<%="\n"%>
-% end
-% end
-% end
-
-% end
-% total_string = hash[:results][:counts][:total].to_s
-% format_string = "%#{total_string.length}i"
-<%=@ceedling[:plugin_reportinator].generate_banner(header_prepend + 'OVERALL TEST SUMMARY')%>
-% if (hash[:results][:counts][:total] > 0)
-TESTED: <%=hash[:results][:counts][:total].to_s%>
-PASSED: <%=sprintf(format_string, hash[:results][:counts][:passed])%>
-FAILED: <%=sprintf(format_string, failed)%>
-IGNORED: <%=sprintf(format_string, ignored)%>
-% else
-
-No tests executed.
-% end
-
-}
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/dependinator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/dependinator.rb
deleted file mode 100644
index accfe80c9..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/dependinator.rb
+++ /dev/null
@@ -1,97 +0,0 @@
-
-class Dependinator
-
- constructor :configurator, :project_config_manager, :test_includes_extractor, :file_path_utils, :rake_wrapper, :file_wrapper
-
- def touch_force_rebuild_files
- @file_wrapper.touch( @configurator.project_test_force_rebuild_filepath )
- @file_wrapper.touch( @configurator.project_release_force_rebuild_filepath ) if (@configurator.project_release_build)
- end
-
-
-
- def load_release_object_deep_dependencies(dependencies_list)
- dependencies_list.each do |dependencies_file|
- if File.exists?(dependencies_file)
- @rake_wrapper.load_dependencies( dependencies_file )
- end
- end
- end
-
-
- def enhance_release_file_dependencies(files)
- files.each do |filepath|
- @rake_wrapper[filepath].enhance( [@configurator.project_release_force_rebuild_filepath] ) if (@project_config_manager.release_config_changed)
- end
- end
-
-
-
- def load_test_object_deep_dependencies(files_list)
- dependencies_list = @file_path_utils.form_test_dependencies_filelist(files_list)
- dependencies_list.each do |dependencies_file|
- if File.exists?(dependencies_file)
- @rake_wrapper.load_dependencies(dependencies_file)
- end
- end
- end
-
-
- def enhance_runner_dependencies(runner_filepath)
- @rake_wrapper[runner_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed ||
- @project_config_manager.test_defines_changed)
- end
-
-
- def enhance_shallow_include_lists_dependencies(include_lists)
- include_lists.each do |include_list_filepath|
- @rake_wrapper[include_list_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed ||
- @project_config_manager.test_defines_changed)
- end
- end
-
-
- def enhance_preprocesed_file_dependencies(files)
- files.each do |filepath|
- @rake_wrapper[filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed ||
- @project_config_manager.test_defines_changed)
- end
- end
-
-
- def enhance_mock_dependencies(mocks_list)
- # if input configuration or ceedling changes, make sure these guys get rebuilt
- mocks_list.each do |mock_filepath|
- @rake_wrapper[mock_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed ||
- @project_config_manager.test_defines_changed)
- @rake_wrapper[mock_filepath].enhance( @configurator.cmock_unity_helper ) if (@configurator.cmock_unity_helper)
- end
- end
-
-
- def enhance_dependencies_dependencies(dependencies)
- dependencies.each do |dependencies_filepath|
- @rake_wrapper[dependencies_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed ||
- @project_config_manager.test_defines_changed)
- end
- end
-
-
- def enhance_test_build_object_dependencies(objects)
- objects.each do |object_filepath|
- @rake_wrapper[object_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if (@project_config_manager.test_config_changed ||
- @project_config_manager.test_defines_changed)
- end
- end
-
-
- def enhance_results_dependencies(result_filepath)
- @rake_wrapper[result_filepath].enhance( [@configurator.project_test_force_rebuild_filepath] ) if @project_config_manager.test_config_changed
- end
-
-
- def enhance_test_executable_dependencies(test, objects)
- @rake_wrapper[ @file_path_utils.form_test_executable_filepath(test) ].enhance( objects )
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/erb_wrapper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/erb_wrapper.rb
deleted file mode 100644
index dab8d736b..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/erb_wrapper.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'erb'
-
-class ErbWrapper
- def generate_file(template, data, output_file)
- File.open(output_file, "w") do |f|
- f << ERB.new(template, 0, "<>").result(binding)
- end
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/file_finder.rb b/test/unit-test/vendor/ceedling/lib/ceedling/file_finder.rb
deleted file mode 100644
index 4a1064c52..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/file_finder.rb
+++ /dev/null
@@ -1,148 +0,0 @@
-require 'rubygems'
-require 'rake' # for adding ext() method to string
-require 'thread'
-
-
-class FileFinder
- SEMAPHORE = Mutex.new
-
- constructor :configurator, :file_finder_helper, :cacheinator, :file_path_utils, :file_wrapper, :yaml_wrapper
-
- def prepare_search_sources
- @all_test_source_and_header_file_collection =
- @configurator.collection_all_tests +
- @configurator.collection_all_source +
- @configurator.collection_all_headers
- end
-
-
- def find_header_file(mock_file)
- header = File.basename(mock_file).sub(/#{@configurator.cmock_mock_prefix}/, '').ext(@configurator.extension_header)
-
- found_path = @file_finder_helper.find_file_in_collection(header, @configurator.collection_all_headers, :error)
-
- return found_path
- end
-
-
- def find_header_input_for_mock_file(mock_file)
- found_path = find_header_file(mock_file)
- mock_input = found_path
-
- if (@configurator.project_use_test_preprocessor)
- mock_input = @cacheinator.diff_cached_test_file( @file_path_utils.form_preprocessed_file_filepath( found_path ) )
- end
-
- return mock_input
- end
-
-
- def find_source_from_test(test, complain)
- test_prefix = @configurator.project_test_file_prefix
- source_paths = @configurator.collection_all_source
-
- source = File.basename(test).sub(/#{test_prefix}/, '')
-
- # we don't blow up if a test file has no corresponding source file
- return @file_finder_helper.find_file_in_collection(source, source_paths, complain)
- end
-
-
- def find_test_from_runner_path(runner_path)
- extension_source = @configurator.extension_source
-
- test_file = File.basename(runner_path).sub(/#{@configurator.test_runner_file_suffix}#{'\\'+extension_source}/, extension_source)
-
- found_path = @file_finder_helper.find_file_in_collection(test_file, @configurator.collection_all_tests, :error)
-
- return found_path
- end
-
-
- def find_test_input_for_runner_file(runner_path)
- found_path = find_test_from_runner_path(runner_path)
- runner_input = found_path
-
- if (@configurator.project_use_test_preprocessor)
- runner_input = @cacheinator.diff_cached_test_file( @file_path_utils.form_preprocessed_file_filepath( found_path ) )
- end
-
- return runner_input
- end
-
-
- def find_test_from_file_path(file_path)
- test_file = File.basename(file_path).ext(@configurator.extension_source)
-
- found_path = @file_finder_helper.find_file_in_collection(test_file, @configurator.collection_all_tests, :error)
-
- return found_path
- end
-
-
- def find_test_or_source_or_header_file(file_path)
- file = File.basename(file_path)
- return @file_finder_helper.find_file_in_collection(file, @all_test_source_and_header_file_collection, :error)
- end
-
-
- def find_compilation_input_file(file_path, complain=:error, release=false)
- found_file = nil
-
- source_file = File.basename(file_path).ext(@configurator.extension_source)
-
- # We only collect files that already exist when we start up.
- # FileLists can produce undesired results for dynamically generated files depending on when they're accessed.
- # So collect mocks and runners separately and right now.
-
- SEMAPHORE.synchronize {
-
- if (source_file =~ /#{@configurator.test_runner_file_suffix}/)
- found_file =
- @file_finder_helper.find_file_in_collection(
- source_file,
- @file_wrapper.directory_listing( File.join(@configurator.project_test_runners_path, '*') ),
- complain)
-
- elsif (@configurator.project_use_mocks and (source_file =~ /#{@configurator.cmock_mock_prefix}/))
- found_file =
- @file_finder_helper.find_file_in_collection(
- source_file,
- @file_wrapper.directory_listing( File.join(@configurator.cmock_mock_path, '*') ),
- complain)
-
- elsif release
- found_file =
- @file_finder_helper.find_file_in_collection(
- source_file,
- @configurator.collection_release_existing_compilation_input,
- complain)
- else
- temp_complain = (defined?(TEST_BUILD_USE_ASSEMBLY) && TEST_BUILD_USE_ASSEMBLY) ? :ignore : complain
- found_file =
- @file_finder_helper.find_file_in_collection(
- source_file,
- @configurator.collection_all_existing_compilation_input,
- temp_complain)
- found_file ||= find_assembly_file(file_path, false) if (defined?(TEST_BUILD_USE_ASSEMBLY) && TEST_BUILD_USE_ASSEMBLY)
- end
- }
- return found_file
- end
-
-
- def find_source_file(file_path, complain)
- source_file = File.basename(file_path).ext(@configurator.extension_source)
- return @file_finder_helper.find_file_in_collection(source_file, @configurator.collection_all_source, complain)
- end
-
-
- def find_assembly_file(file_path, complain = :error)
- assembly_file = File.basename(file_path).ext(@configurator.extension_assembly)
- return @file_finder_helper.find_file_in_collection(assembly_file, @configurator.collection_all_assembly, complain)
- end
-
- def find_file_from_list(file_path, file_list, complain)
- return @file_finder_helper.find_file_in_collection(file_path, file_list, complain)
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/file_finder_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/file_finder_helper.rb
deleted file mode 100644
index f2d6a5e91..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/file_finder_helper.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-require 'fileutils'
-require 'ceedling/constants' # for Verbosity enumeration
-
-class FileFinderHelper
-
- constructor :streaminator
-
-
- def find_file_in_collection(file_name, file_list, complain, extra_message="")
- file_to_find = nil
-
- file_list.each do |item|
- base_file = File.basename(item)
-
- # case insensitive comparison
- if (base_file.casecmp(file_name) == 0)
- # case sensitive check
- if (base_file == file_name)
- file_to_find = item
- break
- else
- blow_up(file_name, "However, a filename having different capitalization was found: '#{item}'.")
- end
- end
-
- end
-
- if file_to_find.nil?
- case (complain)
- when :error then blow_up(file_name, extra_message)
- when :warn then gripe(file_name, extra_message)
- #when :ignore then
- end
- end
-
- return file_to_find
- end
-
- private
-
- def blow_up(file_name, extra_message="")
- error = "ERROR: Found no file '#{file_name}' in search paths."
- error += ' ' if (extra_message.length > 0)
- @streaminator.stderr_puts(error + extra_message, Verbosity::ERRORS)
- raise
- end
-
- def gripe(file_name, extra_message="")
- warning = "WARNING: Found no file '#{file_name}' in search paths."
- warning += ' ' if (extra_message.length > 0)
- @streaminator.stderr_puts(warning + extra_message, Verbosity::COMPLAIN)
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/file_path_utils.rb b/test/unit-test/vendor/ceedling/lib/ceedling/file_path_utils.rb
deleted file mode 100644
index 89a28ba7f..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/file_path_utils.rb
+++ /dev/null
@@ -1,202 +0,0 @@
-require 'rubygems'
-require 'rake' # for ext()
-require 'fileutils'
-require 'ceedling/system_wrapper'
-
-# global utility methods (for plugins, project files, etc.)
-def ceedling_form_filepath(destination_path, original_filepath, new_extension=nil)
- filename = File.basename(original_filepath)
- filename.replace(filename.ext(new_extension)) if (!new_extension.nil?)
- return File.join( destination_path.gsub(/\\/, '/'), filename )
-end
-
-class FilePathUtils
-
- GLOB_MATCHER = /[\*\?\{\}\[\]]/
-
- constructor :configurator, :file_wrapper
-
-
- ######### class methods ##########
-
- # standardize path to use '/' path separator & have no trailing path separator
- def self.standardize(path)
- if path.is_a? String
- path.strip!
- path.gsub!(/\\/, '/')
- path.chomp!('/')
- end
- return path
- end
-
- def self.os_executable_ext(executable)
- return executable.ext('.exe') if SystemWrapper.windows?
- return executable
- end
-
- # extract directory path from between optional add/subtract aggregation modifiers and up to glob specifiers
- # note: slightly different than File.dirname in that /files/foo remains /files/foo and does not become /files
- def self.extract_path(path)
- path = path.sub(/^(\+|-):/, '')
-
- # find first occurrence of path separator followed by directory glob specifier: *, ?, {, }, [, ]
- find_index = (path =~ GLOB_MATCHER)
-
- # no changes needed (lop off final path separator)
- return path.chomp('/') if (find_index.nil?)
-
- # extract up to first glob specifier
- path = path[0..(find_index-1)]
-
- # lop off everything up to and including final path separator
- find_index = path.rindex('/')
- return path[0..(find_index-1)] if (not find_index.nil?)
-
- # return string up to first glob specifier if no path separator found
- return path
- end
-
- # return whether the given path is to be aggregated (no aggregation modifier defaults to same as +:)
- def self.add_path?(path)
- return (path =~ /^-:/).nil?
- end
-
- # get path (and glob) lopping off optional +: / -: prefixed aggregation modifiers
- def self.extract_path_no_aggregation_operators(path)
- return path.sub(/^(\+|-):/, '')
- end
-
- # all the globs that may be in a path string work fine with one exception;
- # to recurse through all subdirectories, the glob is dir/**/** but our paths use
- # convention of only dir/**
- def self.reform_glob(path)
- return path if (path =~ /\/\*\*$/).nil?
- return path + '/**'
- end
-
- ######### instance methods ##########
-
- def form_temp_path(filepath, prefix='')
- return File.join( @configurator.project_temp_path, prefix + File.basename(filepath) )
- end
-
- ### release ###
- def form_release_build_cache_path(filepath)
- return File.join( @configurator.project_release_build_cache_path, File.basename(filepath) )
- end
-
- def form_release_dependencies_filepath(filepath)
- return File.join( @configurator.project_release_dependencies_path, File.basename(filepath).ext(@configurator.extension_dependencies) )
- end
-
- def form_release_build_c_object_filepath(filepath)
- return File.join( @configurator.project_release_build_output_c_path, File.basename(filepath).ext(@configurator.extension_object) )
- end
-
- def form_release_build_asm_object_filepath(filepath)
- return File.join( @configurator.project_release_build_output_asm_path, File.basename(filepath).ext(@configurator.extension_object) )
- end
-
- def form_release_build_c_objects_filelist(files)
- return (@file_wrapper.instantiate_file_list(files)).pathmap("#{@configurator.project_release_build_output_c_path}/%n#{@configurator.extension_object}")
- end
-
- def form_release_build_asm_objects_filelist(files)
- return (@file_wrapper.instantiate_file_list(files)).pathmap("#{@configurator.project_release_build_output_asm_path}/%n#{@configurator.extension_object}")
- end
-
- def form_release_build_c_list_filepath(filepath)
- return File.join( @configurator.project_release_build_output_c_path, File.basename(filepath).ext(@configurator.extension_list) )
- end
-
- def form_release_dependencies_filelist(files)
- return (@file_wrapper.instantiate_file_list(files)).pathmap("#{@configurator.project_release_dependencies_path}/%n#{@configurator.extension_dependencies}")
- end
-
- ### tests ###
- def form_test_build_cache_path(filepath)
- return File.join( @configurator.project_test_build_cache_path, File.basename(filepath) )
- end
-
- def form_test_dependencies_filepath(filepath)
- return File.join( @configurator.project_test_dependencies_path, File.basename(filepath).ext(@configurator.extension_dependencies) )
- end
-
- def form_pass_results_filepath(filepath)
- return File.join( @configurator.project_test_results_path, File.basename(filepath).ext(@configurator.extension_testpass) )
- end
-
- def form_fail_results_filepath(filepath)
- return File.join( @configurator.project_test_results_path, File.basename(filepath).ext(@configurator.extension_testfail) )
- end
-
- def form_runner_filepath_from_test(filepath)
- return File.join( @configurator.project_test_runners_path, File.basename(filepath, @configurator.extension_source)) + @configurator.test_runner_file_suffix + @configurator.extension_source
- end
-
- def form_test_filepath_from_runner(filepath)
- return filepath.sub(/#{TEST_RUNNER_FILE_SUFFIX}/, '')
- end
-
- def form_runner_object_filepath_from_test(filepath)
- return (form_test_build_c_object_filepath(filepath)).sub(/(#{@configurator.extension_object})$/, "#{@configurator.test_runner_file_suffix}\\1")
- end
-
- def form_test_build_c_object_filepath(filepath)
- return File.join( @configurator.project_test_build_output_c_path, File.basename(filepath).ext(@configurator.extension_object) )
- end
-
- def form_test_build_asm_object_filepath(filepath)
- return File.join( @configurator.project_test_build_output_asm_path, File.basename(filepath).ext(@configurator.extension_object) )
- end
-
- def form_test_executable_filepath(filepath)
- return File.join( @configurator.project_test_build_output_path, File.basename(filepath).ext(@configurator.extension_executable) )
- end
-
- def form_test_build_map_filepath(filepath)
- return File.join( @configurator.project_test_build_output_path, File.basename(filepath).ext(@configurator.extension_map) )
- end
-
- def form_test_build_list_filepath(filepath)
- return File.join( @configurator.project_test_build_output_path, File.basename(filepath).ext(@configurator.extension_list) )
- end
-
- def form_preprocessed_file_filepath(filepath)
- return File.join( @configurator.project_test_preprocess_files_path, File.basename(filepath) )
- end
-
- def form_preprocessed_includes_list_filepath(filepath)
- return File.join( @configurator.project_test_preprocess_includes_path, File.basename(filepath) )
- end
-
- def form_test_build_objects_filelist(sources)
- return (@file_wrapper.instantiate_file_list(sources)).pathmap("#{@configurator.project_test_build_output_c_path}/%n#{@configurator.extension_object}")
- end
-
- def form_preprocessed_mockable_headers_filelist(mocks)
- list = @file_wrapper.instantiate_file_list(mocks)
- headers = list.map do |file|
- module_name = File.basename(file).sub(/^#{@configurator.cmock_mock_prefix}/, '').sub(/\.[a-zA-Z]+$/,'')
- "#{@configurator.project_test_preprocess_files_path}/#{module_name}#{@configurator.extension_header}"
- end
- return headers
- end
-
- def form_mocks_source_filelist(mocks)
- list = (@file_wrapper.instantiate_file_list(mocks))
- sources = list.map{|file| "#{@configurator.cmock_mock_path}/#{file}#{@configurator.extension_source}"}
- return sources
- end
-
- def form_test_dependencies_filelist(files)
- list = @file_wrapper.instantiate_file_list(files)
- return list.pathmap("#{@configurator.project_test_dependencies_path}/%n#{@configurator.extension_dependencies}")
- end
-
- def form_pass_results_filelist(path, files)
- list = @file_wrapper.instantiate_file_list(files)
- return list.pathmap("#{path}/%n#{@configurator.extension_testpass}")
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/file_system_utils.rb b/test/unit-test/vendor/ceedling/lib/ceedling/file_system_utils.rb
deleted file mode 100644
index 245d8f826..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/file_system_utils.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-require 'rubygems'
-require 'rake'
-require 'set'
-require 'fileutils'
-require 'ceedling/file_path_utils'
-
-
-class FileSystemUtils
-
- constructor :file_wrapper
-
- # build up path list from input of one or more strings or arrays of (+/-) paths & globs
- def collect_paths(*paths)
- raw = [] # all paths and globs
- plus = Set.new # all paths to expand and add
- minus = Set.new # all paths to remove from plus set
-
- # assemble all globs and simple paths, reforming our glob notation to ruby globs
- paths.each do |paths_container|
- case (paths_container)
- when String then raw << (FilePathUtils::reform_glob(paths_container))
- when Array then paths_container.each {|path| raw << (FilePathUtils::reform_glob(path))}
- else raise "Don't know how to handle #{paths_container.class}"
- end
- end
-
- # iterate through each path and glob
- raw.each do |path|
-
- dirs = [] # container for only (expanded) paths
-
- # if a glob, expand it and slurp up all non-file paths
- if path.include?('*')
- # grab base directory only if globs are snug up to final path separator
- if (path =~ /\/\*+$/)
- dirs << FilePathUtils.extract_path(path)
- end
-
- # grab expanded sub-directory globs
- expanded = @file_wrapper.directory_listing( FilePathUtils.extract_path_no_aggregation_operators(path) )
- expanded.each do |entry|
- dirs << entry if @file_wrapper.directory?(entry)
- end
-
- # else just grab simple path
- # note: we could just run this through glob expansion but such an
- # approach doesn't handle a path not yet on disk)
- else
- dirs << FilePathUtils.extract_path_no_aggregation_operators(path)
- end
-
- # add dirs to the appropriate set based on path aggregation modifier if present
- FilePathUtils.add_path?(path) ? plus.merge(dirs) : minus.merge(dirs)
- end
-
- return (plus - minus).to_a.uniq
- end
-
-
- # given a file list, add to it or remove from it
- def revise_file_list(list, revisions)
- revisions.each do |revision|
- # include or exclude file or glob to file list
- file = FilePathUtils.extract_path_no_aggregation_operators( revision )
- FilePathUtils.add_path?(revision) ? list.include(file) : list.exclude(file)
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/file_system_wrapper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/file_system_wrapper.rb
deleted file mode 100644
index 1bb2883ee..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/file_system_wrapper.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-
-class FileSystemWrapper
-
- def cd(path)
- FileUtils.cd path do
- yield
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/file_wrapper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/file_wrapper.rb
deleted file mode 100644
index 9e5a909b4..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/file_wrapper.rb
+++ /dev/null
@@ -1,83 +0,0 @@
-require 'rubygems'
-require 'rake' # for FileList
-require 'fileutils'
-require 'ceedling/constants'
-
-
-class FileWrapper
-
- def get_expanded_path(path)
- return File.expand_path(path)
- end
-
- def basename(path, extension=nil)
- return File.basename(path, extension) if extension
- return File.basename(path)
- end
-
- def exist?(filepath)
- return true if (filepath == NULL_FILE_PATH)
- return File.exist?(filepath)
- end
-
- def directory?(path)
- return File.directory?(path)
- end
-
- def dirname(path)
- return File.dirname(path)
- end
-
- def directory_listing(glob)
- return Dir.glob(glob, File::FNM_PATHNAME)
- end
-
- def rm_f(filepath, options={})
- FileUtils.rm_f(filepath, **options)
- end
-
- def rm_r(filepath, options={})
- FileUtils.rm_r(filepath, **options={})
- end
-
- def cp(source, destination, options={})
- FileUtils.cp(source, destination, **options)
- end
-
- def compare(from, to)
- return FileUtils.compare_file(from, to)
- end
-
- def open(filepath, flags)
- File.open(filepath, flags) do |file|
- yield(file)
- end
- end
-
- def read(filepath)
- return File.read(filepath)
- end
-
- def touch(filepath, options={})
- FileUtils.touch(filepath, **options)
- end
-
- def write(filepath, contents, flags='w')
- File.open(filepath, flags) do |file|
- file.write(contents)
- end
- end
-
- def readlines(filepath)
- return File.readlines(filepath)
- end
-
- def instantiate_file_list(files=[])
- return FileList.new(files)
- end
-
- def mkdir(folder)
- return FileUtils.mkdir_p(folder)
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/flaginator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/flaginator.rb
deleted file mode 100644
index 175b3c5ac..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/flaginator.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-require 'rubygems'
-require 'rake' # for ext()
-require 'fileutils'
-require 'ceedling/constants'
-
-
-# :flags:
-# :release:
-# :compile:
-# :'test_.+'
-# - -pedantic # add '-pedantic' to every test file
-# :*: # add '-foo' to compilation of all files not main.c
-# - -foo
-# :main: # add '-Wall' to compilation of main.c
-# - -Wall
-# :test:
-# :link:
-# :test_main: # add '--bar --baz' to linking of test_main.exe
-# - --bar
-# - --baz
-
-def partition(hash, &predicate)
- hash.partition(&predicate).map(&:to_h)
-end
-
-class Flaginator
-
- constructor :configurator
-
- def get_flag(hash, file_name)
- file_key = file_name.to_sym
-
- # 1. try literals
- literals, magic = partition(hash) { |k, v| k.to_s =~ /^\w+$/ }
- return literals[file_key] if literals.include?(file_key)
-
- any, regex = partition(magic) { |k, v| (k == :'*') || (k == :'.*') } # glob or regex wild card
-
- # 2. try regexes
- find_res = regex.find { |k, v| file_name =~ /^#{k.to_s}$/ }
- return find_res[1] if find_res
-
- # 3. try anything
- find_res = any.find { |k, v| file_name =~ /.*/ }
- return find_res[1] if find_res
-
- # 4. well, we've tried
- return []
- end
-
- def flag_down( operation, context, file )
- # create configurator accessor method
- accessor = ('flags_' + context.to_s).to_sym
-
- # create simple filename key from whatever filename provided
- file_name = File.basename( file ).ext('')
- file_key = File.basename( file ).ext('').to_sym
-
- # if no entry in configuration for flags for this context, bail out
- return [] if not @configurator.respond_to?( accessor )
-
- # get flags sub hash associated with this context
- flags = @configurator.send( accessor )
-
- # if operation not represented in flags hash, bail out
- return [] if not flags.include?( operation )
-
- # redefine flags to sub hash associated with the operation
- flags = flags[operation]
-
- return get_flag(flags, file_name)
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/generator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/generator.rb
deleted file mode 100644
index 0b8902475..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/generator.rb
+++ /dev/null
@@ -1,186 +0,0 @@
-require 'ceedling/constants'
-
-class Generator
-
- constructor :configurator,
- :generator_helper,
- :preprocessinator,
- :cmock_builder,
- :generator_test_runner,
- :generator_test_results,
- :flaginator,
- :test_includes_extractor,
- :tool_executor,
- :file_finder,
- :file_path_utils,
- :streaminator,
- :plugin_manager,
- :file_wrapper
-
-
- def generate_shallow_includes_list(context, file)
- @streaminator.stdout_puts("Generating include list for #{File.basename(file)}...", Verbosity::NORMAL)
- @preprocessinator.preprocess_shallow_includes(file)
- end
-
- def generate_preprocessed_file(context, file)
- @streaminator.stdout_puts("Preprocessing #{File.basename(file)}...", Verbosity::NORMAL)
- @preprocessinator.preprocess_file(file)
- end
-
- def generate_dependencies_file(tool, context, source, object, dependencies)
- @streaminator.stdout_puts("Generating dependencies for #{File.basename(source)}...", Verbosity::NORMAL)
-
- command =
- @tool_executor.build_command_line(
- tool,
- [], # extra per-file command line parameters
- source,
- dependencies,
- object)
-
- @tool_executor.exec( command[:line], command[:options] )
- end
-
- def generate_mock(context, header_filepath)
- arg_hash = {:header_file => header_filepath, :context => context}
- @plugin_manager.pre_mock_generate( arg_hash )
-
- begin
- @cmock_builder.cmock.setup_mocks( arg_hash[:header_file] )
- rescue
- raise
- ensure
- @plugin_manager.post_mock_generate( arg_hash )
- end
- end
-
- # test_filepath may be either preprocessed test file or original test file
- def generate_test_runner(context, test_filepath, runner_filepath)
- arg_hash = {:context => context, :test_file => test_filepath, :runner_file => runner_filepath}
- @plugin_manager.pre_runner_generate(arg_hash)
-
- # collect info we need
- module_name = File.basename(arg_hash[:test_file])
- test_cases = @generator_test_runner.find_test_cases( @file_finder.find_test_from_runner_path(runner_filepath) )
- mock_list = @test_includes_extractor.lookup_raw_mock_list(arg_hash[:test_file])
-
- @streaminator.stdout_puts("Generating runner for #{module_name}...", Verbosity::NORMAL)
-
- test_file_includes = [] # Empty list for now, since apparently unused
-
- # build runner file
- begin
- @generator_test_runner.generate(module_name, runner_filepath, test_cases, mock_list, test_file_includes)
- rescue
- raise
- ensure
- @plugin_manager.post_runner_generate(arg_hash)
- end
- end
-
- def generate_object_file(tool, operation, context, source, object, list='', dependencies='')
- shell_result = {}
- arg_hash = {:tool => tool, :operation => operation, :context => context, :source => source, :object => object, :list => list, :dependencies => dependencies}
- @plugin_manager.pre_compile_execute(arg_hash)
-
- @streaminator.stdout_puts("Compiling #{File.basename(arg_hash[:source])}...", Verbosity::NORMAL)
- command =
- @tool_executor.build_command_line( arg_hash[:tool],
- @flaginator.flag_down( operation, context, source ),
- arg_hash[:source],
- arg_hash[:object],
- arg_hash[:list],
- arg_hash[:dependencies])
-
- @streaminator.stdout_puts("Command: #{command}", Verbosity::DEBUG)
-
- begin
- shell_result = @tool_executor.exec( command[:line], command[:options] )
- rescue ShellExecutionException => ex
- shell_result = ex.shell_result
- raise ex
- ensure
- arg_hash[:shell_command] = command[:line]
- arg_hash[:shell_result] = shell_result
- @plugin_manager.post_compile_execute(arg_hash)
- end
- end
-
- def generate_executable_file(tool, context, objects, executable, map='', libraries=[], libpaths=[])
- shell_result = {}
- arg_hash = { :tool => tool,
- :context => context,
- :objects => objects,
- :executable => executable,
- :map => map,
- :libraries => libraries,
- :libpaths => libpaths
- }
-
- @plugin_manager.pre_link_execute(arg_hash)
-
- @streaminator.stdout_puts("Linking #{File.basename(arg_hash[:executable])}...", Verbosity::NORMAL)
- command =
- @tool_executor.build_command_line( arg_hash[:tool],
- @flaginator.flag_down( OPERATION_LINK_SYM, context, executable ),
- arg_hash[:objects],
- arg_hash[:executable],
- arg_hash[:map],
- arg_hash[:libraries],
- arg_hash[:libpaths]
- )
- @streaminator.stdout_puts("Command: #{command}", Verbosity::DEBUG)
-
- begin
- shell_result = @tool_executor.exec( command[:line], command[:options] )
- rescue ShellExecutionException => ex
- notice = "\n" +
- "NOTICE: If the linker reports missing symbols, the following may be to blame:\n" +
- " 1. Test lacks #include statements corresponding to needed source files.\n" +
- " 2. Project search paths do not contain source files corresponding to #include statements in the test.\n"
-
- if (@configurator.project_use_mocks)
- notice += " 3. Test does not #include needed mocks.\n\n"
- else
- notice += "\n"
- end
-
- @streaminator.stderr_puts(notice, Verbosity::COMPLAIN)
- shell_result = ex.shell_result
- raise ''
- ensure
- arg_hash[:shell_result] = shell_result
- @plugin_manager.post_link_execute(arg_hash)
- end
- end
-
- def generate_test_results(tool, context, executable, result)
- arg_hash = {:tool => tool, :context => context, :executable => executable, :result_file => result}
- @plugin_manager.pre_test_fixture_execute(arg_hash)
-
- @streaminator.stdout_puts("Running #{File.basename(arg_hash[:executable])}...", Verbosity::NORMAL)
-
- # Unity's exit code is equivalent to the number of failed tests, so we tell @tool_executor not to fail out if there are failures
- # so that we can run all tests and collect all results
- command = @tool_executor.build_command_line(arg_hash[:tool], [], arg_hash[:executable])
- @streaminator.stdout_puts("Command: #{command}", Verbosity::DEBUG)
- command[:options][:boom] = false
- shell_result = @tool_executor.exec( command[:line], command[:options] )
-
- #Don't Let The Failure Count Make Us Believe Things Aren't Working
- shell_result[:exit_code] = 0
- @generator_helper.test_results_error_handler(executable, shell_result)
-
- processed = @generator_test_results.process_and_write_results( shell_result,
- arg_hash[:result_file],
- @file_finder.find_test_from_file_path(arg_hash[:executable]) )
-
- arg_hash[:result_file] = processed[:result_file]
- arg_hash[:results] = processed[:results]
- arg_hash[:shell_result] = shell_result # for raw output display if no plugins for formatted display
-
- @plugin_manager.post_test_fixture_execute(arg_hash)
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/generator_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/generator_helper.rb
deleted file mode 100644
index a6682c275..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/generator_helper.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'ceedling/constants'
-
-
-class GeneratorHelper
-
- constructor :streaminator
-
-
- def test_results_error_handler(executable, shell_result)
- notice = ''
- error = false
-
- if (shell_result[:output].nil? or shell_result[:output].strip.empty?)
- error = true
- # mirror style of generic tool_executor failure output
- notice = "\n" +
- "ERROR: Test executable \"#{File.basename(executable)}\" failed.\n" +
- "> Produced no output to $stdout.\n"
- elsif ((shell_result[:output] =~ TEST_STDOUT_STATISTICS_PATTERN).nil?)
- error = true
- # mirror style of generic tool_executor failure output
- notice = "\n" +
- "ERROR: Test executable \"#{File.basename(executable)}\" failed.\n" +
- "> Produced no final test result counts in $stdout:\n" +
- "#{shell_result[:output].strip}\n"
- end
-
- if (error)
- # since we told the tool executor to ignore the exit code, handle it explicitly here
- notice += "> And exited with status: [#{shell_result[:exit_code]}] (count of failed tests).\n" if (shell_result[:exit_code] != nil)
- notice += "> And then likely crashed.\n" if (shell_result[:exit_code] == nil)
-
- notice += "> This is often a symptom of a bad memory access in source or test code.\n\n"
-
- @streaminator.stderr_puts(notice, Verbosity::COMPLAIN)
- raise
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/generator_test_results.rb b/test/unit-test/vendor/ceedling/lib/ceedling/generator_test_results.rb
deleted file mode 100644
index 2cd96478c..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/generator_test_results.rb
+++ /dev/null
@@ -1,100 +0,0 @@
-require 'rubygems'
-require 'rake' # for .ext()
-require 'ceedling/constants'
-
-class GeneratorTestResults
-
- constructor :configurator, :generator_test_results_sanity_checker, :yaml_wrapper
-
- def process_and_write_results(unity_shell_result, results_file, test_file)
- output_file = results_file
-
- results = get_results_structure
-
- results[:source][:path] = File.dirname(test_file)
- results[:source][:file] = File.basename(test_file)
- results[:time] = unity_shell_result[:time] unless unity_shell_result[:time].nil?
-
- # process test statistics
- if (unity_shell_result[:output] =~ TEST_STDOUT_STATISTICS_PATTERN)
- results[:counts][:total] = $1.to_i
- results[:counts][:failed] = $2.to_i
- results[:counts][:ignored] = $3.to_i
- results[:counts][:passed] = (results[:counts][:total] - results[:counts][:failed] - results[:counts][:ignored])
- end
-
- # remove test statistics lines
- output_string = unity_shell_result[:output].sub(TEST_STDOUT_STATISTICS_PATTERN, '')
-
- output_string.lines do |line|
- # process unity output
- case line
- when /(:IGNORE)/
- elements = extract_line_elements(line, results[:source][:file])
- results[:ignores] << elements[0]
- results[:stdout] << elements[1] if (!elements[1].nil?)
- when /(:PASS$)/
- elements = extract_line_elements(line, results[:source][:file])
- results[:successes] << elements[0]
- results[:stdout] << elements[1] if (!elements[1].nil?)
- when /(:PASS \(.* ms\)$)/
- elements = extract_line_elements(line, results[:source][:file])
- results[:successes] << elements[0]
- results[:stdout] << elements[1] if (!elements[1].nil?)
- when /(:FAIL)/
- elements = extract_line_elements(line, results[:source][:file])
- results[:failures] << elements[0]
- results[:stdout] << elements[1] if (!elements[1].nil?)
- else # collect up all other
- results[:stdout] << line.chomp
- end
- end
-
- @generator_test_results_sanity_checker.verify(results, unity_shell_result[:exit_code])
-
- output_file = results_file.ext(@configurator.extension_testfail) if (results[:counts][:failed] > 0)
-
- @yaml_wrapper.dump(output_file, results)
-
- return { :result_file => output_file, :result => results }
- end
-
- private
-
- def get_results_structure
- return {
- :source => {:path => '', :file => ''},
- :successes => [],
- :failures => [],
- :ignores => [],
- :counts => {:total => 0, :passed => 0, :failed => 0, :ignored => 0},
- :stdout => [],
- :time => 0.0
- }
- end
-
- def extract_line_elements(line, filename)
- # handle anything preceding filename in line as extra output to be collected
- stdout = nil
- stdout_regex = /(.+)#{Regexp.escape(filename)}.+/i
- unity_test_time = 0
-
- if (line =~ stdout_regex)
- stdout = $1.clone
- line.sub!(/#{Regexp.escape(stdout)}/, '')
- end
-
- # collect up test results minus and extra output
- elements = (line.strip.split(':'))[1..-1]
-
- # find timestamp if available
- if (elements[-1] =~ / \((\d*(?:\.\d*)?) ms\)/)
- unity_test_time = $1.to_f / 1000
- elements[-1].sub!(/ \((\d*(?:\.\d*)?) ms\)/, '')
- end
-
- return {:test => elements[1], :line => elements[0].to_i, :message => (elements[3..-1].join(':')).strip, :unity_test_time => unity_test_time}, stdout if elements.size >= 3
- return {:test => '???', :line => -1, :message => nil, :unity_test_time => unity_test_time} #fallback safe option. TODO better handling
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/generator_test_results_sanity_checker.rb b/test/unit-test/vendor/ceedling/lib/ceedling/generator_test_results_sanity_checker.rb
deleted file mode 100644
index 1d193c844..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/generator_test_results_sanity_checker.rb
+++ /dev/null
@@ -1,65 +0,0 @@
-require 'rubygems'
-require 'rake' # for ext() method
-require 'ceedling/constants'
-
-
-class GeneratorTestResultsSanityChecker
-
- constructor :configurator, :streaminator
-
- def verify(results, unity_exit_code)
-
- # do no sanity checking if it's disabled
- return if (@configurator.sanity_checks == TestResultsSanityChecks::NONE)
- raise "results nil or empty" if results.nil? || results.empty?
-
- ceedling_ignores_count = results[:ignores].size
- ceedling_failures_count = results[:failures].size
- ceedling_tests_summation = (ceedling_ignores_count + ceedling_failures_count + results[:successes].size)
-
- # Exit code handling is not a sanity check that can always be performed because
- # command line simulators may or may not pass through Unity's exit code
- if (@configurator.sanity_checks >= TestResultsSanityChecks::THOROUGH)
- # many platforms limit exit codes to a maximum of 255
- if ((ceedling_failures_count != unity_exit_code) and (unity_exit_code < 255))
- sanity_check_warning(results[:source][:file], "Unity's exit code (#{unity_exit_code}) does not match Ceedling's summation of failed test cases (#{ceedling_failures_count}).")
- end
-
- if ((ceedling_failures_count < 255) and (unity_exit_code == 255))
- sanity_check_warning(results[:source][:file], "Ceedling's summation of failed test cases (#{ceedling_failures_count}) is less than Unity's exit code (255 or more).")
- end
- end
-
- if (ceedling_ignores_count != results[:counts][:ignored])
- sanity_check_warning(results[:source][:file], "Unity's final ignore count (#{results[:counts][:ignored]}) does not match Ceedling's summation of ignored test cases (#{ceedling_ignores_count}).")
- end
-
- if (ceedling_failures_count != results[:counts][:failed])
- sanity_check_warning(results[:source][:file], "Unity's final fail count (#{results[:counts][:failed]}) does not match Ceedling's summation of failed test cases (#{ceedling_failures_count}).")
- end
-
- if (ceedling_tests_summation != results[:counts][:total])
- sanity_check_warning(results[:source][:file], "Unity's final test count (#{results[:counts][:total]}) does not match Ceedling's summation of all test cases (#{ceedling_tests_summation}).")
- end
-
- end
-
- private
-
- def sanity_check_warning(file, message)
- unless defined?(CEEDLING_IGNORE_SANITY_CHECK)
- notice = "\n" +
- "ERROR: Internal sanity check for test fixture '#{file.ext(@configurator.extension_executable)}' finds that #{message}\n" +
- " Possible causes:\n" +
- " 1. Your test + source dereferenced a null pointer.\n" +
- " 2. Your test + source indexed past the end of a buffer.\n" +
- " 3. Your test + source committed a memory access violation.\n" +
- " 4. Your test fixture produced an exit code of 0 despite execution ending prematurely.\n" +
- " Sanity check failures of test results are usually a symptom of interrupted test execution.\n\n"
-
- @streaminator.stderr_puts( notice )
- raise
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/generator_test_runner.rb b/test/unit-test/vendor/ceedling/lib/ceedling/generator_test_runner.rb
deleted file mode 100644
index 79ed7140f..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/generator_test_runner.rb
+++ /dev/null
@@ -1,58 +0,0 @@
-
-class GeneratorTestRunner
-
- constructor :configurator, :file_path_utils, :file_wrapper
-
- def find_test_cases(test_file)
-
- #Pull in Unity's Test Runner Generator
- require 'generate_test_runner.rb'
- @test_runner_generator ||= UnityTestRunnerGenerator.new( @configurator.get_runner_config )
-
- if (@configurator.project_use_test_preprocessor)
-
- #redirect to use the preprocessor file if we're doing that sort of thing
- pre_test_file = @file_path_utils.form_preprocessed_file_filepath(test_file)
-
- #actually look for the tests using Unity's test runner generator
- contents = @file_wrapper.read(pre_test_file)
- tests_and_line_numbers = @test_runner_generator.find_tests(contents)
- @test_runner_generator.find_setup_and_teardown(contents)
-
- #look up the line numbers in the original file
- source_lines = @file_wrapper.read(test_file).split("\n")
- source_index = 0;
- tests_and_line_numbers.size.times do |i|
- source_lines[source_index..-1].each_with_index do |line, index|
- if (line =~ /#{tests_and_line_numbers[i][:test]}/)
- source_index += index
- tests_and_line_numbers[i][:line_number] = source_index + 1
- break
- end
- end
- end
- else
- #Just look for the tests using Unity's test runner generator
- contents = @file_wrapper.read(test_file)
- tests_and_line_numbers = @test_runner_generator.find_tests(contents)
- @test_runner_generator.find_setup_and_teardown(contents)
- end
-
- return tests_and_line_numbers
- end
-
- def generate(module_name, runner_filepath, test_cases, mock_list, test_file_includes=[])
- require 'generate_test_runner.rb'
-
- header_extension = @configurator.extension_header
-
- #actually build the test runner using Unity's test runner generator
- #(there is no need to use preprocessor here because we've already looked up test cases and are passing them in here)
- @test_runner_generator ||= UnityTestRunnerGenerator.new( @configurator.get_runner_config )
- @test_runner_generator.generate( module_name,
- runner_filepath,
- test_cases,
- mock_list.map{|f| File.basename(f,'.*')+header_extension},
- test_file_includes.map{|f| File.basename(f,'.*')+header_extension})
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/loginator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/loginator.rb
deleted file mode 100644
index 38147b322..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/loginator.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-
-class Loginator
-
- constructor :configurator, :project_file_loader, :project_config_manager, :file_wrapper, :system_wrapper
-
-
- def setup_log_filepath
- config_files = []
- config_files << @project_file_loader.main_file
- config_files << @project_file_loader.user_file
- config_files.concat( @project_config_manager.options_files )
- config_files.compact!
- config_files.map! { |file| file.ext('') }
-
- log_name = config_files.join( '_' )
-
- @project_log_filepath = File.join( @configurator.project_log_path, log_name.ext('.log') )
- end
-
-
- def log(string, heading=nil)
- return if (not @configurator.project_logging)
-
- output = "\n[#{@system_wrapper.time_now}]"
- output += " :: #{heading}" if (not heading.nil?)
- output += "\n#{string.strip}\n"
-
- @file_wrapper.write(@project_log_filepath, output, 'a')
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/makefile.rb b/test/unit-test/vendor/ceedling/lib/ceedling/makefile.rb
deleted file mode 100644
index 9ad894ea0..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/makefile.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-
-# modified version of Rake's provided make-style dependency loader
-# customizations:
-# (1) handles windows drives in paths -- colons don't confuse task demarcation
-# (2) handles spaces in directory paths
-
-module Rake
-
- # Makefile loader to be used with the import file loader.
- class MakefileLoader
-
- # Load the makefile dependencies in +fn+.
- def load(fn)
- open(fn) do |mf|
- lines = mf.read
- lines.gsub!(/#[^\n]*\n/m, "") # remove comments
- lines.gsub!(/\\\n/, ' ') # string together line continuations into single line
- lines.split("\n").each do |line|
- process_line(line)
- end
- end
- end
-
- private
-
- # Process one logical line of makefile data.
- def process_line(line)
- # split on presence of task demaractor followed by space (i.e don't get confused by a colon in a win path)
- file_tasks, args = line.split(/:\s/)
-
- return if args.nil?
-
- # split at non-escaped space boundary between files (i.e. escaped spaces in paths are left alone)
- dependents = args.split(/\b\s+/)
- # replace escaped spaces and clean up any extra whitespace
- dependents.map! { |path| path.gsub(/\\ /, ' ').strip }
-
- file_tasks.strip.split.each do |file_task|
- file file_task => dependents
- end
- end
- end
-
- # Install the handler
- Rake.application.add_loader('mf', MakefileLoader.new)
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/objects.yml b/test/unit-test/vendor/ceedling/lib/ceedling/objects.yml
deleted file mode 100644
index d73987f7c..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/objects.yml
+++ /dev/null
@@ -1,313 +0,0 @@
-
-file_wrapper:
-
-file_system_wrapper:
-
-stream_wrapper:
-
-rake_wrapper:
-
-yaml_wrapper:
-
-system_wrapper:
-
-cmock_builder:
-
-reportinator:
-
-rake_utils:
- compose:
- - rake_wrapper
-
-system_utils:
- compose:
- - system_wrapper
-
-file_path_utils:
- compose:
- - configurator
- - file_wrapper
-
-file_system_utils:
- compose: file_wrapper
-
-project_file_loader:
- compose:
- - yaml_wrapper
- - stream_wrapper
- - system_wrapper
- - file_wrapper
-
-project_config_manager:
- compose:
- - cacheinator
- - configurator
- - yaml_wrapper
- - file_wrapper
-
-cacheinator:
- compose:
- - cacheinator_helper
- - file_path_utils
- - file_wrapper
- - yaml_wrapper
-
-cacheinator_helper:
- compose:
- - file_wrapper
- - yaml_wrapper
-
-tool_executor:
- compose:
- - configurator
- - tool_executor_helper
- - streaminator
- - system_wrapper
-
-tool_executor_helper:
- compose:
- - streaminator
- - system_utils
- - system_wrapper
-
-configurator:
- compose:
- - configurator_setup
- - configurator_plugins
- - configurator_builder
- - cmock_builder
- - yaml_wrapper
- - system_wrapper
-
-configurator_setup:
- compose:
- - configurator_builder
- - configurator_validator
- - configurator_plugins
- - stream_wrapper
-
-configurator_plugins:
- compose:
- - stream_wrapper
- - file_wrapper
- - system_wrapper
-
-configurator_validator:
- compose:
- - file_wrapper
- - stream_wrapper
- - system_wrapper
-
-configurator_builder:
- compose:
- - file_system_utils
- - file_wrapper
- - system_wrapper
-
-loginator:
- compose:
- - configurator
- - project_file_loader
- - project_config_manager
- - file_wrapper
- - system_wrapper
-
-streaminator:
- compose:
- - streaminator_helper
- - verbosinator
- - loginator
- - stream_wrapper
-
-streaminator_helper:
-
-setupinator:
-
-plugin_builder:
-
-plugin_manager:
- compose:
- - configurator
- - plugin_manager_helper
- - streaminator
- - reportinator
- - system_wrapper
-
-plugin_manager_helper:
-
-plugin_reportinator:
- compose:
- - plugin_reportinator_helper
- - plugin_manager
- - reportinator
-
-plugin_reportinator_helper:
- compose:
- - configurator
- - streaminator
- - yaml_wrapper
- - file_wrapper
-
-verbosinator:
- compose: configurator
-
-file_finder:
- compose:
- - configurator
- - file_finder_helper
- - cacheinator
- - file_path_utils
- - file_wrapper
- - yaml_wrapper
-
-file_finder_helper:
- compose: streaminator
-
-test_includes_extractor:
- compose:
- - configurator
- - yaml_wrapper
- - file_wrapper
-
-task_invoker:
- compose:
- - dependinator
- - rake_utils
- - rake_wrapper
- - project_config_manager
-
-flaginator:
- compose:
- - configurator
-
-generator:
- compose:
- - configurator
- - generator_helper
- - preprocessinator
- - cmock_builder
- - generator_test_runner
- - generator_test_results
- - flaginator
- - test_includes_extractor
- - tool_executor
- - file_finder
- - file_path_utils
- - streaminator
- - plugin_manager
- - file_wrapper
-
-generator_helper:
- compose:
- - streaminator
-
-generator_test_results:
- compose:
- - configurator
- - generator_test_results_sanity_checker
- - yaml_wrapper
-
-generator_test_results_sanity_checker:
- compose:
- - configurator
- - streaminator
-
-generator_test_runner:
- compose:
- - configurator
- - file_path_utils
- - file_wrapper
-
-dependinator:
- compose:
- - configurator
- - project_config_manager
- - test_includes_extractor
- - file_path_utils
- - rake_wrapper
- - file_wrapper
-
-preprocessinator:
- compose:
- - preprocessinator_helper
- - preprocessinator_includes_handler
- - preprocessinator_file_handler
- - task_invoker
- - file_path_utils
- - yaml_wrapper
- - project_config_manager
- - configurator
-
-preprocessinator_helper:
- compose:
- - configurator
- - test_includes_extractor
- - task_invoker
- - file_finder
- - file_path_utils
-
-preprocessinator_includes_handler:
- compose:
- - configurator
- - tool_executor
- - task_invoker
- - file_path_utils
- - yaml_wrapper
- - file_wrapper
- - file_finder
-
-preprocessinator_file_handler:
- compose:
- - preprocessinator_extractor
- - configurator
- - tool_executor
- - file_path_utils
- - file_wrapper
-
-preprocessinator_extractor:
-
-test_invoker:
- compose:
- - configurator
- - test_invoker_helper
- - plugin_manager
- - streaminator
- - preprocessinator
- - task_invoker
- - dependinator
- - project_config_manager
- - build_invoker_utils
- - file_path_utils
- - file_wrapper
-
-test_invoker_helper:
- compose:
- - configurator
- - task_invoker
- - test_includes_extractor
- - file_finder
- - file_path_utils
- - file_wrapper
-
-release_invoker:
- compose:
- - configurator
- - release_invoker_helper
- - build_invoker_utils
- - dependinator
- - task_invoker
- - file_path_utils
- - file_wrapper
-
-release_invoker_helper:
- compose:
- - configurator
- - dependinator
- - task_invoker
-
-build_invoker_utils:
- compose:
- - configurator
- - streaminator
-
-erb_wrapper:
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/par_map.rb b/test/unit-test/vendor/ceedling/lib/ceedling/par_map.rb
deleted file mode 100644
index 250b5ad30..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/par_map.rb
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-def par_map(n, things, &block)
- queue = Queue.new
- things.each { |thing| queue << thing }
- threads = (1..n).collect do
- Thread.new do
- begin
- while true
- yield queue.pop(true)
- end
- rescue ThreadError
-
- end
- end
- end
- threads.each { |t| t.join }
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/plugin.rb b/test/unit-test/vendor/ceedling/lib/ceedling/plugin.rb
deleted file mode 100644
index 835c08c52..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/plugin.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-
-class String
- # reformat a multiline string to have given number of whitespace columns;
- # helpful for formatting heredocs
- def left_margin(margin=0)
- non_whitespace_column = 0
- new_lines = []
-
- # find first line with non-whitespace and count left columns of whitespace
- self.each_line do |line|
- if (line =~ /^\s*\S/)
- non_whitespace_column = $&.length - 1
- break
- end
- end
-
- # iterate through each line, chopping off leftmost whitespace columns and add back the desired whitespace margin
- self.each_line do |line|
- columns = []
- margin.times{columns << ' '}
- # handle special case of line being narrower than width to be lopped off
- if (non_whitespace_column < line.length)
- new_lines << "#{columns.join}#{line[non_whitespace_column..-1]}"
- else
- new_lines << "\n"
- end
- end
-
- return new_lines.join
- end
-end
-
-class Plugin
- attr_reader :name, :environment
- attr_accessor :plugin_objects
-
- def initialize(system_objects, name)
- @environment = []
- @ceedling = system_objects
- @name = name
- self.setup
- end
-
- def setup; end
-
- # mock generation
- def pre_mock_generate(arg_hash); end
- def post_mock_generate(arg_hash); end
-
- # test runner generation
- def pre_runner_generate(arg_hash); end
- def post_runner_generate(arg_hash); end
-
- # compilation (test or source)
- def pre_compile_execute(arg_hash); end
- def post_compile_execute(arg_hash); end
-
- # linking (test or source)
- def pre_link_execute(arg_hash); end
- def post_link_execute(arg_hash); end
-
- # test fixture execution
- def pre_test_fixture_execute(arg_hash); end
- def post_test_fixture_execute(arg_hash); end
-
- # test task
- def pre_test(test); end
- def post_test(test); end
-
- # release task
- def pre_release; end
- def post_release; end
-
- # whole shebang (any use of Ceedling)
- def pre_build; end
- def post_build; end
-
- def summary; end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_builder.rb b/test/unit-test/vendor/ceedling/lib/ceedling/plugin_builder.rb
deleted file mode 100644
index a010e1d0f..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_builder.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-require 'ceedling/plugin'
-
-class PluginBuilder
-
- attr_accessor :plugin_objects
-
- def construct_plugin(plugin_name, object_map_yaml, system_objects)
- # @streaminator.stdout_puts("Constructing plugin #{plugin_name}...", Verbosity::OBNOXIOUS)
- object_map = {}
- @plugin_objects = {}
- @system_objects = system_objects
-
- if object_map_yaml
- @object_map = YAML.load(object_map_yaml)
- @object_map.each_key do |obj|
- construct_object(obj)
- end
- else
- raise "Invalid object map for plugin #{plugin_name}!"
- end
-
- return @plugin_objects
- end
-
- private
-
- def camelize(underscored_name)
- return underscored_name.gsub(/(_|^)([a-z0-9])/) {$2.upcase}
- end
-
- def construct_object(obj)
- if @plugin_objects[obj].nil?
- if @object_map[obj] && @object_map[obj]['compose']
- @object_map[obj]['compose'].each do |dep|
- construct_object(dep)
- end
- end
- build_object(obj)
- end
- end
-
- def build_object(new_object)
- if @plugin_objects[new_object.to_sym].nil?
- # @streaminator.stdout_puts("Building plugin object #{new_object}", Verbosity::OBNOXIOUS)
- require new_object
- class_name = camelize(new_object)
- new_instance = eval("#{class_name}.new(@system_objects, class_name.to_s)")
- new_instance.plugin_objects = @plugin_objects
- @plugin_objects[new_object.to_sym] = new_instance
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_manager.rb b/test/unit-test/vendor/ceedling/lib/ceedling/plugin_manager.rb
deleted file mode 100644
index 0468f2fc4..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_manager.rb
+++ /dev/null
@@ -1,107 +0,0 @@
-require 'ceedling/constants'
-
-class PluginManager
-
- constructor :configurator, :plugin_manager_helper, :streaminator, :reportinator, :system_wrapper
-
- def setup
- @build_fail_registry = []
- @plugin_objects = [] # so we can preserve order
- end
-
- def load_plugin_scripts(script_plugins, system_objects)
- environment = []
-
- script_plugins.each do |plugin|
- # protect against instantiating object multiple times due to processing config multiple times (option files, etc)
- next if (@plugin_manager_helper.include?(@plugin_objects, plugin))
- begin
- @system_wrapper.require_file( "#{plugin}.rb" )
- object = @plugin_manager_helper.instantiate_plugin_script( camelize(plugin), system_objects, plugin )
- @plugin_objects << object
- environment += object.environment
-
- # add plugins to hash of all system objects
- system_objects[plugin.downcase.to_sym] = object
- rescue
- puts "Exception raised while trying to load plugin: #{plugin}"
- raise
- end
- end
-
- yield( { :environment => environment } ) if (environment.size > 0)
- end
-
- def plugins_failed?
- return (@build_fail_registry.size > 0)
- end
-
- def print_plugin_failures
- if (@build_fail_registry.size > 0)
- report = @reportinator.generate_banner('BUILD FAILURE SUMMARY')
-
- @build_fail_registry.each do |failure|
- report += "#{' - ' if (@build_fail_registry.size > 1)}#{failure}\n"
- end
-
- report += "\n"
-
- @streaminator.stderr_puts(report, Verbosity::ERRORS)
- end
- end
-
- def register_build_failure(message)
- @build_fail_registry << message if (message and not message.empty?)
- end
-
- #### execute all plugin methods ####
-
- def pre_mock_generate(arg_hash); execute_plugins(:pre_mock_generate, arg_hash); end
- def post_mock_generate(arg_hash); execute_plugins(:post_mock_generate, arg_hash); end
-
- def pre_runner_generate(arg_hash); execute_plugins(:pre_runner_generate, arg_hash); end
- def post_runner_generate(arg_hash); execute_plugins(:post_runner_generate, arg_hash); end
-
- def pre_compile_execute(arg_hash); execute_plugins(:pre_compile_execute, arg_hash); end
- def post_compile_execute(arg_hash); execute_plugins(:post_compile_execute, arg_hash); end
-
- def pre_link_execute(arg_hash); execute_plugins(:pre_link_execute, arg_hash); end
- def post_link_execute(arg_hash); execute_plugins(:post_link_execute, arg_hash); end
-
- def pre_test_fixture_execute(arg_hash); execute_plugins(:pre_test_fixture_execute, arg_hash); end
- def post_test_fixture_execute(arg_hash)
- # special arbitration: raw test results are printed or taken over by plugins handling the job
- @streaminator.stdout_puts(arg_hash[:shell_result][:output]) if (@configurator.plugins_display_raw_test_results)
- execute_plugins(:post_test_fixture_execute, arg_hash)
- end
-
- def pre_test(test); execute_plugins(:pre_test, test); end
- def post_test(test); execute_plugins(:post_test, test); end
-
- def pre_release; execute_plugins(:pre_release); end
- def post_release; execute_plugins(:post_release); end
-
- def pre_build; execute_plugins(:pre_build); end
- def post_build; execute_plugins(:post_build); end
- def post_error; execute_plugins(:post_error); end
-
- def summary; execute_plugins(:summary); end
-
- private ####################################
-
- def camelize(underscored_name)
- return underscored_name.gsub(/(_|^)([a-z0-9])/) {$2.upcase}
- end
-
- def execute_plugins(method, *args)
- @plugin_objects.each do |plugin|
- begin
- plugin.send(method, *args) if plugin.respond_to?(method)
- rescue
- puts "Exception raised in plugin: #{plugin.name}, in method #{method}"
- raise
- end
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_manager_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/plugin_manager_helper.rb
deleted file mode 100644
index b18248a65..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_manager_helper.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-
-class PluginManagerHelper
-
- def include?(plugins, name)
- include = false
- plugins.each do |plugin|
- if (plugin.name == name)
- include = true
- break
- end
- end
- return include
- end
-
- def instantiate_plugin_script(plugin, system_objects, name)
- return eval("#{plugin}.new(system_objects, name)")
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_reportinator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/plugin_reportinator.rb
deleted file mode 100644
index afc54494b..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_reportinator.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-require 'ceedling/constants'
-require 'ceedling/defaults'
-
-class PluginReportinator
-
- constructor :plugin_reportinator_helper, :plugin_manager, :reportinator
-
- def setup
- @test_results_template = nil
- end
-
-
- def set_system_objects(system_objects)
- @plugin_reportinator_helper.ceedling = system_objects
- end
-
-
- def fetch_results(results_path, test, options={:boom => false})
- return @plugin_reportinator_helper.fetch_results( File.join(results_path, test), options )
- end
-
-
- def generate_banner(message)
- return @reportinator.generate_banner(message)
- end
-
-
- def assemble_test_results(results_list, options={:boom => false})
- aggregated_results = get_results_structure
-
- results_list.each do |result_path|
- results = @plugin_reportinator_helper.fetch_results( result_path, options )
- @plugin_reportinator_helper.process_results(aggregated_results, results)
- end
-
- return aggregated_results
- end
-
-
- def register_test_results_template(template)
- @test_results_template = template if (@test_results_template.nil?)
- end
-
-
- def run_test_results_report(hash, verbosity=Verbosity::NORMAL, &block)
- run_report( $stdout,
- ((@test_results_template.nil?) ? DEFAULT_TESTS_RESULTS_REPORT_TEMPLATE : @test_results_template),
- hash,
- verbosity,
- &block )
- end
-
-
- def run_report(stream, template, hash=nil, verbosity=Verbosity::NORMAL)
- failure = nil
- failure = yield() if block_given?
-
- @plugin_manager.register_build_failure( failure )
-
- @plugin_reportinator_helper.run_report( stream, template, hash, verbosity )
- end
-
- private ###############################
-
- def get_results_structure
- return {
- :successes => [],
- :failures => [],
- :ignores => [],
- :stdout => [],
- :counts => {:total => 0, :passed => 0, :failed => 0, :ignored => 0, :stdout => 0},
- :time => 0.0
- }
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_reportinator_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/plugin_reportinator_helper.rb
deleted file mode 100644
index 783158797..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/plugin_reportinator_helper.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-require 'erb'
-require 'rubygems'
-require 'rake' # for ext()
-require 'ceedling/constants'
-
-class PluginReportinatorHelper
-
- attr_writer :ceedling
-
- constructor :configurator, :streaminator, :yaml_wrapper, :file_wrapper
-
- def fetch_results(results_path, options)
- pass_path = File.join(results_path.ext( @configurator.extension_testpass ))
- fail_path = File.join(results_path.ext( @configurator.extension_testfail ))
-
- if (@file_wrapper.exist?(fail_path))
- return @yaml_wrapper.load(fail_path)
- elsif (@file_wrapper.exist?(pass_path))
- return @yaml_wrapper.load(pass_path)
- else
- if (options[:boom])
- @streaminator.stderr_puts("Could find no test results for '#{File.basename(results_path).ext(@configurator.extension_source)}'", Verbosity::ERRORS)
- raise
- end
- end
-
- return {}
- end
-
-
- def process_results(aggregate_results, results)
- return if (results.empty?)
- aggregate_results[:successes] << { :source => results[:source].clone, :collection => results[:successes].clone } if (results[:successes].size > 0)
- aggregate_results[:failures] << { :source => results[:source].clone, :collection => results[:failures].clone } if (results[:failures].size > 0)
- aggregate_results[:ignores] << { :source => results[:source].clone, :collection => results[:ignores].clone } if (results[:ignores].size > 0)
- aggregate_results[:stdout] << { :source => results[:source].clone, :collection => results[:stdout].clone } if (results[:stdout].size > 0)
- aggregate_results[:counts][:total] += results[:counts][:total]
- aggregate_results[:counts][:passed] += results[:counts][:passed]
- aggregate_results[:counts][:failed] += results[:counts][:failed]
- aggregate_results[:counts][:ignored] += results[:counts][:ignored]
- aggregate_results[:counts][:stdout] += results[:stdout].size
- aggregate_results[:time] += results[:time]
- end
-
-
- def run_report(stream, template, hash, verbosity)
- output = ERB.new(template, 0, "%<>")
- @streaminator.stream_puts(stream, output.result(binding()), verbosity)
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator.rb
deleted file mode 100644
index 52d82ca29..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-
-class Preprocessinator
-
- constructor :preprocessinator_helper, :preprocessinator_includes_handler, :preprocessinator_file_handler, :task_invoker, :file_path_utils, :yaml_wrapper, :project_config_manager, :configurator
-
-
- def setup
- # fashion ourselves callbacks @preprocessinator_helper can use
- @preprocess_includes_proc = Proc.new { |filepath| self.preprocess_shallow_includes(filepath) }
- @preprocess_mock_file_proc = Proc.new { |filepath| self.preprocess_file(filepath) }
- @preprocess_test_file_directives_proc = Proc.new { |filepath| self.preprocess_file_directives(filepath) }
- @preprocess_test_file_proc = Proc.new { |filepath| self.preprocess_file(filepath) }
- end
-
- def preprocess_shallow_source_includes(test)
- @preprocessinator_helper.preprocess_source_includes(test)
- end
-
- def preprocess_test_and_invoke_test_mocks(test)
- @preprocessinator_helper.preprocess_includes(test, @preprocess_includes_proc)
-
- mocks_list = @preprocessinator_helper.assemble_mocks_list(test)
-
- @project_config_manager.process_test_defines_change(mocks_list)
-
- @preprocessinator_helper.preprocess_mockable_headers(mocks_list, @preprocess_mock_file_proc)
-
- @task_invoker.invoke_test_mocks(mocks_list)
-
- if (@configurator.project_use_preprocessor_directives)
- @preprocessinator_helper.preprocess_test_file(test, @preprocess_test_file_directives_proc)
- else
- @preprocessinator_helper.preprocess_test_file(test, @preprocess_test_file_proc)
- end
-
- return mocks_list
- end
-
- def preprocess_shallow_includes(filepath)
- includes = @preprocessinator_includes_handler.extract_includes(filepath)
-
- @preprocessinator_includes_handler.write_shallow_includes_list(
- @file_path_utils.form_preprocessed_includes_list_filepath(filepath), includes)
- end
-
- def preprocess_file(filepath)
- @preprocessinator_includes_handler.invoke_shallow_includes_list(filepath)
- @preprocessinator_file_handler.preprocess_file( filepath, @yaml_wrapper.load(@file_path_utils.form_preprocessed_includes_list_filepath(filepath)) )
- end
-
- def preprocess_file_directives(filepath)
- @preprocessinator_includes_handler.invoke_shallow_includes_list( filepath )
- @preprocessinator_file_handler.preprocess_file_directives( filepath,
- @yaml_wrapper.load( @file_path_utils.form_preprocessed_includes_list_filepath( filepath ) ) )
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_extractor.rb b/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_extractor.rb
deleted file mode 100644
index 62026e15a..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_extractor.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-class PreprocessinatorExtractor
- def extract_base_file_from_preprocessed_expansion(filepath)
- # preprocessing by way of toolchain preprocessor expands macros, eliminates
- # comments, strips out #ifdef code, etc. however, it also expands in place
- # each #include'd file. so, we must extract only the lines of the file
- # that belong to the file originally preprocessed
-
- # iterate through all lines and alternate between extract and ignore modes
- # all lines between a '#'line containing file name of our filepath and the
- # next '#'line should be extracted
-
- base_name = File.basename(filepath)
- not_pragma = /^#(?!pragma\b)/ # preprocessor directive that's not a #pragma
- pattern = /^#.*(\s|\/|\\|\")#{Regexp.escape(base_name)}/
- found_file = false # have we found the file we care about?
-
- lines = []
- File.readlines(filepath).each do |line|
- line.encode!('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
- if found_file and not line =~ not_pragma
- lines << line
- else
- found_file = false
- end
-
- found_file = true if line =~ pattern
- end
-
- return lines
- end
-
- def extract_base_file_from_preprocessed_directives(filepath)
- # preprocessing by way of toolchain preprocessor eliminates directives only
- # like #ifdef's and leave other code
-
- # iterate through all lines and only get last chunk of file after a last
- # '#'line containing file name of our filepath
-
- base_name = File.basename(filepath)
- pattern = /^#.*(\s|\/|\\|\")#{Regexp.escape(base_name)}/
- found_file = false # have we found the file we care about?
-
- lines = []
- File.readlines(filepath).each do |line|
- line.encode!('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
- lines << line
-
- if line =~ pattern
- lines = []
- end
- end
-
- return lines
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_file_handler.rb b/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_file_handler.rb
deleted file mode 100644
index 978fa0d05..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_file_handler.rb
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-class PreprocessinatorFileHandler
-
- constructor :preprocessinator_extractor, :configurator, :tool_executor, :file_path_utils, :file_wrapper
-
-
- def preprocess_file(filepath, includes)
- preprocessed_filepath = @file_path_utils.form_preprocessed_file_filepath(filepath)
-
- command = @tool_executor.build_command_line(@configurator.tools_test_file_preprocessor, [], filepath, preprocessed_filepath)
- @tool_executor.exec(command[:line], command[:options])
-
- contents = @preprocessinator_extractor.extract_base_file_from_preprocessed_expansion(preprocessed_filepath)
-
- includes.each{|include| contents.unshift("#include \"#{include}\"")}
-
- @file_wrapper.write(preprocessed_filepath, contents.join("\n"))
- end
-
- def preprocess_file_directives(filepath, includes)
- preprocessed_filepath = @file_path_utils.form_preprocessed_file_filepath(filepath)
-
- command = @tool_executor.build_command_line(@configurator.tools_test_file_preprocessor_directives, [], filepath, preprocessed_filepath)
- @tool_executor.exec(command[:line], command[:options])
-
- contents = @preprocessinator_extractor.extract_base_file_from_preprocessed_directives(preprocessed_filepath)
-
- includes.each{|include| contents.unshift("#include \"#{include}\"")}
-
- @file_wrapper.write(preprocessed_filepath, contents.join("\n"))
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_helper.rb
deleted file mode 100644
index 4bbda67fc..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_helper.rb
+++ /dev/null
@@ -1,50 +0,0 @@
-
-
-class PreprocessinatorHelper
-
- constructor :configurator, :test_includes_extractor, :task_invoker, :file_finder, :file_path_utils
-
-
- def preprocess_includes(test, preprocess_includes_proc)
- if (@configurator.project_use_test_preprocessor)
- preprocessed_includes_list = @file_path_utils.form_preprocessed_includes_list_filepath(test)
- preprocess_includes_proc.call( @file_finder.find_test_from_file_path(preprocessed_includes_list) )
- @test_includes_extractor.parse_includes_list(preprocessed_includes_list)
- else
- @test_includes_extractor.parse_test_file(test)
- end
- end
-
- def preprocess_source_includes(test)
- @test_includes_extractor.parse_test_file_source_include(test)
- end
-
- def assemble_mocks_list(test)
- return @file_path_utils.form_mocks_source_filelist( @test_includes_extractor.lookup_raw_mock_list(test) )
- end
-
- def preprocess_mockable_headers(mock_list, preprocess_file_proc)
- if (@configurator.project_use_test_preprocessor)
- preprocess_files_smartly(
- @file_path_utils.form_preprocessed_mockable_headers_filelist(mock_list),
- preprocess_file_proc ) { |file| @file_finder.find_header_file(file) }
- end
- end
-
- def preprocess_test_file(test, preprocess_file_proc)
- return if (!@configurator.project_use_test_preprocessor)
-
- preprocess_file_proc.call(test)
- end
-
- private ############################
-
- def preprocess_files_smartly(file_list, preprocess_file_proc)
- if (@configurator.project_use_deep_dependencies)
- @task_invoker.invoke_test_preprocessed_files(file_list)
- else
- file_list.each { |file| preprocess_file_proc.call( yield(file) ) }
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_includes_handler.rb b/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_includes_handler.rb
deleted file mode 100644
index 9e5ae1fbf..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/preprocessinator_includes_handler.rb
+++ /dev/null
@@ -1,189 +0,0 @@
-
-
-class PreprocessinatorIncludesHandler
-
- constructor :configurator, :tool_executor, :task_invoker, :file_path_utils, :yaml_wrapper, :file_wrapper, :file_finder
- @@makefile_cache = {}
-
- # shallow includes: only those headers a source file explicitly includes
-
- def invoke_shallow_includes_list(filepath)
- @task_invoker.invoke_test_shallow_include_lists( [@file_path_utils.form_preprocessed_includes_list_filepath(filepath)] )
- end
-
- ##
- # Ask the preprocessor for a make-style dependency rule of only the headers
- # the source file immediately includes.
- #
- # === Arguments
- # +filepath+ _String_:: Path to the test file to process.
- #
- # === Return
- # _String_:: The text of the dependency rule generated by the preprocessor.
- def form_shallow_dependencies_rule(filepath)
- if @@makefile_cache.has_key?(filepath)
- return @@makefile_cache[filepath]
- end
- # change filename (prefix of '_') to prevent preprocessor from finding
- # include files in temp directory containing file it's scanning
- temp_filepath = @file_path_utils.form_temp_path(filepath, '_')
-
- # read the file and replace all include statements with a decorated version
- # (decorating the names creates file names that don't exist, thus preventing
- # the preprocessor from snaking out and discovering the entire include path
- # that winds through the code). The decorated filenames indicate files that
- # are included directly by the test file.
- contents = @file_wrapper.read(filepath)
-
- if !contents.valid_encoding?
- contents = contents.encode("UTF-16be", :invalid=>:replace, :replace=>"?").encode('UTF-8')
- end
-
- contents.gsub!( /^\s*#include\s+[\"<]\s*(\S+)\s*[\">]/, "#include \"\\1\"\n#include \"@@@@\\1\"" )
- contents.gsub!( /^\s*TEST_FILE\(\s*\"\s*(\S+)\s*\"\s*\)/, "#include \"\\1\"\n#include \"@@@@\\1\"")
- @file_wrapper.write( temp_filepath, contents )
-
- # extract the make-style dependency rule telling the preprocessor to
- # ignore the fact that it can't find the included files
- command = @tool_executor.build_command_line(@configurator.tools_test_includes_preprocessor, [], temp_filepath)
- shell_result = @tool_executor.exec(command[:line], command[:options])
-
- @@makefile_cache[filepath] = shell_result[:output]
- return shell_result[:output]
- end
-
- ##
- # Extract the headers that are directly included by a source file using the
- # provided, annotated Make dependency rule.
- #
- # === Arguments
- # +filepath+ _String_:: C source or header file to extract includes for.
- #
- # === Return
- # _Array_ of _String_:: Array of the direct dependencies for the source file.
- def extract_includes(filepath)
- to_process = [filepath]
- ignore_list = []
- list = []
- all_mocks = []
-
- include_paths = @configurator.project_config_hash[:collection_paths_include]
- include_paths = [] if include_paths.nil?
- include_paths.map! {|path| File.expand_path(path)}
-
- while to_process.length > 0
- target = to_process.shift()
- ignore_list << target
- new_deps, new_to_process, all_mocks = extract_includes_helper(target, include_paths, ignore_list, all_mocks)
- list += new_deps
- to_process += new_to_process
- if !@configurator.project_config_hash[:project_auto_link_deep_dependencies]
- break
- else
- list = list.uniq()
- to_process = to_process.uniq()
- end
- end
-
- return list
- end
-
- def extract_includes_helper(filepath, include_paths, ignore_list, mocks)
- # Extract the dependencies from the make rule
- make_rule = self.form_shallow_dependencies_rule(filepath)
- target_file = make_rule.split[0].gsub(':', '').gsub('\\','/')
- base = File.basename(target_file, File.extname(target_file))
- make_rule_dependencies = make_rule.gsub(/.*\b#{Regexp.escape(base)}\S*/, '').gsub(/\\$/, '')
-
- # Extract the headers dependencies from the make rule
- hdr_ext = @configurator.extension_header
- headers_dependencies = make_rule_dependencies.split.find_all {|path| path.end_with?(hdr_ext) }.uniq
- headers_dependencies.map! {|hdr| hdr.gsub('\\','/') }
- full_path_headers_dependencies = extract_full_path_dependencies(headers_dependencies)
-
- # Extract the sources dependencies from the make rule
- src_ext = @configurator.extension_source
- sources_dependencies = make_rule_dependencies.split.find_all {|path| path.end_with?(src_ext) }.uniq
- sources_dependencies.map! {|src| src.gsub('\\','/') }
- full_path_sources_dependencies = extract_full_path_dependencies(sources_dependencies)
-
- list = full_path_headers_dependencies + full_path_sources_dependencies
-
- mock_prefix = @configurator.project_config_hash[:cmock_mock_prefix]
- # Creating list of mocks
- mocks += full_path_headers_dependencies.find_all do |header|
- File.basename(header) =~ /^#{mock_prefix}.*$/
- end.compact
-
- # ignore real file when both mock and real file exist
- mocks.each do |mock|
- list.each do |filename|
- if File.basename(filename) == File.basename(mock).sub(mock_prefix, '')
- ignore_list << filename
- end
- end
- end.compact
-
- # Filtering list of final includes to only include mocks and anything that is NOT in the ignore_list
- list = list.select do |item|
- mocks.include? item or !(ignore_list.any? { |ignore_item| !item.match(/^(.*\/)?#{Regexp.escape(ignore_item)}$/).nil? })
- end
-
- to_process = []
-
- if @configurator.project_config_hash[:project_auto_link_deep_dependencies]
- # Creating list of headers that should be recursively pre-processed
- # Skipping mocks and vendor headers
- headers_to_deep_link = full_path_headers_dependencies.select do |hdr|
- !(mocks.include? hdr) and (hdr.match(/^(.*\/)(#{VENDORS_FILES.join('|')}) + #{Regexp.escape(hdr_ext)}$/).nil?)
- end
- headers_to_deep_link.map! {|hdr| File.expand_path(hdr) }
- headers_to_deep_link.compact!
-
- headers_to_deep_link.each do |hdr|
- if (ignore_list.none? {|ignore_header| hdr.match(/^(.*\/)?#{Regexp.escape(ignore_header)}$/)} and
- include_paths.none? {|include_path| hdr =~ /^#{include_path}\.*/})
- if File.exist?(hdr)
- to_process << hdr
- src = @file_finder.find_compilation_input_file(hdr, :ignore)
- to_process << src if src
- end
- end
- end
- end
-
- return list, to_process, mocks
-
- end
-
- def write_shallow_includes_list(filepath, list)
- @yaml_wrapper.dump(filepath, list)
- end
-
- private
-
- def extract_full_path_dependencies(dependencies)
- # Separate the real files form the annotated ones and remove the '@@@@'
- annotated_files, real_files = dependencies.partition {|file| file =~ /^@@@@/}
- annotated_files.map! {|file| file.gsub('@@@@','') }
- # Matching annotated_files values against real_files to ensure that
- # annotated_files contain full path entries (as returned by make rule)
- annotated_files.map! {|file| real_files.find {|real| !real.match(/^(.*\/)?#{Regexp.escape(file)}$/).nil?}}
- annotated_files = annotated_files.compact
-
- # Find which of our annotated files are "real" dependencies. This is
- # intended to weed out dependencies that have been removed due to build
- # options defined in the project yaml and/or in the files themselves.
- return annotated_files.find_all do |annotated_file|
- # find the index of the "real" file that matches the annotated one.
- idx = real_files.find_index do |real_file|
- real_file =~ /^(.*\/)?#{Regexp.escape(annotated_file)}$/
- end
- # If we found a real file, delete it from the array and return it,
- # otherwise return nil. Since nil is falsy this has the effect of making
- # find_all return only the annotated files for which a real file was
- # found/deleted
- idx ? real_files.delete_at(idx) : nil
- end.compact
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/project_config_manager.rb b/test/unit-test/vendor/ceedling/lib/ceedling/project_config_manager.rb
deleted file mode 100644
index b1d455127..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/project_config_manager.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-require 'ceedling/constants'
-
-
-class ProjectConfigManager
-
- attr_reader :options_files, :release_config_changed, :test_config_changed, :test_defines_changed
- attr_accessor :config_hash
-
- constructor :cacheinator, :configurator, :yaml_wrapper, :file_wrapper
-
-
- def setup
- @options_files = []
- @release_config_changed = false
- @test_config_changed = false
- @test_defines_changed = false
- end
-
-
- def merge_options(config_hash, option_filepath)
- @options_files << File.basename( option_filepath )
- config_hash.deep_merge!( @yaml_wrapper.load( option_filepath ) )
- end
-
-
- def filter_internal_sources(sources)
- filtered_sources = sources.clone
- filtered_sources.delete_if { |item| item =~ /#{CMOCK_MOCK_PREFIX}.+#{Regexp.escape(EXTENSION_SOURCE)}$/ }
- filtered_sources.delete_if { |item| item =~ /#{VENDORS_FILES.map{|source| '\b' + Regexp.escape(source.ext(EXTENSION_SOURCE)) + '\b'}.join('|')}$/ }
- return filtered_sources
- end
-
- def process_release_config_change
- # has project configuration changed since last release build
- @release_config_changed = @cacheinator.diff_cached_release_config?( @config_hash )
- end
-
-
- def process_test_config_change
- # has project configuration changed since last test build
- @test_config_changed = @cacheinator.diff_cached_test_config?( @config_hash )
- end
-
- def process_test_defines_change(files)
- # has definitions changed since last test build
- @test_defines_changed = @cacheinator.diff_cached_test_defines?( files )
- if @test_defines_changed
- # update timestamp for rake task prerequisites
- @file_wrapper.touch( @configurator.project_test_force_rebuild_filepath, :mtime => Time.now + 10 )
- end
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/project_file_loader.rb b/test/unit-test/vendor/ceedling/lib/ceedling/project_file_loader.rb
deleted file mode 100644
index bf5dcd41d..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/project_file_loader.rb
+++ /dev/null
@@ -1,99 +0,0 @@
-require 'ceedling/constants'
-
-
-class ProjectFileLoader
-
- attr_reader :main_file, :user_file
-
- constructor :yaml_wrapper, :stream_wrapper, :system_wrapper, :file_wrapper
-
- def setup
- @main_file = nil
- @mixin_files = []
- @user_file = nil
-
- @main_project_filepath = ''
- @mixin_project_filepaths = []
- @user_project_filepath = ''
- end
-
-
- def find_project_files
- # first go hunting for optional user project file by looking for environment variable and then default location on disk
- user_filepath = @system_wrapper.env_get('CEEDLING_USER_PROJECT_FILE')
-
- if ( not user_filepath.nil? and @file_wrapper.exist?(user_filepath) )
- @user_project_filepath = user_filepath
- elsif (@file_wrapper.exist?(DEFAULT_CEEDLING_USER_PROJECT_FILE))
- @user_project_filepath = DEFAULT_CEEDLING_USER_PROJECT_FILE
- end
-
- # next check for mixin project files by looking for environment variable
- mixin_filepaths = @system_wrapper.env_get('CEEDLING_MIXIN_PROJECT_FILES')
- if ( not mixin_filepaths.nil? )
- mixin_filepaths.split(File::PATH_SEPARATOR).each do |filepath|
- if ( @file_wrapper.exist?(filepath) )
- @mixin_project_filepaths.push(filepath)
- end
- end
- end
-
- # next check for main project file by looking for environment variable and then default location on disk;
- # blow up if we don't find this guy -- like, he's so totally important
- main_filepath = @system_wrapper.env_get('CEEDLING_MAIN_PROJECT_FILE')
-
- if ( not main_filepath.nil? and @file_wrapper.exist?(main_filepath) )
- @main_project_filepath = main_filepath
- elsif (@file_wrapper.exist?(DEFAULT_CEEDLING_MAIN_PROJECT_FILE))
- @main_project_filepath = DEFAULT_CEEDLING_MAIN_PROJECT_FILE
- else
- # no verbosity checking since this is lowest level reporting anyhow &
- # verbosity checking depends on configurator which in turns needs this class (circular dependency)
- @stream_wrapper.stderr_puts('Found no Ceedling project file (*.yml)')
- raise
- end
-
- @main_file = File.basename( @main_project_filepath )
- @mixin_project_filepaths.each do |filepath|
- @mixin_files.push(File.basename( filepath ))
- end
- @user_file = File.basename( @user_project_filepath ) if ( not @user_project_filepath.empty? )
- end
-
- def yaml_merger(y1, y2)
- o1 = y1
- y2.each_pair do |k,v|
- if o1[k].nil?
- o1[k] = v
- else
- if (o1[k].instance_of? Hash)
- o1[k] = yaml_merger(o1[k], v)
- elsif (o1[k].instance_of? Array)
- o1[k] += v
- else
- o1[k] = v
- end
- end
- end
- return o1
- end
-
- def load_project_config
- config_hash = @yaml_wrapper.load(@main_project_filepath)
-
- # if there are mixin project files, then use them
- @mixin_project_filepaths.each do |filepath|
- mixin = @yaml_wrapper.load(filepath)
- config_hash = yaml_merger( config_hash, mixin )
- end
-
- # if there's a user project file, then use it
- if ( not @user_project_filepath.empty? )
- user_hash = @yaml_wrapper.load(@user_project_filepath)
- config_hash = yaml_merger( config_hash, user_hash )
- end
-
- return config_hash
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/rake_utils.rb b/test/unit-test/vendor/ceedling/lib/ceedling/rake_utils.rb
deleted file mode 100644
index b13749738..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/rake_utils.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-
-class RakeUtils
-
- constructor :rake_wrapper
-
- def task_invoked?(task_regex)
- task_invoked = false
- @rake_wrapper.task_list.each do |task|
- if ((task.already_invoked) and (task.to_s =~ task_regex))
- task_invoked = true
- break
- end
- end
- return task_invoked
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/rake_wrapper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/rake_wrapper.rb
deleted file mode 100644
index 15e479611..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/rake_wrapper.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require 'rubygems'
-require 'rake'
-require 'ceedling/makefile' # our replacement for rake's make-style dependency loader
-
-include Rake::DSL if defined?(Rake::DSL)
-
-class Rake::Task
- attr_reader :already_invoked
-end
-
-class RakeWrapper
-
- def initialize
- @makefile_loader = Rake::MakefileLoader.new # use our custom replacement noted above
- end
-
- def [](task)
- return Rake::Task[task]
- end
-
- def task_list
- return Rake::Task.tasks
- end
-
- def create_file_task(file_task, dependencies)
- file(file_task => dependencies)
- end
-
- def load_dependencies(dependencies_path)
- @makefile_loader.load(dependencies_path)
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/rakefile.rb b/test/unit-test/vendor/ceedling/lib/ceedling/rakefile.rb
deleted file mode 100644
index 1bcb82491..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/rakefile.rb
+++ /dev/null
@@ -1,85 +0,0 @@
-require 'fileutils'
-
-# get directory containing this here file, back up one directory, and expand to full path
-CEEDLING_ROOT = File.expand_path(File.dirname(__FILE__) + '/../..')
-CEEDLING_LIB = File.join(CEEDLING_ROOT, 'lib')
-CEEDLING_VENDOR = File.join(CEEDLING_ROOT, 'vendor')
-CEEDLING_RELEASE = File.join(CEEDLING_ROOT, 'release')
-
-$LOAD_PATH.unshift( CEEDLING_LIB )
-$LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'unity/auto') )
-$LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'diy/lib') )
-$LOAD_PATH.unshift( File.join(CEEDLING_VENDOR, 'cmock/lib') )
-
-require 'rake'
-
-#Let's make sure we remember the task descriptions in case we need them
-Rake::TaskManager.record_task_metadata = true
-
-require 'diy'
-require 'constructor'
-
-require 'ceedling/constants'
-require 'ceedling/target_loader'
-
-
-# construct all our objects
-# ensure load path contains all libraries needed first
-lib_ceedling_load_path_temp = File.join(CEEDLING_LIB, 'ceedling')
-$LOAD_PATH.unshift( lib_ceedling_load_path_temp )
-@ceedling = DIY::Context.from_yaml( File.read( File.join(lib_ceedling_load_path_temp, 'objects.yml') ) )
-@ceedling.build_everything
-# now that all objects are built, delete 'lib/ceedling' from load path
-$LOAD_PATH.delete(lib_ceedling_load_path_temp)
-# one-stop shopping for all our setup and such after construction
-@ceedling[:setupinator].ceedling = @ceedling
-
-project_config =
- begin
- cfg = @ceedling[:setupinator].load_project_files
- TargetLoader.inspect(cfg, ENV['TARGET'])
- rescue TargetLoader::NoTargets
- cfg
- rescue TargetLoader::RequestReload
- @ceedling[:setupinator].load_project_files
- end
-
-@ceedling[:setupinator].do_setup( project_config )
-
-
-# tell all our plugins we're about to do something
-@ceedling[:plugin_manager].pre_build
-
-# load rakefile component files (*.rake)
-PROJECT_RAKEFILE_COMPONENT_FILES.each { |component| load(component) }
-
-# tell rake to shut up by default (overridden in verbosity / debug tasks as appropriate)
-verbose(false)
-
-
-# end block always executed following rake run
-END {
- $stdout.flush unless $stdout.nil?
- $stderr.flush unless $stderr.nil?
-
- # cache our input configurations to use in comparison upon next execution
- @ceedling[:cacheinator].cache_test_config( @ceedling[:setupinator].config_hash ) if (@ceedling[:task_invoker].test_invoked?)
- @ceedling[:cacheinator].cache_release_config( @ceedling[:setupinator].config_hash ) if (@ceedling[:task_invoker].release_invoked?)
-
- # delete all temp files unless we're in debug mode
- if (not @ceedling[:configurator].project_debug)
- @ceedling[:file_wrapper].rm_f( @ceedling[:file_wrapper].directory_listing( File.join(@ceedling[:configurator].project_temp_path, '*') ))
- end
-
- # only perform these final steps if we got here without runtime exceptions or errors
- if (@ceedling[:system_wrapper].ruby_success)
-
- # tell all our plugins the build is done and process results
- @ceedling[:plugin_manager].post_build
- @ceedling[:plugin_manager].print_plugin_failures
- exit(1) if (@ceedling[:plugin_manager].plugins_failed? && !@ceedling[:setupinator].config_hash[:graceful_fail])
- else
- puts "ERROR: Ceedling Failed"
- @ceedling[:plugin_manager].post_error
- end
-}
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/release_invoker.rb b/test/unit-test/vendor/ceedling/lib/ceedling/release_invoker.rb
deleted file mode 100644
index 19bbca727..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/release_invoker.rb
+++ /dev/null
@@ -1,98 +0,0 @@
-require 'ceedling/constants'
-
-
-class ReleaseInvoker
-
- constructor :configurator, :release_invoker_helper, :build_invoker_utils, :dependinator, :task_invoker, :file_path_utils, :file_wrapper
-
-
- def setup_and_invoke_c_objects( c_files )
- objects = @file_path_utils.form_release_build_c_objects_filelist( c_files )
-
- begin
- @release_invoker_helper.process_deep_dependencies( @file_path_utils.form_release_dependencies_filelist( c_files ) )
-
- @dependinator.enhance_release_file_dependencies( objects )
- @task_invoker.invoke_release_objects( objects )
- rescue => e
- @build_invoker_utils.process_exception( e, RELEASE_SYM, false )
- end
-
- return objects
- end
-
-
- def setup_and_invoke_asm_objects( asm_files )
- objects = @file_path_utils.form_release_build_asm_objects_filelist( asm_files )
-
- begin
- @dependinator.enhance_release_file_dependencies( objects )
- @task_invoker.invoke_release_objects( objects )
- rescue => e
- @build_invoker_utils.process_exception( e, RELEASE_SYM, false )
- end
-
- return objects
- end
-
-
- def refresh_c_deep_dependencies
- return if (not @configurator.project_use_deep_dependencies)
-
- @file_wrapper.rm_f(
- @file_wrapper.directory_listing(
- File.join( @configurator.project_release_dependencies_path, '*' + @configurator.extension_dependencies ) ) )
-
- @release_invoker_helper.process_deep_dependencies(
- @file_path_utils.form_release_dependencies_filelist(
- @configurator.collection_all_source ) )
- end
-
-
- def artifactinate( *files )
- files.flatten.each do |file|
- @file_wrapper.cp( file, @configurator.project_release_artifacts_path ) if @file_wrapper.exist?( file )
- end
- end
-
- def convert_libraries_to_arguments(libraries)
- args = ((libraries || []) + ((defined? LIBRARIES_SYSTEM) ? LIBRARIES_SYSTEM : [])).flatten
- if (defined? LIBRARIES_FLAG)
- args.map! {|v| LIBRARIES_FLAG.gsub(/\$\{1\}/, v) }
- end
- return args
- end
-
- def get_library_paths_to_arguments()
- paths = (defined? PATHS_LIBRARIES) ? (PATHS_LIBRARIES || []).clone : []
- if (defined? LIBRARIES_PATH_FLAG)
- paths.map! {|v| LIBRARIES_PATH_FLAG.gsub(/\$\{1\}/, v) }
- end
- return paths
- end
-
- def sort_objects_and_libraries(both)
- extension = if ((defined? EXTENSION_SUBPROJECTS) && (defined? EXTENSION_LIBRARIES))
- extension_libraries = if (EXTENSION_LIBRARIES.class == Array)
- EXTENSION_LIBRARIES.join(")|(?:\\")
- else
- EXTENSION_LIBRARIES
- end
- "(?:\\#{EXTENSION_SUBPROJECTS})|(?:\\#{extension_libraries})"
- elsif (defined? EXTENSION_SUBPROJECTS)
- "\\#{EXTENSION_SUBPROJECTS}"
- elsif (defined? EXTENSION_LIBRARIES)
- if (EXTENSION_LIBRARIES.class == Array)
- "(?:\\#{EXTENSION_LIBRARIES.join(")|(?:\\")})"
- else
- "\\#{EXTENSION_LIBRARIES}"
- end
- else
- "\\.LIBRARY"
- end
- sorted_objects = both.group_by {|v| v.match(/.+#{extension}$/) ? :libraries : :objects }
- libraries = sorted_objects[:libraries] || []
- objects = sorted_objects[:objects] || []
- return objects, libraries
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/release_invoker_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/release_invoker_helper.rb
deleted file mode 100644
index f83a2a53a..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/release_invoker_helper.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-class ReleaseInvokerHelper
-
- constructor :configurator, :dependinator, :task_invoker
-
-
- def process_deep_dependencies(dependencies_list)
- return if (not @configurator.project_use_deep_dependencies)
-
- if @configurator.project_generate_deep_dependencies
- @dependinator.enhance_release_file_dependencies( dependencies_list )
- @task_invoker.invoke_release_dependencies_files( dependencies_list )
- end
-
- @dependinator.load_release_object_deep_dependencies( dependencies_list )
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/reportinator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/reportinator.rb
deleted file mode 100644
index fcb5286b9..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/reportinator.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-# Pretifies reports
-class Reportinator
-
- ##
- # Generates a banner for a message based on the length of the message or a
- # given width.
- # ==== Attributes
- #
- # * _message_: The message to put.
- # * _width_: The width of the message. If nil the size of the banner is
- # determined by the length of the message.
- #
- # ==== Examples
- #
- # rp = Reportinator.new
- # rp.generate_banner("Hello world!") => "------------\nHello world!\n------------\n"
- # rp.generate_banner("Hello world!", 3) => "---\nHello world!\n---\n"
- #
- #
- def generate_banner(message, width=nil)
- dash_count = ((width.nil?) ? message.strip.length : width)
- return "#{'-' * dash_count}\n#{message}\n#{'-' * dash_count}\n"
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/rules_cmock.rake b/test/unit-test/vendor/ceedling/lib/ceedling/rules_cmock.rake
deleted file mode 100644
index 51485d3a8..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/rules_cmock.rake
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-rule(/#{CMOCK_MOCK_PREFIX}[^\/\\]+#{'\\'+EXTENSION_SOURCE}$/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_header_input_for_mock_file(task_name)
- end
- ]) do |mock|
- @ceedling[:generator].generate_mock(TEST_SYM, mock.source)
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/rules_preprocess.rake b/test/unit-test/vendor/ceedling/lib/ceedling/rules_preprocess.rake
deleted file mode 100644
index d599421c0..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/rules_preprocess.rake
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-# invocations against this rule should only happen when enhanced dependencies are enabled;
-# otherwise, dependency tracking will be too shallow and preprocessed files could intermittently
-# fail to be updated when they actually need to be.
-rule(/#{PROJECT_TEST_PREPROCESS_FILES_PATH}\/.+/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_test_or_source_or_header_file(task_name)
- end
- ]) do |file|
- if (not @ceedling[:configurator].project_use_deep_dependencies)
- raise 'ERROR: Ceedling preprocessing rule invoked though necessary auxiliary dependency support not enabled.'
- end
- @ceedling[:generator].generate_preprocessed_file(TEST_SYM, file.source)
-end
-
-
-# invocations against this rule can always happen as there are no deeper dependencies to consider
-rule(/#{PROJECT_TEST_PREPROCESS_INCLUDES_PATH}\/.+/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_test_or_source_or_header_file(task_name)
- end
- ]) do |file|
- @ceedling[:generator].generate_shallow_includes_list(TEST_SYM, file.source)
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/rules_release.rake b/test/unit-test/vendor/ceedling/lib/ceedling/rules_release.rake
deleted file mode 100644
index 47eec858f..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/rules_release.rake
+++ /dev/null
@@ -1,98 +0,0 @@
-
-RELEASE_COMPILE_TASK_ROOT = RELEASE_TASK_ROOT + 'compile:' unless defined?(RELEASE_COMPILE_TASK_ROOT)
-RELEASE_ASSEMBLE_TASK_ROOT = RELEASE_TASK_ROOT + 'assemble:' unless defined?(RELEASE_ASSEMBLE_TASK_ROOT)
-
-# If GCC and Releasing a Library, Update Tools to Automatically Have Necessary Tags
-if (TOOLS_RELEASE_COMPILER[:executable] == DEFAULT_RELEASE_COMPILER_TOOL[:executable])
- if (File.extname(PROJECT_RELEASE_BUILD_TARGET) == '.so')
- TOOLS_RELEASE_COMPILER[:arguments] << "-fPIC" unless TOOLS_RELEASE_COMPILER[:arguments].include?("-fPIC")
- TOOLS_RELEASE_LINKER[:arguments] << "-shared" unless TOOLS_RELEASE_LINKER[:arguments].include?("-shared")
- elsif (File.extname(PROJECT_RELEASE_BUILD_TARGET) == '.a')
- TOOLS_RELEASE_COMPILER[:arguments] << "-fPIC" unless TOOLS_RELEASE_COMPILER[:arguments].include?("-fPIC")
- TOOLS_RELEASE_LINKER[:executable] = 'ar'
- TOOLS_RELEASE_LINKER[:arguments] = ['rcs', '${2}', '${1}'].compact
- end
-end
-
-if (RELEASE_BUILD_USE_ASSEMBLY)
-rule(/#{PROJECT_RELEASE_BUILD_OUTPUT_ASM_PATH}\/#{'.+\\'+EXTENSION_OBJECT}$/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_assembly_file(task_name)
- end
- ]) do |object|
- @ceedling[:generator].generate_object_file(
- TOOLS_RELEASE_ASSEMBLER,
- OPERATION_ASSEMBLE_SYM,
- RELEASE_SYM,
- object.source,
- object.name )
-end
-end
-
-
-rule(/#{PROJECT_RELEASE_BUILD_OUTPUT_C_PATH}\/#{'.+\\'+EXTENSION_OBJECT}$/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_compilation_input_file(task_name, :error, true)
- end
- ]) do |object|
- @ceedling[:generator].generate_object_file(
- TOOLS_RELEASE_COMPILER,
- OPERATION_COMPILE_SYM,
- RELEASE_SYM,
- object.source,
- object.name,
- @ceedling[:file_path_utils].form_release_build_c_list_filepath( object.name ),
- @ceedling[:file_path_utils].form_release_dependencies_filepath( object.name ) )
-end
-
-
-rule(/#{PROJECT_RELEASE_BUILD_TARGET}/) do |bin_file|
- objects, libraries = @ceedling[:release_invoker].sort_objects_and_libraries(bin_file.prerequisites)
- tool = TOOLS_RELEASE_LINKER.clone
- lib_args = @ceedling[:release_invoker].convert_libraries_to_arguments(libraries)
- lib_paths = @ceedling[:release_invoker].get_library_paths_to_arguments()
- map_file = @ceedling[:configurator].project_release_build_map
- @ceedling[:generator].generate_executable_file(
- tool,
- RELEASE_SYM,
- objects,
- bin_file.name,
- map_file,
- lib_args,
- lib_paths )
- @ceedling[:release_invoker].artifactinate( bin_file.name, map_file, @ceedling[:configurator].release_build_artifacts )
-end
-
-
-namespace RELEASE_SYM do
- # use rules to increase efficiency for large projects (instead of iterating through all sources and creating defined tasks)
-
- namespace :compile do
- rule(/^#{RELEASE_COMPILE_TASK_ROOT}\S+#{'\\'+EXTENSION_SOURCE}$/ => [ # compile task names by regex
- proc do |task_name|
- source = task_name.sub(/#{RELEASE_COMPILE_TASK_ROOT}/, '')
- @ceedling[:file_finder].find_source_file(source, :error)
- end
- ]) do |compile|
- @ceedling[:rake_wrapper][:directories].invoke
- @ceedling[:project_config_manager].process_release_config_change
- @ceedling[:release_invoker].setup_and_invoke_c_objects( [compile.source] )
- end
- end
-
- if (RELEASE_BUILD_USE_ASSEMBLY)
- namespace :assemble do
- rule(/^#{RELEASE_ASSEMBLE_TASK_ROOT}\S+#{'\\'+EXTENSION_ASSEMBLY}$/ => [ # assemble task names by regex
- proc do |task_name|
- source = task_name.sub(/#{RELEASE_ASSEMBLE_TASK_ROOT}/, '')
- @ceedling[:file_finder].find_assembly_file(source)
- end
- ]) do |assemble|
- @ceedling[:rake_wrapper][:directories].invoke
- @ceedling[:project_config_manager].process_release_config_change
- @ceedling[:release_invoker].setup_and_invoke_asm_objects( [assemble.source] )
- end
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/rules_release_deep_dependencies.rake b/test/unit-test/vendor/ceedling/lib/ceedling/rules_release_deep_dependencies.rake
deleted file mode 100644
index bf944de25..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/rules_release_deep_dependencies.rake
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-rule(/#{PROJECT_RELEASE_DEPENDENCIES_PATH}\/#{'.+\\'+EXTENSION_DEPENDENCIES}$/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_compilation_input_file(task_name, :error, true)
- end
- ]) do |dep|
- @ceedling[:generator].generate_dependencies_file(
- TOOLS_RELEASE_DEPENDENCIES_GENERATOR,
- RELEASE_SYM,
- dep.source,
- @ceedling[:file_path_utils].form_release_build_c_object_filepath(dep.source),
- dep.name)
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/rules_tests.rake b/test/unit-test/vendor/ceedling/lib/ceedling/rules_tests.rake
deleted file mode 100644
index 3ab80f3a9..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/rules_tests.rake
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-rule(/#{PROJECT_TEST_FILE_PREFIX}#{'.+'+TEST_RUNNER_FILE_SUFFIX}#{'\\'+EXTENSION_SOURCE}$/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_test_input_for_runner_file(task_name)
- end
- ]) do |runner|
- @ceedling[:generator].generate_test_runner(TEST_SYM, runner.source, runner.name)
-end
-
-rule(/#{PROJECT_TEST_BUILD_OUTPUT_C_PATH}\/#{'.+\\'+EXTENSION_OBJECT}$/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_compilation_input_file(task_name)
- end
- ]) do |object|
- if (File.basename(object.source) =~ /#{EXTENSION_SOURCE}$/)
- @ceedling[:generator].generate_object_file(
- TOOLS_TEST_COMPILER,
- OPERATION_COMPILE_SYM,
- TEST_SYM,
- object.source,
- object.name,
- @ceedling[:file_path_utils].form_test_build_list_filepath( object.name ),
- @ceedling[:file_path_utils].form_test_dependencies_filepath( object.name ))
- elsif (defined?(TEST_BUILD_USE_ASSEMBLY) && TEST_BUILD_USE_ASSEMBLY)
- @ceedling[:generator].generate_object_file(
- TOOLS_TEST_ASSEMBLER,
- OPERATION_ASSEMBLE_SYM,
- TEST_SYM,
- object.source,
- object.name )
- end
-end
-
-
-rule(/#{PROJECT_TEST_BUILD_OUTPUT_PATH}\/#{'.+\\'+EXTENSION_EXECUTABLE}$/) do |bin_file|
- lib_args = @ceedling[:test_invoker].convert_libraries_to_arguments()
- lib_paths = @ceedling[:test_invoker].get_library_paths_to_arguments()
- @ceedling[:generator].generate_executable_file(
- TOOLS_TEST_LINKER,
- TEST_SYM,
- bin_file.prerequisites,
- bin_file.name,
- @ceedling[:file_path_utils].form_test_build_map_filepath( bin_file.name ),
- lib_args,
- lib_paths )
-end
-
-
-rule(/#{PROJECT_TEST_RESULTS_PATH}\/#{'.+\\'+EXTENSION_TESTPASS}$/ => [
- proc do |task_name|
- @ceedling[:file_path_utils].form_test_executable_filepath(task_name)
- end
- ]) do |test_result|
- @ceedling[:generator].generate_test_results(TOOLS_TEST_FIXTURE, TEST_SYM, test_result.source, test_result.name)
-end
-
-
-namespace TEST_SYM do
- # use rules to increase efficiency for large projects (instead of iterating through all sources and creating defined tasks)
-
- rule(/^#{TEST_TASK_ROOT}\S+$/ => [ # test task names by regex
- proc do |task_name|
- test = task_name.sub(/#{TEST_TASK_ROOT}/, '')
- test = "#{PROJECT_TEST_FILE_PREFIX}#{test}" if not (test.start_with?(PROJECT_TEST_FILE_PREFIX))
- @ceedling[:file_finder].find_test_from_file_path(test)
- end
- ]) do |test|
- @ceedling[:rake_wrapper][:test_deps].invoke
- @ceedling[:test_invoker].setup_and_invoke([test.source])
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/rules_tests_deep_dependencies.rake b/test/unit-test/vendor/ceedling/lib/ceedling/rules_tests_deep_dependencies.rake
deleted file mode 100644
index a8dfd296e..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/rules_tests_deep_dependencies.rake
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-rule(/#{PROJECT_TEST_DEPENDENCIES_PATH}\/#{'.+\\'+EXTENSION_DEPENDENCIES}$/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_compilation_input_file(task_name)
- end
- ]) do |dep|
- @ceedling[:generator].generate_dependencies_file(
- TOOLS_TEST_DEPENDENCIES_GENERATOR,
- TEST_SYM,
- dep.source,
- @ceedling[:file_path_utils].form_test_build_c_object_filepath(dep.source),
- dep.name)
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/setupinator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/setupinator.rb
deleted file mode 100644
index cf9922f07..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/setupinator.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-
-class Setupinator
-
- attr_reader :config_hash
- attr_writer :ceedling
-
- def setup
- @ceedling = {}
- @config_hash = {}
- end
-
- def load_project_files
- @ceedling[:project_file_loader].find_project_files
- return @ceedling[:project_file_loader].load_project_config
- end
-
- def do_setup(config_hash)
- @config_hash = config_hash
-
- # load up all the constants and accessors our rake files, objects, & external scripts will need;
- # note: configurator modifies the cmock section of the hash with a couple defaults to tie
- # project together - the modified hash is used to build cmock object
- @ceedling[:configurator].populate_defaults( config_hash )
- @ceedling[:configurator].populate_unity_defaults( config_hash )
- @ceedling[:configurator].populate_cmock_defaults( config_hash )
- @ceedling[:configurator].find_and_merge_plugins( config_hash )
- @ceedling[:configurator].merge_imports( config_hash )
- @ceedling[:configurator].eval_environment_variables( config_hash )
- @ceedling[:configurator].tools_setup( config_hash )
- @ceedling[:configurator].eval_paths( config_hash )
- @ceedling[:configurator].standardize_paths( config_hash )
- @ceedling[:configurator].validate( config_hash )
- @ceedling[:configurator].build( config_hash, :environment )
-
- @ceedling[:configurator].insert_rake_plugins( @ceedling[:configurator].rake_plugins )
- @ceedling[:configurator].tools_supplement_arguments( config_hash )
-
- # merge in any environment variables plugins specify, after the main build
- @ceedling[:plugin_manager].load_plugin_scripts( @ceedling[:configurator].script_plugins, @ceedling ) do |env|
- @ceedling[:configurator].eval_environment_variables( env )
- @ceedling[:configurator].build_supplement( config_hash, env )
- end
-
- @ceedling[:plugin_reportinator].set_system_objects( @ceedling )
- @ceedling[:file_finder].prepare_search_sources
- @ceedling[:loginator].setup_log_filepath
- @ceedling[:project_config_manager].config_hash = config_hash
- end
-
- def reset_defaults(config_hash)
- @ceedling[:configurator].reset_defaults( config_hash )
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/stream_wrapper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/stream_wrapper.rb
deleted file mode 100644
index 2cee58d3e..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/stream_wrapper.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-
-class StreamWrapper
-
- def stdout_override(&fnc)
- @stdout_overide_fnc = fnc
- end
-
- def stdout_puts(string)
- if @stdout_overide_fnc
- @stdout_overide_fnc.call(string)
- else
- $stdout.puts(string)
- end
- end
-
- def stdout_flush
- $stdout.flush
- end
-
- def stderr_puts(string)
- $stderr.puts(string)
- end
-
- def stderr_flush
- $stderr.flush
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/streaminator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/streaminator.rb
deleted file mode 100644
index e30440c7d..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/streaminator.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-require 'ceedling/constants'
-
-class Streaminator
-
- constructor :streaminator_helper, :verbosinator, :loginator, :stream_wrapper
-
- # for those objects for whom the configurator has already been instantiated,
- # Streaminator is a convenience object for handling verbosity and writing to the std streams
-
- def stdout_puts(string, verbosity=Verbosity::NORMAL)
- if (@verbosinator.should_output?(verbosity))
- @stream_wrapper.stdout_puts(string)
- @stream_wrapper.stdout_flush
- end
-
- # write to log as though Verbosity::OBNOXIOUS
- @loginator.log( string, @streaminator_helper.extract_name($stdout) )
- end
-
- def stderr_puts(string, verbosity=Verbosity::NORMAL)
- if (@verbosinator.should_output?(verbosity))
- @stream_wrapper.stderr_puts(string)
- @stream_wrapper.stderr_flush
- end
-
- # write to log as though Verbosity::OBNOXIOUS
- @loginator.log( string, @streaminator_helper.extract_name($stderr) )
- end
-
- def stream_puts(stream, string, verbosity=Verbosity::NORMAL)
- if (@verbosinator.should_output?(verbosity))
- stream.puts(string)
- stream.flush
- end
-
- # write to log as though Verbosity::OBNOXIOUS
- @loginator.log( string, @streaminator_helper.extract_name(stream) )
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/streaminator_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/streaminator_helper.rb
deleted file mode 100644
index cbaef7c92..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/streaminator_helper.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-
-class StreaminatorHelper
-
- def extract_name(stream)
- name = case (stream.fileno)
- when 0 then '#'
- when 1 then '#'
- when 2 then '#'
- else stream.inspect
- end
-
- return name
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/system_utils.rb b/test/unit-test/vendor/ceedling/lib/ceedling/system_utils.rb
deleted file mode 100644
index 7d232a7fb..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/system_utils.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-
-class Object
- def deep_clone
- Marshal::load(Marshal.dump(self))
- end
-end
-
-
-##
-# Class containing system utility functions.
-class SystemUtils
-
- constructor :system_wrapper
-
- ##
- # Sets up the class.
- def setup
- @tcsh_shell = nil
- end
-
- ##
- # Checks the system shell to see if it a tcsh shell.
- def tcsh_shell?
- # once run a single time, return state determined at that execution
- return @tcsh_shell if not @tcsh_shell.nil?
-
- result = @system_wrapper.shell_backticks('echo $version')
-
- if ((result[:exit_code] == 0) and (result[:output].strip =~ /^tcsh/))
- @tcsh_shell = true
- else
- @tcsh_shell = false
- end
-
- return @tcsh_shell
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/system_wrapper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/system_wrapper.rb
deleted file mode 100644
index 2b0f1edda..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/system_wrapper.rb
+++ /dev/null
@@ -1,80 +0,0 @@
-require 'rbconfig'
-
-class SystemWrapper
-
- # static method for use in defaults
- def self.windows?
- return ((RbConfig::CONFIG['host_os'] =~ /mswin|mingw/) ? true : false) if defined?(RbConfig)
- return ((Config::CONFIG['host_os'] =~ /mswin|mingw/) ? true : false)
- end
-
- # class method so as to be mockable for tests
- def windows?
- return SystemWrapper.windows?
- end
-
- def module_eval(string)
- return Object.module_eval("\"" + string + "\"")
- end
-
- def eval(string)
- return eval(string)
- end
-
- def search_paths
- return ENV['PATH'].split(File::PATH_SEPARATOR)
- end
-
- def cmdline_args
- return ARGV
- end
-
- def env_set(name, value)
- ENV[name] = value
- end
-
- def env_get(name)
- return ENV[name]
- end
-
- def time_now
- return Time.now.asctime
- end
-
- def shell_backticks(command, boom = true)
- retval = `#{command}`.freeze
- $exit_code = ($?.exitstatus).freeze if boom
- return {
- :output => retval.freeze,
- :exit_code => ($?.exitstatus).freeze
- }
- end
-
- def shell_system(command, boom = true)
- system( command )
- $exit_code = ($?.exitstatus).freeze if boom
- return {
- :output => "".freeze,
- :exit_code => ($?.exitstatus).freeze
- }
- end
-
- def add_load_path(path)
- $LOAD_PATH.unshift(path)
- end
-
- def require_file(path)
- require(path)
- end
-
- def ruby_success
- # We are successful if we've never had an exit code that went boom (either because it's empty or it was 0)
- return ($exit_code.nil? || ($exit_code == 0)) && ($!.nil? || $!.is_a?(SystemExit) && $!.success?)
- end
-
- def constants_include?(item)
- # forcing to strings provides consistency across Ruby versions
- return Object.constants.map{|constant| constant.to_s}.include?(item.to_s)
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/target_loader.rb b/test/unit-test/vendor/ceedling/lib/ceedling/target_loader.rb
deleted file mode 100644
index 7fbc09591..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/target_loader.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-module TargetLoader
- class NoTargets < Exception; end
- class NoDirectory < Exception; end
- class NoDefault < Exception; end
- class NoSuchTarget < Exception; end
-
- class RequestReload < Exception; end
-
- def self.inspect(config, target_name=nil)
- unless config[:targets]
- raise NoTargets
- end
-
- targets = config[:targets]
- unless targets[:targets_directory]
- raise NoDirectory.new("No targets directory specified.")
- end
- unless targets[:default_target]
- raise NoDefault.new("No default target specified.")
- end
-
- target_path = lambda {|name| File.join(targets[:targets_directory], name + ".yml")}
-
- target = if target_name
- target_path.call(target_name)
- else
- target_path.call(targets[:default_target])
- end
-
- unless File.exists? target
- raise NoSuchTarget.new("No such target: #{target}")
- end
-
- ENV['CEEDLING_MAIN_PROJECT_FILE'] = target
-
- raise RequestReload
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/task_invoker.rb b/test/unit-test/vendor/ceedling/lib/ceedling/task_invoker.rb
deleted file mode 100644
index 35f92ae03..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/task_invoker.rb
+++ /dev/null
@@ -1,122 +0,0 @@
-require 'ceedling/par_map'
-
-class TaskInvoker
-
- attr_accessor :first_run
-
- constructor :dependinator, :rake_utils, :rake_wrapper, :project_config_manager
-
- def setup
- @test_regexs = [/^#{TEST_ROOT_NAME}:/]
- @release_regexs = [/^#{RELEASE_ROOT_NAME}(:|$)/]
- @first_run = true
- end
-
- def add_test_task_regex(regex)
- @test_regexs << regex
- end
-
- def add_release_task_regex(regex)
- @release_regexs << regex
- end
-
- def test_invoked?
- invoked = false
-
- @test_regexs.each do |regex|
- invoked = true if (@rake_utils.task_invoked?(regex))
- break if invoked
- end
-
- return invoked
- end
-
- def release_invoked?
- invoked = false
-
- @release_regexs.each do |regex|
- invoked = true if (@rake_utils.task_invoked?(regex))
- break if invoked
- end
-
- return invoked
- end
-
- def invoked?(regex)
- return @rake_utils.task_invoked?(regex)
- end
-
- def reset_rake_task_for_changed_defines(file)
- if !(file =~ /#{VENDORS_FILES.map{|ignore| '\b' + ignore.ext(File.extname(file)) + '\b'}.join('|')}$/)
- @rake_wrapper[file].clear_actions if @first_run == false && @project_config_manager.test_defines_changed
- @rake_wrapper[file].reenable if @first_run == false && @project_config_manager.test_defines_changed
- end
- end
-
- def invoke_test_mocks(mocks)
- @dependinator.enhance_mock_dependencies( mocks )
- mocks.each { |mock|
- reset_rake_task_for_changed_defines( mock )
- @rake_wrapper[mock].invoke
- }
- end
-
- def invoke_test_runner(runner)
- @dependinator.enhance_runner_dependencies( runner )
- reset_rake_task_for_changed_defines( runner )
- @rake_wrapper[runner].invoke
- end
-
- def invoke_test_shallow_include_lists(files)
- @dependinator.enhance_shallow_include_lists_dependencies( files )
- par_map(PROJECT_COMPILE_THREADS, files) do |file|
- reset_rake_task_for_changed_defines( file )
- @rake_wrapper[file].invoke
- end
- end
-
- def invoke_test_preprocessed_files(files)
- @dependinator.enhance_preprocesed_file_dependencies( files )
- par_map(PROJECT_COMPILE_THREADS, files) do |file|
- reset_rake_task_for_changed_defines( file )
- @rake_wrapper[file].invoke
- end
- end
-
- def invoke_test_dependencies_files(files)
- @dependinator.enhance_dependencies_dependencies( files )
- par_map(PROJECT_COMPILE_THREADS, files) do |file|
- reset_rake_task_for_changed_defines( file )
- @rake_wrapper[file].invoke
- end
- end
-
- def invoke_test_objects(objects)
- par_map(PROJECT_COMPILE_THREADS, objects) do |object|
- reset_rake_task_for_changed_defines( object )
- @rake_wrapper[object].invoke
- end
- end
-
- def invoke_test_executable(file)
- @rake_wrapper[file].invoke
- end
-
- def invoke_test_results(result)
- @dependinator.enhance_results_dependencies( result )
- @rake_wrapper[result].invoke
- end
-
- def invoke_release_dependencies_files(files)
- par_map(PROJECT_COMPILE_THREADS, files) do |file|
- @rake_wrapper[file].invoke
- end
- end
-
- def invoke_release_objects(objects)
- par_map(PROJECT_COMPILE_THREADS, objects) do |object|
- @rake_wrapper[object].invoke
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_base.rake b/test/unit-test/vendor/ceedling/lib/ceedling/tasks_base.rake
deleted file mode 100644
index 67a3b503a..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_base.rake
+++ /dev/null
@@ -1,115 +0,0 @@
-require 'ceedling/constants'
-require 'ceedling/file_path_utils'
-require 'ceedling/version'
-
-desc "Display build environment version info."
-task :version do
- puts " Ceedling:: #{Ceedling::Version::CEEDLING}"
- puts " Unity:: #{Ceedling::Version::UNITY}"
- puts " CMock:: #{Ceedling::Version::CMOCK}"
- puts " CException:: #{Ceedling::Version::CEXCEPTION}"
-end
-
-desc "Set verbose output (silent:[#{Verbosity::SILENT}] - obnoxious:[#{Verbosity::OBNOXIOUS}])."
-task :verbosity, :level do |t, args|
- verbosity_level = args.level.to_i
-
- if (PROJECT_USE_MOCKS)
- # don't store verbosity level in setupinator's config hash, use a copy;
- # otherwise, the input configuration will change and trigger entire project rebuilds
- hash = @ceedling[:setupinator].config_hash[:cmock].clone
- hash[:verbosity] = verbosity_level
-
- @ceedling[:cmock_builder].manufacture( hash )
- end
-
- @ceedling[:configurator].project_verbosity = verbosity_level
-
- # control rake's verbosity with new setting
- verbose( ((verbosity_level >= Verbosity::OBNOXIOUS) ? true : false) )
-end
-
-desc "Enable logging"
-task :logging do
- @ceedling[:configurator].project_logging = true
-end
-
-# non advertised debug task
-task :debug do
- Rake::Task[:verbosity].invoke(Verbosity::DEBUG)
- Rake.application.options.trace = true
- @ceedling[:configurator].project_debug = true
-end
-
-# non advertised sanity checking task
-task :sanity_checks, :level do |t, args|
- check_level = args.level.to_i
- @ceedling[:configurator].sanity_checks = check_level
-end
-
-# non advertised catch for calling upgrade in the wrong place
-task :upgrade do
- puts "WARNING: You're currently IN your project directory. Take a step out and try"
- puts "again if you'd like to perform an upgrade."
-end
-
-# list expanded environment variables
-if (not ENVIRONMENT.empty?)
-desc "List all configured environment variables."
-task :environment do
- env_list = []
- ENVIRONMENT.each do |env|
- env.each_key do |key|
- name = key.to_s.upcase
- env_list.push(" - #{name}: \"#{env[key]}\"")
- end
- end
- env_list.sort.each do |env_line|
- puts env_line
- end
-end
-end
-
-namespace :options do
-
- COLLECTION_PROJECT_OPTIONS.each do |option_path|
- option = File.basename(option_path, '.yml')
-
- desc "Merge #{option} project options."
- task option.to_sym do
- hash = @ceedling[:project_config_manager].merge_options( @ceedling[:setupinator].config_hash, option_path )
- @ceedling[:setupinator].do_setup( hash )
- if @ceedling[:configurator].project_release_build
- load(File.join(CEEDLING_LIB, 'ceedling', 'rules_release.rake'))
- end
- end
- end
-
- # This is to give nice errors when typing options
- rule /^options:.*/ do |t, args|
- filename = t.to_s.split(':')[-1] + '.yml'
- filelist = COLLECTION_PROJECT_OPTIONS.map{|s| File.basename(s) }
- @ceedling[:file_finder].find_file_from_list(filename, filelist, :error)
- end
-
- # This will output the fully-merged tools options to their own project.yml file
- desc "Export tools options to a new project file"
- task :export, :filename do |t, args|
- outfile = args.filename || 'tools.yml'
- toolcfg = {}
- @ceedling[:configurator].project_config_hash.each_pair do |k,v|
- toolcfg[k] = v if (k.to_s[0..5] == 'tools_')
- end
- File.open(outfile,'w') {|f| f << toolcfg.to_yaml({:indentation => 2})}
- end
-end
-
-
-# do not present task if there's no plugins
-if (not PLUGINS_ENABLED.empty?)
-desc "Execute plugin result summaries (no build triggering)."
-task :summary do
- @ceedling[:plugin_manager].summary
- puts "\nNOTE: Summaries may be out of date with project sources.\n\n"
-end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_filesystem.rake b/test/unit-test/vendor/ceedling/lib/ceedling/tasks_filesystem.rake
deleted file mode 100644
index 8263955fa..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_filesystem.rake
+++ /dev/null
@@ -1,111 +0,0 @@
-
-# rather than require 'rake/clean' & try to override, we replicate for finer control
-CLEAN = Rake::FileList["**/*~", "**/*.bak"]
-CLOBBER = Rake::FileList.new
-
-CLEAN.clear_exclude.exclude { |fn| fn.pathmap("%f") == 'core' && File.directory?(fn) }
-
-CLEAN.include(File.join(PROJECT_TEST_BUILD_OUTPUT_PATH, '*'))
-CLEAN.include(File.join(PROJECT_TEST_RESULTS_PATH, '*'))
-CLEAN.include(File.join(PROJECT_TEST_DEPENDENCIES_PATH, '*'))
-CLEAN.include(File.join(PROJECT_BUILD_RELEASE_ROOT, '*.*'))
-CLEAN.include(File.join(PROJECT_RELEASE_BUILD_OUTPUT_PATH, '*'))
-CLEAN.include(File.join(PROJECT_RELEASE_DEPENDENCIES_PATH, '*'))
-
-CLOBBER.include(File.join(PROJECT_BUILD_ARTIFACTS_ROOT, '**/*'))
-CLOBBER.include(File.join(PROJECT_BUILD_TESTS_ROOT, '**/*'))
-CLOBBER.include(File.join(PROJECT_BUILD_RELEASE_ROOT, '**/*'))
-CLOBBER.include(File.join(PROJECT_LOG_PATH, '**/*'))
-CLOBBER.include(File.join(PROJECT_TEMP_PATH, '**/*'))
-
-# just in case they're using git, let's make sure we allow them to preserved the build directory if desired.
-CLOBBER.exclude(File.join(TESTS_BASE_PATH), '**/.gitkeep')
-
-# because of cmock config, mock path can optionally exist apart from standard test build paths
-CLOBBER.include(File.join(CMOCK_MOCK_PATH, '*'))
-
-REMOVE_FILE_PROC = Proc.new { |fn| rm_r fn rescue nil }
-
-# redefine clean so we can override how it advertises itself
-desc "Delete all build artifacts and temporary products."
-task(:clean) do
- # because :clean is a prerequisite for :clobber, intelligently display the progress message
- if (not @ceedling[:task_invoker].invoked?(/^clobber$/))
- @ceedling[:streaminator].stdout_puts("\nCleaning build artifacts...\n(For large projects, this task may take a long time to complete)\n\n")
- end
- begin
- CLEAN.each { |fn| REMOVE_FILE_PROC.call(fn) }
- rescue
- end
-end
-
-# redefine clobber so we can override how it advertises itself
-desc "Delete all generated files (and build artifacts)."
-task(:clobber => [:clean]) do
- @ceedling[:streaminator].stdout_puts("\nClobbering all generated files...\n(For large projects, this task may take a long time to complete)\n\n")
- begin
- CLOBBER.each { |fn| REMOVE_FILE_PROC.call(fn) }
- @ceedling[:rake_wrapper][:directories].invoke
- @ceedling[:dependinator].touch_force_rebuild_files
- rescue
- end
-end
-
-# create a directory task for each of the paths, so we know how to build them
-PROJECT_BUILD_PATHS.each { |path| directory(path) }
-
-# create a single directory task which verifies all the others get built
-task :directories => PROJECT_BUILD_PATHS
-
-# when the force file doesn't exist, it probably means we clobbered or are on a fresh
-# install. In either case, stuff was deleted, so assume we want to rebuild it all
-file @ceedling[:configurator].project_test_force_rebuild_filepath do
- unless File.exists?(@ceedling[:configurator].project_test_force_rebuild_filepath)
- @ceedling[:dependinator].touch_force_rebuild_files
- end
-end
-
-# list paths discovered at load time
-namespace :paths do
- standard_paths = ['test','source','include']
- paths = @ceedling[:setupinator].config_hash[:paths].keys.map{|n| n.to_s.downcase}
- paths = (paths + standard_paths).uniq
- paths.each do |name|
- path_list = Object.const_get("COLLECTION_PATHS_#{name.upcase}")
-
- if (path_list.size != 0) || (standard_paths.include?(name))
- desc "List all collected #{name} paths."
- task(name.to_sym) { puts "#{name} paths:"; path_list.sort.each {|path| puts " - #{path}" } }
- end
- end
-
-end
-
-
-# list files & file counts discovered at load time
-namespace :files do
-
- categories = [
- ['test', COLLECTION_ALL_TESTS],
- ['source', COLLECTION_ALL_SOURCE],
- ['include', COLLECTION_ALL_HEADERS],
- ['support', COLLECTION_ALL_SUPPORT]
- ]
-
- using_assembly = (defined?(TEST_BUILD_USE_ASSEMBLY) && TEST_BUILD_USE_ASSEMBLY) ||
- (defined?(RELEASE_BUILD_USE_ASSEMBLY) && RELEASE_BUILD_USE_ASSEMBLY)
- categories << ['assembly', COLLECTION_ALL_ASSEMBLY] if using_assembly
-
- categories.each do |category|
- name = category[0]
- collection = category[1]
-
- desc "List all collected #{name} files."
- task(name.to_sym) do
- puts "#{name} files:"
- collection.sort.each { |filepath| puts " - #{filepath}" }
- puts "file count: #{collection.size}"
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_release.rake b/test/unit-test/vendor/ceedling/lib/ceedling/tasks_release.rake
deleted file mode 100644
index 9d3a59c53..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_release.rake
+++ /dev/null
@@ -1,29 +0,0 @@
-require 'ceedling/constants'
-require 'ceedling/file_path_utils'
-
-
-desc "Build release target."
-task RELEASE_SYM => [:directories] do
- header = "Release build '#{File.basename(PROJECT_RELEASE_BUILD_TARGET)}'"
- @ceedling[:streaminator].stdout_puts("\n\n#{header}\n#{'-' * header.length}")
-
- begin
- @ceedling[:plugin_manager].pre_release
-
- core_objects = []
- extra_objects = @ceedling[:file_path_utils].form_release_build_c_objects_filelist( COLLECTION_RELEASE_ARTIFACT_EXTRA_LINK_OBJECTS )
-
- @ceedling[:project_config_manager].process_release_config_change
- core_objects.concat( @ceedling[:release_invoker].setup_and_invoke_c_objects( COLLECTION_ALL_SOURCE ) )
-
- # if assembler use isn't enabled, COLLECTION_ALL_ASSEMBLY is empty array & nothing happens
- core_objects.concat( @ceedling[:release_invoker].setup_and_invoke_asm_objects( COLLECTION_ALL_ASSEMBLY ) )
-
- # if we're using libraries, we need to add those to our collection as well
- library_objects = (defined? LIBRARIES_RELEASE && !LIBRARIES_RELEASE.empty?) ? LIBRARIES_RELEASE.flatten.compact : []
- file( PROJECT_RELEASE_BUILD_TARGET => (core_objects + extra_objects + library_objects) )
- Rake::Task[PROJECT_RELEASE_BUILD_TARGET].invoke
- ensure
- @ceedling[:plugin_manager].post_release
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_release_deep_dependencies.rake b/test/unit-test/vendor/ceedling/lib/ceedling/tasks_release_deep_dependencies.rake
deleted file mode 100644
index db2be5f34..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_release_deep_dependencies.rake
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'ceedling/constants'
-
-namespace REFRESH_SYM do
-
- task RELEASE_SYM do
- @ceedling[:release_invoker].refresh_c_deep_dependencies
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_tests.rake b/test/unit-test/vendor/ceedling/lib/ceedling/tasks_tests.rake
deleted file mode 100644
index 5c1006b36..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_tests.rake
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'ceedling/constants'
-
-task :test_deps => [:directories]
-
-task :test => [:test_deps] do
- Rake.application['test:all'].invoke
-end
-
-namespace TEST_SYM do
-
- desc "Run all unit tests (also just 'test' works)."
- task :all => [:test_deps] do
- @ceedling[:test_invoker].setup_and_invoke(COLLECTION_ALL_TESTS)
- end
-
- desc "Run single test ([*] real test or source file name, no path)."
- task :* do
- message = "\nOops! '#{TEST_ROOT_NAME}:*' isn't a real task. " +
- "Use a real test or source file name (no path) in place of the wildcard.\n" +
- "Example: rake #{TEST_ROOT_NAME}:foo.c\n\n"
-
- @ceedling[:streaminator].stdout_puts( message )
- end
-
- desc "Run tests for changed files."
- task :delta => [:test_deps] do
- @ceedling[:test_invoker].setup_and_invoke(COLLECTION_ALL_TESTS, TEST_SYM, {:force_run => false})
- end
-
- desc "Just build tests without running."
- task :build_only => [:test_deps] do
- @ceedling[:test_invoker].setup_and_invoke(COLLECTION_ALL_TESTS, TEST_SYM, {:build_only => true})
- end
-
- desc "Run tests by matching regular expression pattern."
- task :pattern, [:regex] => [:test_deps] do |t, args|
- matches = []
-
- COLLECTION_ALL_TESTS.each { |test| matches << test if (test =~ /#{args.regex}/) }
-
- if (matches.size > 0)
- @ceedling[:test_invoker].setup_and_invoke(matches, TEST_SYM, {:force_run => false})
- else
- @ceedling[:streaminator].stdout_puts("\nFound no tests matching pattern /#{args.regex}/.")
- end
- end
-
- desc "Run tests whose test path contains [dir] or [dir] substring."
- task :path, [:dir] => [:test_deps] do |t, args|
- matches = []
-
- COLLECTION_ALL_TESTS.each { |test| matches << test if File.dirname(test).include?(args.dir.gsub(/\\/, '/')) }
-
- if (matches.size > 0)
- @ceedling[:test_invoker].setup_and_invoke(matches, TEST_SYM, {:force_run => false})
- else
- @ceedling[:streaminator].stdout_puts("\nFound no tests including the given path or path component.")
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_tests_deep_dependencies.rake b/test/unit-test/vendor/ceedling/lib/ceedling/tasks_tests_deep_dependencies.rake
deleted file mode 100644
index f89940716..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_tests_deep_dependencies.rake
+++ /dev/null
@@ -1,9 +0,0 @@
-require 'ceedling/constants'
-
-namespace REFRESH_SYM do
-
- task TEST_SYM do
- @ceedling[:test_invoker].refresh_deep_dependencies
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_vendor.rake b/test/unit-test/vendor/ceedling/lib/ceedling/tasks_vendor.rake
deleted file mode 100644
index 63c2ca55b..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/tasks_vendor.rake
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'ceedling/constants'
-require 'ceedling/file_path_utils'
-
-# create file dependencies to ensure C-based components of vendor tools are recompiled when they are updated with new versions
-# forming these explicitly rather than depend on auxiliary dependencies so all scenarios are explicitly covered
-
-file( @ceedling[:file_path_utils].form_test_build_c_object_filepath( UNITY_C_FILE ) => [
- File.join( UNITY_VENDOR_PATH, UNITY_LIB_PATH, UNITY_C_FILE ),
- File.join( UNITY_VENDOR_PATH, UNITY_LIB_PATH, UNITY_H_FILE ),
- File.join( UNITY_VENDOR_PATH, UNITY_LIB_PATH, UNITY_INTERNALS_H_FILE ) ]
- )
-
-
-if (PROJECT_USE_MOCKS)
-file( @ceedling[:file_path_utils].form_test_build_c_object_filepath( CMOCK_C_FILE ) => [
- File.join( CMOCK_VENDOR_PATH, CMOCK_LIB_PATH, CMOCK_C_FILE ),
- File.join( CMOCK_VENDOR_PATH, CMOCK_LIB_PATH, CMOCK_H_FILE ) ]
- )
-end
-
-
-if (PROJECT_USE_EXCEPTIONS)
-file( @ceedling[:file_path_utils].form_test_build_c_object_filepath( CEXCEPTION_C_FILE ) => [
- File.join( CEXCEPTION_VENDOR_PATH, CEXCEPTION_LIB_PATH, CEXCEPTION_C_FILE ),
- File.join( CEXCEPTION_VENDOR_PATH, CEXCEPTION_LIB_PATH, CEXCEPTION_H_FILE ) ]
- )
-end
-
-
-if (PROJECT_USE_EXCEPTIONS and PROJECT_RELEASE_BUILD)
-file( @ceedling[:file_path_utils].form_release_build_c_object_filepath( CEXCEPTION_C_FILE ) => [
- File.join( CEXCEPTION_VENDOR_PATH, CEXCEPTION_LIB_PATH, CEXCEPTION_C_FILE ),
- File.join( CEXCEPTION_VENDOR_PATH, CEXCEPTION_LIB_PATH, CEXCEPTION_H_FILE ) ]
- )
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/test_includes_extractor.rb b/test/unit-test/vendor/ceedling/lib/ceedling/test_includes_extractor.rb
deleted file mode 100644
index 393b0be8b..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/test_includes_extractor.rb
+++ /dev/null
@@ -1,111 +0,0 @@
-
-class TestIncludesExtractor
-
- constructor :configurator, :yaml_wrapper, :file_wrapper
-
- def setup
- @includes = {}
- @mocks = {}
- end
-
-
- # for includes_list file, slurp up array from yaml file and sort & store includes
- def parse_includes_list(includes_list)
- gather_and_store_includes( includes_list, @yaml_wrapper.load(includes_list) )
- end
-
- # open, scan for, and sort & store includes of test file
- def parse_test_file(test)
- gather_and_store_includes( test, extract_from_file(test) )
- end
-
- # open, scan for, and sort & store includes of test file
- def parse_test_file_source_include(test)
- return extract_source_include_from_file(test)
- end
-
- # mocks with no file extension
- def lookup_raw_mock_list(test)
- file_key = form_file_key(test)
- return [] if @mocks[file_key].nil?
- return @mocks[file_key]
- end
-
- # includes with file extension
- def lookup_includes_list(file)
- file_key = form_file_key(file)
- return [] if (@includes[file_key]).nil?
- return @includes[file_key]
- end
-
- private #################################
-
- def form_file_key(filepath)
- return File.basename(filepath).to_sym
- end
-
- def extract_from_file(file)
- includes = []
- header_extension = @configurator.extension_header
-
- contents = @file_wrapper.read(file)
-
- # remove line comments
- contents = contents.gsub(/\/\/.*$/, '')
- # remove block comments
- contents = contents.gsub(/\/\*.*?\*\//m, '')
-
- contents.split("\n").each do |line|
- # look for include statement
- scan_results = line.scan(/#include\s+\"\s*(.+#{'\\'+header_extension})\s*\"/)
-
- includes << scan_results[0][0] if (scan_results.size > 0)
-
- # look for TEST_FILE statement
- scan_results = line.scan(/TEST_FILE\(\s*\"\s*(.+\.\w+)\s*\"\s*\)/)
-
- includes << scan_results[0][0] if (scan_results.size > 0)
- end
-
- return includes.uniq
- end
-
- def extract_source_include_from_file(file)
- source_includes = []
- source_extension = @configurator.extension_source
-
- contents = @file_wrapper.read(file)
-
- # remove line comments
- contents = contents.gsub(/\/\/.*$/, '')
- # remove block comments
- contents = contents.gsub(/\/\*.*?\*\//m, '')
-
- contents.split("\n").each do |line|
- # look for include statement
- scan_results = line.scan(/#include\s+\"\s*(.+#{'\\'+source_extension})\s*\"/)
-
- source_includes << scan_results[0][0] if (scan_results.size > 0)
- end
-
- return source_includes.uniq
- end
-
- def gather_and_store_includes(file, includes)
- mock_prefix = @configurator.cmock_mock_prefix
- header_extension = @configurator.extension_header
- file_key = form_file_key(file)
- @mocks[file_key] = []
-
- # add includes to lookup hash
- @includes[file_key] = includes
-
- includes.each do |include_file|
- # check if include is a mock
- scan_results = include_file.scan(/(#{mock_prefix}.+)#{'\\'+header_extension}/)
- # add mock to lookup hash
- @mocks[file_key] << scan_results[0][0] if (scan_results.size > 0)
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/test_invoker.rb b/test/unit-test/vendor/ceedling/lib/ceedling/test_invoker.rb
deleted file mode 100644
index ae686a110..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/test_invoker.rb
+++ /dev/null
@@ -1,165 +0,0 @@
-require 'ceedling/constants'
-
-
-class TestInvoker
-
- attr_reader :sources, :tests, :mocks
-
- constructor :configurator,
- :test_invoker_helper,
- :plugin_manager,
- :streaminator,
- :preprocessinator,
- :task_invoker,
- :dependinator,
- :project_config_manager,
- :build_invoker_utils,
- :file_path_utils,
- :file_wrapper
-
- def setup
- @sources = []
- @tests = []
- @mocks = []
- end
-
-
- # Convert libraries configuration form YAML configuration
- # into a string that can be given to the compiler.
- def convert_libraries_to_arguments()
- args = ((@configurator.project_config_hash[:libraries_test] || []) + ((defined? LIBRARIES_SYSTEM) ? LIBRARIES_SYSTEM : [])).flatten
- if (defined? LIBRARIES_FLAG)
- args.map! {|v| LIBRARIES_FLAG.gsub(/\$\{1\}/, v) }
- end
- return args
- end
-
- def get_library_paths_to_arguments()
- paths = (defined? PATHS_LIBRARIES) ? (PATHS_LIBRARIES || []).clone : []
- if (defined? LIBRARIES_PATH_FLAG)
- paths.map! {|v| LIBRARIES_PATH_FLAG.gsub(/\$\{1\}/, v) }
- end
- return paths
- end
-
- def setup_and_invoke(tests, context=TEST_SYM, options={:force_run => true, :build_only => false})
-
- @tests = tests
-
- @project_config_manager.process_test_config_change
-
- @tests.each do |test|
- # announce beginning of test run
- header = "Test '#{File.basename(test)}'"
- @streaminator.stdout_puts("\n\n#{header}\n#{'-' * header.length}")
-
- begin
- @plugin_manager.pre_test( test )
- test_name ="#{File.basename(test)}".chomp('.c')
- def_test_key="defines_#{test_name.downcase}"
-
- if @configurator.project_config_hash.has_key?(def_test_key.to_sym) || @configurator.defines_use_test_definition
- defs_bkp = Array.new(COLLECTION_DEFINES_TEST_AND_VENDOR)
- tst_defs_cfg = Array.new(defs_bkp)
- if @configurator.project_config_hash.has_key?(def_test_key.to_sym)
- tst_defs_cfg.replace(@configurator.project_config_hash[def_test_key.to_sym])
- tst_defs_cfg .concat(COLLECTION_DEFINES_VENDOR) if COLLECTION_DEFINES_VENDOR
- end
- if @configurator.defines_use_test_definition
- tst_defs_cfg << File.basename(test, ".*").strip.upcase.sub(/@.*$/, "")
- end
- COLLECTION_DEFINES_TEST_AND_VENDOR.replace(tst_defs_cfg)
- end
-
- # redefine the project out path and preprocessor defines
- if @configurator.project_config_hash.has_key?(def_test_key.to_sym)
- @streaminator.stdout_puts("Updating test definitions for #{test_name}", Verbosity::NORMAL)
- orig_path = @configurator.project_test_build_output_path
- @configurator.project_config_hash[:project_test_build_output_path] = File.join(@configurator.project_test_build_output_path, test_name)
- @file_wrapper.mkdir(@configurator.project_test_build_output_path)
- end
-
- # collect up test fixture pieces & parts
- runner = @file_path_utils.form_runner_filepath_from_test( test )
- mock_list = @preprocessinator.preprocess_test_and_invoke_test_mocks( test )
- sources = @test_invoker_helper.extract_sources( test )
- extras = @configurator.collection_test_fixture_extra_link_objects
- core = [test] + mock_list + sources
- objects = @file_path_utils.form_test_build_objects_filelist( [runner] + core + extras ).uniq
- results_pass = @file_path_utils.form_pass_results_filepath( test )
- results_fail = @file_path_utils.form_fail_results_filepath( test )
-
- # identify all the objects shall not be linked and then remove them from objects list.
- no_link_objects = @file_path_utils.form_test_build_objects_filelist(@preprocessinator.preprocess_shallow_source_includes( test ))
- objects = objects.uniq - no_link_objects
-
- @project_config_manager.process_test_defines_change(@project_config_manager.filter_internal_sources(sources))
-
- # clean results files so we have a missing file with which to kick off rake's dependency rules
- @test_invoker_helper.clean_results( {:pass => results_pass, :fail => results_fail}, options )
-
- # load up auxiliary dependencies so deep changes cause rebuilding appropriately
- @test_invoker_helper.process_deep_dependencies( core ) do |dependencies_list|
- @dependinator.load_test_object_deep_dependencies( dependencies_list )
- end
-
- # tell rake to create test runner if needed
- @task_invoker.invoke_test_runner( runner )
-
- # enhance object file dependencies to capture externalities influencing regeneration
- @dependinator.enhance_test_build_object_dependencies( objects )
-
- # associate object files with executable
- @dependinator.enhance_test_executable_dependencies( test, objects )
-
- # build test objects
- @task_invoker.invoke_test_objects( objects )
-
- # if the option build_only has been specified, build only the executable
- # but don't run the test
- if (options[:build_only])
- executable = @file_path_utils.form_test_executable_filepath( test )
- @task_invoker.invoke_test_executable( executable )
- else
- # 3, 2, 1... launch
- @task_invoker.invoke_test_results( results_pass )
- end
- rescue => e
- @build_invoker_utils.process_exception( e, context )
- ensure
- @plugin_manager.post_test( test )
- # restore the project test defines
- if @configurator.project_config_hash.has_key?(def_test_key.to_sym) || @configurator.defines_use_test_definition
- COLLECTION_DEFINES_TEST_AND_VENDOR.replace(defs_bkp)
- if @configurator.project_config_hash.has_key?(def_test_key.to_sym)
- @configurator.project_config_hash[:project_test_build_output_path] = orig_path
- @streaminator.stdout_puts("Restored defines and build path to standard", Verbosity::NORMAL)
- end
- end
- end
-
- # store away what's been processed
- @mocks.concat( mock_list )
- @sources.concat( sources )
-
- @task_invoker.first_run = false
- end
-
- # post-process collected mock list
- @mocks.uniq!
-
- # post-process collected sources list
- @sources.uniq!
- end
-
-
- def refresh_deep_dependencies
- @file_wrapper.rm_f(
- @file_wrapper.directory_listing(
- File.join( @configurator.project_test_dependencies_path, '*' + @configurator.extension_dependencies ) ) )
-
- @test_invoker_helper.process_deep_dependencies(
- @configurator.collection_all_tests + @configurator.collection_all_source )
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/test_invoker_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/test_invoker_helper.rb
deleted file mode 100644
index a48edf9f9..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/test_invoker_helper.rb
+++ /dev/null
@@ -1,32 +0,0 @@
-
-class TestInvokerHelper
-
- constructor :configurator, :task_invoker, :test_includes_extractor, :file_finder, :file_path_utils, :file_wrapper
-
- def clean_results(results, options)
- @file_wrapper.rm_f( results[:fail] )
- @file_wrapper.rm_f( results[:pass] ) if (options[:force_run])
- end
-
- def process_deep_dependencies(files)
- return if (not @configurator.project_use_deep_dependencies)
-
- dependencies_list = @file_path_utils.form_test_dependencies_filelist( files ).uniq
-
- if @configurator.project_generate_deep_dependencies
- @task_invoker.invoke_test_dependencies_files( dependencies_list )
- end
-
- yield( dependencies_list ) if block_given?
- end
-
- def extract_sources(test)
- sources = []
- includes = @test_includes_extractor.lookup_includes_list(test)
-
- includes.each { |include| sources << @file_finder.find_compilation_input_file(include, :ignore) }
-
- return sources.compact
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/tool_executor.rb b/test/unit-test/vendor/ceedling/lib/ceedling/tool_executor.rb
deleted file mode 100644
index 0ab5ddcac..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/tool_executor.rb
+++ /dev/null
@@ -1,229 +0,0 @@
-require 'ceedling/constants'
-require 'benchmark'
-
-class ShellExecutionException < RuntimeError
- attr_reader :shell_result
- def initialize(shell_result)
- @shell_result = shell_result
- end
-end
-
-class ToolExecutor
-
- constructor :configurator, :tool_executor_helper, :streaminator, :system_wrapper
-
- def setup
- @tool_name = ''
- @executable = ''
- end
-
- # build up a command line from yaml provided config
-
- # @param extra_params is an array of parameters to append to executable
- def build_command_line(tool_config, extra_params, *args)
- @tool_name = tool_config[:name]
- @executable = tool_config[:executable]
-
- command = {}
-
- # basic premise is to iterate top to bottom through arguments using '$' as
- # a string replacement indicator to expand globals or inline yaml arrays
- # into command line arguments via substitution strings
- # executable must be quoted if it includes spaces (common on windows)
- executable = @tool_executor_helper.osify_path_separators( expandify_element(@executable, *args) )
- executable = "\"#{executable}\"" if executable.include?(' ')
- command[:line] = [
- executable,
- extra_params.join(' ').strip,
- build_arguments(tool_config[:arguments], *args),
- ].reject{|s| s.nil? || s.empty?}.join(' ').strip
-
- command[:options] = {
- :stderr_redirect => @tool_executor_helper.stderr_redirection(tool_config, @configurator.project_logging),
- :background_exec => tool_config[:background_exec]
- }
-
- return command
- end
-
-
- # shell out, execute command, and return response
- def exec(command, options={}, args=[])
- options[:boom] = true if (options[:boom].nil?)
- options[:stderr_redirect] = StdErrRedirect::NONE if (options[:stderr_redirect].nil?)
- options[:background_exec] = BackgroundExec::NONE if (options[:background_exec].nil?)
- # build command line
- command_line = [
- @tool_executor_helper.background_exec_cmdline_prepend( options ),
- command.strip,
- args,
- @tool_executor_helper.stderr_redirect_cmdline_append( options ),
- @tool_executor_helper.background_exec_cmdline_append( options ),
- ].flatten.compact.join(' ')
-
- @streaminator.stderr_puts("Verbose: #{__method__.to_s}(): #{command_line}", Verbosity::DEBUG)
-
- shell_result = {}
-
- # depending on background exec option, we shell out differently
- time = Benchmark.realtime do
- if (options[:background_exec] != BackgroundExec::NONE)
- shell_result = @system_wrapper.shell_system( command_line, options[:boom] )
- else
- shell_result = @system_wrapper.shell_backticks( command_line, options[:boom] )
- end
- end
- shell_result[:time] = time
-
- #scrub the string for illegal output
- unless shell_result[:output].nil?
- shell_result[:output] = shell_result[:output].scrub if "".respond_to?(:scrub)
- shell_result[:output].gsub!(/\033\[\d\dm/,'')
- end
-
- @tool_executor_helper.print_happy_results( command_line, shell_result, options[:boom] )
- @tool_executor_helper.print_error_results( command_line, shell_result, options[:boom] )
-
- # go boom if exit code isn't 0 (but in some cases we don't want a non-0 exit code to raise)
- raise ShellExecutionException.new(shell_result) if ((shell_result[:exit_code] != 0) and options[:boom])
-
- return shell_result
- end
-
-
- private #############################
-
-
- def build_arguments(config, *args)
- build_string = ''
-
- return nil if (config.nil?)
-
- # iterate through each argument
-
- # the yaml blob array needs to be flattened so that yaml substitution
- # is handled correctly, since it creates a nested array when an anchor is
- # dereferenced
- config.flatten.each do |element|
- argument = ''
-
- case(element)
- # if we find a simple string then look for string replacement operators
- # and expand with the parameters in this method's argument list
- when String then argument = expandify_element(element, *args)
- # if we find a hash, then we grab the key as a substitution string and expand the
- # hash's value(s) within that substitution string
- when Hash then argument = dehashify_argument_elements(element)
- end
-
- build_string.concat("#{argument} ") if (argument.length > 0)
- end
-
- build_string.strip!
- return build_string if (build_string.length > 0)
- return nil
- end
-
-
- # handle simple text string argument & argument array string replacement operators
- def expandify_element(element, *args)
- match = //
- to_process = nil
- args_index = 0
-
- # handle ${#} input replacement
- if (element =~ TOOL_EXECUTOR_ARGUMENT_REPLACEMENT_PATTERN)
- args_index = ($2.to_i - 1)
-
- if (args.nil? or args[args_index].nil?)
- @streaminator.stderr_puts("ERROR: Tool '#{@tool_name}' expected valid argument data to accompany replacement operator #{$1}.", Verbosity::ERRORS)
- raise
- end
-
- match = /#{Regexp.escape($1)}/
- to_process = args[args_index]
- end
-
- # simple string argument: replace escaped '\$' and strip
- element.sub!(/\\\$/, '$')
- element.strip!
-
- # handle inline ruby execution
- if (element =~ RUBY_EVAL_REPLACEMENT_PATTERN)
- element.replace(eval($1))
- end
-
- build_string = ''
-
- # handle array or anything else passed into method to be expanded in place of replacement operators
- case (to_process)
- when Array then to_process.each {|value| build_string.concat( "#{element.sub(match, value.to_s)} " ) } if (to_process.size > 0)
- else build_string.concat( element.sub(match, to_process.to_s) )
- end
-
- # handle inline ruby string substitution
- if (build_string =~ RUBY_STRING_REPLACEMENT_PATTERN)
- build_string.replace(@system_wrapper.module_eval(build_string))
- end
-
- return build_string.strip
- end
-
-
- # handle argument hash: keys are substitution strings, values are data to be expanded within substitution strings
- def dehashify_argument_elements(hash)
- build_string = ''
- elements = []
-
- # grab the substitution string (hash key)
- substitution = hash.keys[0].to_s
- # grab the string(s) to squirt into the substitution string (hash value)
- expand = hash[hash.keys[0]]
-
- if (expand.nil?)
- @streaminator.stderr_puts("ERROR: Tool '#{@tool_name}' could not expand nil elements for substitution string '#{substitution}'.", Verbosity::ERRORS)
- raise
- end
-
- # array-ify expansion input if only a single string
- expansion = ((expand.class == String) ? [expand] : expand)
-
- expansion.each do |item|
- # code eval substitution
- if (item =~ RUBY_EVAL_REPLACEMENT_PATTERN)
- elements << eval($1)
- # string eval substitution
- elsif (item =~ RUBY_STRING_REPLACEMENT_PATTERN)
- elements << @system_wrapper.module_eval(item)
- # global constants
- elsif (@system_wrapper.constants_include?(item))
- const = Object.const_get(item)
- if (const.nil?)
- @streaminator.stderr_puts("ERROR: Tool '#{@tool_name}' found constant '#{item}' to be nil.", Verbosity::ERRORS)
- raise
- else
- elements << const
- end
- elsif (item.class == Array)
- elements << item
- elsif (item.class == String)
- @streaminator.stderr_puts("ERROR: Tool '#{@tool_name}' cannot expand nonexistent value '#{item}' for substitution string '#{substitution}'.", Verbosity::ERRORS)
- raise
- else
- @streaminator.stderr_puts("ERROR: Tool '#{@tool_name}' cannot expand value having type '#{item.class}' for substitution string '#{substitution}'.", Verbosity::ERRORS)
- raise
- end
- end
-
- # expand elements (whether string or array) into substitution string & replace escaped '\$'
- elements.flatten!
- elements.each do |element|
- build_string.concat( substitution.sub(/([^\\]*)\$/, "\\1#{element}") ) # don't replace escaped '\$' but allow us to replace just a lonesome '$'
- build_string.gsub!(/\\\$/, '$')
- build_string.concat(' ')
- end
-
- return build_string.strip
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/tool_executor_helper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/tool_executor_helper.rb
deleted file mode 100644
index de4cafe46..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/tool_executor_helper.rb
+++ /dev/null
@@ -1,164 +0,0 @@
-require 'ceedling/constants' # for Verbosity enumeration & $stderr redirect enumeration
-
-##
-# Helper functions for the tool executor
-class ToolExecutorHelper
-
- constructor :streaminator, :system_utils, :system_wrapper
-
- ##
- # Returns the stderr redirection based on the config and logging.
- # ==== Attributes
- #
- # * _tool_config_: A hash containing config information.
- # * _logging_: A boolean representing if logging is enabled or not.
- #
- def stderr_redirection(tool_config, logging)
- # if there's no logging enabled, return :stderr_redirect unmodified
- return tool_config[:stderr_redirect] if (not logging)
-
- # if there is logging enabled but the redirect is a custom value (not enum), return the custom string
- return tool_config[:stderr_redirect] if (tool_config[:stderr_redirect].class == String)
-
- # if logging is enabled but there's no custom string, return the AUTO enumeration so $stderr goes into the log
- return StdErrRedirect::AUTO
- end
-
-
- ##
- # Returns the background execution prepend based on the config.
- # ==== Attributes
- #
- # * _tool_config_: A hash containing config information.
- #
- def background_exec_cmdline_prepend(tool_config)
- return nil if (tool_config.nil? || tool_config[:background_exec].nil?)
-
- config_exec = tool_config[:background_exec]
-
- if ((config_exec == BackgroundExec::AUTO) and (@system_wrapper.windows?))
- return 'start'
- end
-
- if (config_exec == BackgroundExec::WIN)
- return 'start'
- end
-
- return nil
- end
-
-
- ##
- # Modifies an executables path based on platform.
- # ==== Attributes
- #
- # * _executable_: The executable's path.
- #
- def osify_path_separators(executable)
- return executable.gsub(/\//, '\\') if (@system_wrapper.windows?)
- return executable
- end
-
- ##
- # Returns the stderr redirect append based on the config.
- # ==== Attributes
- #
- # * _tool_config_: A hash containing config information.
- #
- def stderr_redirect_cmdline_append(tool_config)
- return nil if (tool_config.nil? || tool_config[:stderr_redirect].nil?)
-
- config_redirect = tool_config[:stderr_redirect]
- redirect = StdErrRedirect::NONE
-
- if (config_redirect == StdErrRedirect::AUTO)
- if (@system_wrapper.windows?)
- redirect = StdErrRedirect::WIN
- elsif (@system_utils.tcsh_shell?)
- redirect = StdErrRedirect::TCSH
- else
- redirect = StdErrRedirect::UNIX
- end
- end
-
- case redirect
- # we may need more complicated processing after some learning with various environments
- when StdErrRedirect::NONE then nil
- when StdErrRedirect::WIN then '2>&1'
- when StdErrRedirect::UNIX then '2>&1'
- when StdErrRedirect::TCSH then '|&'
- else redirect.to_s
- end
- end
-
- ##
- # Returns the background execution append based on the config.
- # ==== Attributes
- #
- # * _tool_config_: A hash containing config information.
- #
- def background_exec_cmdline_append(tool_config)
- return nil if (tool_config.nil? || tool_config[:background_exec].nil?)
-
- config_exec = tool_config[:background_exec]
-
- # if :auto & windows, then we already prepended 'start' and should append nothing
- return nil if ((config_exec == BackgroundExec::AUTO) and (@system_wrapper.windows?))
-
- # if :auto & not windows, then we append standard '&'
- return '&' if ((config_exec == BackgroundExec::AUTO) and (not @system_wrapper.windows?))
-
- # if explicitly Unix, then append '&'
- return '&' if (config_exec == BackgroundExec::UNIX)
-
- # * _command_str_: A hash containing config information.
- # all other cases, including :none, :win, & anything unrecognized, append nothing
- return nil
- end
-
- ##
- # Outputs success results if command succeeded and we have verbosity cranked up.
- # ==== Attributes
- #
- # * _command_str_: The command ran.
- # * _shell_results_: The outputs of the command including exit code and
- # output.
- # * _boom_: A boolean representing if a non zero result is erroneous.
- #
- def print_happy_results(command_str, shell_result, boom=true)
- if ((shell_result[:exit_code] == 0) or ((shell_result[:exit_code] != 0) and not boom))
- output = "> Shell executed command:\n"
- output += "'#{command_str}'\n"
- output += "> Produced output:\n" if (not shell_result[:output].empty?)
- output += "#{shell_result[:output].strip}\n" if (not shell_result[:output].empty?)
- output += "> And exited with status: [#{shell_result[:exit_code]}].\n" if (shell_result[:exit_code] != 0)
- output += "\n"
-
- @streaminator.stdout_puts(output, Verbosity::OBNOXIOUS)
- end
- end
-
- ##
- # Outputs failures results if command failed and we have verbosity set to minimum error level.
- # ==== Attributes
- #
- # * _command_str_: The command ran.
- # * _shell_results_: The outputs of the command including exit code and
- # output.
- # * _boom_: A boolean representing if a non zero result is erroneous.
- #
- def print_error_results(command_str, shell_result, boom=true)
- if ((shell_result[:exit_code] != 0) and boom)
- output = "ERROR: Shell command failed.\n"
- output += "> Shell executed command:\n"
- output += "'#{command_str}'\n"
- output += "> Produced output:\n" if (not shell_result[:output].empty?)
- output += "#{shell_result[:output].strip}\n" if (not shell_result[:output].empty?)
- output += "> And exited with status: [#{shell_result[:exit_code]}].\n" if (shell_result[:exit_code] != nil)
- output += "> And then likely crashed.\n" if (shell_result[:exit_code] == nil)
- output += "\n"
-
- @streaminator.stderr_puts(output, Verbosity::ERRORS)
- end
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/verbosinator.rb b/test/unit-test/vendor/ceedling/lib/ceedling/verbosinator.rb
deleted file mode 100644
index e8ed38d78..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/verbosinator.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-
-class Verbosinator
-
- constructor :configurator
-
- def should_output?(level)
- return (level <= @configurator.project_verbosity)
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/version.rb b/test/unit-test/vendor/ceedling/lib/ceedling/version.rb
deleted file mode 100644
index ebda10b78..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/version.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-
-# @private
-module Ceedling
- module Version
- { "UNITY" => File.join("unity","src","unity.h"),
- "CMOCK" => File.join("cmock","src","cmock.h"),
- "CEXCEPTION" => File.join("c_exception","lib","CException.h")
- }.each_pair do |name, path|
- # Check for local or global version of vendor directory in order to look up versions
- path1 = File.expand_path( File.join("..","..","vendor",path) )
- path2 = File.expand_path( File.join(File.dirname(__FILE__),"..","..","vendor",path) )
- filename = if (File.exists?(path1))
- path1
- elsif (File.exists?(path2))
- path2
- elsif File.exists?(CEEDLING_VENDOR)
- path3 = File.expand_path( File.join(CEEDLING_VENDOR,path) )
- if (File.exists?(path3))
- path3
- else
- basepath = File.join( CEEDLING_VENDOR, path.split(/\\\//)[0], 'release')
- begin
- [ @ceedling[:file_wrapper].read( File.join(base_path, 'release', 'version.info') ).strip,
- @ceedling[:file_wrapper].read( File.join(base_path, 'release', 'build.info') ).strip ].join('.')
- rescue
- "#{name}"
- end
- end
- else
- module_eval("#{name} = 'unknown'")
- continue
- end
-
- # Actually look up the versions
- a = [0,0,0]
- begin
- File.readlines(filename).each do |line|
- ["VERSION_MAJOR", "VERSION_MINOR", "VERSION_BUILD"].each_with_index do |field, i|
- m = line.match(/#{name}_#{field}\s+(\d+)/)
- a[i] = m[1] unless (m.nil?)
- end
- end
- rescue
- abort("Can't collect data for vendor component: \"#{filename}\" . \nPlease check your setup.")
- end
-
- # splat it to return the final value
- eval("#{name} = '#{a.join(".")}'")
- end
-
- GEM = "0.31.1"
- CEEDLING = GEM
- end
-end
diff --git a/test/unit-test/vendor/ceedling/lib/ceedling/yaml_wrapper.rb b/test/unit-test/vendor/ceedling/lib/ceedling/yaml_wrapper.rb
deleted file mode 100644
index 00ece5141..000000000
--- a/test/unit-test/vendor/ceedling/lib/ceedling/yaml_wrapper.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require 'yaml'
-require 'erb'
-
-
-class YamlWrapper
-
- def load(filepath)
- return YAML.load(ERB.new(File.read(filepath)).result)
- end
-
- def dump(filepath, structure)
- File.open(filepath, 'w') do |output|
- YAML.dump(structure, output)
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/beep/README.md b/test/unit-test/vendor/ceedling/plugins/beep/README.md
deleted file mode 100644
index e59d881b3..000000000
--- a/test/unit-test/vendor/ceedling/plugins/beep/README.md
+++ /dev/null
@@ -1,22 +0,0 @@
-ceedling-beep
-=============
-
-This is a simple plugin that just beeps at the end of a build and/or test sequence. Are you getting too distracted surfing
-the internet, chatting with coworkers, or swordfighting while it's building or testing? The friendly beep will let you know
-it's time to pay attention again.
-
-This plugin has very few configuration options. At this time it can beep on completion of a task and/or on an error condition.
-For each of these, you can configure the method that it should beep.
-
-```
-:tools:
- :beep_on_done: :bell
- :beep_on_error: :bell
-```
-
-Each of these have the following options:
-
- - :bell - this option uses the ASCII bell character out stdout
- - :speaker_test - this uses the linux speaker-test command if installed
-
-Very likely, we'll be adding to this list if people find this to be useful.
diff --git a/test/unit-test/vendor/ceedling/plugins/beep/lib/beep.rb b/test/unit-test/vendor/ceedling/plugins/beep/lib/beep.rb
deleted file mode 100644
index cbc5e3e38..000000000
--- a/test/unit-test/vendor/ceedling/plugins/beep/lib/beep.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-require 'ceedling/plugin'
-require 'ceedling/constants'
-
-class Beep < Plugin
-
- attr_reader :config
-
- def setup
- @config = {
- :on_done => ((defined? TOOLS_BEEP_ON_DONE) ? TOOLS_BEEP_ON_DONE : :bell ),
- :on_error => ((defined? TOOLS_BEEP_ON_ERROR) ? TOOLS_BEEP_ON_ERROR : :bell ),
- }
- end
-
- def post_build
- beep @config[:on_done]
- end
-
- def post_error
- beep @config[:on_error]
- end
-
- private
-
- def beep(method = :none)
- case method
- when :bell
- if (SystemWrapper.windows?)
- puts "echo '\007'"
- else
- puts "echo -ne '\007'"
- end
- when :speaker_test
- `speaker-test -t sine -f 1000 -l 1`
- else
- #do nothing with illegal or :none
- end
- end
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/bullseye/README.md b/test/unit-test/vendor/ceedling/plugins/bullseye/README.md
deleted file mode 100644
index aad449204..000000000
--- a/test/unit-test/vendor/ceedling/plugins/bullseye/README.md
+++ /dev/null
@@ -1,76 +0,0 @@
-ceedling-bullseye
-=================
-
-# Plugin Overview
-
-Plugin for integrating Bullseye code coverage tool into Ceedling projects.
-This plugin requires a working license to Bullseye code coverage tools. The tools
-must be within the path or the path should be added to the environment in the
-`project.yml file`.
-
-## Configuration
-
-The bullseye plugin supports configuration options via your `project.yml` provided
-by Ceedling. The following is a typical configuration example:
-
-```
-:bullseye:
- :auto_license: TRUE
-:plugins:
- :bullseye_lib_path: []
-:paths:
- :bullseye_toolchain_include: []
-
-:tools:
- :bullseye_instrumentation:
- :executable: covc
- :arguments:
- - '--file $': ENVIRONMENT_COVFILE
- - -q
- - ${1}
- :bullseye_compiler:
- :executable: gcc
- :arguments:
- - -g
- - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR
- - -I"$": COLLECTION_PATHS_BULLSEYE_TOOLCHAIN_INCLUDE
- - -D$: COLLECTION_DEFINES_TEST_AND_VENDOR
- - -DBULLSEYE_COMPILER
- - -c "${1}"
- - -o "${2}"
- :bullseye_linker:
- :executable: gcc
- :arguments:
- - ${1}
- - -o ${2}
- - -L$: PLUGINS_BULLSEYE_LIB_PATH
- - -lcov
- :bullseye_fixture:
- :executable: ${1}
- :bullseye_report_covsrc:
- :executable: covsrc
- :arguments:
- - '--file $': ENVIRONMENT_COVFILE
- - -q
- - -w140
- :bullseye_report_covfn:
- :executable: covfn
- :stderr_redirect: :auto
- :arguments:
- - '--file $': ENVIRONMENT_COVFILE
- - --width 120
- - --no-source
- - '"${1}"'
- :bullseye_browser:
- :executable: CoverageBrowser
- :background_exec: :auto
- :optional: TRUE
- :arguments:
- - '"$"': ENVIRONMENT_COVFILE
-```
-
-## Example Usage
-
-```sh
-ceedling bullseye:all utils:bullseye
-```
diff --git a/test/unit-test/vendor/ceedling/plugins/bullseye/assets/template.erb b/test/unit-test/vendor/ceedling/plugins/bullseye/assets/template.erb
deleted file mode 100644
index e1ef9874b..000000000
--- a/test/unit-test/vendor/ceedling/plugins/bullseye/assets/template.erb
+++ /dev/null
@@ -1,14 +0,0 @@
-% function_string = hash[:coverage][:functions].to_s
-% branch_string = hash[:coverage][:branches].to_s
-% format_string = "%#{[function_string.length, branch_string.length].max}i"
-<%=@ceedling[:plugin_reportinator].generate_banner("#{hash[:header]}: CODE COVERAGE SUMMARY")%>
-% if (!hash[:coverage][:functions].nil?)
-FUNCTIONS: <%=sprintf(format_string, hash[:coverage][:functions])%>%
-% else
-FUNCTIONS: none
-% end
-% if (!hash[:coverage][:branches].nil?)
-BRANCHES: <%=sprintf(format_string, hash[:coverage][:branches])%>%
-% else
-BRANCHES: none
-% end
diff --git a/test/unit-test/vendor/ceedling/plugins/bullseye/bullseye.rake b/test/unit-test/vendor/ceedling/plugins/bullseye/bullseye.rake
deleted file mode 100644
index 11073e786..000000000
--- a/test/unit-test/vendor/ceedling/plugins/bullseye/bullseye.rake
+++ /dev/null
@@ -1,173 +0,0 @@
-directory(BULLSEYE_BUILD_OUTPUT_PATH)
-directory(BULLSEYE_RESULTS_PATH)
-directory(BULLSEYE_ARTIFACTS_PATH)
-directory(BULLSEYE_DEPENDENCIES_PATH)
-
-CLEAN.include(File.join(BULLSEYE_BUILD_OUTPUT_PATH, '*'))
-CLEAN.include(File.join(BULLSEYE_RESULTS_PATH, '*'))
-CLEAN.include(File.join(BULLSEYE_DEPENDENCIES_PATH, '*'))
-
-CLOBBER.include(File.join(BULLSEYE_BUILD_PATH, '**/*'))
-PLUGINS_BULLSEYE_LIB_PATH = 'C:\\tools\\BullseyeCoverage\\lib' if not defined?(PLUGINS_BULLSEYE_LIB_PATH)
-
-rule(/#{BULLSEYE_BUILD_OUTPUT_PATH}\/#{'.+\\'+EXTENSION_OBJECT}$/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_compilation_input_file(task_name)
- end
- ]) do |object|
-
- if File.basename(object.source) =~ /^(#{PROJECT_TEST_FILE_PREFIX}|#{CMOCK_MOCK_PREFIX}|#{BULLSEYE_IGNORE_SOURCES.join('|')})/i
- @ceedling[:generator].generate_object_file(
- TOOLS_BULLSEYE_COMPILER,
- OPERATION_COMPILE_SYM,
- BULLSEYE_SYM,
- object.source,
- object.name,
- @ceedling[:file_path_utils].form_test_build_list_filepath(object.name)
- )
- else
- @ceedling[BULLSEYE_SYM].generate_coverage_object_file(object.source, object.name)
- end
-
-end
-
-rule(/#{BULLSEYE_BUILD_OUTPUT_PATH}\/#{'.+\\'+EXTENSION_EXECUTABLE}$/) do |bin_file|
- lib_args = @ceedling[:test_invoker].convert_libraries_to_arguments()
- lib_paths = @ceedling[:test_invoker].get_library_paths_to_arguments()
- @ceedling[:generator].generate_executable_file(
- TOOLS_BULLSEYE_LINKER,
- BULLSEYE_SYM,
- bin_file.prerequisites,
- bin_file.name,
- @ceedling[:file_path_utils].form_test_build_map_filepath(bin_file.name),
- lib_args,
- lib_paths
- )
-end
-
-rule(/#{BULLSEYE_RESULTS_PATH}\/#{'.+\\'+EXTENSION_TESTPASS}$/ => [
- proc do |task_name|
- @ceedling[:file_path_utils].form_test_executable_filepath(task_name)
- end
- ]) do |test_result|
- @ceedling[:generator].generate_test_results(TOOLS_BULLSEYE_FIXTURE, BULLSEYE_SYM, test_result.source, test_result.name)
-end
-
-rule(/#{BULLSEYE_DEPENDENCIES_PATH}\/#{'.+\\'+EXTENSION_DEPENDENCIES}$/ => [
- proc do |task_name|
- @ceedling[:file_finder].find_compilation_input_file(task_name)
- end
- ]) do |dep|
- @ceedling[:generator].generate_dependencies_file(
- TOOLS_TEST_DEPENDENCIES_GENERATOR,
- BULLSEYE_SYM,
- dep.source,
- File.join(BULLSEYE_BUILD_OUTPUT_PATH, File.basename(dep.source).ext(EXTENSION_OBJECT) ),
- dep.name
- )
-end
-
-task :directories => [BULLSEYE_BUILD_OUTPUT_PATH, BULLSEYE_RESULTS_PATH, BULLSEYE_DEPENDENCIES_PATH, BULLSEYE_ARTIFACTS_PATH]
-
-namespace BULLSEYE_SYM do
- task source_coverage: COLLECTION_ALL_SOURCE.pathmap("#{BULLSEYE_BUILD_OUTPUT_PATH}/%n#{@ceedling[:configurator].extension_object}")
-
- desc 'Run code coverage for all tests'
- task all: [:test_deps] do
- @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
- @ceedling[BULLSEYE_SYM].enableBullseye(true)
- @ceedling[:test_invoker].setup_and_invoke(COLLECTION_ALL_TESTS, BULLSEYE_SYM)
- @ceedling[:configurator].restore_config
- end
-
- desc "Run single test w/ coverage ([*] real test or source file name, no path)."
- task :* do
- message = "\nOops! '#{BULLSEYE_ROOT_NAME}:*' isn't a real task. " +
- "Use a real test or source file name (no path) in place of the wildcard.\n" +
- "Example: rake #{BULLSEYE_ROOT_NAME}:foo.c\n\n"
-
- @ceedling[:streaminator].stdout_puts( message )
- end
-
- desc 'Run tests by matching regular expression pattern.'
- task :pattern, [:regex] => [:test_deps] do |_t, args|
- matches = []
-
- COLLECTION_ALL_TESTS.each do |test|
- matches << test if test =~ /#{args.regex}/
- end
-
- if !matches.empty?
- @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
- @ceedling[BULLSEYE_SYM].enableBullseye(true)
- @ceedling[:test_invoker].setup_and_invoke(matches, BULLSEYE_SYM, force_run: false)
- @ceedling[:configurator].restore_config
- else
- @ceedling[:streaminator].stdout_puts("\nFound no tests matching pattern /#{args.regex}/.")
- end
- end
-
- desc 'Run tests whose test path contains [dir] or [dir] substring.'
- task :path, [:dir] => [:test_deps] do |_t, args|
- matches = []
-
- COLLECTION_ALL_TESTS.each do |test|
- matches << test if File.dirname(test).include?(args.dir.tr('\\', '/'))
- end
-
- if !matches.empty?
- @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
- @ceedling[BULLSEYE_SYM].enableBullseye(true)
- @ceedling[:test_invoker].setup_and_invoke(matches, BULLSEYE_SYM, force_run: false)
- @ceedling[:configurator].restore_config
- else
- @ceedling[:streaminator].stdout_puts("\nFound no tests including the given path or path component.")
- end
- end
-
- desc 'Run code coverage for changed files'
- task delta: [:test_deps] do
- @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
- @ceedling[BULLSEYE_SYM].enableBullseye(true)
- @ceedling[:test_invoker].setup_and_invoke(COLLECTION_ALL_TESTS, BULLSEYE_SYM, {:force_run => false})
- @ceedling[:configurator].restore_config
- end
-
- # use a rule to increase efficiency for large projects
- # bullseye test tasks by regex
- rule(/^#{BULLSEYE_TASK_ROOT}\S+$/ => [
- proc do |task_name|
- test = task_name.sub(/#{BULLSEYE_TASK_ROOT}/, '')
- test = "#{PROJECT_TEST_FILE_PREFIX}#{test}" unless test.start_with?(PROJECT_TEST_FILE_PREFIX)
- @ceedling[:file_finder].find_test_from_file_path(test)
- end
- ]) do |test|
- @ceedling[:rake_wrapper][:test_deps].invoke
- @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
- @ceedling[BULLSEYE_SYM].enableBullseye(true)
- @ceedling[:test_invoker].setup_and_invoke([test.source], BULLSEYE_SYM)
- @ceedling[:configurator].restore_config
- end
-
-end
-
-if PROJECT_USE_DEEP_DEPENDENCIES
-namespace REFRESH_SYM do
- task BULLSEYE_SYM do
- @ceedling[:configurator].replace_flattened_config(@ceedling[BULLSEYE_SYM].config)
- @ceedling[BULLSEYE_SYM].enableBullseye(true)
- @ceedling[:test_invoker].refresh_deep_dependencies
- @ceedling[:configurator].restore_config
- end
-end
-end
-
-namespace UTILS_SYM do
-
- desc "Open Bullseye code coverage browser"
- task BULLSEYE_SYM do
- command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_BROWSER, [])
- @ceedling[:tool_executor].exec(command[:line], command[:options])
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/bullseye/config/defaults.yml b/test/unit-test/vendor/ceedling/plugins/bullseye/config/defaults.yml
deleted file mode 100644
index ed261d8e5..000000000
--- a/test/unit-test/vendor/ceedling/plugins/bullseye/config/defaults.yml
+++ /dev/null
@@ -1,57 +0,0 @@
----
-
-:bullseye:
- :auto_license: TRUE
-:plugins:
- :bullseye_lib_path: []
-:paths:
- :bullseye_toolchain_include: []
-
-:tools:
- :bullseye_instrumentation:
- :executable: covc
- :arguments:
- - '--file $': ENVIRONMENT_COVFILE
- - -q
- - ${1}
- :bullseye_compiler:
- :executable: gcc
- :arguments:
- - -g
- - -I"$": COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR
- - -I"$": COLLECTION_PATHS_BULLSEYE_TOOLCHAIN_INCLUDE
- - -D$: COLLECTION_DEFINES_TEST_AND_VENDOR
- - -DBULLSEYE_COMPILER
- - -c "${1}"
- - -o "${2}"
- :bullseye_linker:
- :executable: gcc
- :arguments:
- - ${1}
- - -o ${2}
- - -L$: PLUGINS_BULLSEYE_LIB_PATH
- - -lcov
- :bullseye_fixture:
- :executable: ${1}
- :bullseye_report_covsrc:
- :executable: covsrc
- :arguments:
- - '--file $': ENVIRONMENT_COVFILE
- - -q
- - -w140
- :bullseye_report_covfn:
- :executable: covfn
- :stderr_redirect: :auto
- :arguments:
- - '--file $': ENVIRONMENT_COVFILE
- - --width 120
- - --no-source
- - '"${1}"'
- :bullseye_browser:
- :executable: CoverageBrowser
- :background_exec: :auto
- :optional: TRUE
- :arguments:
- - '"$"': ENVIRONMENT_COVFILE
-
-...
diff --git a/test/unit-test/vendor/ceedling/plugins/bullseye/lib/bullseye.rb b/test/unit-test/vendor/ceedling/plugins/bullseye/lib/bullseye.rb
deleted file mode 100644
index 3e7622006..000000000
--- a/test/unit-test/vendor/ceedling/plugins/bullseye/lib/bullseye.rb
+++ /dev/null
@@ -1,194 +0,0 @@
-require 'ceedling/plugin'
-require 'ceedling/constants'
-
-BULLSEYE_ROOT_NAME = 'bullseye'
-BULLSEYE_TASK_ROOT = BULLSEYE_ROOT_NAME + ':'
-BULLSEYE_SYM = BULLSEYE_ROOT_NAME.to_sym
-
-BULLSEYE_BUILD_PATH = "#{PROJECT_BUILD_ROOT}/#{BULLSEYE_ROOT_NAME}"
-BULLSEYE_BUILD_OUTPUT_PATH = "#{BULLSEYE_BUILD_PATH}/out"
-BULLSEYE_RESULTS_PATH = "#{BULLSEYE_BUILD_PATH}/results"
-BULLSEYE_DEPENDENCIES_PATH = "#{BULLSEYE_BUILD_PATH}/dependencies"
-BULLSEYE_ARTIFACTS_PATH = "#{PROJECT_BUILD_ARTIFACTS_ROOT}/#{BULLSEYE_ROOT_NAME}"
-
-BULLSEYE_IGNORE_SOURCES = ['unity', 'cmock', 'cexception']
-
-
-class Bullseye < Plugin
-
- def setup
- @result_list = []
- @environment = [ {:covfile => File.join( BULLSEYE_ARTIFACTS_PATH, 'test.cov' )} ]
- @plugin_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
- @coverage_template_all = @ceedling[:file_wrapper].read(File.join(@plugin_root, 'assets/template.erb'))
- end
-
- def config
- {
- :project_test_build_output_path => BULLSEYE_BUILD_OUTPUT_PATH,
- :project_test_results_path => BULLSEYE_RESULTS_PATH,
- :project_test_dependencies_path => BULLSEYE_DEPENDENCIES_PATH,
- :defines_test => DEFINES_TEST + ['CODE_COVERAGE'],
- :collection_defines_test_and_vendor => COLLECTION_DEFINES_TEST_AND_VENDOR + ['CODE_COVERAGE']
- }
- end
-
- def generate_coverage_object_file(source, object)
- arg_hash = {:tool => TOOLS_BULLSEYE_INSTRUMENTATION, :context => BULLSEYE_SYM, :source => source, :object => object}
- @ceedling[:plugin_manager].pre_compile_execute(arg_hash)
-
- @ceedling[:streaminator].stdout_puts("Compiling #{File.basename(source)} with coverage...")
- compile_command =
- @ceedling[:tool_executor].build_command_line(
- TOOLS_BULLSEYE_COMPILER,
- @ceedling[:flaginator].flag_down( OPERATION_COMPILE_SYM, BULLSEYE_SYM, source ),
- source,
- object,
- @ceedling[:file_path_utils].form_test_build_list_filepath( object ) )
- coverage_command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_INSTRUMENTATION, [], compile_command[:line] )
-
- shell_result = @ceedling[:tool_executor].exec( coverage_command[:line], coverage_command[:options] )
-
- arg_hash[:shell_result] = shell_result
- @ceedling[:plugin_manager].post_compile_execute(arg_hash)
- end
-
- def post_test_fixture_execute(arg_hash)
- result_file = arg_hash[:result_file]
-
- if ((result_file =~ /#{BULLSEYE_RESULTS_PATH}/) and (not @result_list.include?(result_file)))
- @result_list << arg_hash[:result_file]
- end
- end
-
- def post_build
- return if (not @ceedling[:task_invoker].invoked?(/^#{BULLSEYE_TASK_ROOT}/))
-
- # test results
- results = @ceedling[:plugin_reportinator].assemble_test_results(@result_list)
- hash = {
- :header => BULLSEYE_ROOT_NAME.upcase,
- :results => results
- }
-
- @ceedling[:plugin_reportinator].run_test_results_report(hash) do
- message = ''
- message = 'Unit test failures.' if (results[:counts][:failed] > 0)
- message
- end
-
- # coverage results
- return if (verify_coverage_file() == false)
- if (@ceedling[:task_invoker].invoked?(/^#{BULLSEYE_TASK_ROOT}(all|delta)/))
- command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_REPORT_COVSRC, [])
- shell_result = @ceedling[:tool_executor].exec(command[:line], command[:options])
- report_coverage_results_all(shell_result[:output])
- else
- report_per_function_coverage_results(@ceedling[:test_invoker].sources)
- end
- end
-
- def summary
- return if (verify_coverage_file() == false)
- result_list = @ceedling[:file_path_utils].form_pass_results_filelist( BULLSEYE_RESULTS_PATH, COLLECTION_ALL_TESTS )
-
- # test results
- # get test results for only those tests in our configuration and of those only tests with results on disk
- hash = {
- :header => BULLSEYE_ROOT_NAME.upcase,
- :results => @ceedling[:plugin_reportinator].assemble_test_results(result_list, {:boom => false})
- }
-
- @ceedling[:plugin_reportinator].run_test_results_report(hash)
-
- # coverage results
- command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_REPORT_COVSRC)
- shell_result = @ceedling[:tool_executor].exec(command[:line], command[:options])
- report_coverage_results_all(shell_result[:output])
- end
-
- def enableBullseye(enable)
- if BULLSEYE_AUTO_LICENSE
- if (enable)
- args = ['push', 'on']
- @ceedling[:streaminator].stdout_puts("Enabling Bullseye")
- else
- args = ['pop']
- @ceedling[:streaminator].stdout_puts("Reverting Bullseye to previous state")
- end
-
- args.each do |arg|
- command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_BUILD_ENABLE_DISABLE, [], arg)
- shell_result = @ceedling[:tool_executor].exec(command[:line], command[:options])
- end
-
- end
- end
-
- private ###################################
-
- def report_coverage_results_all(coverage)
- results = {
- :header => BULLSEYE_ROOT_NAME.upcase,
- :coverage => {
- :functions => nil,
- :branches => nil
- }
- }
-
- if (coverage =~ /^Total.*?=\s+([0-9]+)\%/)
- results[:coverage][:functions] = $1.to_i
- end
-
- if (coverage =~ /^Total.*=\s+([0-9]+)\%\s*$/)
- results[:coverage][:branches] = $1.to_i
- end
-
- @ceedling[:plugin_reportinator].run_report($stdout, @coverage_template_all, results)
- end
-
- def report_per_function_coverage_results(sources)
- banner = @ceedling[:plugin_reportinator].generate_banner( "#{BULLSEYE_ROOT_NAME.upcase}: CODE COVERAGE SUMMARY" )
- @ceedling[:streaminator].stdout_puts "\n" + banner
-
- coverage_sources = sources.clone
- coverage_sources.delete_if {|item| item =~ /#{CMOCK_MOCK_PREFIX}.+#{EXTENSION_SOURCE}$/}
- coverage_sources.delete_if {|item| item =~ /#{BULLSEYE_IGNORE_SOURCES.join('|')}#{EXTENSION_SOURCE}$/}
-
- coverage_sources.each do |source|
- command = @ceedling[:tool_executor].build_command_line(TOOLS_BULLSEYE_REPORT_COVFN, [], source)
- shell_results = @ceedling[:tool_executor].exec(command[:line], command[:options])
- coverage_results = shell_results[:output].deep_clone
- coverage_results.sub!(/.*\n.*\n/,'') # Remove the Bullseye tool banner
- if (coverage_results =~ /warning cov814: report is empty/)
- coverage_results = "WARNING: #{source} contains no coverage data!\n\n"
- @ceedling[:streaminator].stdout_puts(coverage_results, Verbosity::COMPLAIN)
- else
- coverage_results += "\n"
- @ceedling[:streaminator].stdout_puts(coverage_results)
- end
- end
- end
-
- def verify_coverage_file
- exist = @ceedling[:file_wrapper].exist?( ENVIRONMENT_COVFILE )
-
- if (!exist)
- banner = @ceedling[:plugin_reportinator].generate_banner( "#{BULLSEYE_ROOT_NAME.upcase}: CODE COVERAGE SUMMARY" )
- @ceedling[:streaminator].stdout_puts "\n" + banner + "\nNo coverage file.\n\n"
- end
-
- return exist
- end
-
-end
-
-
-# end blocks always executed following rake run
-END {
- # cache our input configurations to use in comparison upon next execution
- if (@ceedling[:task_invoker].invoked?(/^#{BULLSEYE_TASK_ROOT}/))
- @ceedling[:cacheinator].cache_test_config( @ceedling[:setupinator].config_hash )
- @ceedling[BULLSEYE_SYM].enableBullseye(false)
- end
-}
diff --git a/test/unit-test/vendor/ceedling/plugins/colour_report/README.md b/test/unit-test/vendor/ceedling/plugins/colour_report/README.md
deleted file mode 100644
index 5f4ff77b1..000000000
--- a/test/unit-test/vendor/ceedling/plugins/colour_report/README.md
+++ /dev/null
@@ -1,20 +0,0 @@
-ceedling-colour-report
-======================
-
-## Overview
-
-The colour_report replaces the normal ceedling "pretty" output with
-a colorized variant, in order to make the results easier to read from
-a standard command line. This is very useful on developer machines, but
-can occasionally cause problems with parsing on CI servers.
-
-## Setup
-
-Enable the plugin in your project.yml by adding `colour_report`
-to the list of enabled plugins.
-
-``` YAML
-:plugins:
- :enabled:
- - colour_report
-```
diff --git a/test/unit-test/vendor/ceedling/plugins/colour_report/lib/colour_report.rb b/test/unit-test/vendor/ceedling/plugins/colour_report/lib/colour_report.rb
deleted file mode 100644
index 1211eab4d..000000000
--- a/test/unit-test/vendor/ceedling/plugins/colour_report/lib/colour_report.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'ceedling/plugin'
-require 'ceedling/streaminator'
-require 'ceedling/constants'
-
-class ColourReport < Plugin
-
- def setup
- @ceedling[:stream_wrapper].stdout_override(&ColourReport.method(:colour_stdout))
- end
-
- def self.colour_stdout(string)
- require 'colour_reporter.rb'
- report string
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/command_hooks/README.md b/test/unit-test/vendor/ceedling/plugins/command_hooks/README.md
deleted file mode 100644
index 8ac64afce..000000000
--- a/test/unit-test/vendor/ceedling/plugins/command_hooks/README.md
+++ /dev/null
@@ -1,53 +0,0 @@
-ceedling-command-hooks
-======================
-
-Plugin for easily calling command line tools at various points in the build process
-
-Define any of these sections in :tools: to provide additional hooks to be called on demand:
-
-```
- :pre_mock_generate
- :post_mock_generate
- :pre_runner_generate
- :post_runner_generate
- :pre_compile_execute
- :post_compile_execute
- :pre_link_execute
- :post_link_execute
- :pre_test_fixture_execute
- :pre_test
- :post_test
- :pre_release
- :post_release
- :pre_build
- :post_build
-```
-
-Each of these tools can support an :executable string and an :arguments list, like so:
-
-```
-:tools:
- :post_link_execute:
- :executable: objcopy.exe
- :arguments:
- - ${1} #This is replaced with the executable name
- - output.srec
- - --strip-all
-```
-
-You may also specify an array of executables to be called in a particular place, like so:
-
-```
-:tools:
- :post_test:
- - :executable: echo
- :arguments: "${1} was glorious!"
- - :executable: echo
- :arguments:
- - it kinda made me cry a little.
- - you?
-```
-
-Please note that it varies which arguments are being parsed down to the
-hooks. For now see `command_hooks.rb` to figure out which suits you best.
-Happy Tweaking!
diff --git a/test/unit-test/vendor/ceedling/plugins/command_hooks/lib/command_hooks.rb b/test/unit-test/vendor/ceedling/plugins/command_hooks/lib/command_hooks.rb
deleted file mode 100644
index 67e94f935..000000000
--- a/test/unit-test/vendor/ceedling/plugins/command_hooks/lib/command_hooks.rb
+++ /dev/null
@@ -1,91 +0,0 @@
-require 'ceedling/plugin'
-require 'ceedling/constants'
-class CommandHooks < Plugin
-
- attr_reader :config
-
- def setup
- @config = {
- :pre_mock_generate => ((defined? TOOLS_PRE_MOCK_GENERATE) ? TOOLS_PRE_MOCK_GENERATE : nil ),
- :post_mock_generate => ((defined? TOOLS_POST_MOCK_GENERATE) ? TOOLS_POST_MOCK_GENERATE : nil ),
- :pre_runner_generate => ((defined? TOOLS_PRE_RUNNER_GENERATE) ? TOOLS_PRE_RUNNER_GENERATE : nil ),
- :post_runner_generate => ((defined? TOOLS_POST_RUNNER_GENERATE) ? TOOLS_POST_RUNNER_GENERATE : nil ),
- :pre_compile_execute => ((defined? TOOLS_PRE_COMPILE_EXECUTE) ? TOOLS_PRE_COMPILE_EXECUTE : nil ),
- :post_compile_execute => ((defined? TOOLS_POST_COMPILE_EXECUTE) ? TOOLS_POST_COMPILE_EXECUTE : nil ),
- :pre_link_execute => ((defined? TOOLS_PRE_LINK_EXECUTE) ? TOOLS_PRE_LINK_EXECUTE : nil ),
- :post_link_execute => ((defined? TOOLS_POST_LINK_EXECUTE) ? TOOLS_POST_LINK_EXECUTE : nil ),
- :pre_test_fixture_execute => ((defined? TOOLS_PRE_TEST_FIXTURE_EXECUTE) ? TOOLS_PRE_TEST_FIXTURE_EXECUTE : nil ),
- :post_test_fixture_execute => ((defined? TOOLS_POST_TEST_FIXTURE_EXECUTE) ? TOOLS_POST_TEST_FIXTURE_EXECUTE : nil ),
- :pre_test => ((defined? TOOLS_PRE_TEST) ? TOOLS_PRE_TEST : nil ),
- :post_test => ((defined? TOOLS_POST_TEST) ? TOOLS_POST_TEST : nil ),
- :pre_release => ((defined? TOOLS_PRE_RELEASE) ? TOOLS_PRE_RELEASE : nil ),
- :post_release => ((defined? TOOLS_POST_RELEASE) ? TOOLS_POST_RELEASE : nil ),
- :pre_build => ((defined? TOOLS_PRE_BUILD) ? TOOLS_PRE_BUILD : nil ),
- :post_build => ((defined? TOOLS_POST_BUILD) ? TOOLS_POST_BUILD : nil ),
- :post_error => ((defined? TOOLS_POST_ERROR) ? TOOLS_POST_ERROR : nil ),
- }
- @plugin_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
- end
-
- def pre_mock_generate(arg_hash); run_hook(:pre_mock_generate, arg_hash[:header_file] ); end
- def post_mock_generate(arg_hash); run_hook(:post_mock_generate, arg_hash[:header_file] ); end
- def pre_runner_generate(arg_hash); run_hook(:pre_runner_generate, arg_hash[:source ] ); end
- def post_runner_generate(arg_hash); run_hook(:post_runner_generate, arg_hash[:runner_file] ); end
- def pre_compile_execute(arg_hash); run_hook(:pre_compile_execute, arg_hash[:source_file] ); end
- def post_compile_execute(arg_hash); run_hook(:post_compile_execute, arg_hash[:object_file] ); end
- def pre_link_execute(arg_hash); run_hook(:pre_link_execute, arg_hash[:executable] ); end
- def post_link_execute(arg_hash); run_hook(:post_link_execute, arg_hash[:executable] ); end
- def pre_test_fixture_execute(arg_hash); run_hook(:pre_test_fixture_execute, arg_hash[:executable] ); end
- def post_test_fixture_execute(arg_hash); run_hook(:post_test_fixture_execute, arg_hash[:executable] ); end
- def pre_test(test); run_hook(:pre_test, test ); end
- def post_test(test); run_hook(:post_test, test ); end
- def pre_release; run_hook(:pre_release ); end
- def post_release; run_hook(:post_release ); end
- def pre_build; run_hook(:pre_build ); end
- def post_build; run_hook(:post_build ); end
- def post_error; run_hook(:post_error ); end
-
- private
-
- ##
- # Run a hook if its available.
- #
- # :args:
- # - hook: Name of the hook to run
- # - name: Name of file (default: "")
- #
- # :return:
- # shell_result.
- #
- def run_hook_step(hook, name="")
- if (hook[:executable])
- # Handle argument replacemant ({$1}), and get commandline
- cmd = @ceedling[:tool_executor].build_command_line( hook, [], name )
- shell_result = @ceedling[:tool_executor].exec(cmd[:line], cmd[:options])
- end
- end
-
- ##
- # Run a hook if its available.
- #
- # If __which_hook__ is an array, run each of them sequentially.
- #
- # :args:
- # - which_hook: Name of the hook to run
- # - name: Name of file
- #
- def run_hook(which_hook, name="")
- if (@config[which_hook])
- @ceedling[:streaminator].stdout_puts("Running Hook #{which_hook}...", Verbosity::NORMAL)
- if (@config[which_hook].is_a? Array)
- @config[which_hook].each do |hook|
- run_hook_step(hook, name)
- end
- elsif (@config[which_hook].is_a? Hash)
- run_hook_step( @config[which_hook], name )
- else
- @ceedling[:streaminator].stdout_puts("Hook #{which_hook} was poorly formed", Verbosity::COMPLAINT)
- end
- end
- end
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/compile_commands_json/README.md b/test/unit-test/vendor/ceedling/plugins/compile_commands_json/README.md
deleted file mode 100644
index 7e3846e56..000000000
--- a/test/unit-test/vendor/ceedling/plugins/compile_commands_json/README.md
+++ /dev/null
@@ -1,29 +0,0 @@
-compile_commands_json
-=====================
-
-## Overview
-
-Syntax highlighting and code completion are hard. Historically each editor or IDE has implemented their own and then competed amongst themselves to offer the best experience for developers. Often developers would still to an IDE that felt cumbersome and slow just because it had the best syntax highlighting on the market. If doing it for one language is hard (and it is) imagine doing it for dozens of them. Imagine a full stack developer who has to work with CSS, HTML, JavaScript and some Ruby - they need excellent support in all those languages which just made things even harder.
-
-In June of 2016, Microsoft with Red Hat and Codenvy got together to create a standard called the Language Server Protocol (LSP). The idea was simple, by standardising on one protocol, all the IDEs and editors out there would only have to support LSP, and not have custom plugins for each language. In turn, the backend code that actually does the highlighting can be written once and used by any IDE that supports LSP. Many editors already support it such as Sublime Text, vim and emacs. This means that if you're using a crufty old IDE or worse, you're using a shiny new editor without code completion, then this could be just the upgrade you're looking for!
-
-For C and C++ projects, many people use the `clangd` backend. So that it can do things like "go to definition", `clangd` needs to know how to build the project so that it can figure out all the pieces to the puzzle. There are manual tools such as `bear` which can be run with `gcc` or `clang` to extract this information it has a big limitation in that if run with `ceedling release` you won't get any auto completion for Unity and you'll also get error messages reported by your IDE because of what it perceives as missing headers. If you do the same with `ceedling test` now you get Unity but you might miss things that are only seen in the release build.
-
-This plugin resolves that issue. As it is run by Ceedling, it has access to all the build information it needs to create the perfect `compile_commands.json`. Once enabled, this plugin will generate that file and place it in `./build/artifacts/compile_commands.json`. `clangd` will search your project for this file, but it is easier to symlink it into the root directory (for example `ln -s ./build/artifacts/compile_commands.json`.
-
-For more information on LSP and to find out if your editor supports it, check out https://langserver.org/
-
-## Setup
-
-Enable the plugin in your project.yml by adding `compile_commands_json` to the list
-of enabled plugins.
-
-``` YAML
-:plugins:
- :enabled:
- - compile_commands_json
-```
-
-## Configuration
-
-There is no additional configuration necessary to run this plugin.
diff --git a/test/unit-test/vendor/ceedling/plugins/compile_commands_json/lib/compile_commands_json.rb b/test/unit-test/vendor/ceedling/plugins/compile_commands_json/lib/compile_commands_json.rb
deleted file mode 100644
index 269cea4de..000000000
--- a/test/unit-test/vendor/ceedling/plugins/compile_commands_json/lib/compile_commands_json.rb
+++ /dev/null
@@ -1,35 +0,0 @@
-require 'ceedling/plugin'
-require 'ceedling/constants'
-require 'json'
-
-class CompileCommandsJson < Plugin
- def setup
- @fullpath = File.join(PROJECT_BUILD_ARTIFACTS_ROOT, "compile_commands.json")
- @database = if (File.exists?(@fullpath))
- JSON.parse( File.read(@fullpath) )
- else
- []
- end
- end
-
- def post_compile_execute(arg_hash)
-
- # Create the new Entry
- value = {
- "directory" => Dir.pwd,
- "command" => arg_hash[:shell_command],
- "file" => arg_hash[:source]
- }
-
- # Determine if we're updating an existing file description or adding a new one
- index = @database.index {|h| h["file"] == arg_hash[:source]}
- if index
- @database[index] = value
- else
- @database << value
- end
-
- # Update the Actual compile_commands.json file
- File.open(@fullpath,'w') {|f| f << JSON.pretty_generate(@database)}
- end
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/dependencies/README.md b/test/unit-test/vendor/ceedling/plugins/dependencies/README.md
deleted file mode 100644
index 256467dfa..000000000
--- a/test/unit-test/vendor/ceedling/plugins/dependencies/README.md
+++ /dev/null
@@ -1,254 +0,0 @@
-ceedling-dependencies
-=====================
-
-Plugin for supporting release dependencies. It's rare for an embedded project to
-be built completely free of other libraries and modules. Some of these may be
-standard internal libraries. Some of these may be 3rd party libraries. In either
-case, they become part of the project's ecosystem.
-
-This plugin is intended to make that relationship easier. It allows you to specify
-a source for dependencies. If required, it will automatically grab the appropriate
-version of that dependency.
-
-Most 3rd party libraries have a method of building already in place. While we'd
-love to convert the world to a place where everything downloads with a test suite
-in Ceedling, that's not likely to happen anytime soon. Until then, this plugin
-will allow the developer to specify what calls Ceedling should make to oversee
-the build process of those third party utilities. Are they using Make? CMake? A
-custom series of scripts that only a mad scientist could possibly understand? No
-matter. Ceedling has you covered. Just specify what should be called, and Ceedling
-will make it happen whenever it notices that the output artifacts are missing.
-
-Output artifacts? Sure! Things like static and dynamic libraries, or folders
-containing header files that might want to be included by your release project.
-
-So how does all this magic work?
-
-First, you need to add the `:dependencies` plugin to your list. Then, we'll add a new
-section called :dependencies. There, you can list as many dependencies as you desire. Each
-has a series of fields which help Ceedling to understand your needs. Many of them are
-optional. If you don't need that feature, just don't include it! In the end, it'll look
-something like this:
-
-```
-:dependencies:
- :libraries:
- - :name: WolfSSL
- :source_path: third_party/wolfssl/source
- :build_path: third_party/wolfssl/build
- :artifact_path: third_party/wolfssl/install
- :fetch:
- :method: :zip
- :source: \\shared_drive\third_party_libs\wolfssl\wolfssl-4.2.0.zip
- :environment:
- - CFLAGS+=-DWOLFSSL_DTLS_ALLOW_FUTURE
- :build:
- - "autoreconf -i"
- - "./configure --enable-tls13 --enable-singlethreaded"
- - make
- - make install
- :artifacts:
- :static_libraries:
- - lib/wolfssl.a
- :dynamic_libraries:
- - lib/wolfssl.so
- :includes:
- - include/**
-```
-
-Let's take a deeper look at each of these features.
-
-The Starting Dash & Name
-------------------------
-
-Yes, that opening dash tells the dependencies plugin that the rest of these fields
-belong to our first dependency. If we had a second dependency, we'd have another
-dash, lined up with the first, and followed by all the fields indented again.
-
-By convention, we use the `:name` field as the first field for each tool. Ceedling
-honestly doesn't care which order the fields are given... but as humans, it makes
-it easier for us to see the name of each dependency with starting dash.
-
-The name field is only used to print progress while we're running Ceedling. You may
-call the name of the field whatever you wish.
-
-Working Folders
----------------
-
-The `:source_path` field allows us to specify where the source code for each of our
-dependencies is stored. If fetching the dependency from elsewhere, it will be fetched
-to this location. All commands to build this dependency will be executed from
-this location (override this by specifying a `:build_path`). Finally, the output
-artifacts will be referenced to this location (override this by specifying a `:artifact_path`)
-
-If unspecified, the `:source_path` will be `dependencies\dep_name` where `dep_name`
-is the name specified in `:name` above (with special characters removed). It's best,
-though, if you specify exactly where you want your dependencies to live.
-
-If the dependency is directly included in your project (you've specified `:none` as the
-`:method` for fetching), then `:source_path` should be where your Ceedling can find the
-source for your dependency in you repo.
-
-All artifacts are relative to the `:artifact_path` (which defaults to be the same as
-`:source_path`)
-
-Fetching Dependencies
----------------------
-
-The `:dependencies` plugin supports the ability to automatically fetch your dependencies
-for you... using some common methods of fetching source. This section contains only a
-couple of fields:
-
-- `:method` -- This is the method that this dependency is fetched.
- - `:none` -- This tells Ceedling that the code is already included in the project.
- - `:zip` -- This tells Ceedling that we want to unpack a zip file to our source path.
- - `:git` -- This tells Ceedling that we want to clone a git repo to our source path.
- - `:svn` -- This tells Ceedling that we want to checkout a subversion repo to our source path.
- - `:custom` -- This tells Ceedling that we want to use a custom command or commands to fetch the code.
-- `:source` -- This is the path or url to fetch code when using the zip or git method.
-- `:tag`/`:branch` -- This is the specific tag or branch that you wish to retrieve (git only. optional).
-- `:hash` -- This is the specific SHA1 hash you want to fetch (git only. optional, requires a deep clone).
-- `:revision` -- This is the specific revision you want to fetch (svn only. optional).
-- `:executable` -- This is a list of commands to execute when using the `:custom` method
-
-
-Environment Variables
----------------------
-
-Many build systems support customization through environment variables. By specifying
-an array of environment variables, Ceedling will customize the shell environment before
-calling the build process.
-
-Environment variables may be specified in three ways. Let's look at one of each:
-
-```
- :environment:
- - ARCHITECTURE=ARM9
- - CFLAGS+=-DADD_AWESOMENESS
- - CFLAGS-=-DWASTE
-```
-
-In the first example, you see the most straightforward method. The environment variable
-`ARCHITECTURE` is set to the value `ARM9`. That's it. Simple.
-
-The next two options modify an existing symbol. In the first one, we use `+=`, which tells
-Ceedling to add the define `ADD_AWESOMENESS` to the environment variable `CFLAGS`. The second
-tells Ceedling to remove the define `WASTE` from the same environment variable.
-
-There are a couple of things to note here.
-
-First, when adding to a variable, Ceedling has no way of knowing
-what delimiter you are expecting. In this example you can see we manually added some whitespace.
-If we had been modifying `PATH` instead, we might have had to use a `:` on a unux or `;` on
-Windows.
-
-Second, removing an argument will have no effect on the argument if that argument isn't found
-precisely. It's case sensitive and the entire string must match. If symbol doesn't already exist,
-it WILL after executing this command... however it will be assigned to nothing.
-
-Building Dependencies
----------------------
-
-The heart of the `:dependencies` plugin is the ability for you, the developer, to specify the
-build process for each of your dependencies. You will need to have any required tools installed
-before using this feature.
-
-The steps are specified as an array of strings. Ceedling will execute those steps in the order
-specified, moving from step to step unless an error is encountered. By the end of the process,
-the artifacts should have been created by your process... otherwise an error will be produced.
-
-Artifacts
----------
-
-These are the outputs of the build process. There are there types of artifacts. Any dependency
-may have none or some of these. Calling out these files tells Ceedling that they are important.
-Your dependency's build process may produce many other files... but these are the files that
-Ceedling understands it needs to act on.
-
-### `static_libraries`
-
-Specifying one or more static libraries will tell Ceedling where it should find static libraries
-output by your build process. These libraries are automatically added to the list of dependencies
-and will be linked with the rest of your code to produce the final release.
-
-If any of these libraries don't exist, Ceedling will trigger your build process in order for it
-to produce them.
-
-### `dynamic_libraries`
-
-Specifying one or more dynamic libraries will tell Ceedling where it should find dynamic libraries
-output by your build process. These libraries are automatically copied to the same folder as your
-final release binary.
-
-If any of these libraries don't exist, Ceedling will trigger your build process in order for it
-to produce them.
-
-### `includes`
-
-Often when libraries are built, the same process will output a collection of includes so that
-your release code knows how to interact with that library. It's the public API for that library.
-By specifying the directories that will contain these includes (don't specify the files themselves,
-Ceedling only needs the directories), Ceedling is able to automatically add these to its internal
-include list. This allows these files to be used while building your release code, as well we making
-them mockable during unit testing.
-
-### `source`
-
-It's possible that your external dependency will just produce additional C files as its output.
-In this case, Ceedling is able to automatically add these to its internal source list. This allows
-these files to be used while building your release code.
-
-Tasks
------
-
-Once configured correctly, the `:dependencies` plugin should integrate seamlessly into your
-workflow and you shouldn't have to think about it. In the real world, that doesn't always happen.
-Here are a number of tasks that are added or modified by this plugin.
-
-### `ceedling dependencies:clean`
-
-This can be issued in order to completely remove the dependency from its source path. On the
-next build, it will be refetched and rebuilt from scratch. This can also apply to a particular
-dependency. For example, by specifying `dependencies:clean:DepName`.
-
-### `ceedling dependencies:fetch`
-
-This can be issued in order to fetch each dependency from its origin. This will have no effect on
-dependencies that don't have fetch instructions specified. This can also apply to a particular
-dependency. For example, by specifying `dependencies:fetch:DepName`.
-
-### `ceedling dependencies:make`
-
-This will force the dependencies to all build. This should happen automatically when a release
-has been triggered... but if you're just getting your dependency configured at this moment, you
-may want to just use this feature instead. A single dependency can also be built by specifying its
-name, like `dependencies:make:MyTunaBoat`.
-
-### `ceedling dependencies:deploy`
-
-This will force any dynamic libraries produced by your dependencies to be copied to your release
-build directory... just in case you clobbered them.
-
-### `paths:include`
-
-Maybe you want to verify that all the include paths are correct. If you query Ceedling with this
-request, it will list all the header file paths that it's found, including those produced by
-dependencies.
-
-### `files:include`
-
-Maybe you want to take that query further and actually get a list of ALL the header files
-Ceedling has found, including those belonging to your dependencies.
-
-Testing
-=======
-
-Hopefully all your dependencies are fully tested... but we can't always depend on that.
-In the event that they are tested with Ceedling, you'll probably want to consider using
-the `:subprojects` plugin instead of this one. The purpose of this plugin is to pull in
-third party code for release... and to provide a mockable interface for Ceedling to use
-during its tests of other modules.
-
-If that's what you're after... you've found the right plugin!
-
-Happy Testing!
diff --git a/test/unit-test/vendor/ceedling/plugins/dependencies/config/defaults.yml b/test/unit-test/vendor/ceedling/plugins/dependencies/config/defaults.yml
deleted file mode 100644
index 0415f8ea1..000000000
--- a/test/unit-test/vendor/ceedling/plugins/dependencies/config/defaults.yml
+++ /dev/null
@@ -1,5 +0,0 @@
----
-:dependencies:
- :libraries: []
-
-...
diff --git a/test/unit-test/vendor/ceedling/plugins/dependencies/dependencies.rake b/test/unit-test/vendor/ceedling/plugins/dependencies/dependencies.rake
deleted file mode 100644
index 4b9409bed..000000000
--- a/test/unit-test/vendor/ceedling/plugins/dependencies/dependencies.rake
+++ /dev/null
@@ -1,147 +0,0 @@
-
-DEPENDENCIES_LIBRARIES.each do |deplib|
-
- # Look up the name of this dependency library
- deplib_name = @ceedling[DEPENDENCIES_SYM].get_name(deplib)
-
- # Make sure the required working directories exists
- # (don't worry about the subdirectories. That's the job of the dep's build tool)
- paths = @ceedling[DEPENDENCIES_SYM].get_working_paths(deplib)
- paths.each {|path| directory(path) }
- task :directories => paths
-
- all_deps = @ceedling[DEPENDENCIES_SYM].get_static_libraries_for_dependency(deplib) +
- @ceedling[DEPENDENCIES_SYM].get_dynamic_libraries_for_dependency(deplib) +
- @ceedling[DEPENDENCIES_SYM].get_include_directories_for_dependency(deplib) +
- @ceedling[DEPENDENCIES_SYM].get_source_files_for_dependency(deplib)
-
- # Add a rule for building the actual libraries from dependency list
- (@ceedling[DEPENDENCIES_SYM].get_static_libraries_for_dependency(deplib) +
- @ceedling[DEPENDENCIES_SYM].get_dynamic_libraries_for_dependency(deplib)
- ).each do |libpath|
- file libpath do |filetask|
- path = filetask.name
-
- # We double-check that it doesn't already exist, because this process sometimes
- # produces multiple files, but they may have already been flagged as invoked
- unless (File.exists?(path))
-
- # Set Environment Variables, Fetch, and Build
- @ceedling[DEPENDENCIES_SYM].set_env_if_required(path)
- @ceedling[DEPENDENCIES_SYM].fetch_if_required(path)
- @ceedling[DEPENDENCIES_SYM].build_if_required(path)
- end
- end
- end
-
- # Add a rule for building the source and includes from dependency list
- (@ceedling[DEPENDENCIES_SYM].get_include_directories_for_dependency(deplib) +
- @ceedling[DEPENDENCIES_SYM].get_source_files_for_dependency(deplib)
- ).each do |libpath|
- task libpath do |filetask|
- path = filetask.name
-
- unless (File.file?(path) || File.directory?(path))
-
- # Set Environment Variables, Fetch, and Build
- @ceedling[DEPENDENCIES_SYM].set_env_if_required(path)
- @ceedling[DEPENDENCIES_SYM].fetch_if_required(path)
- @ceedling[DEPENDENCIES_SYM].build_if_required(path)
- end
- end
- end
-
- # Give ourselves a way to trigger individual dependencies
- namespace DEPENDENCIES_SYM do
- namespace :deploy do
- # Add task to directly just build this dependency
- task(deplib_name => @ceedling[DEPENDENCIES_SYM].get_dynamic_libraries_for_dependency(deplib)) do |t,args|
- @ceedling[DEPENDENCIES_SYM].deploy_if_required(deplib_name)
- end
- end
-
- namespace :make do
- # Add task to directly just build this dependency
- task(deplib_name => all_deps)
- end
-
- namespace :clean do
- # Add task to directly clobber this dependency
- task(deplib_name) do
- @ceedling[DEPENDENCIES_SYM].clean_if_required(deplib_name)
- end
- end
-
- namespace :fetch do
- # Add task to directly clobber this dependency
- task(deplib_name) do
- @ceedling[DEPENDENCIES_SYM].fetch_if_required(deplib_name)
- end
- end
- end
-
- # Add source files to our list of things to build during release
- source_files = @ceedling[DEPENDENCIES_SYM].get_source_files_for_dependency(deplib)
- task PROJECT_RELEASE_BUILD_TARGET => source_files
-
- # Finally, add the static libraries to our RELEASE build dependency list
- static_libs = @ceedling[DEPENDENCIES_SYM].get_static_libraries_for_dependency(deplib)
- task RELEASE_SYM => static_libs
-
- # Add the dynamic libraries to our RELEASE task dependency list so that they will be copied automatically
- dynamic_libs = @ceedling[DEPENDENCIES_SYM].get_dynamic_libraries_for_dependency(deplib)
- task RELEASE_SYM => dynamic_libs
-
- # Add the include dirs / files to our list of dependencies for release
- headers = @ceedling[DEPENDENCIES_SYM].get_include_directories_for_dependency(deplib)
- task RELEASE_SYM => headers
-
- # Paths to Libraries need to be Added to the Lib Path List
- all_libs = static_libs + dynamic_libs
- PATHS_LIBRARIES ||= []
- all_libs.each {|lib| PATHS_LIBRARIES << File.dirname(lib) }
- PATHS_LIBRARIES.uniq!
- PATHS_LIBRARIES.reject!{|s| s.empty?}
-
- # Libraries Need to be Added to the Library List
- LIBRARIES_SYSTEM ||= []
- all_libs.each {|lib| LIBRARIES_SYSTEM << File.basename(lib,'.*').sub(/^lib/,'') }
- LIBRARIES_SYSTEM.uniq!
- LIBRARIES_SYSTEM.reject!{|s| s.empty?}
-end
-
-# Add any artifact:include or :source folders to our release & test includes paths so linking and mocking work.
-@ceedling[DEPENDENCIES_SYM].add_headers_and_sources()
-
-# Add tasks for building or cleaning ALL dependencies
-namespace DEPENDENCIES_SYM do
- desc "Deploy missing dependencies."
- task :deploy => DEPENDENCIES_LIBRARIES.map{|deplib| "#{DEPENDENCIES_SYM}:deploy:#{@ceedling[DEPENDENCIES_SYM].get_name(deplib)}"}
-
- desc "Build any missing dependencies."
- task :make => DEPENDENCIES_LIBRARIES.map{|deplib| "#{DEPENDENCIES_SYM}:make:#{@ceedling[DEPENDENCIES_SYM].get_name(deplib)}"}
-
- desc "Clean all dependencies."
- task :clean => DEPENDENCIES_LIBRARIES.map{|deplib| "#{DEPENDENCIES_SYM}:clean:#{@ceedling[DEPENDENCIES_SYM].get_name(deplib)}"}
-
- desc "Fetch all dependencies."
- task :fetch => DEPENDENCIES_LIBRARIES.map{|deplib| "#{DEPENDENCIES_SYM}:fetch:#{@ceedling[DEPENDENCIES_SYM].get_name(deplib)}"}
-end
-
-namespace :files do
- desc "List all collected dependency libraries."
- task :dependencies do
- puts "dependency files:"
- deps = []
- DEPENDENCIES_LIBRARIES.each do |deplib|
- deps << @ceedling[DEPENDENCIES_SYM].get_static_libraries_for_dependency(deplib)
- deps << @ceedling[DEPENDENCIES_SYM].get_dynamic_libraries_for_dependency(deplib)
- end
- deps.flatten!
- deps.sort.each {|dep| puts " - #{dep}"}
- puts "file count: #{deps.size}"
- end
-end
-
-# Make sure that we build dependencies before attempting to tackle any of the unit tests
-Rake::Task[:test_deps].enhance ['dependencies:make']
diff --git a/test/unit-test/vendor/ceedling/plugins/dependencies/lib/dependencies.rb b/test/unit-test/vendor/ceedling/plugins/dependencies/lib/dependencies.rb
deleted file mode 100644
index fc8ae9968..000000000
--- a/test/unit-test/vendor/ceedling/plugins/dependencies/lib/dependencies.rb
+++ /dev/null
@@ -1,237 +0,0 @@
-require 'ceedling/plugin'
-require 'ceedling/constants'
-
-DEPENDENCIES_ROOT_NAME = 'dependencies'
-DEPENDENCIES_TASK_ROOT = DEPENDENCIES_ROOT_NAME + ':'
-DEPENDENCIES_SYM = DEPENDENCIES_ROOT_NAME.to_sym
-
-class Dependencies < Plugin
-
- def setup
- @plugin_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
-
- # Set up a fast way to look up dependencies by name or static lib path
- @dependencies = {}
- @dynamic_libraries = []
- DEPENDENCIES_LIBRARIES.each do |deplib|
-
- @dependencies[ deplib[:name] ] = deplib.clone
- all_deps = get_static_libraries_for_dependency(deplib) +
- get_dynamic_libraries_for_dependency(deplib) +
- get_include_directories_for_dependency(deplib) +
- get_source_files_for_dependency(deplib)
- all_deps.each do |key|
- @dependencies[key] = @dependencies[ deplib[:name] ]
- end
-
- @dynamic_libraries += get_dynamic_libraries_for_dependency(deplib)
- end
- end
-
- def config
- updates = {
- :collection_paths_include => COLLECTION_PATHS_INCLUDE,
- :collection_all_headers => COLLECTION_ALL_HEADERS,
- }
-
- @ceedling[DEPENDENCIES_SYM].get_include_directories_for_dependency(deplib).each do |incpath|
- updates[:collection_paths_include] << incpath
- Dir[ File.join(incpath, "*#{EXTENSION_HEADER}") ].each do |f|
- updates[:collection_all_headers] << f
- end
- end
-
- return updates
- end
-
- def get_name(deplib)
- raise "Each dependency must have a name!" if deplib[:name].nil?
- return deplib[:name].gsub(/\W*/,'')
- end
-
- def get_source_path(deplib)
- return deplib[:source_path] || File.join('dependencies', get_name(deplib))
- end
-
- def get_build_path(deplib)
- return deplib[:build_path] || deplib[:source_path] || File.join('dependencies', get_name(deplib))
- end
-
- def get_artifact_path(deplib)
- return deplib[:artifact_path] || deplib[:source_path] || File.join('dependencies', get_name(deplib))
- end
-
- def get_working_paths(deplib)
- paths = [deplib[:source_path], deplib[:build_path], deplib[:artifact_paths]].compact.uniq
- paths = [ File.join('dependencies', get_name(deplib)) ] if (paths.empty?)
- return paths
- end
-
- def get_static_libraries_for_dependency(deplib)
- (deplib[:artifacts][:static_libraries] || []).map {|path| File.join(get_artifact_path(deplib), path)}
- end
-
- def get_dynamic_libraries_for_dependency(deplib)
- (deplib[:artifacts][:dynamic_libraries] || []).map {|path| File.join(get_artifact_path(deplib), path)}
- end
-
- def get_source_files_for_dependency(deplib)
- (deplib[:artifacts][:source] || []).map {|path| File.join(get_artifact_path(deplib), path)}
- end
-
- def get_include_directories_for_dependency(deplib)
- paths = (deplib[:artifacts][:includes] || []).map {|path| File.join(get_artifact_path(deplib), path)}
- @ceedling[:file_system_utils].collect_paths(paths)
- end
-
- def set_env_if_required(lib_path)
- blob = @dependencies[lib_path]
- raise "Could not find dependency '#{lib_path}'" if blob.nil?
- return if (blob[:environment].nil?)
- return if (blob[:environment].empty?)
-
- blob[:environment].each do |e|
- m = e.match(/^(\w+)\s*(\+?\-?=)\s*(.*)$/)
- unless m.nil?
- case m[2]
- when "+="
- ENV[m[1]] = (ENV[m[1]] || "") + m[3]
- when "-="
- ENV[m[1]] = (ENV[m[1]] || "").gsub(m[3],'')
- else
- ENV[m[1]] = m[3]
- end
- end
- end
- end
-
- def fetch_if_required(lib_path)
- blob = @dependencies[lib_path]
- raise "Could not find dependency '#{lib_path}'" if blob.nil?
- return if (blob[:fetch].nil?)
- return if (blob[:fetch][:method].nil?)
- return if (directory(blob[:source_path]) && !Dir.empty?(blob[:source_path]))
-
- steps = case blob[:fetch][:method]
- when :none
- return
- when :zip
- [ "gzip -d #{blob[:fetch][:source]}" ]
- when :git
- branch = blob[:fetch][:tag] || blob[:fetch][:branch] || ''
- branch = ("-b " + branch) unless branch.empty?
- unless blob[:fetch][:hash].nil?
- # Do a deep clone to ensure the commit we want is available
- retval = [ "git clone #{branch} #{blob[:fetch][:source]} ." ]
- # Checkout the specified commit
- retval << "git checkout #{blob[:fetch][:hash]}"
- else
- # Do a thin clone
- retval = [ "git clone #{branch} --depth 1 #{blob[:fetch][:source]} ." ]
- end
- when :svn
- revision = blob[:fetch][:revision] || ''
- revision = ("--revision " + branch) unless branch.empty?
- retval = [ "svn checkout #{revision} #{blob[:fetch][:source]} ." ]
- retval
- when :custom
- blob[:fetch][:executable]
- else
- raise "Unknown fetch method '#{blob[:fetch][:method].to_s}' for dependency '#{blob[:name]}'"
- end
-
- # Perform the actual fetching
- @ceedling[:streaminator].stdout_puts("Fetching dependency #{blob[:name]}...", Verbosity::NORMAL)
- Dir.chdir(get_source_path(blob)) do
- steps.each do |step|
- @ceedling[:tool_executor].exec( step )
- end
- end
- end
-
- def build_if_required(lib_path)
- blob = @dependencies[lib_path]
- raise "Could not find dependency '#{lib_path}'" if blob.nil?
-
- # We don't clean anything unless we know how to fetch a new copy
- if (blob[:build].nil? || blob[:build].empty?)
- @ceedling[:streaminator].stdout_puts("Nothing to build for dependency #{blob[:name]}", Verbosity::NORMAL)
- return
- end
-
- # Perform the build
- @ceedling[:streaminator].stdout_puts("Building dependency #{blob[:name]}...", Verbosity::NORMAL)
- Dir.chdir(get_build_path(blob)) do
- blob[:build].each do |step|
- @ceedling[:tool_executor].exec( step )
- end
- end
- end
-
- def clean_if_required(lib_path)
- blob = @dependencies[lib_path]
- raise "Could not find dependency '#{lib_path}'" if blob.nil?
-
- # We don't clean anything unless we know how to fetch a new copy
- if (blob[:fetch].nil? || blob[:fetch][:method].nil? || (blob[:fetch][:method] == :none))
- @ceedling[:streaminator].stdout_puts("Nothing to clean for dependency #{blob[:name]}", Verbosity::NORMAL)
- return
- end
-
- # Perform the actual Cleaning
- @ceedling[:streaminator].stdout_puts("Cleaning dependency #{blob[:name]}...", Verbosity::NORMAL)
- get_working_paths(blob).each do |path|
- FileUtils.rm_rf(path) if File.directory?(path)
- end
- end
-
- def deploy_if_required(lib_path)
- blob = @dependencies[lib_path]
- raise "Could not find dependency '#{lib_path}'" if blob.nil?
-
- # We don't need to deploy anything if there isn't anything to deploy
- if (blob[:artifacts].nil? || blob[:artifacts][:dynamic_libraries].nil? || blob[:artifacts][:dynamic_libraries].empty?)
- @ceedling[:streaminator].stdout_puts("Nothing to deploy for dependency #{blob[:name]}", Verbosity::NORMAL)
- return
- end
-
- # Perform the actual Deploying
- @ceedling[:streaminator].stdout_puts("Deploying dependency #{blob[:name]}...", Verbosity::NORMAL)
- FileUtils.cp( lib_path, File.dirname(PROJECT_RELEASE_BUILD_TARGET) )
- end
-
- def add_headers_and_sources()
- # Search for header file paths and files to add to our collections
- DEPENDENCIES_LIBRARIES.each do |deplib|
- get_include_directories_for_dependency(deplib).each do |header|
- cfg = @ceedling[:configurator].project_config_hash
- cfg[:collection_paths_include] << header
- cfg[:collection_paths_source_and_include] << header
- cfg[:collection_paths_test_support_source_include] << header
- cfg[:collection_paths_test_support_source_include_vendor] << header
- cfg[:collection_paths_release_toolchain_include] << header
- Dir[ File.join(header, "*#{EXTENSION_HEADER}") ].each do |f|
- cfg[:collection_all_headers] << f
- end
- end
-
- get_source_files_for_dependency(deplib).each do |source|
- cfg = @ceedling[:configurator].project_config_hash
- cfg[:collection_paths_source_and_include] << source
- cfg[:collection_paths_test_support_source_include] << source
- cfg[:collection_paths_test_support_source_include_vendor] << source
- cfg[:collection_paths_release_toolchain_include] << source
- Dir[ File.join(source, "*#{EXTENSION_SOURCE}") ].each do |f|
- cfg[:collection_all_source] << f
- end
- end
- end
-
- # Make all these updated files findable by Ceedling
- @ceedling[:file_finder].prepare_search_sources()
- end
-end
-
-# end blocks always executed following rake run
-END {
-}
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/README.md b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/README.md
deleted file mode 100644
index c99a95196..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/README.md
+++ /dev/null
@@ -1,250 +0,0 @@
-# A Fake Function Framework Plug-in for Ceedling
-
-This is a plug-in for [Ceedling](https://github.com/ThrowTheSwitch/Ceedling) to use the [Fake Function Framework](https://github.com/meekrosoft/fff) for mocking instead of CMock.
-
-Using fff provides less strict mocking than CMock, and allows for more loosely-coupled tests.
-And, when tests fail -- since you get the actual line number of the failure -- it's a lot easier to figure out what went wrong.
-
-## Installing the plug-in
-
-To use the plugin you need to 1) get the contents of this repo and 2) configure your project to use it.
-
-### Get the source
-
-The easiest way to get the source is to just clone this repo into the Ceedling plugin folder for your existing Ceedling project.
-(Don't have a Ceedling project already? [Here are instructions to create one.](http://www.electronvector.com/blog/try-embedded-test-driven-development-right-now-with-ceedling))
-From within `/vendor/ceedling/plugins`, run:
-
-`git clone https://github.com/ElectronVector/fake_function_framework.git`
-
-This will create a new folder named `fake_function_framework` in the plugins folder.
-
-### Enable the plug-in.
-
-The plug-in is enabled from within your project.yml file.
-
-In the `:plugins` configuration, add `fake_function_framework` to the list of enabled plugins:
-
-```yaml
-:plugins:
- :load_paths:
- - vendor/ceedling/plugins
- :enabled:
- - stdout_pretty_tests_report
- - module_generator
- - fake_function_framework
-```
-*Note that you could put the plugin source in some other location.
-In that case you'd need to add a new path the `:load_paths`.*
-
-## How to use it
-
-You use fff with Ceedling the same way you used to use CMock.
-Modules can still be generated with the default module generator: `rake module:create[my_module]`.
-If you want to "mock" `some_module.h` in your tests, just `#include "mock_some_module.h"`.
-This creates a fake function for each of the functions defined in `some_module.h`.
-
-The name of each fake is the original function name with an appended `_fake`.
-For example, if we're generating fakes for a stack module with `push` and `pop` functions, we would have the fakes `push_fake` and `pop_fake`.
-These fakes are linked into our test executable so that any time our unit under test calls `push` or `pop` our fakes are called instead.
-
-Each of these fakes is actually a structure containing information about how the function was called, and what it might return.
-We can use Unity to inspect these fakes in our tests, and verify the interactions of our units.
-There is also a global structure named `fff` which we can use to check the sequence of calls.
-
-The fakes can also be configured to return particular values, so you can exercise the unit under test however you want.
-
-The examples below explain how to use fff to test a variety of module interactions.
-Each example uses fakes for a "display" module, created from a display.h file with `#include "mock_display.h"`. The `display.h` file must exist and must contain the prototypes for the functions to be faked.
-
-### Test that a function was called once
-
-```c
-void
-test_whenTheDeviceIsReset_thenTheStatusLedIsTurnedOff()
-{
- // When
- event_deviceReset();
-
- // Then
- TEST_ASSERT_EQUAL(1, display_turnOffStatusLed_fake.call_count);
-}
-```
-
-### Test that a function was NOT called
-
-```c
-void
-test_whenThePowerReadingIsLessThan5_thenTheStatusLedIsNotTurnedOn(void)
-{
- // When
- event_powerReadingUpdate(4);
-
- // Then
- TEST_ASSERT_EQUAL(0, display_turnOnStatusLed_fake.call_count);
-}
-```
-
-## Test that a single function was called with the correct argument
-
-```c
-void
-test_whenTheVolumeKnobIsMaxed_thenVolumeDisplayIsSetTo11(void)
-{
- // When
- event_volumeKnobMaxed();
-
- // Then
- TEST_ASSERT_EQUAL(1, display_setVolume_fake.call_count);
- TEST_ASSERT_EQUAL(11, display_setVolume_fake.arg0_val);
-}
-```
-
-## Test that calls are made in a particular sequence
-
-```c
-void
-test_whenTheModeSelectButtonIsPressed_thenTheDisplayModeIsCycled(void)
-{
- // When
- event_modeSelectButtonPressed();
- event_modeSelectButtonPressed();
- event_modeSelectButtonPressed();
-
- // Then
- TEST_ASSERT_EQUAL_PTR((void*)display_setModeToMinimum, fff.call_history[0]);
- TEST_ASSERT_EQUAL_PTR((void*)display_setModeToMaximum, fff.call_history[1]);
- TEST_ASSERT_EQUAL_PTR((void*)display_setModeToAverage, fff.call_history[2]);
-}
-```
-
-## Fake a return value from a function
-
-```c
-void
-test_givenTheDisplayHasAnError_whenTheDeviceIsPoweredOn_thenTheDisplayIsPoweredDown(void)
-{
- // Given
- display_isError_fake.return_val = true;
-
- // When
- event_devicePoweredOn();
-
- // Then
- TEST_ASSERT_EQUAL(1, display_powerDown_fake.call_count);
-}
-```
-
-## Fake a function with a value returned by reference
-
-```c
-void
-test_givenTheUserHasTypedSleep_whenItIsTimeToCheckTheKeyboard_theDisplayIsPoweredDown(void)
-{
- // Given
- char mockedEntry[] = "sleep";
- void return_mock_value(char * entry, int length)
- {
- if (length > strlen(mockedEntry))
- {
- strncpy(entry, mockedEntry, length);
- }
- }
- display_getKeyboardEntry_fake.custom_fake = return_mock_value;
-
- // When
- event_keyboardCheckTimerExpired();
-
- // Then
- TEST_ASSERT_EQUAL(1, display_powerDown_fake.call_count);
-}
-```
-
-## Fake a function with a function pointer parameter
-
-```
-void
-test_givenNewDataIsAvailable_whenTheDisplayHasUpdated_thenTheEventIsComplete(void)
-{
- // A mock function for capturing the callback handler function pointer.
- void(*registeredCallback)(void) = 0;
- void mock_display_updateData(int data, void(*callback)(void))
- {
- //Save the callback function.
- registeredCallback = callback;
- }
- display_updateData_fake.custom_fake = mock_display_updateData;
-
- // Given
- event_newDataAvailable(10);
-
- // When
- if (registeredCallback != 0)
- {
- registeredCallback();
- }
-
- // Then
- TEST_ASSERT_EQUAL(true, eventProcessor_isLastEventComplete());
-}
-```
-
-## Helper macros
-
-For convenience, there are also some helper macros that create new Unity-style asserts:
-
-- `TEST_ASSERT_CALLED(function)`: Asserts that a function was called once.
-- `TEST_ASSERT_NOT_CALLED(function)`: Asserts that a function was never called.
-- `TEST_ASSERT_CALLED_TIMES(times, function)`: Asserts that a function was called a particular number of times.
-- `TEST_ASSERT_CALLED_IN_ORDER(order, function)`: Asserts that a function was called in a particular order.
-
-Here's how you might use one of these instead of simply checking the call_count value:
-
-```c
-void
-test_whenTheDeviceIsReset_thenTheStatusLedIsTurnedOff()
-{
- // When
- event_deviceReset();
-
- // Then
- // This how to directly use fff...
- TEST_ASSERT_EQUAL(1, display_turnOffStatusLed_fake.call_count);
- // ...and this is how to use the helper macro.
- TEST_ASSERT_CALLED(display_turnOffStatusLed);
-}
-```
-
-## Test setup
-
-All of the fake functions, and any fff global state are all reset automatically between each test.
-
-## CMock configuration
-
-Use still use some of the CMock configuration options for setting things like the mock prefix, and for including additional header files in the mock files.
-
-```yaml
-:cmock:
- :mock_prefix: mock_
- :includes:
- -
- :includes_h_pre_orig_header:
- -
- :includes_h_post_orig_header:
- -
- :includes_c_pre_header:
- -
- :includes_c_post_header:
-```
-
-## Running the tests
-
-There are unit and integration tests for the plug-in itself.
-These are run with the default `rake` task.
-The integration test runs the tests for the example project in examples/fff_example.
-For the integration tests to succeed, this repository must be placed in a Ceedling tree in the plugins folder.
-
-## More examples
-
-There is an example project in examples/fff_example.
-It shows how to use the plug-in with some full-size examples.
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/Rakefile b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/Rakefile
deleted file mode 100644
index 2fd9f859f..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/Rakefile
+++ /dev/null
@@ -1,19 +0,0 @@
-require 'rake'
-require 'rspec/core/rake_task'
-
-desc "Run all rspecs"
-RSpec::Core::RakeTask.new(:spec) do |t|
- t.pattern = Dir.glob('spec/**/*_spec.rb')
- t.rspec_opts = '--format documentation'
- # t.rspec_opts << ' more options'
-end
-
-desc "Run integration test on example"
-task :integration_test do
- chdir("./examples/fff_example") do
- sh "rake clobber"
- sh "rake test:all"
- end
-end
-
-task :default => [:spec, :integration_test]
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/project.yml b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/project.yml
deleted file mode 100644
index 3253acf69..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/project.yml
+++ /dev/null
@@ -1,71 +0,0 @@
----
-
-# Notes:
-# Sample project C code is not presently written to produce a release artifact.
-# As such, release build options are disabled.
-# This sample, therefore, only demonstrates running a collection of unit tests.
-
-:project:
- :use_exceptions: FALSE
- :use_test_preprocessor: TRUE
- :use_auxiliary_dependencies: TRUE
- :build_root: build
-# :release_build: TRUE
- :test_file_prefix: test_
-
-#:release_build:
-# :output: MyApp.out
-# :use_assembly: FALSE
-
-:environment:
-
-:extension:
- :executable: .out
-
-:paths:
- :test:
- - +:test/**
- :source:
- - src/**
- :support:
-
-:defines:
- # in order to add common defines:
- # 1) remove the trailing [] from the :common: section
- # 2) add entries to the :common: section (e.g. :test: has TEST defined)
- :common: &common_defines []
- :test:
- - *common_defines
- - TEST
- :test_preprocess:
- - *common_defines
- - TEST
-
-:cmock:
- :mock_prefix: mock_
- :when_no_prototypes: :warn
- :enforce_strict_ordering: TRUE
- :plugins:
- - :ignore
- - :callback
- :treat_as:
- uint8: HEX8
- uint16: HEX16
- uint32: UINT32
- int8: INT8
- bool: UINT8
-
-#:tools:
-# Ceedling defaults to using gcc for compiling, linking, etc.
-# As [:tools] is blank, gcc will be used (so long as it's in your system path)
-# See documentation to configure a given toolchain for use
-
-:plugins:
- :load_paths:
- # This change from the default is for running Ceedling out of another folder.
- - ../../../../plugins
- :enabled:
- - stdout_pretty_tests_report
- - module_generator
- - fake_function_framework
-...
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/rakefile.rb b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/rakefile.rb
deleted file mode 100644
index e484d5fb7..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/rakefile.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# This change from the default is for running Ceedling out of another folder.
-PROJECT_CEEDLING_ROOT = "../../../.."
-load "#{PROJECT_CEEDLING_ROOT}/lib/ceedling.rb"
-
-Ceedling.load_project
-
-task :default => %w[ test:all release ]
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/bar.c b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/bar.c
deleted file mode 100644
index 6a403234f..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/bar.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "bar.h"
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/bar.h b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/bar.h
deleted file mode 100644
index febc58653..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/bar.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef bar_H
-#define bar_H
-
-#include "custom_types.h"
-
-void bar_turn_on(void);
-void bar_print_message(const char * message);
-void bar_print_message_formatted(const char * format, ...);
-void bar_numbers(int one, int two, char three);
-void bar_const_test(const char * a, char * const b, const int c);
-custom_t bar_needs_custom_type(void);
-const char * bar_return_const_ptr(int one);
-
-#endif // bar_H
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/custom_types.h b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/custom_types.h
deleted file mode 100644
index b426b32ca..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/custom_types.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef custom_types_H
-#define custom_types_H
-
-typedef int custom_t;
-
-#endif
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/display.c b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/display.c
deleted file mode 100644
index 797d46878..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/display.c
+++ /dev/null
@@ -1,7 +0,0 @@
-#include
-#include "display.h"
-
-void display_turnOffStatusLed(void)
-{
- printf("Display: Status LED off");
-}
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/display.h b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/display.h
deleted file mode 100644
index def29960c..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/display.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#include
-
-void display_turnOffStatusLed(void);
-void display_turnOnStatusLed(void);
-void display_setVolume(int level);
-void display_setModeToMinimum(void);
-void display_setModeToMaximum(void);
-void display_setModeToAverage(void);
-bool display_isError(void);
-void display_powerDown(void);
-void display_updateData(int data, void(*updateCompleteCallback)(void));
-
-/*
- The entry is returned (up to `length` bytes) in the provided `entry` buffer.
-*/
-void display_getKeyboardEntry(char * entry, int length);
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/event_processor.c b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/event_processor.c
deleted file mode 100644
index 916a92360..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/event_processor.c
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- This module implements some business logic to test.
-
- Signal events by calling the functions on the module.
-*/
-
-#include
-#include
-#include "event_processor.h"
-#include "display.h"
-
-void event_deviceReset(void)
-{
- //printf ("Device reset\n");
- display_turnOffStatusLed();
-}
-
-void event_volumeKnobMaxed(void)
-{
- display_setVolume(11);
-}
-
-void event_powerReadingUpdate(int powerReading)
-{
- if (powerReading >= 5)
- {
- display_turnOnStatusLed();
- }
-}
-
-void event_modeSelectButtonPressed(void)
-{
- static int mode = 0;
-
- if (mode == 0)
- {
- display_setModeToMinimum();
- mode++;
- }
- else if (mode == 1)
- {
- display_setModeToMaximum();
- mode++;
- }
- else if (mode == 2)
- {
- display_setModeToAverage();
- mode++;
- }
- else
- {
- mode = 0;
- }
-}
-
-void event_devicePoweredOn(void)
-{
- if (display_isError())
- {
- display_powerDown();
- }
-}
-
-void event_keyboardCheckTimerExpired(void)
-{
- char userEntry[100];
-
- display_getKeyboardEntry(userEntry, 100);
-
- if (strcmp(userEntry, "sleep") == 0)
- {
- display_powerDown();
- }
-}
-
-static bool event_lastComplete = false;
-
-/* Function called when the display update is complete. */
-static void displayUpdateComplete(void)
-{
- event_lastComplete = true;
-}
-
-void event_newDataAvailable(int data)
-{
- event_lastComplete = false;
- display_updateData(data, displayUpdateComplete);
-}
-
-bool eventProcessor_isLastEventComplete(void)
-{
- return event_lastComplete;
-}
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/event_processor.h b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/event_processor.h
deleted file mode 100644
index a79e68c56..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/event_processor.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#include
-
-void event_deviceReset(void);
-void event_volumeKnobMaxed(void);
-void event_powerReadingUpdate(int powerReading);
-void event_modeSelectButtonPressed(void);
-void event_devicePoweredOn(void);
-void event_keyboardCheckTimerExpired(void);
-void event_newDataAvailable(int data);
-
-bool eventProcessor_isLastEventComplete(void);
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/foo.c b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/foo.c
deleted file mode 100644
index c05b1154e..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/foo.c
+++ /dev/null
@@ -1,16 +0,0 @@
-#include "foo.h"
-#include "bar.h"
-#include "subfolder/zzz.h"
-
-void foo_turn_on(void) {
- bar_turn_on();
- zzz_sleep(1, "sleepy");
-}
-
-void foo_print_message(const char * message) {
- bar_print_message(message);
-}
-
-void foo_print_special_message(void) {
- bar_print_message_formatted("The numbers are %d, %d and %d", 1, 2, 3);
-}
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/foo.h b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/foo.h
deleted file mode 100644
index 3fea69940..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/foo.h
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef foo_H
-#define foo_H
-
-void foo_turn_on(void);
-void foo_print_message(const char * message);
-void foo_print_special_message(void);
-
-#endif // foo_H
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.c b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.c
deleted file mode 100644
index 85f370e12..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.c
+++ /dev/null
@@ -1 +0,0 @@
-#include "zzz.h"
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.h b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.h
deleted file mode 100644
index 32c52940d..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/src/subfolder/zzz.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef zzz_H
-#define zzz_H
-
-int zzz_sleep(int time, char * name);
-
-#endif // zzz_H
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/test/test_event_processor.c b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/test/test_event_processor.c
deleted file mode 100644
index ea59cd3e6..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/test/test_event_processor.c
+++ /dev/null
@@ -1,155 +0,0 @@
-#include "unity.h"
-#include "event_processor.h"
-#include "mock_display.h"
-#include
-
-void setUp (void)
-{
-}
-
-void tearDown (void)
-{
-}
-/*
- Test that a single function was called.
-*/
-void
-test_whenTheDeviceIsReset_thenTheStatusLedIsTurnedOff()
-{
- // When
- event_deviceReset();
-
- // Then
- TEST_ASSERT_EQUAL(1, display_turnOffStatusLed_fake.call_count);
- // or use the helper macro...
- TEST_ASSERT_CALLED(display_turnOffStatusLed);
-}
-
-/*
- Test that a single function is NOT called.
-*/
-void
-test_whenThePowerReadingIsLessThan5_thenTheStatusLedIsNotTurnedOn(void)
-{
- // When
- event_powerReadingUpdate(4);
-
- // Then
- TEST_ASSERT_EQUAL(0, display_turnOnStatusLed_fake.call_count);
- // or use the helper macro...
- TEST_ASSERT_NOT_CALLED(display_turnOffStatusLed);
-}
-
-/*
- Test that a single function was called with the correct argument.
-*/
-void
-test_whenTheVolumeKnobIsMaxed_thenVolumeDisplayIsSetTo11(void)
-{
- // When
- event_volumeKnobMaxed();
-
- // Then
- TEST_ASSERT_EQUAL(1, display_setVolume_fake.call_count);
- // or use the helper macro...
- TEST_ASSERT_CALLED(display_setVolume);
- TEST_ASSERT_EQUAL(11, display_setVolume_fake.arg0_val);
-}
-
-/*
- Test a sequence of calls.
-*/
-
-void
-test_whenTheModeSelectButtonIsPressed_thenTheDisplayModeIsCycled(void)
-{
- // When
- event_modeSelectButtonPressed();
- event_modeSelectButtonPressed();
- event_modeSelectButtonPressed();
-
- // Then
- TEST_ASSERT_EQUAL_PTR((void *)display_setModeToMinimum, fff.call_history[0]);
- TEST_ASSERT_EQUAL_PTR((void *)display_setModeToMaximum, fff.call_history[1]);
- TEST_ASSERT_EQUAL_PTR((void *)display_setModeToAverage, fff.call_history[2]);
- // or use the helper macros...
- TEST_ASSERT_CALLED_IN_ORDER(0, display_setModeToMinimum);
- TEST_ASSERT_CALLED_IN_ORDER(1, display_setModeToMaximum);
- TEST_ASSERT_CALLED_IN_ORDER(2, display_setModeToAverage);
-}
-
-/*
- Mock a return value from a function.
-*/
-void
-test_givenTheDisplayHasAnError_whenTheDeviceIsPoweredOn_thenTheDisplayIsPoweredDown(void)
-{
- // Given
- display_isError_fake.return_val = true;
-
- // When
- event_devicePoweredOn();
-
- // Then
- TEST_ASSERT_EQUAL(1, display_powerDown_fake.call_count);
- // or use the helper macro...
- TEST_ASSERT_CALLED(display_powerDown);
-}
-
-/*
- Mock a sequence of calls with return values.
-*/
-
-/*
- Mocking a function with a value returned by reference.
-*/
-void
-test_givenTheUserHasTypedSleep_whenItIsTimeToCheckTheKeyboard_theDisplayIsPoweredDown(void)
-{
- // Given
- char mockedEntry[] = "sleep";
- void return_mock_value(char * entry, int length)
- {
- if (length > strlen(mockedEntry))
- {
- strncpy(entry, mockedEntry, length);
- }
- }
- display_getKeyboardEntry_fake.custom_fake = return_mock_value;
-
- // When
- event_keyboardCheckTimerExpired();
-
- // Then
- TEST_ASSERT_EQUAL(1, display_powerDown_fake.call_count);
- // or use the helper macro...
- TEST_ASSERT_CALLED(display_powerDown);
-}
-
-/*
- Mock a function with a function pointer parameter.
-*/
-void
-test_givenNewDataIsAvailable_whenTheDisplayHasUpdated_thenTheEventIsComplete(void)
-{
- // A mock function for capturing the callback handler function pointer.
- void(*registeredCallback)(void) = 0;
- void mock_display_updateData(int data, void(*callback)(void))
- {
- //Save the callback function.
- registeredCallback = callback;
- }
- display_updateData_fake.custom_fake = mock_display_updateData;
-
- // Given
- event_newDataAvailable(10);
-
- // When
- if (registeredCallback != 0)
- {
- registeredCallback();
- }
-
- // Then
- TEST_ASSERT_EQUAL(true, eventProcessor_isLastEventComplete());
-}
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/test/test_foo.c b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/test/test_foo.c
deleted file mode 100644
index 12dd61a10..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/examples/fff_example/test/test_foo.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include "unity.h"
-#include "foo.h"
-#include "mock_bar.h"
-#include "mock_zzz.h"
-
-void setUp(void)
-{
-}
-
-void tearDown(void)
-{
-}
-
-void test_foo(void)
-{
- //When
- foo_turn_on();
-
- //Then
- TEST_ASSERT_EQUAL(1, bar_turn_on_fake.call_count);
- TEST_ASSERT_EQUAL(1, zzz_sleep_fake.call_count);
- TEST_ASSERT_EQUAL_STRING("sleepy", zzz_sleep_fake.arg1_val);
-}
-
-void test_foo_again(void)
-{
- //When
- foo_turn_on();
-
- //Then
- TEST_ASSERT_EQUAL(1, bar_turn_on_fake.call_count);
-}
-
-void test_foo_mock_with_const(void)
-{
- foo_print_message("123");
-
- TEST_ASSERT_EQUAL(1, bar_print_message_fake.call_count);
- TEST_ASSERT_EQUAL_STRING("123", bar_print_message_fake.arg0_val);
-}
-
-void test_foo_mock_with_variable_args(void)
-{
- foo_print_special_message();
- TEST_ASSERT_EQUAL(1, bar_print_message_formatted_fake.call_count);
- TEST_ASSERT_EQUAL_STRING("The numbers are %d, %d and %d", bar_print_message_formatted_fake.arg0_val);
-}
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/lib/fake_function_framework.rb b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/lib/fake_function_framework.rb
deleted file mode 100644
index 8fbb1e9b5..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/lib/fake_function_framework.rb
+++ /dev/null
@@ -1,87 +0,0 @@
-require 'ceedling/plugin'
-require 'fff_mock_generator'
-
-class FakeFunctionFramework < Plugin
-
- # Set up Ceedling to use this plugin.
- def setup
- # Get the location of this plugin.
- @plugin_root = File.expand_path(File.join(File.dirname(__FILE__), '..'))
- puts "Using fake function framework (fff)..."
-
- # Switch out the cmock_builder with our own.
- @ceedling[:cmock_builder].cmock = FffMockGeneratorForCMock.new(@ceedling[:setupinator].config_hash[:cmock])
-
- # Add the path to fff.h to the include paths.
- COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR << "#{@plugin_root}/vendor/fff"
- COLLECTION_PATHS_TEST_SUPPORT_SOURCE_INCLUDE_VENDOR << "#{@plugin_root}/src"
- end
-
- def post_runner_generate(arg_hash)
- # After the test runner file has been created, append the FFF globals
- # definition to the end of the test runner. These globals will be shared by
- # all mocks linked into the test.
- File.open(arg_hash[:runner_file], 'a') do |f|
- f.puts
- f.puts "//=======Definitions of FFF variables====="
- f.puts %{#include "fff.h"}
- f.puts "DEFINE_FFF_GLOBALS;"
- end
- end
-
-end # class FakeFunctionFramework
-
-class FffMockGeneratorForCMock
-
- def initialize(options=nil)
- @cm_config = CMockConfig.new(options)
- @cm_parser = CMockHeaderParser.new(@cm_config)
- @silent = (@cm_config.verbosity < 2)
-
- # These are the additional files to include in the mock files.
- @includes_h_pre_orig_header = (@cm_config.includes || @cm_config.includes_h_pre_orig_header || []).map{|h| h =~ / ? h : "\"#{h}\""}
- @includes_h_post_orig_header = (@cm_config.includes_h_post_orig_header || []).map{|h| h =~ / ? h : "\"#{h}\""}
- @includes_c_pre_header = (@cm_config.includes_c_pre_header || []).map{|h| h =~ / ? h : "\"#{h}\""}
- @includes_c_post_header = (@cm_config.includes_c_post_header || []).map{|h| h =~ / ? h : "\"#{h}\""}
- end
-
- def setup_mocks(files)
- [files].flatten.each do |src|
- generate_mock (src)
- end
- end
-
- def generate_mock (header_file_to_mock)
- module_name = File.basename(header_file_to_mock, '.h')
- puts "Creating mock for #{module_name}..." unless @silent
- mock_name = @cm_config.mock_prefix + module_name + @cm_config.mock_suffix
- mock_path = @cm_config.mock_path
- if @cm_config.subdir
- # If a subdirectory has been configured, append it to the mock path.
- mock_path = "#{mock_path}/#{@cm_config.subdir}"
- end
- full_path_for_mock = "#{mock_path}/#{mock_name}"
-
- # Parse the header file so we know what to mock.
- parsed_header = @cm_parser.parse(module_name, File.read(header_file_to_mock))
-
- # Create the directory if it doesn't exist.
- mkdir_p full_path_for_mock.pathmap("%d")
-
- # Generate the mock header file.
- puts "Creating mock: #{full_path_for_mock}.h"
-
- # Create the mock header.
- File.open("#{full_path_for_mock}.h", 'w') do |f|
- f.write(FffMockGenerator.create_mock_header(module_name, mock_name, parsed_header,
- @includes_h_pre_orig_header, @includes_h_post_orig_header))
- end
-
- # Create the mock source file.
- File.open("#{full_path_for_mock}.c", 'w') do |f|
- f.write(FffMockGenerator.create_mock_source(mock_name, parsed_header,
- @includes_c_pre_orig_header, @includes_c_post_orig_header))
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/lib/fff_mock_generator.rb b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/lib/fff_mock_generator.rb
deleted file mode 100644
index d439a8d7f..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/lib/fff_mock_generator.rb
+++ /dev/null
@@ -1,163 +0,0 @@
-# Creates mock files from parsed header files that can be linked into applications.
-# The mocks created are compatible with CMock for use with Ceedling.
-
-class FffMockGenerator
-
- def self.create_mock_header(module_name, mock_name, parsed_header, pre_includes=nil,
- post_includes=nil)
- output = StringIO.new
- write_opening_include_guard(mock_name, output)
- output.puts
- write_extra_includes(pre_includes, output)
- write_header_includes(module_name, output)
- write_extra_includes(post_includes, output)
- output.puts
- write_typedefs(parsed_header, output)
- output.puts
- write_function_declarations(parsed_header, output)
- output.puts
- write_control_function_prototypes(mock_name, output)
- output.puts
- write_closing_include_guard(mock_name, output)
- output.string
- end
-
- def self.create_mock_source (mock_name, parsed_header, pre_includes=nil,
- post_includes=nil)
- output = StringIO.new
- write_extra_includes(pre_includes, output)
- write_source_includes(mock_name, output)
- write_extra_includes(post_includes, output)
- output.puts
- write_function_definitions(parsed_header, output)
- output.puts
- write_control_function_definitions(mock_name, parsed_header, output)
- output.string
- end
-
- private
-
-# Header file generation functions.
-
- def self.write_opening_include_guard(mock_name, output)
- output.puts "#ifndef #{mock_name}_H"
- output.puts "#define #{mock_name}_H"
- end
-
- def self.write_header_includes(module_name, output)
- output.puts %{#include "fff.h"}
- output.puts %{#include "fff_unity_helper.h"}
- output.puts %{#include "#{module_name}.h"}
- end
-
- def self.write_typedefs(parsed_header, output)
- return unless parsed_header.key?(:typedefs)
- parsed_header[:typedefs].each do |typedef|
- output.puts typedef
- end
- end
-
- def self.write_function_declarations(parsed_header, output)
- write_function_macros("DECLARE", parsed_header, output)
- end
-
-
- def self.write_control_function_prototypes(mock_name, output)
- output.puts "void #{mock_name}_Init(void);"
- output.puts "void #{mock_name}_Verify(void);"
- output.puts "void #{mock_name}_Destroy(void);"
- end
-
- def self.write_closing_include_guard(mock_name, output)
- output.puts "#endif // #{mock_name}_H"
- end
-
-# Source file generation functions.
-
- def self.write_source_includes (mock_name, output)
- output.puts "#include "
- output.puts %{#include "fff.h"}
- output.puts %{#include "#{mock_name}.h"}
- end
-
- def self.write_function_definitions(parsed_header, output)
- write_function_macros("DEFINE", parsed_header, output)
- end
-
- def self.write_control_function_definitions(mock_name, parsed_header, output)
- output.puts "void #{mock_name}_Init(void)"
- output.puts "{"
- # In the init function, reset the FFF globals. These are used for things
- # like the call history.
- output.puts " FFF_RESET_HISTORY();"
-
- # Also, reset all of the fakes.
- if parsed_header[:functions]
- parsed_header[:functions].each do |function|
- output.puts " RESET_FAKE(#{function[:name]})"
- end
- end
- output.puts "}"
- output.puts "void #{mock_name}_Verify(void)"
- output.puts "{"
- output.puts "}"
- output.puts "void #{mock_name}_Destroy(void)"
- output.puts "{"
- output.puts "}"
- end
-
-# Shared functions.
-
- def self.write_extra_includes(includes, output)
- if includes
- includes.each {|inc| output.puts "#include #{inc}\n"}
- end
- end
-
- def self.write_function_macros(macro_type, parsed_header, output)
- return unless parsed_header.key?(:functions)
- parsed_header[:functions].each do |function|
- name = function[:name]
- return_type = function[:return][:type]
- if function.has_key? :modifier
- # Prepend any modifier. If there isn't one, trim any leading whitespace.
- return_type = "#{function[:modifier]} #{return_type}".lstrip
- end
- arg_count = function[:args].size
-
- # Check for variable arguments.
- var_arg_suffix = ""
- if function[:var_arg]
- # If there are are variable arguments, then we need to add this argument
- # to the count, update the suffix that will get added to the macro.
- arg_count += 1
- var_arg_suffix = "_VARARG"
- end
-
- # Generate the correct macro.
- if return_type == 'void'
- output.print "#{macro_type}_FAKE_VOID_FUNC#{arg_count}#{var_arg_suffix}(#{name}"
- else
- output.print "#{macro_type}_FAKE_VALUE_FUNC#{arg_count}#{var_arg_suffix}(#{return_type}, #{name}"
- end
-
- # Append each argument type.
- function[:args].each do |arg|
- output.print ", "
- if arg[:const?]
- output.print "const "
- end
- output.print "#{arg[:type]}"
- end
-
- # If this argument list ends with a variable argument, add it here at the end.
- if function[:var_arg]
- output.print ", ..."
- end
-
- # Close the declaration.
- output.puts ");"
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/fff_mock_header_generator_spec.rb b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/fff_mock_header_generator_spec.rb
deleted file mode 100644
index 09d317551..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/fff_mock_header_generator_spec.rb
+++ /dev/null
@@ -1,304 +0,0 @@
-require 'stringio'
-require 'fff_mock_generator.rb'
-require 'header_generator.rb'
-
-# Test the contents of the .h file created for the mock.
-describe "FffMockGenerator.create_mock_header" do
-
- context "when there is nothing to mock," do
- let(:mock_header) {
- parsed_header = {}
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated header file starts with an opening include guard" do
- expect(mock_header).to start_with(
- "#ifndef mock_display_H\n" +
- "#define mock_display_H")
- end
- it "then the generated file ends with a closing include guard" do
- expect(mock_header).to end_with(
- "#endif // mock_display_H\n")
- end
- it "then the generated file includes the fff header" do
- expect(mock_header).to include(
- %{#include "fff.h"\n})
- end
- it "then the generated file has a prototype for the init function" do
- expect(mock_header).to include(
- "void mock_display_Init(void);")
- end
- it "then the generated file has a prototype for the verify function" do
- expect(mock_header).to include(
- "void mock_display_Verify(void);")
- end
- it "then the generated file has a prototype for the destroy function" do
- expect(mock_header).to include(
- "void mock_display_Destroy(void);")
- end
- end
-
- context "when there is a function with no args and a void return," do
- let(:mock_header) {
- parsed_header = create_cmock_style_parsed_header(
- [{:name => 'display_turnOffStatusLed', :return_type => 'void'}])
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated header file starts with an opening include guard" do
- expect(mock_header).to start_with(
- "#ifndef mock_display_H\n" +
- "#define mock_display_H")
- end
- it "then the generated header file contains a fake function declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VOID_FUNC0(display_turnOffStatusLed);"
- )
- end
- it "then the generated file ends with a closing include guard" do
- expect(mock_header).to end_with(
- "#endif // mock_display_H\n")
- end
- end
-
- context "when there is a function with no args and a bool return," do
- let(:mock_header) {
- parsed_header = create_cmock_style_parsed_header(
- [{:name => 'display_isError', :return_type => 'bool'}])
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the fake function declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VALUE_FUNC0(bool, display_isError);"
- )
- end
- end
-
- context "when there is a function with no args and an int return," do
- let(:mock_header) {
- parsed_header = create_cmock_style_parsed_header(
- [{:name => 'display_isError', :return_type => 'int'}])
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the fake function declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VALUE_FUNC0(int, display_isError);"
- )
- end
- end
-
- context "when there is a function with args and a void return," do
- let(:mock_header) {
- parsed_header = create_cmock_style_parsed_header(
- [{:name => 'display_setVolume', :return_type => 'void', :args => ['int']}])
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the fake function declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VOID_FUNC1(display_setVolume, int);"
- )
- end
- end
-
- context "when there is a function with args and a value return," do
- let(:mock_header) {
- parsed_header = create_cmock_style_parsed_header(
- [{:name => 'a_function', :return_type => 'int', :args => ['char *']}])
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the fake function declaration" do
- expect(mock_header).to include(
- "FAKE_VALUE_FUNC1(int, a_function, char *);"
- )
- end
- end
-
- context "when there is a function with many args and a void return," do
- let(:mock_header) {
- parsed_header = create_cmock_style_parsed_header(
- [{:name => 'a_function', :return_type => 'void',
- :args => ['int', 'char *', 'int', 'int', 'bool', 'applesauce']}])
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the fake function declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VOID_FUNC6(a_function, int, char *, int, int, bool, applesauce);"
- )
- end
- end
-
- context "when there are multiple functions," do
- let(:mock_header) {
- parsed_header = create_cmock_style_parsed_header(
- [ {:name => 'a_function', :return_type => 'int', :args => ['char *']},
- {:name => 'another_function', :return_type => 'void'},
- {:name => 'three', :return_type => 'bool', :args => ['float', 'int']}
- ])
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the first fake function declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VALUE_FUNC1(int, a_function, char *);"
- )
- end
- it "then the generated file contains the second fake function declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VOID_FUNC0(another_function);"
- )
- end
- it "then the generated file contains the third fake function declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VALUE_FUNC2(bool, three, float, int);"
- )
- end
- end
-
- context "when there is a typedef," do
- let(:mock_header) {
- parsed_header = create_cmock_style_parsed_header(
- nil, ["typedef void (*displayCompleteCallback) (void);"])
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the typedef" do
- expect(mock_header).to include(
- "typedef void (*displayCompleteCallback) (void);"
- )
- end
- end
-
- context "when there is a void function with variable arguments" do
- let(:mock_header){
- parsed_header = {}
- parsed_header[:functions] = [{
- :name => "function_with_var_args",
- :return => {:type => "void"},
- :var_arg => "...",
- :args => [{:type => 'char *'}]
- }]
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the vararg declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VOID_FUNC2_VARARG(function_with_var_args, char *, ...)"
- )
- end
- end
-
- context "when there is a function with a return value and variable arguments" do
- let(:mock_header){
- parsed_header = {}
- parsed_header[:functions] = [{
- :name => "function_with_var_args",
- :return => {:type => "int"},
- :var_arg => "...",
- :args => [{:type => 'char *'}]
- }]
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the vararg declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VALUE_FUNC2_VARARG(int, function_with_var_args, char *, ...)"
- )
- end
- end
-
- context "when there is a void function with variable arguments and " +
- "additional arguments" do
- let(:mock_header){
- parsed_header = {}
- parsed_header[:functions] = [{
- :name => "function_with_var_args",
- :return => {:type => "void"},
- :var_arg => "...",
- :args => [{:type => 'char *'}, {:type => 'int'}]
- }]
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the vararg declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VOID_FUNC3_VARARG(function_with_var_args, char *, int, ...)"
- )
- end
- end
-
- context "when there is a function with a pointer to a const value" do
- let(:mock_header){
- parsed_header = {}
- parsed_header[:functions] = [{
- :name => "const_test_function",
- :return => {:type => "void"},
- :args => [{:type => "char *", :name => "a", :ptr? => false, :const? => true},
- {:type => "char *", :name => "b", :ptr? => false, :const? => false}]
- }]
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the correct const argument in the declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VOID_FUNC2(const_test_function, const char *, char *)"
- )
- end
- end
-
- context "when there is a function that returns a const pointer" do
- let(:mock_header){
- parsed_header = {}
- parsed_header[:functions] = [{
- :name => "return_const_pointer_test_function",
- :modifier => "const",
- :return => {:type => "char *" },
- :args => [{:type => "int", :name => "a"}]
- }]
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the correct const return value in the declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VALUE_FUNC1(const char *, return_const_pointer_test_function, int)"
- )
- end
- end
-
- context "when there is a function that returns a const int" do
- let(:mock_header){
- parsed_header = {}
- parsed_header[:functions] = [{
- :name => "return_const_int_test_function",
- :modifier => "const",
- :return => {:type => "int" },
- :args => []
- }]
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header)
- }
- it "then the generated file contains the correct const return value in the declaration" do
- expect(mock_header).to include(
- "DECLARE_FAKE_VALUE_FUNC0(const int, return_const_int_test_function)"
- )
- end
- end
-
- context "when there are pre-includes" do
- let(:mock_header) {
- parsed_header = {}
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header,
- [%{"another_header.h"}])
- }
- it "then they are included before the other files" do
- expect(mock_header).to include(
- %{#include "another_header.h"\n} +
- %{#include "fff.h"}
- )
- end
- end
-
- context "when there are post-includes" do
- let(:mock_header) {
- parsed_header = {}
- FffMockGenerator.create_mock_header("display", "mock_display", parsed_header,
- nil, [%{"another_header.h"}])
- }
- it "then they are included after the other files" do
- expect(mock_header).to include(
- %{#include "display.h"\n} +
- %{#include "another_header.h"\n}
- )
- end
- end
-
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/fff_mock_source_generator_spec.rb b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/fff_mock_source_generator_spec.rb
deleted file mode 100644
index 7b7f04f58..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/fff_mock_source_generator_spec.rb
+++ /dev/null
@@ -1,149 +0,0 @@
-require 'stringio'
-require 'fff_mock_generator.rb'
-
-# Test the contents of the .c file created for the mock.
-describe "FffMockGenerator.create_mock_source" do
-
- context "when there is nothing to mock," do
- let(:mock_source) {
- parsed_header = {}
- FffMockGenerator.create_mock_source("mock_my_module", parsed_header)
- }
- it "then the generated file includes the fff header" do
- expect(mock_source).to include(
- # fff.h also requires including string.h
- %{#include \n} +
- %{#include "fff.h"}
- )
- end
- it "then the generated file includes the mock header" do
- expect(mock_source).to include(
- %{#include "mock_my_module.h"\n}
- )
- end
- it "then the generated file defines the init function" do
- expect(mock_source).to include(
- "void mock_my_module_Init(void)\n" +
- "{\n" +
- " FFF_RESET_HISTORY();\n" +
- "}"
- )
- end
- it "then the generated file defines the verify function" do
- expect(mock_source).to include(
- "void mock_my_module_Verify(void)\n" +
- "{\n" +
- "}"
- )
- end
- it "then the generated file defines the destroy function" do
- expect(mock_source).to include(
- "void mock_my_module_Destroy(void)\n" +
- "{\n" +
- "}"
- )
- end
- end
-
- context "when there are multiple functions," do
- let(:mock_source) {
- parsed_header = create_cmock_style_parsed_header(
- [ {:name => 'a_function', :return_type => 'int', :args => ['char *']},
- {:name => 'another_function', :return_type => 'void'},
- {:name => 'three', :return_type => 'bool', :args => ['float', 'int']}
- ])
- FffMockGenerator.create_mock_source("mock_display", parsed_header)
- }
- it "then the generated file contains the first fake function definition" do
- expect(mock_source).to include(
- "DEFINE_FAKE_VALUE_FUNC1(int, a_function, char *);"
- )
- end
- it "then the generated file contains the second fake function definition" do
- expect(mock_source).to include(
- "DEFINE_FAKE_VOID_FUNC0(another_function);"
- )
- end
- it "then the generated file contains the third fake function definition" do
- expect(mock_source).to include(
- "DEFINE_FAKE_VALUE_FUNC2(bool, three, float, int);"
- )
- end
- it "then the init function resets all of the fakes" do
- expect(mock_source).to include(
- "void mock_display_Init(void)\n" +
- "{\n" +
- " FFF_RESET_HISTORY();\n" +
- " RESET_FAKE(a_function)\n" +
- " RESET_FAKE(another_function)\n" +
- " RESET_FAKE(three)\n" +
- "}"
- )
- end
- end
-
- context "when there is a void function with variable arguments and " +
- "additional arguments" do
- let(:mock_source){
- parsed_header = {}
- parsed_header[:functions] = [{
- :name => "function_with_var_args",
- :return => {:type => "void"},
- :var_arg => "...",
- :args => [{:type => 'char *'}, {:type => 'int'}]
- }]
- FffMockGenerator.create_mock_source("mock_display", parsed_header)
- }
- it "then the generated file contains the vararg definition" do
- expect(mock_source).to include(
- "DEFINE_FAKE_VOID_FUNC3_VARARG(function_with_var_args, char *, int, ...)"
- )
- end
- end
-
- context "when there is a function with a pointer to a const value" do
- let(:mock_source){
- parsed_header = {}
- parsed_header[:functions] = [{
- :name => "const_test_function",
- :return => {:type => "void"},
- :args => [{:type => "char *", :name => "a", :ptr? => false, :const? => true},
- {:type => "char *", :name => "b", :ptr? => false, :const? => false}]
- }]
- FffMockGenerator.create_mock_source("mock_display", parsed_header)
- }
- it "then the generated file contains the correct const argument in the declaration" do
- expect(mock_source).to include(
- "DEFINE_FAKE_VOID_FUNC2(const_test_function, const char *, char *)"
- )
- end
- end
-
- context "when there are pre-includes" do
- let(:mock_source) {
- parsed_source = {}
- FffMockGenerator.create_mock_source("mock_display", parsed_source,
- [%{"another_header.h"}])
- }
- it "then they are included before the other files" do
- expect(mock_source).to include(
- %{#include "another_header.h"\n} +
- %{#include }
- )
- end
- end
-
- context "when there are post-includes" do
- let(:mock_source) {
- parsed_source = {}
- FffMockGenerator.create_mock_source("mock_display", parsed_source,
- nil, [%{"another_header.h"}])
- }
- it "then they are included before the other files" do
- expect(mock_source).to include(
- %{#include "mock_display.h"\n} +
- %{#include "another_header.h"\n}
- )
- end
- end
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/header_generator.rb b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/header_generator.rb
deleted file mode 100644
index 3b6fa7120..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/header_generator.rb
+++ /dev/null
@@ -1,51 +0,0 @@
-# Create a CMock-style parsed header hash. This the type of hash created by
-# CMock when parsing header files for automock generation. It contains all of
-# includes, typedefs and functions (with return types and arguments) parsed from
-# the header file.
-def create_cmock_style_parsed_header(functions, typedefs = nil)
- parsed_header = {
- :includes => nil,
- :functions => [],
- :typedefs => []
- }
-
- # Add the typedefs.
- if typedefs
- typedefs.each do |typedef|
- parsed_header[:typedefs] << typedef
- end
- end
-
- # Add the functions.
- if functions
- functions.each do |function|
- # Build the array of arguments.
- args = []
- if function.key?(:args)
- function[:args].each do |arg|
- args << {
- :type => arg
- }
- end
- end
- parsed_header[:functions] << {
- :name => function[:name],
- :modifier => "",
- :return => {
- :type => function[:return_type],
- :name => "cmock_to_return",
- :ptr? => false,
- :const? => false,
- :str => "void cmock_to_return",
- :void? => true
- },
- :var_arg => nil,
- :args_string => "void",
- :args => args,
- :args_call => "",
- :contains_ptr? => false
- }
- end
- end
- parsed_header
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/spec_helper.rb b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/spec_helper.rb
deleted file mode 100644
index 25dc80ace..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/spec/spec_helper.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file was generated by the `rspec --init` command. Conventionally, all
-# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
-# The generated `.rspec` file contains `--require spec_helper` which will cause
-# this file to always be loaded, without a need to explicitly require it in any
-# files.
-#
-# Given that it is always loaded, you are encouraged to keep this file as
-# light-weight as possible. Requiring heavyweight dependencies from this file
-# will add to the boot time of your test suite on EVERY test run, even for an
-# individual file that may not need all of that loaded. Instead, consider making
-# a separate helper file that requires the additional dependencies and performs
-# the additional setup, and require it from the spec files that actually need
-# it.
-#
-# The `.rspec` file also contains a few flags that are not defaults but that
-# users commonly want.
-#
-# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
-RSpec.configure do |config|
- # rspec-expectations config goes here. You can use an alternate
- # assertion/expectation library such as wrong or the stdlib/minitest
- # assertions if you prefer.
- config.expect_with :rspec do |expectations|
- # This option will default to `true` in RSpec 4. It makes the `description`
- # and `failure_message` of custom matchers include text for helper methods
- # defined using `chain`, e.g.:
- # be_bigger_than(2).and_smaller_than(4).description
- # # => "be bigger than 2 and smaller than 4"
- # ...rather than:
- # # => "be bigger than 2"
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
- end
-
- # rspec-mocks config goes here. You can use an alternate test double
- # library (such as bogus or mocha) by changing the `mock_with` option here.
- config.mock_with :rspec do |mocks|
- # Prevents you from mocking or stubbing a method that does not exist on
- # a real object. This is generally recommended, and will default to
- # `true` in RSpec 4.
- mocks.verify_partial_doubles = true
- end
-
-# The settings below are suggested to provide a good initial experience
-# with RSpec, but feel free to customize to your heart's content.
-=begin
- # These two settings work together to allow you to limit a spec run
- # to individual examples or groups you care about by tagging them with
- # `:focus` metadata. When nothing is tagged with `:focus`, all examples
- # get run.
- config.filter_run :focus
- config.run_all_when_everything_filtered = true
-
- # Allows RSpec to persist some state between runs in order to support
- # the `--only-failures` and `--next-failure` CLI options. We recommend
- # you configure your source control system to ignore this file.
- config.example_status_persistence_file_path = "spec/examples.txt"
-
- # Limits the available syntax to the non-monkey patched syntax that is
- # recommended. For more details, see:
- # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
- # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
- # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
- config.disable_monkey_patching!
-
- # This setting enables warnings. It's recommended, but in some cases may
- # be too noisy due to issues in dependencies.
- config.warnings = true
-
- # Many RSpec users commonly either run the entire suite or an individual
- # file, and it's useful to allow more verbose output when running an
- # individual spec file.
- if config.files_to_run.one?
- # Use the documentation formatter for detailed output,
- # unless a formatter has already been configured
- # (e.g. via a command-line flag).
- config.default_formatter = 'doc'
- end
-
- # Print the 10 slowest examples and example groups at the
- # end of the spec run, to help surface which specs are running
- # particularly slow.
- config.profile_examples = 10
-
- # Run specs in random order to surface order dependencies. If you find an
- # order dependency and want to debug it, you can fix the order by providing
- # the seed, which is printed after each run.
- # --seed 1234
- config.order = :random
-
- # Seed global randomization in this process using the `--seed` CLI option.
- # Setting this allows you to use `--seed` to deterministically reproduce
- # test failures related to randomization by passing the same `--seed` value
- # as the one that triggered the failure.
- Kernel.srand config.seed
-=end
-end
diff --git a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/src/fff_unity_helper.h b/test/unit-test/vendor/ceedling/plugins/fake_function_framework/src/fff_unity_helper.h
deleted file mode 100644
index 970ecbb35..000000000
--- a/test/unit-test/vendor/ceedling/plugins/fake_function_framework/src/fff_unity_helper.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef fff_unity_helper_H
-#define fff_unity_helper_H
-
-/*
- FFF helper macros for Unity.
-*/
-
-/*
- Fail if the function was not called the expected number of times.
-*/
-#define TEST_ASSERT_CALLED_TIMES(times_, function_) \
- TEST_ASSERT_EQUAL_MESSAGE(times_, \
- function_ ## _fake.call_count, \
- "Function " #function_ " called the incorrect number of times.")
-/*
- Fail if the function was not called exactly once.
-*/
-#define TEST_ASSERT_CALLED(function_) TEST_ASSERT_CALLED_TIMES(1, function_)
-
-/*
- Fail if the function was called 1 or more times.
-*/
-#define TEST_ASSERT_NOT_CALLED(function_) TEST_ASSERT_CALLED_TIMES(0, function_)
-
-/*
- Fail if the function was not called in this particular order.
-*/
-#define TEST_ASSERT_CALLED_IN_ORDER(order_, function_) \
- TEST_ASSERT_EQUAL_PTR_MESSAGE((void *) function_, \
- fff.call_history[order_], \
- "Function " #function_ " not called in order " #order_ )
-
-#endif
diff --git a/test/unit-test/vendor/ceedling/plugins/gcov/README.md b/test/unit-test/vendor/ceedling/plugins/gcov/README.md
deleted file mode 100644
index b144e3b74..000000000
--- a/test/unit-test/vendor/ceedling/plugins/gcov/README.md
+++ /dev/null
@@ -1,433 +0,0 @@
-ceedling-gcov
-=============
-
-# Plugin Overview
-
-Plugin for integrating GNU GCov code coverage tool into Ceedling projects.
-Currently only designed for the gcov command (like LCOV for example). In the
-future we could configure this to work with other code coverage tools.
-
-This plugin currently uses [gcovr](https://www.gcovr.com/) and / or
-[ReportGenerator](https://danielpalme.github.io/ReportGenerator/)
-as utilities to generate HTML, XML, JSON, or Text reports. The normal gcov
-plugin _must_ be run first for these reports to generate.
-
-## Installation
-
-gcovr can be installed via pip like so:
-
-```sh
-pip install gcovr
-```
-
-ReportGenerator can be installed via .NET Core like so:
-
-```sh
-dotnet tool install -g dotnet-reportgenerator-globaltool
-```
-
-It is not required to install both `gcovr` and `ReportGenerator`. Either utility
-may be installed to create reports.
-
-## Configuration
-
-The gcov plugin supports configuration options via your `project.yml` provided
-by Ceedling.
-
-### Utilities
-
-Gcovr and / or ReportGenerator may be enabled to create coverage reports.
-
-```yaml
-:gcov:
- :utilities:
- - gcovr # Use gcovr to create the specified reports (default).
- - ReportGenerator # Use ReportGenerator to create the specified reports.
-```
-
-### Reports
-
-Various reports are available and may be enabled with the following
-configuration item. See the specific report sections in this README
-for additional options and information. All generated reports will be found in `build/artifacts/gcov`.
-
-```yaml
-:gcov:
- # Specify one or more reports to generate.
- # Defaults to HtmlBasic.
- :reports:
- # Make an HTML summary report.
- # Supported utilities: gcovr, ReportGenerator
- - HtmlBasic
-
- # Make an HTML report with line by line coverage of each source file.
- # Supported utilities: gcovr, ReportGenerator
- - HtmlDetailed
-
- # Make a Text report, which may be output to the console with gcovr or a file in both gcovr and ReportGenerator.
- # Supported utilities: gcovr, ReportGenerator
- - Text
-
- # Make a Cobertura XML report.
- # Supported utilities: gcovr, ReportGenerator
- - Cobertura
-
- # Make a SonarQube XML report.
- # Supported utilities: gcovr, ReportGenerator
- - SonarQube
-
- # Make a JSON report.
- # Supported utilities: gcovr
- - JSON
-
- # Make a detailed HTML report with CSS and JavaScript included in every HTML page. Useful for build servers.
- # Supported utilities: ReportGenerator
- - HtmlInline
-
- # Make a detailed HTML report with a light theme and CSS and JavaScript included in every HTML page for Azure DevOps.
- # Supported utilities: ReportGenerator
- - HtmlInlineAzure
-
- # Make a detailed HTML report with a dark theme and CSS and JavaScript included in every HTML page for Azure DevOps.
- # Supported utilities: ReportGenerator
- - HtmlInlineAzureDark
-
- # Make a single HTML file containing a chart with historic coverage information.
- # Supported utilities: ReportGenerator
- - HtmlChart
-
- # Make a detailed HTML report in a single file.
- # Supported utilities: ReportGenerator
- - MHtml
-
- # Make SVG and PNG files that show line and / or branch coverage information.
- # Supported utilities: ReportGenerator
- - Badges
-
- # Make a single CSV file containing coverage information per file.
- # Supported utilities: ReportGenerator
- - CsvSummary
-
- # Make a single TEX file containing a summary for all files and detailed reports for each files.
- # Supported utilities: ReportGenerator
- - Latex
-
- # Make a single TEX file containing a summary for all files.
- # Supported utilities: ReportGenerator
- - LatexSummary
-
- # Make a single PNG file containing a chart with historic coverage information.
- # Supported utilities: ReportGenerator
- - PngChart
-
- # Command line output interpreted by TeamCity.
- # Supported utilities: ReportGenerator
- - TeamCitySummary
-
- # Make a text file in lcov format.
- # Supported utilities: ReportGenerator
- - lcov
-
- # Make a XML file containing a summary for all classes and detailed reports for each class.
- # Supported utilities: ReportGenerator
- - Xml
-
- # Make a single XML file containing a summary for all files.
- # Supported utilities: ReportGenerator
- - XmlSummary
-```
-
-### Gcovr HTML Reports
-
-Generation of Gcovr HTML reports may be modified with the following configuration items.
-
-```yaml
-:gcov:
- # Set to 'true' to enable HTML reports or set to 'false' to disable.
- # Defaults to enabled. (gcovr --html)
- # Deprecated - See the :reports: configuration option.
- :html_report: [true|false]
-
- # Gcovr supports generating two types of HTML reports. Use 'basic' to create
- # an HTML report with only the overall file information. Use 'detailed' to create
- # an HTML report with line by line coverage of each source file.
- # Defaults to 'basic'. Set to 'detailed' for (gcovr --html-details).
- # Deprecated - See the :reports: configuration option.
- :html_report_type: [basic|detailed]
-
-
- :gcovr:
- # HTML report filename.
- :html_artifact_filename: