mirror of
https://github.com/openshwprojects/OpenBK7231T_App.git
synced 2026-08-18 02:54:53 +00:00
175 lines
5.0 KiB
Batchfile
175 lines
5.0 KiB
Batchfile
@echo off
|
|
setlocal EnableDelayedExpansion
|
|
pushd "%~dp0\.."
|
|
|
|
:: Default settings
|
|
set APP_VERSION=dev_esp32
|
|
set OBK_VARIANT=2
|
|
set ESP_FSIZE=4MB
|
|
set TARGET=esp32
|
|
set ACTION=build
|
|
|
|
:: Check for target argument
|
|
if not "%~1"=="" set TARGET=%~1
|
|
if not "%~2"=="" set ACTION=%~2
|
|
|
|
if "%TARGET%"=="esp32" (
|
|
set BUILD_DIR=platforms\ESP-IDF\build-32
|
|
set BOOTLOADER_ADDR=0x1000
|
|
) else if "%TARGET%"=="esp32c3" (
|
|
set BUILD_DIR=platforms\ESP-IDF\build-c3
|
|
set BOOTLOADER_ADDR=0x0
|
|
) else if "%TARGET%"=="esp32c2" (
|
|
set BUILD_DIR=platforms\ESP-IDF\build-c2
|
|
set BOOTLOADER_ADDR=0x0
|
|
) else if "%TARGET%"=="esp32c5" (
|
|
set BUILD_DIR=platforms\ESP-IDF\build-c5
|
|
set BOOTLOADER_ADDR=0x2000
|
|
) else if "%TARGET%"=="esp32c6" (
|
|
set BUILD_DIR=platforms\ESP-IDF\build-c6
|
|
set BOOTLOADER_ADDR=0x0
|
|
) else if "%TARGET%"=="esp32c61" (
|
|
set BUILD_DIR=platforms\ESP-IDF\build-c61
|
|
set BOOTLOADER_ADDR=0x0
|
|
) else if "%TARGET%"=="esp32s2" (
|
|
set BUILD_DIR=platforms\ESP-IDF\build-s2
|
|
set BOOTLOADER_ADDR=0x1000
|
|
) else if "%TARGET%"=="esp32s3" (
|
|
set BUILD_DIR=platforms\ESP-IDF\build-s3
|
|
set BOOTLOADER_ADDR=0x0
|
|
) else (
|
|
echo [ERROR] Unknown target: %TARGET%
|
|
exit /b 1
|
|
)
|
|
|
|
echo ==============================================
|
|
echo Building OpenBeken ESP32 on Windows natively
|
|
echo Target: %TARGET%
|
|
echo Size: %ESP_FSIZE%
|
|
echo Variant (2=tuyaMCU/4MB): %OBK_VARIANT%
|
|
echo Bootloader Addr: %BOOTLOADER_ADDR%
|
|
echo Build Directory: %BUILD_DIR%
|
|
echo Action: %ACTION%
|
|
echo ==============================================
|
|
|
|
:: Check if ESP-IDF environment is active
|
|
where idf.py >nul 2>nul
|
|
if %errorlevel% equ 0 goto :idf_ready
|
|
|
|
echo [INFO] ESP-IDF 'idf.py' not found in PATH.
|
|
echo [INFO] Attempting to load from sdk\esp-idf...
|
|
|
|
if not exist "sdk\esp-idf\export.bat" goto :no_idf
|
|
|
|
:: Try export.bat first
|
|
call "sdk\esp-idf\export.bat"
|
|
where idf.py >nul 2>nul
|
|
if %errorlevel% equ 0 goto :idf_ready
|
|
|
|
:: export.bat didn't give us idf.py - try install.bat then re-export
|
|
echo [INFO] export.bat did not set up environment. Running install.bat...
|
|
if not exist "sdk\esp-idf\install.bat" goto :no_idf
|
|
|
|
call "sdk\esp-idf\install.bat"
|
|
|
|
echo [INFO] Retrying export.bat...
|
|
call "sdk\esp-idf\export.bat"
|
|
where idf.py >nul 2>nul
|
|
if %errorlevel% equ 0 goto :idf_ready
|
|
|
|
echo [ERROR] ESP-IDF environment still not available after install+export!
|
|
exit /b 1
|
|
|
|
:no_idf
|
|
echo [ERROR] ESP-IDF not found!
|
|
echo Please ensure sdk\esp-idf is checked out (git submodule update --init --recursive sdk/esp-idf)
|
|
exit /b 1
|
|
|
|
:idf_ready
|
|
echo [INFO] ESP-IDF environment is ready.
|
|
|
|
:: If just cleaning
|
|
if "%ACTION%"=="clean" (
|
|
echo [INFO] Cleaning %TARGET%...
|
|
if exist %BUILD_DIR% cmake --build %BUILD_DIR% --target clean
|
|
echo [INFO] Clean complete!
|
|
exit /b 0
|
|
)
|
|
|
|
:: Prepare partition tables based on OBK_VARIANT
|
|
if exist platforms\ESP-IDF\sdkconfig del platforms\ESP-IDF\sdkconfig
|
|
if exist platforms\ESP-IDF\partitions.csv del platforms\ESP-IDF\partitions.csv
|
|
|
|
:: Defaulting to 4MB for variant 2
|
|
copy /y platforms\ESP-IDF\partitions-4mb.csv platforms\ESP-IDF\partitions.csv >nul
|
|
|
|
:: Set environment variables for IDF cmake
|
|
set IDF_TARGET=%TARGET%
|
|
|
|
|
|
:: --- Berry prebuild ---
|
|
call build_scripts\berry_prebuild.bat
|
|
|
|
:: Configure CMake via ESP-IDF toolchain
|
|
echo [INFO] Running CMake configuration for %TARGET%...
|
|
cmake platforms\ESP-IDF -B %BUILD_DIR% -G "Ninja"
|
|
if !errorlevel! neq 0 (
|
|
echo [ERROR] CMake configuration failed!
|
|
exit /b 1
|
|
)
|
|
|
|
:: Build using CMake
|
|
echo [INFO] Building with CMake/Ninja...
|
|
cmake --build %BUILD_DIR% -j
|
|
if !errorlevel! neq 0 (
|
|
echo [ERROR] Build failed!
|
|
exit /b 1
|
|
)
|
|
|
|
:: Ensure output directory exists
|
|
echo [INFO] Creating output directory...
|
|
if not exist "output\%APP_VERSION%" mkdir output\%APP_VERSION%
|
|
|
|
:: Determine output names
|
|
if "%TARGET%"=="esp32" (
|
|
set OUT_NAME=OpenESP32
|
|
) else if "%TARGET%"=="esp32c3" (
|
|
set OUT_NAME=OpenESP32C3
|
|
) else if "%TARGET%"=="esp32c2" (
|
|
set OUT_NAME=OpenESP32C2
|
|
) else if "%TARGET%"=="esp32c5" (
|
|
set OUT_NAME=OpenESP32C5
|
|
) else if "%TARGET%"=="esp32c6" (
|
|
set OUT_NAME=OpenESP32C6
|
|
) else if "%TARGET%"=="esp32c61" (
|
|
set OUT_NAME=OpenESP32C61
|
|
) else if "%TARGET%"=="esp32s2" (
|
|
set OUT_NAME=OpenESP32S2
|
|
) else if "%TARGET%"=="esp32s3" (
|
|
set OUT_NAME=OpenESP32S3
|
|
) else (
|
|
set OUT_NAME=Open%TARGET%
|
|
)
|
|
|
|
:: Package binaries using esptool
|
|
echo [INFO] Merging binaries with esptool...
|
|
set FACTORY_BIN=output\%APP_VERSION%\!OUT_NAME!_%APP_VERSION%.factory.bin
|
|
set IMG_BIN=output\%APP_VERSION%\!OUT_NAME!_%APP_VERSION%.img
|
|
|
|
python -m esptool -c %TARGET% merge_bin -o !FACTORY_BIN! --flash_mode dio --flash_size %ESP_FSIZE% %BOOTLOADER_ADDR% %BUILD_DIR%\bootloader\bootloader.bin 0x8000 %BUILD_DIR%\partition_table\partition-table.bin 0x10000 %BUILD_DIR%\OpenBeken.bin
|
|
if !errorlevel! neq 0 (
|
|
echo [ERROR] esptool merge failed!
|
|
exit /b 1
|
|
)
|
|
|
|
copy /y %BUILD_DIR%\OpenBeken.bin !IMG_BIN! >nul
|
|
|
|
echo ==============================================
|
|
echo BUILD SUCCESSFUL!
|
|
echo Output files located in output\%APP_VERSION%
|
|
echo Factory Bin: !FACTORY_BIN!
|
|
echo OTA Bin: !IMG_BIN!
|
|
echo ==============================================
|
|
exit /b 0
|
|
|