diff options
| author | hathach <[email protected]> | 2026-06-11 17:20:15 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-06-11 17:20:15 +0700 |
| commit | 5145b67f7946763ca04954f5494bfa88eec2acad (patch) | |
| tree | 9130540204c2404d532613adab01e88f4e918daa /tools | |
| parent | f52d9c7b27dc0234fb4738762a8a6da01817e2bf (diff) | |
| parent | 0244a4f12e019406a4b73c75cd96f8efa096bbdc (diff) | |
Merge remote-tracking branch 'origin/master' into stm32c5
# Conflicts:
# README.rst
Diffstat (limited to 'tools')
| -rwxr-xr-x | tools/build.py | 30 | ||||
| -rw-r--r-- | tools/codespell/ignore-words.txt | 1 | ||||
| -rwxr-xr-x | tools/gen_presets.py | 4 | ||||
| -rwxr-xr-x | tools/get_deps.py | 2 | ||||
| -rw-r--r-- | tools/metrics.py | 6 |
5 files changed, 27 insertions, 16 deletions
diff --git a/tools/build.py b/tools/build.py index 3c5c3c077..86bc30d28 100755 --- a/tools/build.py +++ b/tools/build.py @@ -105,16 +105,14 @@ def print_build_result(board, build_target, status, duration): # ----------------------------- # CMake # ----------------------------- -def cmake_board(board, build_args, build_flags_on, build_targets): +def cmake_board(board, build_args, build_name, build_cflags, build_targets): ret = [0, 0, 0] start_time = time.monotonic() - build_dir = f'cmake-build/cmake-build-{board}' + build_dir = f'cmake-build/cmake-build-{build_name or board}' build_flags = [] - if len(build_flags_on) > 0: - cli_flags = ' '.join(f'-D{flag}=1' for flag in build_flags_on) - build_flags.append(f'-DCFLAGS_CLI={cli_flags}') - build_dir += '-f1_' + '_'.join(build_flags_on) + if build_cflags: + build_flags.append('-DCFLAGS_CLI=' + ' '.join(build_cflags)) family = find_family(board) if family == 'espressif': @@ -194,13 +192,13 @@ def make_board(board, build_args, build_targets): # ----------------------------- # Build Family # ----------------------------- -def build_boards_list(boards, build_defines, build_system, build_flags_on, build_targets): +def build_boards_list(boards, build_defines, build_system, build_name, build_cflags, build_targets): ret = [0, 0, 0] for b in boards: r = [0, 0, 0] if build_system == 'cmake': build_args = [f'-D{d}' for d in build_defines] - r = cmake_board(b, build_args, build_flags_on, build_targets) + r = cmake_board(b, build_args, build_name, build_cflags, build_targets) elif build_system == 'make': build_args = ' '.join(f'{d}' for d in build_defines) r = make_board(b, build_args, build_targets) @@ -261,7 +259,10 @@ def main(): parser.add_argument('-t', '--toolchain', default='gcc', help='Toolchain to use, default is gcc') parser.add_argument('-s', '--build-system', default='cmake', help='Build system to use, default is cmake') parser.add_argument('-D', '--define-symbol', action='append', default=[], help='Define to pass to build system') - parser.add_argument('-f1', '--build-flags-on', action='append', default=[], help='Build flag to pass to build system') + parser.add_argument('--build-name', default=None, + help='Override build dir name (cmake-build-<name>); default is the board name. Used for HIL variants.') + parser.add_argument('--cflag', action='append', default=[], + help='Raw compiler flag appended to CFLAGS_CLI, e.g. --cflag=-DCFG_TUD_DWC2_DMA_ENABLE=1 (repeatable)') parser.add_argument('--one-random', action='store_true', default=False, help='Build only one random board of each specified family') parser.add_argument('--one-first', action='store_true', default=False, @@ -277,7 +278,8 @@ def main(): toolchain = args.toolchain build_system = args.build_system build_defines = args.define_symbol - build_flags_on = args.build_flags_on + build_name = args.build_name + build_cflags = args.cflag one_random = args.one_random one_first = args.one_first build_targets = args.target if args.target else ['all'] @@ -290,6 +292,12 @@ def main(): print("Please specify families or board to build") return 1 + # --build-name renames the single shared build dir, so building more than one + # board with it would clobber/mix artifacts + if build_name and (len(families) > 0 or len(boards) != 1): + print("--build-name requires exactly one board (-b) and no families") + return 1 + print(build_separator) print(build_format.format('Board', 'Target', '\033[39mResult\033[0m', 'Time')) total_time = time.monotonic() @@ -310,7 +318,7 @@ def main(): all_boards.extend(get_family_boards(f, one_random, one_first)) # build all boards - result = build_boards_list(all_boards, build_defines, build_system, build_flags_on, build_targets) + result = build_boards_list(all_boards, build_defines, build_system, build_name, build_cflags, build_targets) total_time = time.monotonic() - total_time print(build_separator) diff --git a/tools/codespell/ignore-words.txt b/tools/codespell/ignore-words.txt index 7ce778fab..0b1aa284a 100644 --- a/tools/codespell/ignore-words.txt +++ b/tools/codespell/ignore-words.txt @@ -6,6 +6,7 @@ fro hsi inout mot +ore pris ptd ser diff --git a/tools/gen_presets.py b/tools/gen_presets.py index 94a9361db..6f32976a7 100755 --- a/tools/gen_presets.py +++ b/tools/gen_presets.py @@ -32,7 +32,7 @@ def main(): "hidden": True, "description": r"Configure preset for the ${presetName} board", "generator": "Ninja Multi-Config", - "binaryDir": r"${sourceDir}/build/${presetName}", + "binaryDir": r"${sourceDir}/cmake-build-${presetName}", "cacheVariables": { "CMAKE_DEFAULT_BUILD_TYPE": "RelWithDebInfo", "BOARD": r"${presetName}" @@ -41,7 +41,7 @@ def main(): "hidden": True, "description": r"Configure preset for the ${presetName} board", "generator": "Ninja", - "binaryDir": r"${sourceDir}/build/${presetName}", + "binaryDir": r"${sourceDir}/cmake-build-${presetName}", "cacheVariables": { "BOARD": r"${presetName}" }}] diff --git a/tools/get_deps.py b/tools/get_deps.py index 50497fc71..60be5d89e 100755 --- a/tools/get_deps.py +++ b/tools/get_deps.py @@ -372,6 +372,8 @@ def main(): parser.add_argument('-b', '--board', action='append', default=[], help='Boards to fetch') parser.add_argument('-D', '--define', action='append', default=[], help='Have no effect') parser.add_argument('-f1', '--build-flags-on', action='append', default=[], help='Have no effect') + parser.add_argument('--build-name', default=None, help='Have no effect') + parser.add_argument('--cflag', action='append', default=[], help='Have no effect') args = parser.parse_args() families = args.families diff --git a/tools/metrics.py b/tools/metrics.py index f624f382f..b7aa056e4 100644 --- a/tools/metrics.py +++ b/tools/metrics.py @@ -384,7 +384,7 @@ def render_combine_table(json_data, sort_order='name+'): def write_combine_markdown(json_data, path, sort_order='name+', title="TinyUSB Average Code Size Metrics"): """Write averaged size data to a markdown file.""" - md_lines = [f"# {title}", ""] + md_lines = [f"## {title}", ""] md_lines.extend(render_combine_table(json_data, sort_order)) md_lines.append("") @@ -400,7 +400,7 @@ def write_combine_markdown(json_data, path, sort_order='name+', title="TinyUSB A def write_compare_markdown(comparison, path, sort_order='size'): """Write comparison data to markdown file.""" md_lines = [ - "# Size Difference Report", + "## Size Difference Report", "", "Because TinyUSB code size varies by port and configuration, the metrics below represent the averaged totals across all example builds.", "", @@ -415,7 +415,7 @@ def write_compare_markdown(comparison, path, sort_order='size'): md_lines.append(f"<details><summary>{title}</summary>") md_lines.append("") else: - md_lines.append(f"## {title}") + md_lines.append(f"### {title}") md_lines.extend(render_compare_table(_build_rows(rows, sort_order), include_sum=True)) md_lines.append("") |
