summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2020-08-30 14:39:03 -0400
committerDan Halbert <halbert@halwitz.org>2020-08-30 14:39:03 -0400
commit6dbd369272c4bedea4e00c1dca80d0b3ee2d6781 (patch)
tree44707cefb3dd7535492987671a75ad281d84824a /docs
parent767f3d0feb1e145efc2def5048e91d910bbe2f9a (diff)
parent0adccc50dcc9e9db9a054da563fe4f165e8d912e (diff)
merge from upstream
Diffstat (limited to 'docs')
-rw-r--r--docs/porting.rst43
-rw-r--r--docs/shared_bindings_matrix.py59
2 files changed, 63 insertions, 39 deletions
diff --git a/docs/porting.rst b/docs/porting.rst
index db4ae7626..6cd59fefb 100644
--- a/docs/porting.rst
+++ b/docs/porting.rst
@@ -51,10 +51,15 @@ as a natural "TODO" list. An example minimal build list is shown below:
.. code-block:: makefile
# These modules are implemented in ports/<port>/common-hal:
- CIRCUITPY_MICROCONTROLLER = 0 # Typically the first module to create
- CIRCUITPY_DIGITALIO = 0 # Typically the second module to create
+
+ # Typically the first module to create
+ CIRCUITPY_MICROCONTROLLER = 0
+ # Typically the second module to create
+ CIRCUITPY_DIGITALIO = 0
+ # Other modules:
CIRCUITPY_ANALOGIO = 0
CIRCUITPY_BUSIO = 0
+ CIRCUITPY_COUNTIO = 0
CIRCUITPY_NEOPIXEL_WRITE = 0
CIRCUITPY_PULSEIO = 0
CIRCUITPY_OS = 0
@@ -63,22 +68,34 @@ as a natural "TODO" list. An example minimal build list is shown below:
CIRCUITPY_AUDIOIO = 0
CIRCUITPY_ROTARYIO = 0
CIRCUITPY_RTC = 0
+ CIRCUITPY_SDCARDIO = 0
+ CIRCUITPY_FRAMEBUFFERIO = 0
CIRCUITPY_FREQUENCYIO = 0
CIRCUITPY_I2CPERIPHERAL = 0
- CIRCUITPY_DISPLAYIO = 0 # Requires SPI, PulseIO (stub ok)
+ # Requires SPI, PulseIO (stub ok):
+ CIRCUITPY_DISPLAYIO = 0
# These modules are implemented in shared-module/ - they can be included in
# any port once their prerequisites in common-hal are complete.
- CIRCUITPY_BITBANGIO = 0 # Requires DigitalIO
- CIRCUITPY_GAMEPAD = 0 # Requires DigitalIO
- CIRCUITPY_PIXELBUF = 0 # Requires neopixel_write or SPI (dotstar)
- CIRCUITPY_RANDOM = 0 # Requires OS
- CIRCUITPY_STORAGE = 0 # Requires OS, filesystem
- CIRCUITPY_TOUCHIO = 0 # Requires Microcontroller
- CIRCUITPY_USB_HID = 0 # Requires USB
- CIRCUITPY_USB_MIDI = 0 # Requires USB
- CIRCUITPY_REQUIRE_I2C_PULLUPS = 0 # Does nothing without I2C
- CIRCUITPY_ULAB = 0 # No requirements, but takes extra flash
+ # Requires DigitalIO:
+ CIRCUITPY_BITBANGIO = 0
+ # Requires DigitalIO
+ CIRCUITPY_GAMEPAD = 0
+ # Requires neopixel_write or SPI (dotstar)
+ CIRCUITPY_PIXELBUF = 0
+ # Requires OS
+ CIRCUITPY_RANDOM = 0
+ # Requires OS, filesystem
+ CIRCUITPY_STORAGE = 0
+ # Requires Microcontroller
+ CIRCUITPY_TOUCHIO = 0
+ # Requires USB
+ CIRCUITPY_USB_HID = 0
+ CIRCUITPY_USB_MIDI = 0
+ # Does nothing without I2C
+ CIRCUITPY_REQUIRE_I2C_PULLUPS = 0
+ # No requirements, but takes extra flash
+ CIRCUITPY_ULAB = 0
Step 2: Init
--------------
diff --git a/docs/shared_bindings_matrix.py b/docs/shared_bindings_matrix.py
index 7b96c14f2..e81ae188c 100644
--- a/docs/shared_bindings_matrix.py
+++ b/docs/shared_bindings_matrix.py
@@ -28,6 +28,7 @@ import re
import subprocess
import sys
+from concurrent.futures import ThreadPoolExecutor
SUPPORTED_PORTS = ['atmel-samd', 'esp32s2', 'litex', 'mimxrt10xx', 'nrf', 'stm']
@@ -42,7 +43,7 @@ def get_circuitpython_root_dir():
def get_shared_bindings():
""" Get a list of modules in shared-bindings based on folder names
"""
- shared_bindings_dir = get_circuitpython_root_dir() / "shared-bindings"
+ shared_bindings_dir = get_circuitpython_root_dir() / "circuitpython-stubs"
return [item.name for item in shared_bindings_dir.iterdir()]
@@ -131,38 +132,44 @@ def lookup_setting(settings, key, default=''):
key = value[2:-1]
return value
+def all_ports_all_boards(ports=SUPPORTED_PORTS):
+ for port in ports:
+
+ port_dir = get_circuitpython_root_dir() / "ports" / port
+ for entry in (port_dir / "boards").iterdir():
+ if not entry.is_dir():
+ continue
+ yield (port, entry)
+
def support_matrix_by_board(use_branded_name=True):
""" Compiles a list of the available core modules available for each
board.
"""
base = build_module_map()
- boards = dict()
- for port in SUPPORTED_PORTS:
-
+ def support_matrix(arg):
+ port, entry = arg
port_dir = get_circuitpython_root_dir() / "ports" / port
- for entry in (port_dir / "boards").iterdir():
- if not entry.is_dir():
- continue
- board_modules = []
- board_name = entry.name
-
- settings = get_settings_from_makefile(str(port_dir), entry.name)
-
- if use_branded_name:
- with open(entry / "mpconfigboard.h") as get_name:
- board_contents = get_name.read()
- board_name_re = re.search(r"(?<=MICROPY_HW_BOARD_NAME)\s+(.+)",
- board_contents)
- if board_name_re:
- board_name = board_name_re.group(1).strip('"')
-
- board_modules = []
- for module in base:
- key = f'CIRCUITPY_{module.upper()}'
- if int(lookup_setting(settings, key, '0')):
- board_modules.append(base[module]['name'])
- boards[board_name] = sorted(board_modules)
+ settings = get_settings_from_makefile(str(port_dir), entry.name)
+
+ if use_branded_name:
+ with open(entry / "mpconfigboard.h") as get_name:
+ board_contents = get_name.read()
+ board_name_re = re.search(r"(?<=MICROPY_HW_BOARD_NAME)\s+(.+)",
+ board_contents)
+ if board_name_re:
+ board_name = board_name_re.group(1).strip('"')
+
+ board_modules = []
+ for module in base:
+ key = f'CIRCUITPY_{module.upper()}'
+ if int(lookup_setting(settings, key, '0')):
+ board_modules.append(base[module]['name'])
+
+ return (board_name, sorted(board_modules))
+
+ executor = ThreadPoolExecutor(max_workers=os.cpu_count())
+ boards = dict(sorted(executor.map(support_matrix, all_ports_all_boards())))
#print(json.dumps(boards, indent=2))
return boards