Skip to content

Commit

Permalink
update build script to correctly skip non max3421 enabled for espress…
Browse files Browse the repository at this point in the history
…if boards
  • Loading branch information
hathach committed Sep 30, 2024
1 parent 4c81d91 commit 4617fb5
Show file tree
Hide file tree
Showing 9 changed files with 89 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# Apply board specific content here
set(IDF_TARGET "esp32")
set(MAX3421_HOST 1)
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# Apply board specific content here
set(IDF_TARGET "esp32s2")
set(MAX3421_HOST 1)
3 changes: 3 additions & 0 deletions hw/bsp/espressif/boards/adafruit_feather_esp32s3/board.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Apply board specific content here
set(IDF_TARGET "esp32s3")
set(MAX3421_HOST 1)
53 changes: 53 additions & 0 deletions hw/bsp/espressif/boards/adafruit_feather_esp32s3/board.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2020, Ha Thach (tinyusb.org)
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* This file is part of the TinyUSB stack.
*/

#ifndef BOARD_H_
#define BOARD_H_

#ifdef __cplusplus
extern "C" {
#endif

#define NEOPIXEL_PIN 33
#define NEOPIXEL_POWER_PIN 21
#define NEOPIXEL_POWER_STATE 1

#define BUTTON_PIN 0
#define BUTTON_STATE_ACTIVE 0

// SPI for USB host shield
#define MAX3421_SPI_HOST SPI2_HOST
#define MAX3421_SCK_PIN 36
#define MAX3421_MOSI_PIN 35
#define MAX3421_MISO_PIN 37
#define MAX3421_CS_PIN 10
#define MAX3421_INTR_PIN 9

#ifdef __cplusplus
}
#endif

#endif /* BOARD_H_ */
1 change: 1 addition & 0 deletions hw/bsp/espressif/boards/adafruit_metro_esp32s2/board.cmake
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# Apply board specific content here
set(IDF_TARGET "esp32s2")
set(MAX3421_HOST 1)
1 change: 1 addition & 0 deletions hw/bsp/espressif/boards/espressif_c3_devkitc/board.cmake
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# Apply board specific content here
set(IDF_TARGET "esp32c3")
set(MAX3421_HOST 1)
1 change: 1 addition & 0 deletions hw/bsp/espressif/boards/espressif_c6_devkitc/board.cmake
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
# Apply board specific content here
set(IDF_TARGET "esp32c6")
set(MAX3421_HOST 1)
11 changes: 7 additions & 4 deletions tools/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,13 @@ def cmake_board(board, toolchain):
# for espressif, we have to build example individually
all_examples = get_examples(family)
for example in all_examples:
rcmd = run_cmd(f'cmake examples/{example} -B {build_dir}/{example} -G "Ninja" -DBOARD={board} -DMAX3421_HOST=1')
if rcmd.returncode == 0:
rcmd = run_cmd(f'cmake --build {build_dir}/{example}')
ret[0 if rcmd.returncode == 0 else 1] += 1
if build_utils.skip_example(example, board):
ret[2] += 1
else:
rcmd = run_cmd(f'cmake examples/{example} -B {build_dir}/{example} -G "Ninja" -DBOARD={board}')
if rcmd.returncode == 0:
rcmd = run_cmd(f'cmake --build {build_dir}/{example}')
ret[0 if rcmd.returncode == 0 else 1] += 1
else:
rcmd = run_cmd(f'cmake examples -B {build_dir} -G "Ninja" -DBOARD={board} -DCMAKE_BUILD_TYPE=MinSizeRel -DTOOLCHAIN={toolchain}')
if rcmd.returncode == 0:
Expand Down
44 changes: 21 additions & 23 deletions tools/build_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,25 @@ def skip_example(example, board):
ex_dir = pathlib.Path('examples/') / example
bsp = pathlib.Path("hw/bsp")

if (bsp / board / "board.mk").exists():
# board without family
board_dir = bsp / board
family = ""
mk_contents = ""
else:
# board within family
board_dir = list(bsp.glob("*/boards/" + board))
if not board_dir:
# Skip unknown boards
return True

board_dir = list(board_dir)[0]
# board within family
board_dir = list(bsp.glob("*/boards/" + board))
if not board_dir:
# Skip unknown boards
return True

family_dir = board_dir.parent.parent
family = family_dir.name
board_dir = list(board_dir)[0]
family_dir = board_dir.parent.parent
family = family_dir.name

# family.mk
family_mk = family_dir / "family.mk"
mk_contents = family_mk.read_text()
# family.mk
family_mk = family_dir / "family.mk"
mk_contents = family_mk.read_text()

# Find the mcu, first in family mk then board mk
if "CFG_TUSB_MCU=OPT_MCU_" not in mk_contents:
board_mk = board_dir / "board.cmake"
board_mk = board_dir / "board.mk"
if not board_mk.exists():
board_mk = board_dir / "board.mk"

board_mk = board_dir / "board.cmake"
mk_contents = board_mk.read_text()

mcu = "NONE"
Expand All @@ -49,18 +41,23 @@ def skip_example(example, board):
token = token.strip("\"")
_, opt_mcu = token.split("=")
mcu = opt_mcu[len("OPT_MCU_"):]
break
if "esp32s2" in token:
mcu = "ESP32S2"
break
if "esp32s3" in token:
mcu = "ESP32S3"
if mcu != "NONE":
break

# Skip all OPT_MCU_NONE these are WIP port
if mcu == "NONE":
return True

max3421_enabled = False
for line in mk_contents.splitlines():
if "MAX3421_HOST=1" in line or 'MAX3421_HOST 1' in line:
max3421_enabled = True
break

skip_file = ex_dir / "skip.txt"
only_file = ex_dir / "only.txt"

Expand All @@ -74,6 +71,7 @@ def skip_example(example, board):
if only_file.exists():
onlys = only_file.read_text().split()
if not ("mcu:" + mcu in onlys or
("mcu:MAX3421" in onlys and max3421_enabled) or
"board:" + board in onlys or
"family:" + family in onlys):
return True
Expand Down

0 comments on commit 4617fb5

Please sign in to comment.