mirror of
https://github.com/hathach/tinyusb.git
synced 2025-05-08 23:01:36 +08:00
106 lines
2.9 KiB
Python
Executable File
106 lines
2.9 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
import os
|
|
import json
|
|
from pathlib import Path
|
|
|
|
def main():
|
|
board_list = []
|
|
|
|
# Find all board.cmake files
|
|
for root, dirs, files in os.walk("hw/bsp"):
|
|
for file in files:
|
|
if file == "board.cmake":
|
|
board_list.append(os.path.basename(root))
|
|
|
|
print('Generating presets for the following boards:')
|
|
print(board_list)
|
|
|
|
# Generate the presets
|
|
presets = {}
|
|
presets['version'] = 6
|
|
|
|
# Configure presets
|
|
presets['configurePresets'] = [
|
|
{"name": "default",
|
|
"hidden": True,
|
|
"description": r"Configure preset for the ${presetName} board",
|
|
"generator": "Ninja Multi-Config",
|
|
"binaryDir": r"${sourceDir}/build/${presetName}",
|
|
"cacheVariables": {
|
|
"CMAKE_DEFAULT_BUILD_TYPE": "RelWithDebInfo",
|
|
"BOARD": r"${presetName}"
|
|
}}]
|
|
|
|
presets['configurePresets'].extend(
|
|
sorted(
|
|
[
|
|
{
|
|
'name': board,
|
|
'inherits': 'default'
|
|
}
|
|
for board in board_list
|
|
], key=lambda x: x['name']
|
|
)
|
|
)
|
|
|
|
# Build presets
|
|
# no inheritance since 'name' doesn't support macro expansion
|
|
presets['buildPresets'] = sorted(
|
|
[
|
|
{
|
|
'name': board,
|
|
'description': "Build preset for the " + board + " board",
|
|
'configurePreset': board
|
|
}
|
|
for board in board_list
|
|
], key=lambda x: x['name']
|
|
)
|
|
|
|
# Workflow presets
|
|
presets['workflowPresets'] = sorted(
|
|
[
|
|
{
|
|
"name": board,
|
|
"steps": [
|
|
{
|
|
"type": "configure",
|
|
"name": board
|
|
},
|
|
{
|
|
"type": "build",
|
|
"name": board
|
|
}
|
|
]
|
|
}
|
|
for board in board_list
|
|
], key=lambda x: x['name']
|
|
)
|
|
|
|
path_boardpresets = "hw/bsp/BoardPresets.json"
|
|
with open(path_boardpresets, "w") as f:
|
|
f.write('{}\n'.format(json.dumps(presets, indent=2)))
|
|
|
|
# Generate presets for examples
|
|
presets = {
|
|
"version": 6,
|
|
"include": [
|
|
]
|
|
}
|
|
|
|
example_list = []
|
|
for root, dirs, files in os.walk("examples"):
|
|
for file in files:
|
|
# Filter out ESP-IDF CMakeLists.txt in src folder
|
|
if file == "CMakeLists.txt" and os.path.basename(root) != 'src':
|
|
presets['include'] = [os.path.relpath(path_boardpresets, root).replace(os.sep, '/')]
|
|
with open(os.path.join(root, 'CMakePresets.json'), 'w') as f:
|
|
f.write('{}\n'.format(json.dumps(presets, indent=2)))
|
|
example_list.append(os.path.basename(root))
|
|
|
|
print('Generating presets for the following examples:')
|
|
print(example_list)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|