From ebd2c7c6f97b7ac4147bc7953e62302ac161c150 Mon Sep 17 00:00:00 2001 From: Ken Van Hoeylandt Date: Sun, 16 Mar 2025 22:04:03 +0100 Subject: [PATCH] Build improvements (#250) - Fix case for board configs - CMake now only builds a single board instead of all boards for the selected SOC. This makes it quicker to compile a single firmware. --- .github/workflows/build-firmware.yml | 12 ++-- .github/workflows/build-sdk.yml | 2 +- App/CMakeLists.txt | 37 +++--------- App/Source/Boards.h | 2 +- Boards/CYD-2432S024C/Source/CYD2432S024C.cpp | 2 +- Boards/CYD-2432S024C/Source/CYD2432S024C.h | 2 +- Buildscripts/board.cmake | 60 +++++++++++++++++++ CMakeLists.txt | 31 ++-------- ...2432S024c => sdkconfig.board.cyd-2432s024c | 2 +- ...2432S032c => sdkconfig.board.cyd-2432s032c | 2 +- ...8048S043c => sdkconfig.board.cyd-8048s043c | 0 sdkconfig.board.cyd-jc2432w328c | 2 +- sdkconfig.board.elecrow-crowpanel-advance-28 | 2 +- sdkconfig.board.elecrow-crowpanel-advance-35 | 2 +- sdkconfig.board.elecrow-crowpanel-advance-50 | 2 +- sdkconfig.board.elecrow-crowpanel-basic-28 | 2 +- sdkconfig.board.elecrow-crowpanel-basic-35 | 2 +- sdkconfig.board.elecrow-crowpanel-basic-50 | 2 +- 18 files changed, 91 insertions(+), 75 deletions(-) create mode 100644 Buildscripts/board.cmake rename sdkconfig.board.cyd-2432S024c => sdkconfig.board.cyd-2432s024c (97%) rename sdkconfig.board.cyd-2432S032c => sdkconfig.board.cyd-2432s032c (97%) rename sdkconfig.board.cyd-8048S043c => sdkconfig.board.cyd-8048s043c (100%) diff --git a/.github/workflows/build-firmware.yml b/.github/workflows/build-firmware.yml index b8f03375..2e8f4434 100644 --- a/.github/workflows/build-firmware.yml +++ b/.github/workflows/build-firmware.yml @@ -9,23 +9,23 @@ on: permissions: read-all jobs: - cyd-2432S024c: + cyd-2432s024c: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: "Build" uses: ./.github/actions/build-firmware with: - board_id: cyd-2432S024c + board_id: cyd-2432s024c arch: esp32 - cyd-2432S032c: + cyd-2432s032c: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: "Build" uses: ./.github/actions/build-firmware with: - board_id: cyd-2432S032c + board_id: cyd-2432s032c arch: esp32 cyd-jc2432w328c: runs-on: ubuntu-latest @@ -36,14 +36,14 @@ jobs: with: board_id: cyd-jc2432w328c arch: esp32 - cyd-8048S043c: + cyd-8048s043c: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: "Build" uses: ./.github/actions/build-firmware with: - board_id: cyd-8048S043c + board_id: cyd-8048s043c arch: esp32s3 cyd-jc8048w550c: runs-on: ubuntu-latest diff --git a/.github/workflows/build-sdk.yml b/.github/workflows/build-sdk.yml index f6919baf..65bc5d2e 100644 --- a/.github/workflows/build-sdk.yml +++ b/.github/workflows/build-sdk.yml @@ -16,7 +16,7 @@ jobs: - name: "Build" uses: ./.github/actions/build-sdk with: - board_id: cyd-2432S024c + board_id: cyd-2432s024c arch: esp32 esp32s3: runs-on: ubuntu-latest diff --git a/App/CMakeLists.txt b/App/CMakeLists.txt index 8dc09a0d..6e0d492d 100644 --- a/App/CMakeLists.txt +++ b/App/CMakeLists.txt @@ -1,41 +1,18 @@ cmake_minimum_required(VERSION 3.20) if (DEFINED ENV{ESP_IDF_VERSION}) - set(BOARD_COMPONENTS Tactility TactilityC) - - if("${IDF_TARGET}" STREQUAL "esp32") - list(APPEND BOARD_COMPONENTS - CYD-2432S024C - CYD-2432S032C - CYD-JC2432W328C - ElecrowCrowpanelBasic28 - ElecrowCrowpanelBasic35 - M5stackCore2 - ) - endif() - - if("${IDF_TARGET}" STREQUAL "esp32s3") - list(APPEND BOARD_COMPONENTS - CYD-4848S040C - CYD-8048S043C - CYD-JC8048W550C - ElecrowCrowpanelAdvance28 - ElecrowCrowpanelAdvance35 - ElecrowCrowpanelAdvance50 - ElecrowCrowpanelBasic50 - LilygoTdeck - M5stackCoreS3 - UnPhone - WaveshareS3Touch43 - ) - endif() + # Read board id/project + include("../Buildscripts/board.cmake") + init_tactility_globals("../sdkconfig") + get_property(TACTILITY_BOARD_PROJECT GLOBAL PROPERTY TACTILITY_BOARD_PROJECT) idf_component_register( SRC_DIRS "Source" "Source/HelloWorld" REQUIRES ${BOARD_COMPONENTS} + REQUIRES Tactility TactilityC ${TACTILITY_BOARD_PROJECT} ) -else() +else () file(GLOB_RECURSE SOURCES "Source/*.c*") add_executable(AppSim ${SOURCES}) @@ -49,4 +26,4 @@ else() add_definitions(-D_Nullable=) add_definitions(-D_Nonnull=) -endif() +endif () diff --git a/App/Source/Boards.h b/App/Source/Boards.h index a9c021b5..c5e296ee 100644 --- a/App/Source/Boards.h +++ b/App/Source/Boards.h @@ -9,7 +9,7 @@ #define TT_BOARD_HARDWARE &lilygo_tdeck #elif defined(CONFIG_TT_BOARD_CYD_2432S024C) #include "CYD2432S024C.h" -#define TT_BOARD_HARDWARE &cyd_2432S024c_config +#define TT_BOARD_HARDWARE &cyd_2432s024c_config #elif defined(CONFIG_TT_BOARD_CYD_2432S032C) #include "CYD2432S032C.h" #define TT_BOARD_HARDWARE &cyd_2432S032c_config diff --git a/Boards/CYD-2432S024C/Source/CYD2432S024C.cpp b/Boards/CYD-2432S024C/Source/CYD2432S024C.cpp index 379593b0..56f6650a 100644 --- a/Boards/CYD-2432S024C/Source/CYD2432S024C.cpp +++ b/Boards/CYD-2432S024C/Source/CYD2432S024C.cpp @@ -12,7 +12,7 @@ bool initBoot() { return driver::pwmbacklight::init(TWODOTFOUR_LCD_PIN_BACKLIGHT); } -const tt::hal::Configuration cyd_2432S024c_config = { +const tt::hal::Configuration cyd_2432s024c_config = { .initBoot = initBoot, .createDisplay = createDisplay, .sdcard = createYellowSdCard(), diff --git a/Boards/CYD-2432S024C/Source/CYD2432S024C.h b/Boards/CYD-2432S024C/Source/CYD2432S024C.h index aff1b7e3..6fe759fe 100644 --- a/Boards/CYD-2432S024C/Source/CYD2432S024C.h +++ b/Boards/CYD-2432S024C/Source/CYD2432S024C.h @@ -3,4 +3,4 @@ #include // Capacitive touch version of the 2.4" yellow board -extern const tt::hal::Configuration cyd_2432S024c_config; +extern const tt::hal::Configuration cyd_2432s024c_config; diff --git a/Buildscripts/board.cmake b/Buildscripts/board.cmake new file mode 100644 index 00000000..4e7d0c64 --- /dev/null +++ b/Buildscripts/board.cmake @@ -0,0 +1,60 @@ +function(INIT_TACTILITY_GLOBALS SDKCONFIG_FILE) + get_filename_component(SDKCONFIG_FILE_ABS ${SDKCONFIG_FILE} ABSOLUTE) + # Find the board identifier in the sdkconfig file + file(READ ${SDKCONFIG_FILE_ABS} sdkconfig_text) + string(REGEX MATCH "(CONFIG_TT_BOARD_ID\=\"[a-z0-9_\-]*\")" sdkconfig_board_id "${sdkconfig_text}") + if (sdkconfig_board_id STREQUAL "") + message(FATAL_ERROR "CONFIG_TT_BOARD_ID not found in sdkconfig:\nMake sure you copied one of the sdkconfig.board.* files into sdkconfig") + endif () + string(LENGTH ${sdkconfig_board_id} sdkconfig_board_id_length) + set(id_length 0) + math(EXPR id_length "${sdkconfig_board_id_length} - 21") + string(SUBSTRING ${sdkconfig_board_id} 20 ${id_length} board_id) + message("Building board ${board_id}") + + if (board_id STREQUAL "cyd-2432s024c") + set(TACTILITY_BOARD_PROJECT CYD-2432S024C) + elseif (board_id STREQUAL "cyd-2432s032c") + set(TACTILITY_BOARD_PROJECT CYD-2432S032C) + elseif (board_id STREQUAL "cyd-4848s040c") + set(TACTILITY_BOARD_PROJECT CYD-4848S040C) + elseif (board_id STREQUAL "cyd-8048s043c") + set(TACTILITY_BOARD_PROJECT CYD-8048S043C) + elseif (board_id STREQUAL "cyd-jc2432w328c") + set(TACTILITY_BOARD_PROJECT CYD-JC2432W328C) + elseif (board_id STREQUAL "cyd-jc8048w550c") + set(TACTILITY_BOARD_PROJECT CYD-JC8048W550C) + elseif (board_id STREQUAL "elecrow-crowpanel-advance-28") + set(TACTILITY_BOARD_PROJECT ElecrowCrowpanelAdvance28) + elseif (board_id STREQUAL "elecrow-crowpanel-advance-35") + set(TACTILITY_BOARD_PROJECT ElecrowCrowpanelAdvance35) + elseif (board_id STREQUAL "elecrow-crowpanel-advance-50") + set(TACTILITY_BOARD_PROJECT ElecrowCrowpanelAdvance50) + elseif (board_id STREQUAL "elecrow-crowpanel-basic-28") + set(TACTILITY_BOARD_PROJECT ElecrowCrowpanelBasic28) + elseif (board_id STREQUAL "elecrow-crowpanel-basic-35") + set(TACTILITY_BOARD_PROJECT ElecrowCrowpanelBasic35) + elseif (board_id STREQUAL "elecrow-crowpanel-basic-50") + set(TACTILITY_BOARD_PROJECT ElecrowCrowpanelBasic50) + elseif (board_id STREQUAL "lilygo-tdeck") + set(TACTILITY_BOARD_PROJECT LilygoTdeck) + elseif (board_id STREQUAL "m5stack-core2") + set(TACTILITY_BOARD_PROJECT M5stackCore2) + elseif (board_id STREQUAL "m5stack-cores3") + set(TACTILITY_BOARD_PROJECT M5stackCoreS3) + elseif (board_id STREQUAL "unphone") + set(TACTILITY_BOARD_PROJECT UnPhone) + elseif (board_id STREQUAL "waveshare-s3-touch-43") + set(TACTILITY_BOARD_PROJECT WaveshareS3Touch43) + else () + set(TACTILITY_BOARD_PROJECT "") + endif () + + if (TACTILITY_BOARD_PROJECT STREQUAL "") + message(FATAL_ERROR "No subproject mapped to \"${TACTILITY_BOARD_ID}\" in root Buildscripts/board.cmake") + else () + message("Board project: Boards/${TACTILITY_BOARD_PROJECT}") + set_property(GLOBAL PROPERTY TACTILITY_BOARD_PROJECT ${TACTILITY_BOARD_PROJECT}) + set_property(GLOBAL PROPERTY TACTILITY_BOARD_ID ${board_id}) + endif () +endfunction() diff --git a/CMakeLists.txt b/CMakeLists.txt index b98ef5b0..6928e5ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,10 +15,14 @@ if (DEFINED ENV{ESP_IDF_VERSION}) message("Building with ESP-IDF v$ENV{ESP_IDF_VERSION}") include($ENV{IDF_PATH}/tools/cmake/project.cmake) + include("Buildscripts/board.cmake") + init_tactility_globals("sdkconfig") + get_property(TACTILITY_BOARD_PROJECT GLOBAL PROPERTY TACTILITY_BOARD_PROJECT) + set(COMPONENTS App) set(EXTRA_COMPONENT_DIRS "App" - "Boards" + "Boards/${TACTILITY_BOARD_PROJECT}" "Drivers" "Tactility" "TactilityC" @@ -34,31 +38,6 @@ if (DEFINED ENV{ESP_IDF_VERSION}) set(EXCLUDE_COMPONENTS "Simulator") - # ESP32 target should exclude ESP32-S3 boards - if("${IDF_TARGET}" STREQUAL "esp32") - set(EXCLUDE_COMPONENTS "CYD-8048S043C") - set(EXCLUDE_COMPONENTS "CYD-JC8048W550C") - set(EXCLUDE_COMPONENTS "CYD-4848S040C") - set(EXCLUDE_COMPONENTS "ElecrowCrowpanelAdvance28") - set(EXCLUDE_COMPONENTS "ElecrowCrowpanelAdvance35") - set(EXCLUDE_COMPONENTS "ElecrowCrowpanelAdvance50") - set(EXCLUDE_COMPONENTS "ElecrowCrowpanelBasic50") - set(EXCLUDE_COMPONENTS "LilygoTdeck") - set(EXCLUDE_COMPONENTS "M5stackCoreS3") - set(EXCLUDE_COMPONENTS "WaveshareEsp32S3TouchLcd43") - set(EXCLUDE_COMPONENTS "UnPhone") - endif() - - # ESP32-S3 target should exclude ESP32 boards - if("${IDF_TARGET}" STREQUAL "esp32s3") - set(EXCLUDE_COMPONENTS "CYD-2432S024C") - set(EXCLUDE_COMPONENTS "CYD-2432S032C") - set(EXCLUDE_COMPONENTS "CYD-JC2432W328C") - set(EXCLUDE_COMPONENTS "ElecrowCrowpanelBasic28") - set(EXCLUDE_COMPONENTS "ElecrowCrowpanelBasic35") - set(EXCLUDE_COMPONENTS "M5stackCore2") - endif() - # LVGL get_filename_component( LVGL_CONFIG_FULL_PATH Libraries/lvgl_conf ABSOLUTE diff --git a/sdkconfig.board.cyd-2432S024c b/sdkconfig.board.cyd-2432s024c similarity index 97% rename from sdkconfig.board.cyd-2432S024c rename to sdkconfig.board.cyd-2432s024c index 9b0fd625..37af0f5f 100644 --- a/sdkconfig.board.cyd-2432S024c +++ b/sdkconfig.board.cyd-2432s024c @@ -30,7 +30,7 @@ CONFIG_FATFS_VOLUME_COUNT=3 # Hardware: Main CONFIG_TT_BOARD_CYD_2432S024C=y CONFIG_TT_BOARD_NAME="CYD 2432S024C" -CONFIG_TT_BOARD_ID="cyd-2432S024c" +CONFIG_TT_BOARD_ID="cyd-2432s024c" CONFIG_IDF_TARGET="esp32" CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y diff --git a/sdkconfig.board.cyd-2432S032c b/sdkconfig.board.cyd-2432s032c similarity index 97% rename from sdkconfig.board.cyd-2432S032c rename to sdkconfig.board.cyd-2432s032c index 714c9a69..ed2d7795 100644 --- a/sdkconfig.board.cyd-2432S032c +++ b/sdkconfig.board.cyd-2432s032c @@ -30,7 +30,7 @@ CONFIG_FATFS_VOLUME_COUNT=3 # Hardware: Main CONFIG_TT_BOARD_CYD_2432S032C=y CONFIG_TT_BOARD_NAME="CYD 2432S032C" -CONFIG_TT_BOARD_ID="cyd-2432S032c" +CONFIG_TT_BOARD_ID="cyd-2432s032c" CONFIG_IDF_TARGET="esp32" CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y diff --git a/sdkconfig.board.cyd-8048S043c b/sdkconfig.board.cyd-8048s043c similarity index 100% rename from sdkconfig.board.cyd-8048S043c rename to sdkconfig.board.cyd-8048s043c diff --git a/sdkconfig.board.cyd-jc2432w328c b/sdkconfig.board.cyd-jc2432w328c index c8b834e3..c16b62da 100644 --- a/sdkconfig.board.cyd-jc2432w328c +++ b/sdkconfig.board.cyd-jc2432w328c @@ -30,7 +30,7 @@ CONFIG_FATFS_VOLUME_COUNT=3 # Hardware: Main CONFIG_TT_BOARD_CYD_JC2432W328C=y CONFIG_TT_BOARD_NAME="CYD JC2432W328C" -CONFIG_TT_BOARD_ID="cyd-jc2432W328c" +CONFIG_TT_BOARD_ID="cyd-jc2432w328c" CONFIG_IDF_TARGET="esp32" CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y diff --git a/sdkconfig.board.elecrow-crowpanel-advance-28 b/sdkconfig.board.elecrow-crowpanel-advance-28 index 2b1a4d25..74266cda 100644 --- a/sdkconfig.board.elecrow-crowpanel-advance-28 +++ b/sdkconfig.board.elecrow-crowpanel-advance-28 @@ -30,7 +30,7 @@ CONFIG_FATFS_VOLUME_COUNT=3 # Hardware: Main CONFIG_TT_BOARD_ELECROW_CROWPANEL_ADVANCE_28=y CONFIG_TT_BOARD_NAME="CrowPanel Advance 2.8" -CONFIG_TT_BOARD_ID="crowpanel-advance-28" +CONFIG_TT_BOARD_ID="elecrow-crowpanel-advance-28" CONFIG_IDF_EXPERIMENTAL_FEATURES=y CONFIG_IDF_TARGET="esp32s3" CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y diff --git a/sdkconfig.board.elecrow-crowpanel-advance-35 b/sdkconfig.board.elecrow-crowpanel-advance-35 index 3ec9bc82..10c43044 100644 --- a/sdkconfig.board.elecrow-crowpanel-advance-35 +++ b/sdkconfig.board.elecrow-crowpanel-advance-35 @@ -30,7 +30,7 @@ CONFIG_FATFS_VOLUME_COUNT=3 # Hardware: Main CONFIG_TT_BOARD_ELECROW_CROWPANEL_ADVANCE_35=y CONFIG_TT_BOARD_NAME="CrowPanel Advance 3.5" -CONFIG_TT_BOARD_ID="crowpanel-advance-35" +CONFIG_TT_BOARD_ID="elecrow-crowpanel-advance-35" CONFIG_IDF_EXPERIMENTAL_FEATURES=y CONFIG_IDF_TARGET="esp32s3" CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y diff --git a/sdkconfig.board.elecrow-crowpanel-advance-50 b/sdkconfig.board.elecrow-crowpanel-advance-50 index b2dc084c..f2cf6a64 100644 --- a/sdkconfig.board.elecrow-crowpanel-advance-50 +++ b/sdkconfig.board.elecrow-crowpanel-advance-50 @@ -30,7 +30,7 @@ CONFIG_FATFS_VOLUME_COUNT=3 # Hardware: Main CONFIG_TT_BOARD_ELECROW_CROWPANEL_ADVANCE_50=y CONFIG_TT_BOARD_NAME="CrowPanel Advance 5.0" -CONFIG_TT_BOARD_ID="crowpanel-advance-50" +CONFIG_TT_BOARD_ID="elecrow-crowpanel-advance-50" CONFIG_IDF_EXPERIMENTAL_FEATURES=y CONFIG_IDF_TARGET="esp32s3" CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y diff --git a/sdkconfig.board.elecrow-crowpanel-basic-28 b/sdkconfig.board.elecrow-crowpanel-basic-28 index 79bb771e..97a57b0b 100644 --- a/sdkconfig.board.elecrow-crowpanel-basic-28 +++ b/sdkconfig.board.elecrow-crowpanel-basic-28 @@ -30,7 +30,7 @@ CONFIG_FATFS_VOLUME_COUNT=3 # Hardware: Main CONFIG_TT_BOARD_ELECROW_CROWPANEL_BASIC_28=y CONFIG_TT_BOARD_NAME="CrowPanel Basic 2.8" -CONFIG_TT_BOARD_ID="crowpanel-basic-28" +CONFIG_TT_BOARD_ID="elecrow-crowpanel-basic-28" CONFIG_IDF_TARGET="esp32" CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y diff --git a/sdkconfig.board.elecrow-crowpanel-basic-35 b/sdkconfig.board.elecrow-crowpanel-basic-35 index d8317bf1..b6730093 100644 --- a/sdkconfig.board.elecrow-crowpanel-basic-35 +++ b/sdkconfig.board.elecrow-crowpanel-basic-35 @@ -30,7 +30,7 @@ CONFIG_FATFS_VOLUME_COUNT=3 # Hardware: Main CONFIG_TT_BOARD_ELECROW_CROWPANEL_BASIC_35=y CONFIG_TT_BOARD_NAME="CrowPanel Basic 3.5" -CONFIG_TT_BOARD_ID="crowpanel-basic-35" +CONFIG_TT_BOARD_ID="elecrow-crowpanel-basic-35" CONFIG_IDF_TARGET="esp32" CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y diff --git a/sdkconfig.board.elecrow-crowpanel-basic-50 b/sdkconfig.board.elecrow-crowpanel-basic-50 index 7d43f7e9..06a9d610 100644 --- a/sdkconfig.board.elecrow-crowpanel-basic-50 +++ b/sdkconfig.board.elecrow-crowpanel-basic-50 @@ -30,7 +30,7 @@ CONFIG_FATFS_VOLUME_COUNT=3 # Hardware: Main CONFIG_TT_BOARD_ELECROW_CROWPANEL_BASIC_50=y CONFIG_TT_BOARD_NAME="CrowPanel Basic 5.0" -CONFIG_TT_BOARD_ID="crowpanel-basic-50" +CONFIG_TT_BOARD_ID="elecrow-crowpanel-basic-50" CONFIG_IDF_EXPERIMENTAL_FEATURES=y CONFIG_IDF_TARGET="esp32s3" CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y