304 lines
7.9 KiB
Batchfile
Executable file
304 lines
7.9 KiB
Batchfile
Executable file
@echo off
|
|
REM Update source for glslang, spirv-tools, and shaderc
|
|
|
|
REM
|
|
REM Copyright 2016 The Android Open Source Project
|
|
REM Copyright (C) 2015 Valve Corporation
|
|
REM
|
|
REM Licensed under the Apache License, Version 2.0 (the "License");
|
|
REM you may not use this file except in compliance with the License.
|
|
REM You may obtain a copy of the License at
|
|
REM
|
|
REM http://www.apache.org/licenses/LICENSE-2.0
|
|
REM
|
|
REM Unless required by applicable law or agreed to in writing, software
|
|
REM distributed under the License is distributed on an "AS IS" BASIS,
|
|
REM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
REM See the License for the specific language governing permissions and
|
|
REM limitations under the License.
|
|
REM
|
|
|
|
setlocal EnableDelayedExpansion
|
|
set errorCode=0
|
|
set ANDROID_BUILD_DIR=%~dp0
|
|
set BUILD_DIR=%ANDROID_BUILD_DIR%\..
|
|
set BASE_DIR=%BUILD_DIR%\third_party
|
|
set SHADERC_DIR=%BASE_DIR%\shaderc
|
|
set SHADERC_THIRD_PARTY=%BASE_DIR%\shaderc\third_party
|
|
set GLSLANG_DIR=%SHADERC_THIRD_PARTH%\glslang
|
|
set SPIRV_TOOLS_DIR=%SHADERC_THIRD_PARTH%\spirv-tools
|
|
set SPIRV_HEADERS_DIR=%SHADERC_THIRD_PARTH%\spirv-tools\external\spirv-headers
|
|
|
|
for %%X in (where.exe) do (set FOUND=%%~$PATH:X)
|
|
if not defined FOUND (
|
|
echo Dependency check failed:
|
|
echo where.exe not found
|
|
echo This script requires Windows Vista or later, which includes where.exe.
|
|
set errorCode=1
|
|
)
|
|
|
|
where /q git.exe
|
|
if %ERRORLEVEL% equ 1 (
|
|
echo Dependency check failed:
|
|
echo git.exe not found
|
|
echo Git for Windows can be downloaded here: https://git-scm.com/download/win
|
|
echo Install and ensure git.exe makes it into your PATH
|
|
set errorCode=1
|
|
)
|
|
|
|
where /q ndk-build.cmd
|
|
if %ERRORLEVEL% equ 1 (
|
|
echo Dependency check failed:
|
|
echo ndk-build.cmd not found
|
|
echo Android NDK can be downloaded here: http://developer.android.com/ndk/guides/setup.html
|
|
echo Install and ensure ndk-build.cmd makes it into your PATH
|
|
set errorCode=1
|
|
)
|
|
|
|
REM ensure where is working with below false test
|
|
REM where /q foo
|
|
REM if %ERRORLEVEL% equ 1 (
|
|
REM echo foo
|
|
REM )
|
|
|
|
:main
|
|
|
|
if %errorCode% neq 0 (goto:error)
|
|
|
|
REM Read the target versions from external file, which is shared with Linux script
|
|
|
|
if not exist %ANDROID_BUILD_DIR%\glslang_revision_android (
|
|
echo.
|
|
echo Missing glslang_revision_android file. Place it in %ANDROID_BUILD_DIR%
|
|
goto:error
|
|
)
|
|
|
|
if not exist %ANDROID_BUILD_DIR%\spirv-tools_revision_android (
|
|
echo.
|
|
echo Missing spirv-tools_revision_android file. Place it in %ANDROID_BUILD_DIR%
|
|
set errorCode=1
|
|
goto:error
|
|
)
|
|
|
|
if not exist %ANDROID_BUILD_DIR%\spirv-headers_revision_android (
|
|
echo.
|
|
echo Missing spirv-headers_revision_android file. Place it in %ANDROID_BUILD_DIR%
|
|
set errorCode=1
|
|
goto:error
|
|
)
|
|
|
|
if not exist %ANDROID_BUILD_DIR%\shaderc_revision_android (
|
|
echo.
|
|
echo Missing shaderc_revision_android file. Place it in %ANDROID_BUILD_DIR%
|
|
set errorCode=1
|
|
goto:error
|
|
)
|
|
|
|
set /p GLSLANG_REVISION= < glslang_revision_android
|
|
set /p SPIRV_TOOLS_REVISION= < spirv-tools_revision_android
|
|
set /p SPIRV_HEADERS_REVISION= < spirv-headers_revision_android
|
|
set /p SHADERC_REVISION= < shaderc_revision_android
|
|
echo GLSLANG_REVISION=%GLSLANG_REVISION%
|
|
echo SPIRV_TOOLS_REVISION=%SPIRV_TOOLS_REVISION%
|
|
echo SPIRV_HEADERS_REVISION=%SPIRV_HEADERS_REVISION%
|
|
echo SHADERC_REVISION=%SHADERC_REVISION%
|
|
|
|
|
|
echo Creating and/or updating glslang, spirv-tools, spirv-headers, shaderc in %BASE_DIR%
|
|
|
|
set sync-glslang=1
|
|
set sync-spirv-tools=1
|
|
set sync-spirv-headers=1
|
|
set sync-shaderc=1
|
|
set build-shaderc=1
|
|
|
|
REM Must be first as we create directories used by glslang and spriv-tools
|
|
|
|
if %sync-shaderc% equ 1 (
|
|
if exist %SHADERC_DIR% (
|
|
rd /S /Q %SHADERC_DIR%
|
|
)
|
|
if not exist %SHADERC_DIR% (
|
|
call:create_shaderc
|
|
)
|
|
if %errorCode% neq 0 (goto:error)
|
|
call:update_shaderc
|
|
if %errorCode% neq 0 (goto:error)
|
|
)
|
|
|
|
if %sync-glslang% equ 1 (
|
|
if exist %GLSLANG_DIR% (
|
|
rd /S /Q %GLSLANG_DIR%
|
|
)
|
|
if not exist %GLSLANG_DIR% (
|
|
call:create_glslang
|
|
)
|
|
if %errorCode% neq 0 (goto:error)
|
|
call:update_glslang
|
|
if %errorCode% neq 0 (goto:error)
|
|
)
|
|
|
|
if %sync-spirv-tools% equ 1 (
|
|
if exist %SPIRV_TOOLS_DIR% (
|
|
rd /S /Q %SPIRV_TOOLS_DIR%
|
|
)
|
|
if %ERRORLEVEL% neq 0 (goto:error)
|
|
if not exist %SPIRV_TOOLS_DIR% (
|
|
call:create_spirv-tools
|
|
)
|
|
if %errorCode% neq 0 (goto:error)
|
|
call:update_spirv-tools
|
|
if %errorCode% neq 0 (goto:error)
|
|
)
|
|
|
|
if %sync-spirv-headers% equ 1 (
|
|
if exist %SPIRV_HEADERS_DIR% (
|
|
rd /S /Q %SPIRV_HEADERS_DIR%
|
|
)
|
|
if %ERRORLEVEL% neq 0 (goto:error)
|
|
if not exist %SPIRV_HEADERS_DIR% (
|
|
call:create_spirv-headers
|
|
)
|
|
if %errorCode% neq 0 (goto:error)
|
|
call:update_spirv-headers
|
|
if %errorCode% neq 0 (goto:error)
|
|
)
|
|
|
|
if %build-shaderc% equ 1 (
|
|
call:build_shaderc
|
|
if %errorCode% neq 0 (goto:error)
|
|
)
|
|
|
|
echo.
|
|
echo Exiting
|
|
goto:finish
|
|
|
|
:error
|
|
echo.
|
|
echo Halting due to error
|
|
goto:finish
|
|
|
|
:finish
|
|
if not "%cd%\" == "%BUILD_DIR%" ( cd %BUILD_DIR% )
|
|
endlocal
|
|
REM This needs a fix to return error, something like exit %errorCode%
|
|
REM Right now it is returning 0
|
|
goto:eof
|
|
|
|
|
|
|
|
REM // ======== Functions ======== //
|
|
|
|
:create_glslang
|
|
echo.
|
|
echo Creating local glslang repository %GLSLANG_DIR%
|
|
mkdir %GLSLANG_DIR%
|
|
cd %GLSLANG_DIR%
|
|
git clone https://github.com/KhronosGroup/glslang.git .
|
|
git checkout %GLSLANG_REVISION%
|
|
if not exist %GLSLANG_DIR%\SPIRV (
|
|
echo glslang source download failed!
|
|
set errorCode=1
|
|
)
|
|
goto:eof
|
|
|
|
:update_glslang
|
|
echo.
|
|
echo Updating %GLSLANG_DIR%
|
|
cd %GLSLANG_DIR%
|
|
git fetch --all
|
|
git checkout %GLSLANG_REVISION%
|
|
if not exist %GLSLANG_DIR%\SPIRV (
|
|
echo glslang source update failed!
|
|
set errorCode=1
|
|
)
|
|
goto:eof
|
|
|
|
:create_spirv-tools
|
|
echo.
|
|
echo Creating local spirv-tools repository %SPIRV_TOOLS_DIR%
|
|
mkdir %SPIRV_TOOLS_DIR%
|
|
cd %SPIRV_TOOLS_DIR%
|
|
git clone https://github.com/KhronosGroup/SPIRV-Tools.git .
|
|
git checkout %SPIRV_TOOLS_REVISION%
|
|
if not exist %SPIRV_TOOLS_DIR%\source (
|
|
echo spirv-tools source download failed!
|
|
set errorCode=1
|
|
)
|
|
goto:eof
|
|
|
|
:update_spirv-tools
|
|
echo.
|
|
echo Updating %SPIRV_TOOLS_DIR%
|
|
cd %SPIRV_TOOLS_DIR%
|
|
git fetch --all
|
|
git checkout %SPIRV_TOOLS_REVISION%
|
|
if not exist %SPIRV_TOOLS_DIR%\source (
|
|
echo spirv-tools source update failed!
|
|
set errorCode=1
|
|
)
|
|
goto:eof
|
|
|
|
:create_spirv-headers
|
|
echo.
|
|
echo Creating local spirv-headers repository %SPIRV_HEADERS_DIR%
|
|
mkdir %SPIRV_HEADERS_DIR%
|
|
cd %SPIRV_HEADERS_DIR%
|
|
git clone https://github.com/KhronosGroup/SPIRV-Headers.git .
|
|
git checkout %SPIRV_HEADERS_REVISION%
|
|
if not exist %SPIRV_HEADERS_DIR%\include (
|
|
echo spirv-headers source download failed!
|
|
set errorCode=1
|
|
)
|
|
goto:eof
|
|
|
|
:update_spirv-headers
|
|
echo.
|
|
echo Updating %SPIRV_HEADERS_DIR%
|
|
cd %SPIRV_HEADERS_DIR%
|
|
git fetch --all
|
|
git checkout %SPIRV_HEADERS_REVISION%
|
|
if not exist %SPIRV_HEADERS_DIR%\include (
|
|
echo spirv-headers source update failed!
|
|
set errorCode=1
|
|
)
|
|
goto:eof
|
|
|
|
:create_shaderc
|
|
echo.
|
|
echo Creating local shaderc repository %SHADERC_DIR%
|
|
mkdir %SHADERC_DIR%
|
|
cd %SHADERC_DIR%
|
|
git clone https://github.com/google/shaderc.git .
|
|
git checkout %SHADERC_REVISION%
|
|
if not exist %SHADERC_DIR%\libshaderc (
|
|
echo shaderc source download failed!
|
|
set errorCode=1
|
|
)
|
|
goto:eof
|
|
|
|
:update_shaderc
|
|
echo.
|
|
echo Updating %SHADERC_DIR%
|
|
cd %SHADERC_DIR%
|
|
git fetch --all
|
|
git checkout %SHADERC_REVISION%
|
|
if not exist %SHADERC_DIR%\libshaderc (
|
|
echo shaderc source update failed!
|
|
set errorCode=1
|
|
)
|
|
goto:eof
|
|
|
|
:build_shaderc
|
|
echo.
|
|
echo Building %SHADERC_DIR%
|
|
cd %SHADERC_DIR%\android_test
|
|
echo Building shaderc with Android NDK
|
|
call ndk-build THIRD_PARTY_PATH=../.. -j 4
|
|
REM Check for existence of one lib, even though we should check for all results
|
|
if not exist %SHADERC_DIR%\android_test\obj\local\x86\libshaderc.a (
|
|
echo.
|
|
echo shaderc build failed!
|
|
set errorCode=1
|
|
)
|
|
goto:eof
|