|
| 1 | +diff --git a/tools/check_board_header.py b/tools/check_board_header.py |
| 2 | +index 3849e14..c259c81 100755 |
| 3 | +--- a/tools/check_board_header.py |
| 4 | ++++ b/tools/check_board_header.py |
| 5 | +@@ -29,6 +29,11 @@ chip_interfaces = { |
| 6 | + 'RP2350B': "src/rp2350/rp2350b_interface_pins.json", |
| 7 | + } |
| 8 | + |
| 9 | ++compulsory_cmake_settings = set(['PICO_PLATFORM']) |
| 10 | ++compulsory_cmake_default_settings = set(['PICO_FLASH_SIZE_BYTES']) |
| 11 | ++matching_cmake_default_settings = set(['PICO_FLASH_SIZE_BYTES', 'PICO_RP2350_A2_SUPPORTED']) |
| 12 | ++compulsory_defines = set(['PICO_FLASH_SIZE_BYTES']) |
| 13 | ++ |
| 14 | + DefineType = namedtuple("DefineType", ["name", "value", "resolved_value", "lineno"]) |
| 15 | + |
| 16 | + def list_to_string_with(lst, joiner): |
| 17 | +@@ -230,7 +235,13 @@ with open(board_header) as header_fh: |
| 18 | + if name in cmake_settings: |
| 19 | + raise Exception("{}:{} Multiple values for pico_cmake_set {} ({} and {})".format(board_header, lineno, name, cmake_settings[name].value, value)) |
| 20 | + else: |
| 21 | +- cmake_settings[name] = DefineType(name, value, None, lineno) |
| 22 | ++ if value: |
| 23 | ++ try: |
| 24 | ++ # most cmake settings are integer values |
| 25 | ++ value = int(value, 0) |
| 26 | ++ except ValueError: |
| 27 | ++ pass |
| 28 | ++ cmake_settings[name] = DefineType(name, value, None, lineno) |
| 29 | + continue |
| 30 | + |
| 31 | + # look for "// pico_cmake_set_default BLAH_BLAH=42" |
| 32 | +@@ -246,7 +257,13 @@ with open(board_header) as header_fh: |
| 33 | + if name in cmake_default_settings: |
| 34 | + raise Exception("{}:{} Multiple values for pico_cmake_set_default {} ({} and {})".format(board_header, lineno, name, cmake_default_settings[name].value, value)) |
| 35 | + else: |
| 36 | +- cmake_default_settings[name] = DefineType(name, value, None, lineno) |
| 37 | ++ if value: |
| 38 | ++ try: |
| 39 | ++ # most cmake settings are integer values |
| 40 | ++ value = int(value, 0) |
| 41 | ++ except ValueError: |
| 42 | ++ pass |
| 43 | ++ cmake_default_settings[name] = DefineType(name, value, None, lineno) |
| 44 | + continue |
| 45 | + |
| 46 | + # look for "#else" |
| 47 | +@@ -362,8 +379,9 @@ if board_header_basename == "none.h": |
| 48 | + chip = 'RP2040' |
| 49 | + other_chip = 'RP2350' |
| 50 | + else: |
| 51 | +- if 'PICO_PLATFORM' not in cmake_settings: |
| 52 | +- raise Exception("{} is missing a pico_cmake_set {} comment".format(board_header, 'PICO_PLATFORM')) |
| 53 | ++ for setting in compulsory_cmake_settings: |
| 54 | ++ if setting not in cmake_settings: |
| 55 | ++ raise Exception("{} is missing a pico_cmake_set {} comment".format(board_header, setting)) |
| 56 | + if cmake_settings['PICO_PLATFORM'].value == "rp2040": |
| 57 | + chip = 'RP2040' |
| 58 | + other_chip = 'RP2350' |
| 59 | +@@ -375,19 +393,25 @@ else: |
| 60 | + chip = 'RP2350B' |
| 61 | + if not board_header.endswith("amethyst_fpga.h"): |
| 62 | + if 'PICO_RP2350_A2_SUPPORTED' not in cmake_default_settings: |
| 63 | +- raise Exception("{} uses chip {} but is missing a pico_cmake_set_default {}".format(board_header, chip, 'PICO_RP2350_A2_SUPPORTED')) |
| 64 | ++ raise Exception("{} uses chip {} but is missing a pico_cmake_set_default {} comment".format(board_header, chip, 'PICO_RP2350_A2_SUPPORTED')) |
| 65 | + if 'PICO_RP2350_A2_SUPPORTED' not in defines: |
| 66 | + raise Exception("{} uses chip {} but is missing a #define {}".format(board_header, chip, 'PICO_RP2350_A2_SUPPORTED')) |
| 67 | +- if int(cmake_default_settings['PICO_RP2350_A2_SUPPORTED'].value) != defines['PICO_RP2350_A2_SUPPORTED'].resolved_value: |
| 68 | +- raise Exception("{} has mismatched pico_cmake_set_default and #define values for {}".format(board_header, 'PICO_RP2350_A2_SUPPORTED')) |
| 69 | + if defines['PICO_RP2350_A2_SUPPORTED'].resolved_value != 1: |
| 70 | + raise Exception("{} sets #define {} {} (should be 1)".format(board_header, chip, 'PICO_RP2350_A2_SUPPORTED', defines['PICO_RP2350_A2_SUPPORTED'].resolved_value)) |
| 71 | +- if 'PICO_FLASH_SIZE_BYTES' not in cmake_default_settings: |
| 72 | +- raise Exception("{} is missing a pico_cmake_set_default {} comment".format(board_header, 'PICO_FLASH_SIZE_BYTES')) |
| 73 | +- if 'PICO_FLASH_SIZE_BYTES' not in defines: |
| 74 | +- raise Exception("{} is missing a #define {}".format(board_header, 'PICO_FLASH_SIZE_BYTES')) |
| 75 | +- if cmake_default_settings['PICO_FLASH_SIZE_BYTES'].value != defines['PICO_FLASH_SIZE_BYTES'].resolved_value: |
| 76 | +- raise Exception("{} has mismatched pico_cmake_set_default and #define values for {}".format(board_header, 'PICO_FLASH_SIZE_BYTES')) |
| 77 | ++ for setting in compulsory_cmake_default_settings: |
| 78 | ++ if setting not in cmake_default_settings: |
| 79 | ++ raise Exception("{} is missing a pico_cmake_set_default {} comment".format(board_header, setting)) |
| 80 | ++ for setting in matching_cmake_default_settings: |
| 81 | ++ if setting in cmake_default_settings and setting not in defines: |
| 82 | ++ raise Exception("{} has pico_cmake_set_default {} but is missing a matching #define".format(board_header, setting)) |
| 83 | ++ elif setting in defines and setting not in cmake_default_settings: |
| 84 | ++ raise Exception("{} has #define {} but is missing a matching pico_cmake_set_default comment".format(board_header, setting)) |
| 85 | ++ elif setting in defines and setting in cmake_default_settings: |
| 86 | ++ if cmake_default_settings[setting].value != defines[setting].resolved_value: |
| 87 | ++ raise Exception("{} has mismatched pico_cmake_set_default and #define values for {}".format(board_header, setting)) |
| 88 | ++ for setting in compulsory_defines: |
| 89 | ++ if setting not in defines: |
| 90 | ++ raise Exception("{} is missing a #define {}".format(board_header, setting)) |
| 91 | + |
| 92 | + if chip is None: |
| 93 | + raise Exception("Couldn't determine chip for {}".format(board_header)) |
0 commit comments