Files
video-v1/vav2/platforms/android/tests/texture-binding-test/build_test.bat
2025-09-29 02:42:26 +09:00

256 lines
7.0 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
:: ================================================================================================
:: VavCore Texture Binding Test Build Script
:: ================================================================================================
:: Purpose: Build VavCore texture binding test for Android
:: Author: Generated with Claude Code
::
:: Prerequisites:
:: 1. Android NDK r25+ installed
:: 2. CMake installed and in PATH
:: 3. VavCore library pre-built in ../../vavcore/lib/android-arm64-v8a/
:: 4. Dependencies pre-built in project root lib/ directory
::
:: Usage:
:: 1. Set Android NDK environment variable:
:: set ANDROID_NDK_HOME=C:\Android\android-ndk-r25c
:: 2. Run this script:
:: build_test.bat (for ARM64)
:: build_test.bat arm32 (for ARM32)
:: ================================================================================================
echo.
echo ================================================
echo VavCore Texture Binding Test Build Script
echo ================================================
echo.
:: Set script directory (where this script is located)
set "SCRIPT_DIR=%~dp0"
set "SCRIPT_DIR=%SCRIPT_DIR:~0,-1%"
:: Set project root directory (5 levels up from script)
for %%i in ("%SCRIPT_DIR%\..\..\..\..\..") do set "PROJECT_ROOT=%%~fi"
:: Set Android build configuration (default to ARM64, can be overridden)
if "%1"=="arm32" (
set "ANDROID_ABI=armeabi-v7a"
set "CMAKE_ANDROID_ARCH_ABI=armeabi-v7a"
) else (
set "ANDROID_ABI=arm64-v8a"
set "CMAKE_ANDROID_ARCH_ABI=arm64-v8a"
)
set "ANDROID_PLATFORM=android-29"
set "ANDROID_API_LEVEL=29"
set "BUILD_TYPE=Debug"
:: Set build directories
set "BUILD_DIR=%SCRIPT_DIR%\build-android"
set "OUTPUT_DIR=%SCRIPT_DIR%\bin\android-%ANDROID_ABI%"
echo Script Directory: %SCRIPT_DIR%
echo Project Root: %PROJECT_ROOT%
echo Build Directory: %BUILD_DIR%
echo Output Directory: %OUTPUT_DIR%
echo Android ABI: %ANDROID_ABI%
echo Android Platform: %ANDROID_PLATFORM%
echo Build Type: %BUILD_TYPE%
echo.
:: Check if Android NDK is available
if "%ANDROID_NDK_HOME%"=="" (
if "%ANDROID_NDK_ROOT%"=="" (
if "%ANDROID_NDK%"=="" (
echo ❌ Error: Android NDK environment variable not set
echo Please set one of these variables to point to your Android NDK installation:
echo set ANDROID_NDK_HOME=C:\Android\android-ndk-r25c
echo set ANDROID_NDK_ROOT=C:\Android\android-ndk-r25c
echo set ANDROID_NDK=C:\Android\android-ndk-r25c
exit /b 1
) else (
set "NDK_PATH=%ANDROID_NDK%"
)
) else (
set "NDK_PATH=%ANDROID_NDK_ROOT%"
)
) else (
set "NDK_PATH=%ANDROID_NDK_HOME%"
)
if not exist "%NDK_PATH%" (
echo ❌ Error: Android NDK not found at: %NDK_PATH%
exit /b 1
)
echo ✅ Android NDK found: %NDK_PATH%
:: Check for required tools
where cmake >nul 2>&1
if errorlevel 1 (
echo ❌ Error: cmake not found in PATH
echo Please install CMake and add it to your PATH
exit /b 1
)
echo ✅ Build tools found: cmake
:: Check for VavCore library
set "VAVCORE_LIB_PATH=%SCRIPT_DIR%\..\..\vavcore\lib\android-%ANDROID_ABI%\libVavCore.so"
if not exist "%VAVCORE_LIB_PATH%" (
echo ❌ Error: VavCore library not found: %VAVCORE_LIB_PATH%
echo Please build VavCore first: cd ..\..\vavcore && build_vavcore_android.bat
exit /b 1
)
:: Check for pre-built dependencies in project root
set "DAV1D_LIB_DIR=%PROJECT_ROOT%lib\android-%ANDROID_ABI%\dav1d"
set "LIBWEBM_LIB_DIR=%PROJECT_ROOT%lib\android-%ANDROID_ABI%\libwebm"
if not exist "%DAV1D_LIB_DIR%\libdav1d.so" (
echo ❌ Error: dav1d library not found: %DAV1D_LIB_DIR%\libdav1d.so
echo Please build dav1d first: build_dav1d_android.bat
exit /b 1
)
echo ✅ Dependencies found:
echo - VavCore: %VAVCORE_LIB_PATH%
echo - dav1d: %DAV1D_LIB_DIR%\libdav1d.so
:: Clean previous build
if exist "%BUILD_DIR%" (
echo 🧹 Cleaning previous build...
rmdir /s /q "%BUILD_DIR%"
)
if exist "%OUTPUT_DIR%" (
echo 🧹 Cleaning previous output...
rmdir /s /q "%OUTPUT_DIR%"
)
:: Create build and output directories
echo 📁 Creating build directories...
mkdir "%BUILD_DIR%"
if errorlevel 1 (
echo ❌ Error: Failed to create build directory
exit /b 1
)
mkdir "%OUTPUT_DIR%"
if errorlevel 1 (
echo ❌ Error: Failed to create output directory
exit /b 1
)
:: Set Android toolchain path
set "ANDROID_TOOLCHAIN_FILE=%NDK_PATH%\build\cmake\android.toolchain.cmake"
echo.
echo ⚙️ Configuring VavCore Texture Binding Test for Android...
echo.
:: Change to build directory
pushd "%BUILD_DIR%"
:: Configure with CMake
cmake "%SCRIPT_DIR%" ^
-G "Ninja" ^
-DCMAKE_TOOLCHAIN_FILE="%ANDROID_TOOLCHAIN_FILE%" ^
-DANDROID_ABI=%CMAKE_ANDROID_ARCH_ABI% ^
-DANDROID_PLATFORM=%ANDROID_PLATFORM% ^
-DANDROID_NDK="%NDK_PATH%" ^
-DCMAKE_BUILD_TYPE=%BUILD_TYPE% ^
-DCMAKE_INSTALL_PREFIX="%OUTPUT_DIR%" ^
-DANDROID_STL=c++_shared ^
-DANDROID_CPP_FEATURES="rtti exceptions" ^
-DCMAKE_ANDROID_ARCH_ABI=%CMAKE_ANDROID_ARCH_ABI% ^
-DCMAKE_SYSTEM_NAME=Android ^
-DCMAKE_ANDROID_API_MIN=29 ^
-DDAV1D_LIBRARY_DIR="%DAV1D_LIB_DIR%" ^
-DLIBWEBM_LIBRARY_DIR="%LIBWEBM_LIB_DIR%" ^
-DPROJECT_INCLUDE_DIR="%PROJECT_ROOT%include"
if errorlevel 1 (
echo ❌ CMake configuration failed
popd
exit /b 1
)
echo.
echo 🔨 Building VavCore Texture Binding Test...
echo.
:: Build the test
cmake --build . --config %BUILD_TYPE% -j%NUMBER_OF_PROCESSORS%
if errorlevel 1 (
echo ❌ Build failed
popd
exit /b 1
)
echo.
echo 📦 Installing test executable...
echo.
:: Install the test executable
cmake --install . --config %BUILD_TYPE%
if errorlevel 1 (
echo ❌ Installation failed
popd
exit /b 1
)
popd
:: Verify build output
echo.
echo 🔍 Verifying build output...
echo.
set "TEST_EXECUTABLE=%OUTPUT_DIR%\bin\VavCoreTextureBindingTest"
if exist "%TEST_EXECUTABLE%" (
echo ✅ Build successful!
echo 📄 Test executable info:
:: Display file size
for %%F in ("%TEST_EXECUTABLE%") do (
echo Executable Size: %%~zF bytes
)
echo.
echo 📂 Output directory contents:
dir "%OUTPUT_DIR%" /s /b
echo.
echo 🎯 VavCore Texture Binding Test ready:
echo Executable: %TEST_EXECUTABLE%
echo Platform: android-%ANDROID_ABI%
) else (
echo ❌ Build verification failed - executable not found
echo Expected: %TEST_EXECUTABLE%
exit /b 1
)
echo.
echo 🎉 VavCore Texture Binding Test build completed successfully!
echo.
echo 📍 Output structure:
echo %OUTPUT_DIR%\bin\VavCoreTextureBindingTest
echo.
echo 🚀 To run the test:
echo 1. Push the executable to an Android device
echo 2. Run via adb shell: ./VavCoreTextureBindingTest
echo 3. Check logcat for detailed test results: adb logcat -s VavCoreTextureTest
echo.
echo 📋 Dependencies used:
echo - VavCore: %VAVCORE_LIB_PATH%
echo - dav1d: %DAV1D_LIB_DIR%\libdav1d.so
echo - Headers: %PROJECT_ROOT%include\
echo.
endlocal
exit /b 0