blob: 81b29e1859fa68199dbafd57b72c23e7b2a3dde6 [file] [log] [blame]
@echo off
REM Update source for glslang (and eventually LunarGLASS)
setlocal EnableDelayedExpansion
set errorCode=0
set BUILD_DIR=%~dp0
set BASE_DIR=%BUILD_DIR%..
set GLSLANG_DIR=%BASE_DIR%\glslang
set LUNARGLASS_DIR=%BASE_DIR%\LunarGLASS
REM // ======== Parameter parsing ======== //
if "%1" == "" (
echo usage: update_external_sources.bat [options]
echo.
echo Available options:
echo --sync-glslang just pull glslang_revision
echo --sync-LunarGLASS just pull LunarGLASS_revision
echo --build-glslang pulls glslang_revision, configures CMake, builds Release and Debug
echo --build-LunarGLASS pulls LunarGLASS_revision, configures CMake, builds Release and Debug
echo --all sync and build both glslang and LunarGLASS
goto:finish
)
set sync-glslang=0
set sync-LunarGLASS=0
set build-glslang=0
set build-LunarGLASS=0
set check-glslang-build-dependencies=0
set check-LunarGLASS-fetch-dependencies=0
set check-LunarGLASS-build-dependencies=0
:parameterLoop
if "%1"=="" goto:parameterContinue
if "%1" == "--sync-glslang" (
set sync-glslang=1
shift
goto:parameterLoop
)
if "%1" == "--sync-LunarGLASS" (
set sync-LunarGLASS=1
set check-LunarGLASS-fetch-dependencies=1
shift
goto:parameterLoop
)
if "%1" == "--build-glslang" (
set sync-glslang=1
set check-glslang-build-dependencies=1
set build-glslang=1
shift
goto:parameterLoop
)
if "%1" == "--build-LunarGLASS" (
set sync-LunarGLASS=1
set check-LunarGLASS-fetch-dependencies=1
set check-LunarGLASS-build-dependencies=1
set build-LunarGLASS=1
shift
goto:parameterLoop
)
if "%1" == "--all" (
set sync-glslang=1
set sync-LunarGLASS=1
set build-glslang=1
set build-LunarGLASS=1
set check-LunarGLASS-fetch-dependencies=1
set check-glslang-build-dependencies=1
set check-LunarGLASS-build-dependencies=1
shift
goto:parameterLoop
)
echo Unrecognized options "%1"
goto:error
:parameterContinue
REM // ======== end Parameter parsing ======== //
REM // ======== Dependency checking ======== //
for %%X in (git.exe) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo Dependency check failed:
echo git.exe not found
echo Install and ensure git.exe makes it into your PATH
set errorCode=1
)
if %check-LunarGLASS-fetch-dependencies% equ 1 (
for %%X in (svn.exe) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo Dependency check failed:
echo svn.exe not found
echo Get Subversion for Windows here: http://sourceforge.net/projects/win32svn/
echo Install and ensure svn.exe makes it into your PATH, default is "C:\Program Files (x86)\Subversion\bin"
set errorCode=1
)
for %%X in (wget.exe) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo Dependency check failed:
echo wget.exe not found
echo Get wget for Windows here: http://gnuwin32.sourceforge.net/packages/wget.htm
echo Easiest to select "Complete package, except sources" link which will install and setup PATH
echo Install and ensure each makes it into your PATH, default is "C:\Program Files (x86)\GnuWin32\bin"
set errorCode=1
)
for %%X in (gzip.exe) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo Dependency check failed:
echo gzip.exe not found
echo Get gzip for Windows here: http://gnuwin32.sourceforge.net/packages/gzip.htm
echo Easiest to select "Complete package, except sources" link which will install and setup PATH
echo Install and ensure each makes it into your PATH, default is "C:\Program Files (x86)\GnuWin32\bin"
set errorCode=1
)
for %%X in (tar.exe) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo Dependency check failed:
echo tar.exe not found
echo Get tar for Windows here: http://gnuwin32.sourceforge.net/packages/gtar.htm
echo Easiest to select Binaries/Setup link which will install and setup PATH
echo Install and ensure each makes it into your PATH, default is "C:\Program Files (x86)\GnuWin32\bin"
set errorCode=1
)
)
if %check-glslang-build-dependencies% equ 1 (
for %%X in (cmake.exe) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo Dependency check failed:
echo cmake.exe not found
echo Get CNake 2.8 for Windows here: http://www.cmake.org/cmake/resources/software.html
echo Install and ensure each makes it into your PATH, default is "C:\Program Files (x86)\CMake\bin"
set errorCode=1
)
)
if %check-LunarGLASS-build-dependencies% equ 1 (
for %%X in (python.exe) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo Dependency check failed:
echo python.exe not found
echo Get python 2.7x for Windows here: http://www.python.org/download/releases/2.7.6/
echo Install and ensure each makes it into your PATH, default is "C:\Python27"
set errorCode=1
)
for %%X in (cmake.exe) do (set FOUND=%%~$PATH:X)
if not defined FOUND (
echo Dependency check failed:
echo cmake.exe not found
echo Get CNake 2.8 for Windows here: http://www.cmake.org/cmake/resources/software.html
echo Install and ensure each makes it into your PATH, default is "C:\Program Files (x86)\CMake\bin"
set errorCode=1
)
)
REM goto:main
REM // ======== end Dependency checking ======== //
:main
if %errorCode% neq 0 (goto:error)
REM Read the target versions from external file, which is shared with Linux script
if not exist LunarGLASS_revision (
echo.
echo Missing LunarGLASS_revision file! Place it next to this script with target version in it.
set errorCode=1
goto:error
)
if not exist glslang_revision (
echo.
echo Missing glslang_revision file! Place it next to this script with target version in it.
set errorCode=1
goto:error
)
set /p LUNARGLASS_REVISION= < LunarGLASS_revision
set /p GLSLANG_REVISION= < glslang_revision
echo LUNARGLASS_REVISION=%LUNARGLASS_REVISION%
echo GLSLANG_REVISION=%GLSLANG_REVISION%
echo Creating and/or updating glslang and LunarGLASS in %BASE_DIR%
if %sync-glslang% equ 1 (
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-LunarGLASS% equ 1 (
if not exist %LUNARGLASS_DIR% (
call:create_LunarGLASS
)
if %errorCode% neq 0 (goto:error)
call:update_LunarGLASS
if %errorCode% neq 0 (goto:error)
)
if %build-glslang% equ 1 (
call:build_glslang
if %errorCode% neq 0 (goto:error)
)
if %build-LunarGLASS% equ 1 (
call:build_LunarGLASS
if %errorCode% neq 0 (goto:error)
)
REM If we made it here, we are golden
echo.
echo Success
goto:finish
:error
echo.
echo Halting due to error
goto:finish
:finish
if not "%cd%\" == "%BUILD_DIR%" ( cd %BUILD_DIR% )
endlocal
goto:eof
REM // ======== Functions ======== //
:create_glslang
REM Windows complains if it can't find the directory below, no need to call
REM rd /S /Q %GLSLANG_DIR%
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%
goto:eof
:create_LunarGLASS
REM Windows complains if it can't find the directory below, no need to call
REM rd /S /Q %LUNARGLASS_DIR%
echo.
echo Creating local LunarGLASS repository %LUNARGLASS_DIR%)
mkdir %LUNARGLASS_DIR%\Core\LLVM
cd %LUNARGLASS_DIR%\Core\LLVM
echo.
echo Downloading LLVM archive...
wget http://llvm.org/releases/3.4/llvm-3.4.src.tar.gz
REM tar on windows can't filter through gzip, so the below line doesn't work
REM tar --gzip -xf llvm-3.4.src.tar.gz
echo.
echo Unzipping the archive...
echo gzip --decompress --verbose --keep llvm-3.4.src.tar.gz
gzip --decompress --verbose --keep llvm-3.4.src.tar.gz
echo.
echo Extracting the archive... (this is slow)
echo tar -xf llvm-3.4.src.tar
tar -xf llvm-3.4.src.tar
if not exist %LUNARGLASS_DIR%\Core\LLVM\llvm-3.4\lib (
echo .
echo LLVM source download failed!
echo Delete LunarGLASS directory and try again
set errorCode=1
goto:eof
)
echo.
echo Syncing LunarGLASS source...
cd %LUNARGLASS_DIR%
svn checkout --force https://lunarglass.googlecode.com/svn/trunk/ .
svn revert --depth=infinity .
if not exist %LUNARGLASS_DIR%\Frontends\SPIRV (
echo.
echo LunarGLASS source download failed!
set errorCode=1
)
goto:eof
:update_LunarGLASS
echo.
echo Updating %LUNARGLASS_DIR%
cd %LUNARGLASS_DIR%
svn update -r %LUNARGLASS_REVISION%
REM Just in case we are moving backward, do a revert
svn revert -R .
goto:eof
:build_glslang
echo.
echo Building %GLSLANG_DIR%
cd %GLSLANG_DIR%
mkdir build
set GLSLANG_BUILD_DIR=%GLSLANG_DIR%\build
cd %GLSLANG_BUILD_DIR%
cmake -G"Visual Studio 12 2013 Win64" -DCMAKE_INSTALL_PREFIX=install ..
msbuild INSTALL.vcxproj /p:Platform=x64 /p:Configuration=Release
REM Check for existence of one lib, even though we should check for all results
if not exist %GLSLANG_BUILD_DIR%\glslang\Release\glslang.lib (
echo.
echo glslang Release build failed!
set errorCode=1
)
msbuild INSTALL.vcxproj /p:Platform=x64 /p:Configuration=Debug
REM Check for existence of one lib, even though we should check for all results
if not exist %GLSLANG_BUILD_DIR%\glslang\Debug\glslang.lib (
echo.
echo glslang Debug build failed!
set errorCode=1
)
goto:eof
:build_LunarGLASS
echo.
echo Building %LUNARGLASS_DIR%
set LLVM_DIR=%LUNARGLASS_DIR%\Core\LLVM\llvm-3.4
cd %LLVM_DIR%
mkdir build
set LLVM_BUILD_DIR=%LLVM_DIR%\build
cd %LLVM_BUILD_DIR%
cmake -G"Visual Studio 12 2013 Win64" -DCMAKE_INSTALL_PREFIX=install ..
msbuild INSTALL.vcxproj /p:Platform=x64 /p:Configuration=Release
REM Check for existence of one lib, even though we should check for all results
if not exist %LLVM_BUILD_DIR%\lib\Release\LLVMCore.lib (
echo.
echo LLVM Release build failed!
set errorCode=1
goto:eof
)
msbuild INSTALL.vcxproj /p:Platform=x64 /p:Configuration=Debug
REM Check for existence of one lib, even though we should check for all results
if not exist %LLVM_BUILD_DIR%\lib\Debug\LLVMCore.lib (
echo.
echo LLVM Debug build failed!
set errorCode=1
goto:eof
)
cd %LUNARGLASS_DIR%
mkdir build
set LUNARGLASS_BUILD_DIR=%LUNARGLASS_DIR%\build
cd %LUNARGLASS_BUILD_DIR%
cmake -G"Visual Studio 12 2013 Win64" -DCMAKE_INSTALL_PREFIX=install ..
msbuild INSTALL.vcxproj /p:Platform=x64 /p:Configuration=Release
REM Check for existence of one lib, even though we should check for all results
if not exist %LUNARGLASS_BUILD_DIR%\Core\Release\core.lib (
echo.
echo LunarGLASS build failed!
set errorCode=1
goto:eof
)
msbuild INSTALL.vcxproj /p:Platform=x64 /p:Configuration=Debug
REM Check for existence of one lib, even though we should check for all results
if not exist %LUNARGLASS_BUILD_DIR%\Core\Debug\core.lib (
echo.
echo LunarGLASS build failed!
set errorCode=1
goto:eof
)
goto:eof