summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorhathach <[email protected]>2024-04-09 20:26:26 +0700
committerhathach <[email protected]>2024-04-09 22:04:43 +0700
commit2bce68a065aa873ffd738b5a90639b3b4b18d2c2 (patch)
treec1a2bfc42a3be56b4751969681005665dfaf90ad /tools
parent75cf8e21a7e525eb24b7fd34fe5859cba331fcc2 (diff)
parent68a08e33d2a1a3b02a28c616bc825eb674700833 (diff)
Merge branch 'master' into dwc2-interrupts
Diffstat (limited to 'tools')
-rw-r--r--tools/build_cmake.py105
-rw-r--r--tools/build_esp32.py62
-rw-r--r--tools/build_make.py (renamed from tools/build_family.py)13
-rw-r--r--tools/build_utils.py29
-rw-r--r--tools/codespell/exclude-file.txt0
-rw-r--r--tools/codespell/ignore-words.txt14
-rw-r--r--tools/gen_doc.py6
-rw-r--r--tools/get_deps.py273
-rw-r--r--tools/get_family_deps.py21
-rw-r--r--tools/iar_gen.py123
-rw-r--r--tools/iar_template.ipcf292
-rw-r--r--tools/make_release.py21
12 files changed, 636 insertions, 323 deletions
diff --git a/tools/build_cmake.py b/tools/build_cmake.py
new file mode 100644
index 000000000..e539b9f94
--- /dev/null
+++ b/tools/build_cmake.py
@@ -0,0 +1,105 @@
+import os
+import sys
+import time
+import subprocess
+import pathlib
+from multiprocessing import Pool
+
+import build_utils
+
+SUCCEEDED = "\033[32msucceeded\033[0m"
+FAILED = "\033[31mfailed\033[0m"
+SKIPPED = "\033[33mskipped\033[0m"
+
+build_separator = '-' * 106
+
+def filter_with_input(mylist):
+ if len(sys.argv) > 1:
+ input_args = list(set(mylist).intersection(sys.argv))
+ if len(input_args) > 0:
+ mylist[:] = input_args
+
+
+def build_family(family, cmake_option):
+ all_boards = []
+ for entry in os.scandir("hw/bsp/{}/boards".format(family)):
+ if entry.is_dir() and entry.name != 'pico_sdk':
+ all_boards.append(entry.name)
+ all_boards.sort()
+
+ # success, failed, skipped
+ ret = [0, 0, 0]
+ for board in all_boards:
+ start_time = time.monotonic()
+
+ build_dir = f"cmake-build/cmake-build-{board}"
+
+ # Generate build
+ r = subprocess.run(f"cmake examples -B {build_dir} -G \"Ninja\" -DFAMILY={family} -DBOARD"
+ f"={board} {cmake_option}", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+
+ # Build
+ if r.returncode == 0:
+ r = subprocess.run(f"cmake --build {build_dir}", shell=True, stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT)
+
+ duration = time.monotonic() - start_time
+
+ if r.returncode == 0:
+ status = SUCCEEDED
+ ret[0] += 1
+ else:
+ status = FAILED
+ ret[1] += 1
+
+ flash_size = "-"
+ sram_size = "-"
+ example = 'all'
+ title = build_utils.build_format.format(example, board, status, "{:.2f}s".format(duration), flash_size, sram_size)
+
+ if os.getenv('CI'):
+ # always print build output if in CI
+ print(f"::group::{title}")
+ print(r.stdout.decode("utf-8"))
+ print(f"::endgroup::")
+ else:
+ # print build output if failed
+ print(title)
+ if r.returncode != 0:
+ print(r.stdout.decode("utf-8"))
+
+ return ret
+
+
+if __name__ == '__main__':
+ cmake_options = ''
+ for a in sys.argv[1:]:
+ if a.startswith('-'):
+ cmake_options += ' ' + a
+
+ # If family are not specified in arguments, build all supported
+ all_families = []
+ for entry in os.scandir("hw/bsp"):
+ if entry.is_dir() and entry.name != 'espressif' and os.path.isfile(entry.path + "/family.cmake"):
+ all_families.append(entry.name)
+ filter_with_input(all_families)
+ all_families.sort()
+
+ print(build_separator)
+ print(build_utils.build_format.format('Example', 'Board', '\033[39mResult\033[0m', 'Time', 'Flash', 'SRAM'))
+ total_time = time.monotonic()
+
+ # succeeded, failed, skipped
+ total_result = [0, 0, 0]
+ for family in all_families:
+ fret = build_family(family, cmake_options)
+ if len(fret) == len(total_result):
+ total_result = [total_result[i] + fret[i] for i in range(len(fret))]
+
+ total_time = time.monotonic() - total_time
+ print(build_separator)
+ print("Build Summary: {} {}, {} {}, {} {} and took {:.2f}s".format(total_result[0], SUCCEEDED, total_result[1],
+ FAILED, total_result[2], SKIPPED, total_time))
+ print(build_separator)
+
+ sys.exit(total_result[1])
diff --git a/tools/build_esp32.py b/tools/build_esp32.py
index 00783bf58..951467c23 100644
--- a/tools/build_esp32.py
+++ b/tools/build_esp32.py
@@ -17,8 +17,8 @@ exit_status = 0
total_time = time.monotonic()
-build_format = '| {:23} | {:30} | {:18} | {:7} | {:6} | {:6} |'
-build_separator = '-' * 100
+build_format = '| {:30} | {:30} | {:18} | {:7} | {:6} | {:6} |'
+build_separator = '-' * 107
def filter_with_input(mylist):
if len(sys.argv) > 1:
@@ -26,13 +26,11 @@ def filter_with_input(mylist):
if len(input_args) > 0:
mylist[:] = input_args
+
# Build all examples if not specified
-all_examples = []
-for entry in os.scandir("examples/device"):
- # Only includes example with CMakeLists.txt for esp32s, and skip board_test to speed up ci
- if entry.is_dir() and os.path.exists(entry.path + "/sdkconfig.defaults") and entry.name != 'board_test':
- all_examples.append(entry.name)
+all_examples = [entry.replace('examples/', '') for entry in glob.glob("examples/*/*_freertos")]
filter_with_input(all_examples)
+all_examples.append('device/board_test')
all_examples.sort()
# Build all boards if not specified
@@ -46,32 +44,41 @@ all_boards.sort()
def build_board(example, board):
global success_count, fail_count, skip_count, exit_status
start_time = time.monotonic()
+
+ # Check if board is skipped
+ build_dir = f"cmake-build/cmake-build-{board}/{example}"
+
+ # Generate and build
+ r = subprocess.run(f"cmake examples/{example} -B {build_dir} -G \"Ninja\" -DBOARD={board} -DMAX3421_HOST=1",
+ shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ if r.returncode == 0:
+ r = subprocess.run(f"cmake --build {build_dir}", shell=True, stdout=subprocess.PIPE,
+ stderr=subprocess.STDOUT)
+ build_duration = time.monotonic() - start_time
flash_size = "-"
sram_size = "-"
- # Check if board is skipped
- if build_utils.skip_example(example, board):
- success = SKIPPED
- skip_count += 1
- print(build_format.format(example, board, success, '-', flash_size, sram_size))
+ if r.returncode == 0:
+ success = SUCCEEDED
+ success_count += 1
+ #(flash_size, sram_size) = build_size(example, board)
else:
- subprocess.run("make -C examples/device/{} BOARD={} clean".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- build_result = subprocess.run("make -j -C examples/device/{} BOARD={} all".format(example, board), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
-
- if build_result.returncode == 0:
- success = SUCCEEDED
- success_count += 1
- (flash_size, sram_size) = build_size(example, board)
- else:
- exit_status = build_result.returncode
- success = FAILED
- fail_count += 1
+ exit_status = r.returncode
+ success = FAILED
+ fail_count += 1
- build_duration = time.monotonic() - start_time
- print(build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size))
+ title = build_format.format(example, board, success, "{:.2f}s".format(build_duration), flash_size, sram_size)
+ if os.getenv('CI'):
+ # always print build output if in CI
+ print(f"::group::{title}")
+ print(r.stdout.decode("utf-8"))
+ print(f"::endgroup::")
+ else:
+ # print build output if failed
+ print(title)
+ if r.returncode != 0:
+ print(r.stdout.decode("utf-8"))
- if build_result.returncode != 0:
- print(build_result.stdout.decode("utf-8"))
def build_size(example, board):
#elf_file = 'examples/device/{}/_build/{}/{}-firmware.elf'.format(example, board, board)
@@ -82,6 +89,7 @@ def build_size(example, board):
sram_size = int(size_list[1]) + int(size_list[2])
return (flash_size, sram_size)
+
print(build_separator)
print(build_format.format('Example', 'Board', '\033[39mResult\033[0m', 'Time', 'Flash', 'SRAM'))
print(build_separator)
diff --git a/tools/build_family.py b/tools/build_make.py
index f9f7261fe..f79a452e4 100644
--- a/tools/build_family.py
+++ b/tools/build_make.py
@@ -11,7 +11,7 @@ SKIPPED = "\033[33mskipped\033[0m"
build_separator = '-' * 106
-make_iar_option = 'CC=iccarm'
+make_iar_option = 'TOOLCHAIN=iar'
def filter_with_input(mylist):
if len(sys.argv) > 1:
@@ -34,6 +34,7 @@ def build_family(example, family, make_option):
# sum all element of same index (column sum)
return list(map(sum, list(zip(*result))))
+
if __name__ == '__main__':
# IAR CC
if make_iar_option not in sys.argv:
@@ -41,11 +42,11 @@ if __name__ == '__main__':
# If examples are not specified in arguments, build all
all_examples = []
- for dir1 in os.scandir("examples"):
- if dir1.is_dir() and 'cmake-build' not in dir1.name:
- for entry in os.scandir(dir1.path):
- if entry.is_dir():
- all_examples.append(dir1.name + '/' + entry.name)
+ for d in os.scandir("examples"):
+ if d.is_dir() and 'cmake' not in d.name and 'build_system' not in d.name:
+ for entry in os.scandir(d.path):
+ if entry.is_dir() and 'cmake' not in entry.name:
+ all_examples.append(d.name + '/' + entry.name)
filter_with_input(all_examples)
all_examples.sort()
diff --git a/tools/build_utils.py b/tools/build_utils.py
index ec850e732..b66b64b97 100644
--- a/tools/build_utils.py
+++ b/tools/build_utils.py
@@ -30,13 +30,8 @@ def skip_example(example, board):
family_dir = board_dir.parent.parent
family = family_dir.name
- # family CMake
- family_mk = family_dir / "family.cmake"
-
# family.mk
- if not family_mk.exists():
- family_mk = family_dir / "family.mk"
-
+ family_mk = family_dir / "family.mk"
mk_contents = family_mk.read_text()
# Find the mcu, first in family mk then board mk
@@ -47,6 +42,7 @@ def skip_example(example, board):
mk_contents = board_mk.read_text()
+ mcu = "NONE"
for token in mk_contents.split():
if "CFG_TUSB_MCU=OPT_MCU_" in token:
# Strip " because cmake files has them.
@@ -68,18 +64,19 @@ def skip_example(example, board):
skip_file = ex_dir / "skip.txt"
only_file = ex_dir / "only.txt"
- if skip_file.exists() and only_file.exists():
- raise RuntimeError("Only have a skip or only file. Not both.")
- elif skip_file.exists():
+ if skip_file.exists():
skips = skip_file.read_text().split()
- return ("mcu:" + mcu in skips or
- "board:" + board in skips or
- "family:" + family in skips)
- elif only_file.exists():
+ if ("mcu:" + mcu in skips or
+ "board:" + board in skips or
+ "family:" + family in skips):
+ return True
+
+ if only_file.exists():
onlys = only_file.read_text().split()
- return not ("mcu:" + mcu in onlys or
- "board:" + board in onlys or
- "family:" + family in onlys)
+ if not ("mcu:" + mcu in onlys or
+ "board:" + board in onlys or
+ "family:" + family in onlys):
+ return True
return False
diff --git a/tools/codespell/exclude-file.txt b/tools/codespell/exclude-file.txt
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/tools/codespell/exclude-file.txt
diff --git a/tools/codespell/ignore-words.txt b/tools/codespell/ignore-words.txt
new file mode 100644
index 000000000..957cbd86b
--- /dev/null
+++ b/tools/codespell/ignore-words.txt
@@ -0,0 +1,14 @@
+synopsys
+sie
+tre
+thre
+hsi
+fro
+dout
+mot
+te
+attch
+endianess
+pris
+busses
+ser
diff --git a/tools/gen_doc.py b/tools/gen_doc.py
index 9078299cc..c63294588 100644
--- a/tools/gen_doc.py
+++ b/tools/gen_doc.py
@@ -13,9 +13,9 @@ TOP = Path(__file__).parent.parent.resolve()
def gen_deps_doc():
deps_rst = Path(TOP) / "docs/reference/dependencies.rst"
- df = pd.DataFrame.from_dict(deps_all, orient='index', columns=['Commit', 'Project'])
- df = df[['Project', 'Commit']].sort_index()
- df = df.rename_axis("Path")
+ df = pd.DataFrame.from_dict(deps_all, orient='index', columns=['Repo', 'Commit', 'Required by'])
+ df = df[['Repo', 'Commit', 'Required by']].sort_index()
+ df = df.rename_axis("Local Path")
outstr = f"""\
************
diff --git a/tools/get_deps.py b/tools/get_deps.py
index d8b044343..85c8c2126 100644
--- a/tools/get_deps.py
+++ b/tools/get_deps.py
@@ -4,67 +4,183 @@ from pathlib import Path
from multiprocessing import Pool
# Mandatory Dependencies that is always fetched
-# path, url, commit (Alphabet sorted by path)
+# path, url, commit, family (Alphabet sorted by path)
deps_mandatory = {
- 'lib/FreeRTOS-Kernel' : ['5f19e34f878af97810a7662a75eac59bd74d628b', 'https://github.com/FreeRTOS/FreeRTOS-Kernel.git' ],
- 'lib/lwip' : ['159e31b689577dbf69cf0683bbaffbd71fa5ee10', 'https://github.com/lwip-tcpip/lwip.git' ],
- 'tools/uf2' : ['19615407727073e36d81bf239c52108ba92e7660', 'https://github.com/microsoft/uf2.git' ],
+ 'lib/FreeRTOS-Kernel': ['https://github.com/FreeRTOS/FreeRTOS-Kernel.git',
+ 'cc0e0707c0c748713485b870bb980852b210877f',
+ 'all'],
+ 'lib/lwip': ['https://github.com/lwip-tcpip/lwip.git',
+ '159e31b689577dbf69cf0683bbaffbd71fa5ee10',
+ 'all'],
+ 'tools/uf2': ['https://github.com/microsoft/uf2.git',
+ '19615407727073e36d81bf239c52108ba92e7660',
+ 'all'],
}
# Optional Dependencies per MCU
-# path, url, commit (Alphabet sorted by path)
+# path, url, commit, family (Alphabet sorted by path)
deps_optional = {
- 'hw/mcu/allwinner' : ['8e5e89e8e132c0fd90e72d5422e5d3d68232b756', 'https://github.com/hathach/allwinner_driver.git' ],
- 'hw/mcu/bridgetek/ft9xx/ft90x-sdk' : ['91060164afe239fcb394122e8bf9eb24d3194eb1', 'https://github.com/BRTSG-FOSS/ft90x-sdk.git' ],
- 'hw/mcu/broadcom' : ['08370086080759ed54ac1136d62d2ad24c6fa267', 'https://github.com/adafruit/broadcom-peripherals.git' ],
- 'hw/mcu/gd/nuclei-sdk' : ['7eb7bfa9ea4fbeacfafe1d5f77d5a0e6ed3922e7', 'https://github.com/Nuclei-Software/nuclei-sdk.git' ],
- 'hw/mcu/infineon/mtb-xmclib-cat3' : ['daf5500d03cba23e68c2f241c30af79cd9d63880', 'https://github.com/Infineon/mtb-xmclib-cat3.git' ],
- 'hw/mcu/microchip' : ['9e8b37e307d8404033bb881623a113931e1edf27', 'https://github.com/hathach/microchip_driver.git' ],
- 'hw/mcu/mindmotion/mm32sdk' : ['0b79559eb411149d36e073c1635c620e576308d4', 'https://github.com/hathach/mm32sdk.git' ],
- 'hw/mcu/nordic/nrfx' : ['281cc2e178fd9a470d844b3afdea9eb322a0b0e8', 'https://github.com/NordicSemiconductor/nrfx.git' ],
- 'hw/mcu/nuvoton' : ['2204191ec76283371419fbcec207da02e1bc22fa', 'https://github.com/majbthrd/nuc_driver.git' ],
- 'hw/mcu/nxp/lpcopen' : ['43c45c85405a5dd114fff0ea95cca62837740c13', 'https://github.com/hathach/nxp_lpcopen.git' ],
- 'hw/mcu/nxp/mcux-sdk' : ['f357a1150f6cf6c6b844f53f2d426bfb3e649850', 'https://github.com/NXPmicro/mcux-sdk.git' ],
- 'hw/mcu/nxp/nxp_sdk' : ['845c8fc49b6fb660f06a5c45225494eacb06f00c', 'https://github.com/hathach/nxp_sdk.git' ],
- 'hw/mcu/raspberry_pi/Pico-PIO-USB' : ['c3715ce94b6f6391856de56081d4d9b3e98fa93d', 'https://github.com/sekigon-gonnoc/Pico-PIO-USB.git' ],
- 'hw/mcu/renesas/fsp' : ['8dc14709f2a6518b43f71efad70d900b7718d9f1', 'https://github.com/renesas/fsp.git' ],
- 'hw/mcu/renesas/rx' : ['706b4e0cf485605c32351e2f90f5698267996023', 'https://github.com/kkitayam/rx_device.git' ],
- 'hw/mcu/silabs/cmsis-dfp-efm32gg12b' : ['f1c31b7887669cb230b3ea63f9b56769078960bc', 'https://github.com/cmsis-packs/cmsis-dfp-efm32gg12b.git' ],
- 'hw/mcu/sony/cxd56/spresense-exported-sdk' : ['2ec2a1538362696118dc3fdf56f33dacaf8f4067', 'https://github.com/sonydevworld/spresense-exported-sdk.git' ],
- 'hw/mcu/st/cmsis_device_f0' : ['2fc25ee22264bc27034358be0bd400b893ef837e', 'https://github.com/STMicroelectronics/cmsis_device_f0.git' ],
- 'hw/mcu/st/cmsis_device_f1' : ['6601104a6397299b7304fd5bcd9a491f56cb23a6', 'https://github.com/STMicroelectronics/cmsis_device_f1.git' ],
- 'hw/mcu/st/cmsis_device_f2' : ['182fcb3681ce116816feb41b7764f1b019ce796f', 'https://github.com/STMicroelectronics/cmsis_device_f2.git' ],
- 'hw/mcu/st/cmsis_device_f3' : ['5e4ee5ed7a7b6c85176bb70a9fd3c72d6eb99f1b', 'https://github.com/STMicroelectronics/cmsis_device_f3.git' ],
- 'hw/mcu/st/cmsis_device_f4' : ['2615e866fa48fe1ff1af9e31c348813f2b19e7ec', 'https://github.com/STMicroelectronics/cmsis_device_f4.git' ],
- 'hw/mcu/st/cmsis_device_f7' : ['fc676ef1ad177eb874eaa06444d3d75395fc51f4', 'https://github.com/STMicroelectronics/cmsis_device_f7.git' ],
- 'hw/mcu/st/cmsis_device_g0' : ['08258b28ee95f50cb9624d152a1cbf084be1f9a5', 'https://github.com/STMicroelectronics/cmsis_device_g0.git' ],
- 'hw/mcu/st/cmsis_device_g4' : ['ce822adb1dc552b3aedd13621edbc7fdae124878', 'https://github.com/STMicroelectronics/cmsis_device_g4.git' ],
- 'hw/mcu/st/cmsis_device_h7' : ['60dc2c913203dc8629dc233d4384dcc41c91e77f', 'https://github.com/STMicroelectronics/cmsis_device_h7.git' ],
- 'hw/mcu/st/cmsis_device_l0' : ['06748ca1f93827befdb8b794402320d94d02004f', 'https://github.com/STMicroelectronics/cmsis_device_l0.git' ],
- 'hw/mcu/st/cmsis_device_l1' : ['7f16ec0a1c4c063f84160b4cc6bf88ad554a823e', 'https://github.com/STMicroelectronics/cmsis_device_l1.git' ],
- 'hw/mcu/st/cmsis_device_l4' : ['6ca7312fa6a5a460b5a5a63d66da527fdd8359a6', 'https://github.com/STMicroelectronics/cmsis_device_l4.git' ],
- 'hw/mcu/st/cmsis_device_l5' : ['d922865fc0326a102c26211c44b8e42f52c1e53d', 'https://github.com/STMicroelectronics/cmsis_device_l5.git' ],
- 'hw/mcu/st/cmsis_device_u5' : ['bc00f3c9d8a4e25220f84c26d414902cc6bdf566', 'https://github.com/STMicroelectronics/cmsis_device_u5.git' ],
- 'hw/mcu/st/cmsis_device_wb' : ['9c5d1920dd9fabbe2548e10561d63db829bb744f', 'https://github.com/STMicroelectronics/cmsis_device_wb.git' ],
- 'hw/mcu/st/stm32f0xx_hal_driver' : ['0e95cd88657030f640a11e690a8a5186c7712ea5', 'https://github.com/STMicroelectronics/stm32f0xx_hal_driver.git'],
- 'hw/mcu/st/stm32f1xx_hal_driver' : ['1dd9d3662fb7eb2a7f7d3bc0a4c1dc7537915a29', 'https://github.com/STMicroelectronics/stm32f1xx_hal_driver.git'],
- 'hw/mcu/st/stm32f2xx_hal_driver' : ['c75ace9b908a9aca631193ebf2466963b8ea33d0', 'https://github.com/STMicroelectronics/stm32f2xx_hal_driver.git'],
- 'hw/mcu/st/stm32f3xx_hal_driver' : ['1761b6207318ede021706e75aae78f452d72b6fa', 'https://github.com/STMicroelectronics/stm32f3xx_hal_driver.git'],
- 'hw/mcu/st/stm32f4xx_hal_driver' : ['04e99fbdabd00ab8f370f377c66b0a4570365b58', 'https://github.com/STMicroelectronics/stm32f4xx_hal_driver.git'],
- 'hw/mcu/st/stm32f7xx_hal_driver' : ['f7ffdf6bf72110e58b42c632b0a051df5997e4ee', 'https://github.com/STMicroelectronics/stm32f7xx_hal_driver.git'],
- 'hw/mcu/st/stm32g0xx_hal_driver' : ['5b53e6cee664a82b16c86491aa0060e2110c00cb', 'https://github.com/STMicroelectronics/stm32g0xx_hal_driver.git'],
- 'hw/mcu/st/stm32g4xx_hal_driver' : ['8b4518417706d42eef5c14e56a650005abf478a8', 'https://github.com/STMicroelectronics/stm32g4xx_hal_driver.git'],
- 'hw/mcu/st/stm32h7xx_hal_driver' : ['d8461b980b59b1625207d8c4f2ce0a9c2a7a3b04', 'https://github.com/STMicroelectronics/stm32h7xx_hal_driver.git'],
- 'hw/mcu/st/stm32l0xx_hal_driver' : ['fbdacaf6f8c82a4e1eb9bd74ba650b491e97e17b', 'https://github.com/STMicroelectronics/stm32l0xx_hal_driver.git'],
- 'hw/mcu/st/stm32l1xx_hal_driver' : ['44efc446fa69ed8344e7fd966e68ed11043b35d9', 'https://github.com/STMicroelectronics/stm32l1xx_hal_driver.git'],
- 'hw/mcu/st/stm32l4xx_hal_driver' : ['aee3d5bf283ae5df87532b781bdd01b7caf256fc', 'https://github.com/STMicroelectronics/stm32l4xx_hal_driver.git'],
- 'hw/mcu/st/stm32l5xx_hal_driver' : ['675c32a75df37f39d50d61f51cb0dcf53f07e1cb', 'https://github.com/STMicroelectronics/stm32l5xx_hal_driver.git'],
- 'hw/mcu/st/stm32u5xx_hal_driver' : ['2e1d4cdb386e33391cb261dfff4fefa92e4aa35a', 'https://github.com/STMicroelectronics/stm32u5xx_hal_driver.git'],
- 'hw/mcu/st/stm32wbxx_hal_driver' : ['2c5f06638be516c1b772f768456ba637f077bac8', 'https://github.com/STMicroelectronics/stm32wbxx_hal_driver.git'],
- 'hw/mcu/ti' : ['143ed6cc20a7615d042b03b21e070197d473e6e5', 'https://github.com/hathach/ti_driver.git' ],
- 'hw/mcu/wch/ch32v307' : ['17761f5cf9dbbf2dcf665b7c04934188add20082', 'https://github.com/openwch/ch32v307.git' ],
- 'lib/CMSIS_5' : ['20285262657d1b482d132d20d755c8c330d55c1f', 'https://github.com/ARM-software/CMSIS_5.git' ],
- 'lib/sct_neopixel' : ['e73e04ca63495672d955f9268e003cffe168fcd8', 'https://github.com/gsteiert/sct_neopixel.git' ],
+ 'hw/mcu/allwinner': ['https://github.com/hathach/allwinner_driver.git',
+ '8e5e89e8e132c0fd90e72d5422e5d3d68232b756',
+ 'fc100s'],
+ 'hw/mcu/bridgetek/ft9xx/ft90x-sdk': ['https://github.com/BRTSG-FOSS/ft90x-sdk.git',
+ '91060164afe239fcb394122e8bf9eb24d3194eb1',
+ 'brtmm90x'],
+ 'hw/mcu/broadcom': ['https://github.com/adafruit/broadcom-peripherals.git',
+ '08370086080759ed54ac1136d62d2ad24c6fa267',
+ 'broadcom_32bit broadcom_64bit'],
+ 'hw/mcu/gd/nuclei-sdk': ['https://github.com/Nuclei-Software/nuclei-sdk.git',
+ '7eb7bfa9ea4fbeacfafe1d5f77d5a0e6ed3922e7',
+ 'gd32vf103'],
+ 'hw/mcu/infineon/mtb-xmclib-cat3': ['https://github.com/Infineon/mtb-xmclib-cat3.git',
+ 'daf5500d03cba23e68c2f241c30af79cd9d63880',
+ 'xmc4000'],
+ 'hw/mcu/microchip': ['https://github.com/hathach/microchip_driver.git',
+ '9e8b37e307d8404033bb881623a113931e1edf27',
+ 'sam3x samd11 samd21 samd51 same5x same7x saml2x samg'],
+ 'hw/mcu/mindmotion/mm32sdk': ['https://github.com/hathach/mm32sdk.git',
+ '0b79559eb411149d36e073c1635c620e576308d4',
+ 'mm32'],
+ 'hw/mcu/nordic/nrfx': ['https://github.com/NordicSemiconductor/nrfx.git',
+ '2527e3c8449cfd38aee41598e8af8492f410ed15',
+ 'nrf'],
+ 'hw/mcu/nuvoton': ['https://github.com/majbthrd/nuc_driver.git',
+ '2204191ec76283371419fbcec207da02e1bc22fa',
+ 'nuc'],
+ 'hw/mcu/nxp/lpcopen': ['https://github.com/hathach/nxp_lpcopen.git',
+ '84e0bd3e43910aaf71eefd62075cf57495418312',
+ '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',
+ '0f747aaa0c16f750bdfa2ba37ec25d6c8e1bc117',
+ 'rp2040'],
+ 'hw/mcu/renesas/fsp': ['https://github.com/renesas/fsp.git',
+ 'd52e5a6a59b7c638da860c2bb309b6e78e752ff8',
+ '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_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'],
+ 'hw/mcu/st/cmsis_device_f3': ['https://github.com/STMicroelectronics/cmsis_device_f3.git',
+ '5e4ee5ed7a7b6c85176bb70a9fd3c72d6eb99f1b',
+ 'stm32f3'],
+ 'hw/mcu/st/cmsis_device_f4': ['https://github.com/STMicroelectronics/cmsis_device_f4.git',
+ '2615e866fa48fe1ff1af9e31c348813f2b19e7ec',
+ 'stm32f4'],
+ 'hw/mcu/st/cmsis_device_f7': ['https://github.com/STMicroelectronics/cmsis_device_f7.git',
+ 'fc676ef1ad177eb874eaa06444d3d75395fc51f4',
+ 'stm32f7'],
+ 'hw/mcu/st/cmsis_device_g0': ['https://github.com/STMicroelectronics/cmsis_device_g0.git',
+ '3a23e1224417f3f2d00300ecd620495e363f2094',
+ 'stm32g0'],
+ 'hw/mcu/st/cmsis_device_g4': ['https://github.com/STMicroelectronics/cmsis_device_g4.git',
+ 'ce822adb1dc552b3aedd13621edbc7fdae124878',
+ 'stm32g4'],
+ 'hw/mcu/st/cmsis_device_h7': ['https://github.com/STMicroelectronics/cmsis_device_h7.git',
+ '60dc2c913203dc8629dc233d4384dcc41c91e77f',
+ 'stm32h7'],
+ 'hw/mcu/st/cmsis_device_h5': ['https://github.com/STMicroelectronics/cmsis_device_h5.git',
+ '62b2cb0fbfe10c5791ee469bbde7b397c2fea8f5',
+ 'stm32h5'],
+ 'hw/mcu/st/cmsis_device_l0': ['https://github.com/STMicroelectronics/cmsis_device_l0.git',
+ '06748ca1f93827befdb8b794402320d94d02004f',
+ 'stm32l0'],
+ 'hw/mcu/st/cmsis_device_l1': ['https://github.com/STMicroelectronics/cmsis_device_l1.git',
+ '7f16ec0a1c4c063f84160b4cc6bf88ad554a823e',
+ 'stm32l1'],
+ 'hw/mcu/st/cmsis_device_l4': ['https://github.com/STMicroelectronics/cmsis_device_l4.git',
+ '6ca7312fa6a5a460b5a5a63d66da527fdd8359a6',
+ 'stm32l4'],
+ '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',
+ '06d7edade7167b0eafdd550bf77cfc4fa98eae2e',
+ 'stm32u5'],
+ 'hw/mcu/st/cmsis_device_wb': ['https://github.com/STMicroelectronics/cmsis_device_wb.git',
+ '9c5d1920dd9fabbe2548e10561d63db829bb744f',
+ 'stm32wb'],
+ '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'],
+ 'hw/mcu/st/stm32f3xx_hal_driver': ['https://github.com/STMicroelectronics/stm32f3xx_hal_driver.git',
+ '1761b6207318ede021706e75aae78f452d72b6fa',
+ 'stm32f3'],
+ 'hw/mcu/st/stm32f4xx_hal_driver': ['https://github.com/STMicroelectronics/stm32f4xx_hal_driver.git',
+ '04e99fbdabd00ab8f370f377c66b0a4570365b58',
+ 'stm32f4'],
+ 'hw/mcu/st/stm32f7xx_hal_driver': ['https://github.com/STMicroelectronics/stm32f7xx_hal_driver.git',
+ 'f7ffdf6bf72110e58b42c632b0a051df5997e4ee',
+ 'stm32f7'],
+ 'hw/mcu/st/stm32g0xx_hal_driver': ['https://github.com/STMicroelectronics/stm32g0xx_hal_driver.git',
+ 'e911b12c7f67084d7f6b76157a4c0d4e2ec3779c',
+ 'stm32g0'],
+ 'hw/mcu/st/stm32g4xx_hal_driver': ['https://github.com/STMicroelectronics/stm32g4xx_hal_driver.git',
+ '8b4518417706d42eef5c14e56a650005abf478a8',
+ 'stm32g4'],
+ 'hw/mcu/st/stm32h7xx_hal_driver': ['https://github.com/STMicroelectronics/stm32h7xx_hal_driver.git',
+ 'd8461b980b59b1625207d8c4f2ce0a9c2a7a3b04',
+ 'stm32h7'],
+ 'hw/mcu/st/stm32h5xx_hal_driver': ['https://github.com/STMicroelectronics/stm32h5xx_hal_driver.git',
+ '2cf77de584196d619cec1b4586c3b9e2820a254e',
+ 'stm32h5'],
+ 'hw/mcu/st/stm32l0xx_hal_driver': ['https://github.com/STMicroelectronics/stm32l0xx_hal_driver.git',
+ 'fbdacaf6f8c82a4e1eb9bd74ba650b491e97e17b',
+ 'stm32l0'],
+ 'hw/mcu/st/stm32l1xx_hal_driver': ['https://github.com/STMicroelectronics/stm32l1xx_hal_driver.git',
+ '44efc446fa69ed8344e7fd966e68ed11043b35d9',
+ 'stm32l1'],
+ 'hw/mcu/st/stm32l4xx_hal_driver': ['https://github.com/STMicroelectronics/stm32l4xx_hal_driver.git',
+ 'aee3d5bf283ae5df87532b781bdd01b7caf256fc',
+ 'stm32l4'],
+ 'hw/mcu/st/stm32l5xx_hal_driver': ['https://github.com/STMicroelectronics/stm32l5xx_hal_driver.git',
+ '675c32a75df37f39d50d61f51cb0dcf53f07e1cb',
+ 'stm32l5'],
+ 'hw/mcu/st/stm32u5xx_hal_driver': ['https://github.com/STMicroelectronics/stm32u5xx_hal_driver.git',
+ '4d93097a67928e9377e655ddd14622adc31b9770',
+ 'stm32u5'],
+ 'hw/mcu/st/stm32wbxx_hal_driver': ['https://github.com/STMicroelectronics/stm32wbxx_hal_driver.git',
+ '2c5f06638be516c1b772f768456ba637f077bac8',
+ 'stm32wb'],
+ 'hw/mcu/ti': ['https://github.com/hathach/ti_driver.git',
+ '143ed6cc20a7615d042b03b21e070197d473e6e5',
+ 'msp430 msp432e4 tm4c123'],
+ 'hw/mcu/wch/ch32v307': ['https://github.com/openwch/ch32v307.git',
+ '17761f5cf9dbbf2dcf665b7c04934188add20082',
+ 'ch32v307'],
+ 'hw/mcu/wch/ch32f20x': ['https://github.com/openwch/ch32f20x.git',
+ '77c4095087e5ed2c548ec9058e655d0b8757663b',
+ 'ch32f20x'],
+ '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 saml2x'
+ 'stm32f0 stm32f1 stm32f2 stm32f3 stm32f4 stm32f7 stm32g0 stm32g4 stm32h5'
+ 'stm32h7 stm32l0 stm32l1 stm32l4 stm32l5 stm32u5 stm32wb'],
+ 'lib/sct_neopixel': ['https://github.com/gsteiert/sct_neopixel.git',
+ 'e73e04ca63495672d955f9268e003cffe168fcd8',
+ 'lpc55'],
}
# combined 2 deps
@@ -74,43 +190,60 @@ deps_all = {**deps_mandatory, **deps_optional}
TOP = Path(__file__).parent.parent.resolve()
+def run_cmd(cmd):
+ return subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+
+
def get_a_dep(d):
if d not in deps_all.keys():
print('{} is not found in dependency list')
return 1
- commit = deps_all[d][0]
- url = deps_all[d][1]
- print('cloning {} with {}'.format(d, url))
+ url = deps_all[d][0]
+ commit = deps_all[d][1]
+ families = deps_all[d][2]
+
+ print(f'cloning {d} with {url}')
p = Path(TOP / d)
- git_cmd = "git -C {}".format(p)
+ git_cmd = f"git -C {p}"
# Init git deps if not existed
if not p.exists():
p.mkdir(parents=True)
- subprocess.run("{} init".format(git_cmd), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- subprocess.run("{} remote add origin {}".format(git_cmd, url), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ run_cmd(f"{git_cmd} init")
+ run_cmd(f"{git_cmd} remote add origin {url}")
# Check if commit is already fetched
- result = subprocess.run("{} rev-parse HEAD".format(git_cmd, commit), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ result = run_cmd(f"{git_cmd} rev-parse HEAD")
head = result.stdout.decode("utf-8").splitlines()[0]
-
+ run_cmd(f"{git_cmd} reset --hard")
if commit != head:
- subprocess.run("{} reset --hard".format(git_cmd, commit), shell=True)
- subprocess.run("{} fetch --depth 1 origin {}".format(git_cmd, commit), shell=True)
- subprocess.run("{} checkout FETCH_HEAD".format(git_cmd), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ run_cmd(f"{git_cmd} fetch --depth 1 origin {commit}")
+ run_cmd(f"{git_cmd} checkout FETCH_HEAD")
return 0
+# Arguments can be
+# - family name
+# - specific deps path
+# - all
if __name__ == "__main__":
status = 0
deps = list(deps_mandatory.keys())
- # get all if executed with all as argument
+ # get all if 'all' is argument
if len(sys.argv) == 2 and sys.argv[1] == 'all':
- deps += deps_optional
+ deps += deps_optional.keys()
else:
- deps += sys.argv[1:]
+ for arg in sys.argv[1:]:
+ if arg in deps_all.keys():
+ # if arg is a dep, add it
+ deps.append(arg)
+ else:
+ # arg is a family name, add all deps of that family
+ for d in deps_optional:
+ if arg in deps_optional[d][2]:
+ deps.append(d)
with Pool() as pool:
status = sum(pool.map(get_a_dep, deps))
diff --git a/tools/get_family_deps.py b/tools/get_family_deps.py
deleted file mode 100644
index 071d7b756..000000000
--- a/tools/get_family_deps.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import sys
-import subprocess
-import os
-
-# TOP is tinyusb root dir
-TOP = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-
-def get_family_dep(family):
- for entry in os.scandir("{}/hw/bsp/{}/boards".format(TOP, family)):
- if entry.is_dir():
- result = subprocess.run("make -C {}/examples/device/board_test BOARD={} get-deps".format(TOP, entry.name),
- shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- print(result.stdout.decode("utf-8"))
- return result.returncode
-
-
-status = 0
-for d in sys.argv[1:]:
- status += get_family_dep(d)
-
-sys.exit(status)
diff --git a/tools/iar_gen.py b/tools/iar_gen.py
index 73c8b29fc..264dd9a58 100644
--- a/tools/iar_gen.py
+++ b/tools/iar_gen.py
@@ -1,51 +1,84 @@
#!/usr/bin/python3
import os
+import sys
import xml.dom.minidom as XML
+import glob
-# Read base configuration
-base = ""
-with open("iar_template.ipcf") as f:
- base = f.read()
+def Main():
+ # Read base configuration
+ base = ""
+ with open("iar_template.ipcf") as f:
+ base = f.read()
-# Enumerate all device/host examples
-dir_1 = os.listdir("../examples")
-for dir_2 in dir_1:
- if os.path.isdir("../examples/{}".format(dir_2)):
- print(dir_2)
- examples = os.listdir("../examples/{}".format(dir_2))
- for example in examples:
- if os.path.isdir("../examples/{}/{}".format(dir_2, example)):
- print("../examples/{}/{}".format(dir_2, example))
- conf = XML.parseString(base)
- files = conf.getElementsByTagName("files")[0]
- inc = conf.getElementsByTagName("includePath")[0]
- # Add bsp inc
- path = conf.createElement('path')
- path_txt = conf.createTextNode("$TUSB_DIR$/hw")
- path.appendChild(path_txt)
- inc.appendChild(path)
- # Add board.c/.h
- grp = conf.createElement('group')
- grp.setAttribute("name", "bsp")
- path = conf.createElement('path')
- path_txt = conf.createTextNode("$TUSB_DIR$/hw/bsp/board.c")
- path.appendChild(path_txt)
- grp.appendChild(path)
- files.appendChild(grp)
- # Add example's .c/.h
- grp = conf.createElement('group')
- grp.setAttribute("name", "example")
- for file in os.listdir("../examples/{}/{}/src".format(dir_2, example)):
- if file.endswith(".c") or file.endswith(".h"):
- path = conf.createElement('path')
- path.setAttribute("copyTo", "$PROJ_DIR$/{}".format(file))
- path_txt = conf.createTextNode("$TUSB_DIR$/examples/{0}/{1}/src/{2}".format(dir_2, example, file))
- path.appendChild(path_txt)
- grp.appendChild(path)
- files.appendChild(grp)
- cfg_str = conf.toprettyxml()
- cfg_str = '\n'.join([s for s in cfg_str.splitlines() if s.strip()])
- #print(cfg_str)
- with open("../examples/{0}/{1}/iar_{1}.ipcf".format(dir_2, example), 'w') as f:
- f.write(cfg_str)
+ # Enumerate all device/host examples
+ dir_1 = os.listdir("../examples")
+ for dir_2 in dir_1:
+ if os.path.isdir("../examples/{}".format(dir_2)):
+ print(dir_2)
+ examples = os.listdir("../examples/{}".format(dir_2))
+ for example in examples:
+ if os.path.isdir("../examples/{}/{}".format(dir_2, example)):
+ print("../examples/{}/{}".format(dir_2, example))
+ conf = XML.parseString(base)
+ files = conf.getElementsByTagName("files")[0]
+ inc = conf.getElementsByTagName("includePath")[0]
+ # Add bsp inc
+ path = conf.createElement('path')
+ path_txt = conf.createTextNode("$TUSB_DIR$/hw")
+ path.appendChild(path_txt)
+ inc.appendChild(path)
+ # Add board.c/.h
+ grp = conf.createElement('group')
+ grp.setAttribute("name", "bsp")
+ path = conf.createElement('path')
+ path_txt = conf.createTextNode("$TUSB_DIR$/hw/bsp/board.c")
+ path.appendChild(path_txt)
+ grp.appendChild(path)
+ files.appendChild(grp)
+ # Add example's .c/.h
+ grp = conf.createElement('group')
+ grp.setAttribute("name", "example")
+ for file in os.listdir("../examples/{}/{}/src".format(dir_2, example)):
+ if file.endswith(".c") or file.endswith(".h"):
+ path = conf.createElement('path')
+ path.setAttribute("copyTo", "$PROJ_DIR$/{}".format(file))
+ path_txt = conf.createTextNode("$TUSB_DIR$/examples/{0}/{1}/src/{2}".format(dir_2, example, file))
+ path.appendChild(path_txt)
+ grp.appendChild(path)
+ files.appendChild(grp)
+ cfg_str = conf.toprettyxml()
+ cfg_str = '\n'.join([s for s in cfg_str.splitlines() if s.strip()])
+ #print(cfg_str)
+ with open("../examples/{0}/{1}/iar_{1}.ipcf".format(dir_2, example), 'w') as f:
+ f.write(cfg_str)
+
+def ListPath(path, blacklist=[]):
+ # Get all .c files
+ files = glob.glob(f'../{path}/**/*.c', recursive=True)
+ # Filter
+ files = [x for x in files if all(y not in x for y in blacklist)]
+ # Get common dir list
+ dirs = []
+ for file in files:
+ dir = os.path.dirname(file)
+ if dir not in dirs:
+ dirs.append(dir)
+ # Print .c grouped by dir
+ for dir in dirs:
+ print('<group name="' + dir.replace('../', '').replace('\\','/') + '">')
+ for file in files:
+ if os.path.dirname(file) == dir:
+ print(' <path>$TUSB_DIR$/' + file.replace('../','').replace('\\','/')+'</path>')
+ print('</group>')
+
+def List():
+ ListPath('src', [ 'template.c', 'dcd_synopsys.c', 'dcd_esp32sx.c' ])
+ ListPath('lib/SEGGER_RTT')
+
+if __name__ == "__main__":
+ if (len(sys.argv) > 1):
+ if (sys.argv[1] == 'l'):
+ List()
+ else:
+ Main()
diff --git a/tools/iar_template.ipcf b/tools/iar_template.ipcf
index d243aab0a..c3683c3d7 100644
--- a/tools/iar_template.ipcf
+++ b/tools/iar_template.ipcf
@@ -4,142 +4,176 @@
<includePath>
<path>$TUSB_DIR$/src</path>
<path>$TUSB_DIR$/lib/SEGGER_RTT/RTT</path>
+ <path>$TUSB_DIR$/lib/SEGGER_RTT/Config</path>
<path>$PROJ_DIR$</path>
</includePath>
<files>
- <group name="src/device">
- <path>$TUSB_DIR$/src/device/usbd.c</path>
- <path>$TUSB_DIR$/src/device/usbd_control.c</path>
- </group>
- <group name="src/common">
- <path>$TUSB_DIR$/src/common/tusb_fifo.c</path>
- </group>
- <group name="src/class/audio">
- <path>$TUSB_DIR$/src/class/audio/audio_device.c</path>
- </group>
- <group name="src/class/bth">
- <path>$TUSB_DIR$/src/class/bth/bth_device.c</path>
- </group>
- <group name="src/class/cdc">
- <path>$TUSB_DIR$/src/class/cdc/cdc_device.c</path>
- <path>$TUSB_DIR$/src/class/cdc/cdc_host.c</path>
- <path>$TUSB_DIR$/src/class/cdc/cdc_rndis_host.c</path>
- </group>
- <group name="src/class/dfu">
- <path>$TUSB_DIR$/src/class/dfu/dfu_device.c</path>
- <path>$TUSB_DIR$/src/class/dfu/dfu_rt_device.c</path>
- </group>
- <group name="src/class/hid">
- <path>$TUSB_DIR$/src/class/hid/hid_device.c</path>
- <path>$TUSB_DIR$/src/class/hid/hid_host.c</path>
- </group>
- <group name="src/class/midi">
- <path>$TUSB_DIR$/src/class/midi/midi_device.c</path>
- </group>
- <group name="src/class/msc">
- <path>$TUSB_DIR$/src/class/msc/msc_device.c</path>
- <path>$TUSB_DIR$/src/class/msc/msc_host.c</path>
- </group>
- <group name="src/class/net">
- <path>$TUSB_DIR$/src/class/net/ecm_rndis_device.c</path>
- <path>$TUSB_DIR$/src/class/net/ncm_device.c</path>
- </group>
- <group name="src/class/usbtmc">
- <path>$TUSB_DIR$/src/class/usbtmc/usbtmc_device.c</path>
- </group>
- <group name="src/class/vendor">
- <path>$TUSB_DIR$/src/class/vendor/vendor_device.c</path>
- <path>$TUSB_DIR$/src/class/vendor/vendor_host.c</path>
- </group>
<group name="src">
<path>$TUSB_DIR$/src/tusb.c</path>
</group>
- <group name="src/host">
- <path>$TUSB_DIR$/src/host/hub.c</path>
- <path>$TUSB_DIR$/src/host/usbh.c</path>
- <path>$TUSB_DIR$/src/host/usbh_control.c</path>
- </group>
- <group name="src/portable/synopsys/dwc2">
- <path>$TUSB_DIR$/src/portable/synopsys/dwc2/dcd_dwc2.c</path>
- </group>
- <group name="src/portable/dialog/da146xx">
- <path>$TUSB_DIR$/src/portable/dialog/da146xx/dcd_da146xx.c</path>
- </group>
- <group name="src/portable/ehci">
- <path>$TUSB_DIR$/src/portable/ehci/ehci.c</path>
- </group>
- <group name="src/portable/espressif/esp32sx">
- <path>$TUSB_DIR$/src/portable/espressif/esp32sx/dcd_esp32sx.c</path>
- </group>
- <group name="src/portable/mentor/musb">
- <path>$TUSB_DIR$/src/portable/mentor/musb/dcd_musb.c</path>
- </group>
- <group name="src/portable/microchip/samd">
- <path>$TUSB_DIR$/src/portable/microchip/samd/dcd_samd.c</path>
- </group>
- <group name="src/portable/microchip/samg">
- <path>$TUSB_DIR$/src/portable/microchip/samg/dcd_samg.c</path>
- </group>
- <group name="src/portable/microchip/samx7x">
- <path>$TUSB_DIR$/src/portable/microchip/samx7x/dcd_samx7x.c</path>
- </group>
- <group name="src/portable/mindmotion/mm32">
- <path>$TUSB_DIR$/src/portable/mindmotion/mm32/dcd_mm32f327x_otg.c</path>
- </group>
- <group name="src/portable/nordic/nrf5x">
- <path>$TUSB_DIR$/src/portable/nordic/nrf5x/dcd_nrf5x.c</path>
- </group>
- <group name="src/portable/nuvoton/nuc120">
- <path>$TUSB_DIR$/src/portable/nuvoton/nuc120/dcd_nuc120.c</path>
- </group>
- <group name="src/portable/nuvoton/nuc121">
- <path>$TUSB_DIR$/src/portable/nuvoton/nuc121/dcd_nuc121.c</path>
- </group>
- <group name="src/portable/nuvoton/nuc505">
- <path>$TUSB_DIR$/src/portable/nuvoton/nuc505/dcd_nuc505.c</path>
- </group>
- <group name="src/portable/nxp/khci">
- <path>$TUSB_DIR$/src/portable/nxp/khci/dcd_khci.c</path>
- </group>
- <group name="src/portable/nxp/lpc17_40">
- <path>$TUSB_DIR$/src/portable/nxp/lpc17_40/dcd_lpc17_40.c</path>
- <path>$TUSB_DIR$/src/portable/nxp/lpc17_40/hcd_lpc17_40.c</path>
- </group>
- <group name="src/portable/nxp/lpc_ip3511">
- <path>$TUSB_DIR$/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c</path>
- </group>
- <group name="src/portable/nxp/transdimension">
- <path>$TUSB_DIR$/src/portable/nxp/transdimension/dcd_transdimension.c</path>
- <path>$TUSB_DIR$/src/portable/nxp/transdimension/hcd_transdimension.c</path>
- </group>
- <group name="src/portable/ohci">
- <path>$TUSB_DIR$/src/portable/ohci/ohci.c</path>
- </group>
- <group name="src/portable/raspberrypi/rp2040">
- <path>$TUSB_DIR$/src/portable/raspberrypi/rp2040/dcd_rp2040.c</path>
- <path>$TUSB_DIR$/src/portable/raspberrypi/rp2040/hcd_rp2040.c</path>
- <path>$TUSB_DIR$/src/portable/raspberrypi/rp2040/rp2040_usb.c</path>
- </group>
- <group name="src/portable/renesas/usba">
- <path>$TUSB_DIR$/src/portable/renesas/usba/dcd_usba.c</path>
- </group>
- <group name="src/portable/sony/cxd56">
- <path>$TUSB_DIR$/src/portable/sony/cxd56/dcd_cxd56.c</path>
- </group>
- <group name="src/portable/st/stm32_fsdev">
- <path>$TUSB_DIR$/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c</path>
- </group>
- <group name="src/portable/ti/msp430x5xx">
- <path>$TUSB_DIR$/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c</path>
- </group>
- <group name="src/portable/valentyusb/eptri">
- <path>$TUSB_DIR$/src/portable/valentyusb/eptri/dcd_eptri.c</path>
- </group>
- <group name="lib/SEGGER_RTT">
- <path>$TUSB_DIR$/lib/SEGGER_RTT/RTT/SEGGER_RTT.c</path>
+ <group name="src/class/audio">
+ <path>$TUSB_DIR$/src/class/audio/audio_device.c</path>
+ </group>
+ <group name="src/class/bth">
+ <path>$TUSB_DIR$/src/class/bth/bth_device.c</path>
+ </group>
+ <group name="src/class/cdc">
+ <path>$TUSB_DIR$/src/class/cdc/cdc_device.c</path>
+ <path>$TUSB_DIR$/src/class/cdc/cdc_host.c</path>
+ <path>$TUSB_DIR$/src/class/cdc/cdc_rndis_host.c</path>
+ </group>
+ <group name="src/class/dfu">
+ <path>$TUSB_DIR$/src/class/dfu/dfu_device.c</path>
+ <path>$TUSB_DIR$/src/class/dfu/dfu_rt_device.c</path>
+ </group>
+ <group name="src/class/hid">
+ <path>$TUSB_DIR$/src/class/hid/hid_device.c</path>
+ <path>$TUSB_DIR$/src/class/hid/hid_host.c</path>
+ </group>
+ <group name="src/class/midi">
+ <path>$TUSB_DIR$/src/class/midi/midi_device.c</path>
+ </group>
+ <group name="src/class/msc">
+ <path>$TUSB_DIR$/src/class/msc/msc_device.c</path>
+ <path>$TUSB_DIR$/src/class/msc/msc_host.c</path>
+ </group>
+ <group name="src/class/net">
+ <path>$TUSB_DIR$/src/class/net/ecm_rndis_device.c</path>
+ <path>$TUSB_DIR$/src/class/net/ncm_device.c</path>
+ </group>
+ <group name="src/class/usbtmc">
+ <path>$TUSB_DIR$/src/class/usbtmc/usbtmc_device.c</path>
+ </group>
+ <group name="src/class/vendor">
+ <path>$TUSB_DIR$/src/class/vendor/vendor_device.c</path>
+ <path>$TUSB_DIR$/src/class/vendor/vendor_host.c</path>
+ </group>
+ <group name="src/class/video">
+ <path>$TUSB_DIR$/src/class/video/video_device.c</path>
+ </group>
+ <group name="src/common">
+ <path>$TUSB_DIR$/src/common/tusb_fifo.c</path>
+ </group>
+ <group name="src/device">
+ <path>$TUSB_DIR$/src/device/usbd.c</path>
+ <path>$TUSB_DIR$/src/device/usbd_control.c</path>
+ </group>
+ <group name="src/host">
+ <path>$TUSB_DIR$/src/host/hub.c</path>
+ <path>$TUSB_DIR$/src/host/usbh.c</path>
+ </group>
+ <group name="src/portable/analog/max3421">
+ <path>$TUSB_DIR$/src/portable/analog/max3421/hcd_max3421.c</path>
+ </group>
+ <group name="src/portable/bridgetek/ft9xx">
+ <path>$TUSB_DIR$/src/portable/bridgetek/ft9xx/dcd_ft9xx.c</path>
+ </group>
+ <group name="src/portable/chipidea/ci_fs">
+ <path>$TUSB_DIR$/src/portable/chipidea/ci_fs/dcd_ci_fs.c</path>
+ </group>
+ <group name="src/portable/chipidea/ci_hs">
+ <path>$TUSB_DIR$/src/portable/chipidea/ci_hs/dcd_ci_hs.c</path>
+ <path>$TUSB_DIR$/src/portable/chipidea/ci_hs/hcd_ci_hs.c</path>
+ </group>
+ <group name="src/portable/dialog/da146xx">
+ <path>$TUSB_DIR$/src/portable/dialog/da146xx/dcd_da146xx.c</path>
+ </group>
+ <group name="src/portable/ehci">
+ <path>$TUSB_DIR$/src/portable/ehci/ehci.c</path>
+ </group>
+ <group name="src/portable/mentor/musb">
+ <path>$TUSB_DIR$/src/portable/mentor/musb/dcd_musb.c</path>
+ <path>$TUSB_DIR$/src/portable/mentor/musb/hcd_musb.c</path>
+ </group>
+ <group name="src/portable/microchip/pic">
+ <path>$TUSB_DIR$/src/portable/microchip/pic/dcd_pic.c</path>
+ </group>
+ <group name="src/portable/microchip/pic32mz">
+ <path>$TUSB_DIR$/src/portable/microchip/pic32mz/dcd_pic32mz.c</path>
+ </group>
+ <group name="src/portable/microchip/samd">
+ <path>$TUSB_DIR$/src/portable/microchip/samd/dcd_samd.c</path>
+ </group>
+ <group name="src/portable/microchip/samg">
+ <path>$TUSB_DIR$/src/portable/microchip/samg/dcd_samg.c</path>
+ </group>
+ <group name="src/portable/microchip/samx7x">
+ <path>$TUSB_DIR$/src/portable/microchip/samx7x/dcd_samx7x.c</path>
+ </group>
+ <group name="src/portable/mindmotion/mm32">
+ <path>$TUSB_DIR$/src/portable/mindmotion/mm32/dcd_mm32f327x_otg.c</path>
+ </group>
+ <group name="src/portable/nordic/nrf5x">
+ <path>$TUSB_DIR$/src/portable/nordic/nrf5x/dcd_nrf5x.c</path>
+ </group>
+ <group name="src/portable/nuvoton/nuc120">
+ <path>$TUSB_DIR$/src/portable/nuvoton/nuc120/dcd_nuc120.c</path>
+ </group>
+ <group name="src/portable/nuvoton/nuc121">
+ <path>$TUSB_DIR$/src/portable/nuvoton/nuc121/dcd_nuc121.c</path>
+ </group>
+ <group name="src/portable/nuvoton/nuc505">
+ <path>$TUSB_DIR$/src/portable/nuvoton/nuc505/dcd_nuc505.c</path>
+ </group>
+ <group name="src/portable/nxp/khci">
+ <path>$TUSB_DIR$/src/portable/nxp/khci/dcd_khci.c</path>
+ <path>$TUSB_DIR$/src/portable/nxp/khci/hcd_khci.c</path>
+ </group>
+ <group name="src/portable/nxp/lpc17_40">
+ <path>$TUSB_DIR$/src/portable/nxp/lpc17_40/dcd_lpc17_40.c</path>
+ <path>$TUSB_DIR$/src/portable/nxp/lpc17_40/hcd_lpc17_40.c</path>
+ </group>
+ <group name="src/portable/nxp/lpc_ip3511">
+ <path>$TUSB_DIR$/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c</path>
+ </group>
+ <group name="src/portable/ohci">
+ <path>$TUSB_DIR$/src/portable/ohci/ohci.c</path>
+ </group>
+ <group name="src/portable/raspberrypi/pio_usb">
+ <path>$TUSB_DIR$/src/portable/raspberrypi/pio_usb/dcd_pio_usb.c</path>
+ <path>$TUSB_DIR$/src/portable/raspberrypi/pio_usb/hcd_pio_usb.c</path>
+ </group>
+ <group name="src/portable/raspberrypi/rp2040">
+ <path>$TUSB_DIR$/src/portable/raspberrypi/rp2040/dcd_rp2040.c</path>
+ <path>$TUSB_DIR$/src/portable/raspberrypi/rp2040/hcd_rp2040.c</path>
+ <path>$TUSB_DIR$/src/portable/raspberrypi/rp2040/rp2040_usb.c</path>
+ </group>
+ <group name="src/portable/renesas/rusb2">
+ <path>$TUSB_DIR$/src/portable/renesas/rusb2/dcd_rusb2.c</path>
+ <path>$TUSB_DIR$/src/portable/renesas/rusb2/hcd_rusb2.c</path>
+ <path>$TUSB_DIR$/src/portable/renesas/rusb2/rusb2_common.c</path>
+ </group>
+ <group name="src/portable/sony/cxd56">
+ <path>$TUSB_DIR$/src/portable/sony/cxd56/dcd_cxd56.c</path>
+ </group>
+ <group name="src/portable/st/stm32_fsdev">
+ <path>$TUSB_DIR$/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c</path>
+ </group>
+ <group name="src/portable/st/typec">
+ <path>$TUSB_DIR$/src/portable/st/typec/typec_stm32.c</path>
+ </group>
+ <group name="src/portable/sunxi">
+ <path>$TUSB_DIR$/src/portable/sunxi/dcd_sunxi_musb.c</path>
+ </group>
+ <group name="src/portable/synopsys/dwc2">
+ <path>$TUSB_DIR$/src/portable/synopsys/dwc2/dcd_dwc2.c</path>
+ </group>
+ <group name="src/portable/ti/msp430x5xx">
+ <path>$TUSB_DIR$/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c</path>
+ </group>
+ <group name="src/portable/valentyusb/eptri">
+ <path>$TUSB_DIR$/src/portable/valentyusb/eptri/dcd_eptri.c</path>
+ </group>
+ <group name="src/portable/wch">
+ <path>$TUSB_DIR$/src/portable/wch/dcd_ch32_usbhs.c</path>
+ </group>
+ <group name="src/typec">
+ <path>$TUSB_DIR$/src/typec/usbc.c</path>
+ </group>
+ <group name="lib/SEGGER_RTT/RTT">
+ <path>$TUSB_DIR$/lib/SEGGER_RTT/RTT/SEGGER_RTT.c</path>
<path>$TUSB_DIR$/lib/SEGGER_RTT/RTT/SEGGER_RTT_printf.c</path>
- <path>$TUSB_DIR$/lib/SEGGER_RTT/Syscalls/SEGGER_RTT_Syscalls_IAR.c</path>
- </group>
+ </group>
</files>
</iarProjectConnection>
diff --git a/tools/make_release.py b/tools/make_release.py
index 7481e8864..256ca8f21 100644
--- a/tools/make_release.py
+++ b/tools/make_release.py
@@ -1,6 +1,6 @@
import re
-version = '0.15.0'
+version = '0.16.0'
print('version {}'.format(version))
ver_id = version.split('.')
@@ -9,13 +9,11 @@ ver_id = version.split('.')
# src/tusb_option.h
###################
f_option_h = 'src/tusb_option.h'
-
with open(f_option_h) as f:
fdata = f.read()
-
-fdata = re.sub(r'(#define TUSB_VERSION_MAJOR *) \d+', r"\1 {}".format(ver_id[0]), fdata)
-fdata = re.sub(r'(#define TUSB_VERSION_MINOR *) \d+', r"\1 {}".format(ver_id[1]), fdata)
-fdata = re.sub(r'(#define TUSB_VERSION_REVISION *) \d+', r"\1 {}".format(ver_id[2]), fdata)
+ fdata = re.sub(r'(#define TUSB_VERSION_MAJOR *) \d+', r"\1 {}".format(ver_id[0]), fdata)
+ fdata = re.sub(r'(#define TUSB_VERSION_MINOR *) \d+', r"\1 {}".format(ver_id[1]), fdata)
+ fdata = re.sub(r'(#define TUSB_VERSION_REVISION *) \d+', r"\1 {}".format(ver_id[2]), fdata)
# Write the file out again
with open(f_option_h, 'w') as f:
@@ -34,6 +32,17 @@ if fdata.find(version) < 0:
f.write(fdata)
###################
+# library.json
+###################
+f_library_json = 'library.json'
+with open(f_library_json) as f:
+ fdata = f.read()
+ fdata = re.sub(r'( {4}"version":) "\d+\.\d+\.\d+"', rf'\1 "{version}"', fdata)
+
+with open(f_library_json, 'w') as f:
+ f.write(fdata)
+
+###################
# docs/info/changelog.rst
###################