@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