256 lines
7.0 KiB
Batchfile
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 |