toolchain: Add spirv-tools to Windows script
authorCody Northrop <cnorthrop@google.com>
Wed, 30 Dec 2015 18:53:18 +0000 (11:53 -0700)
committerGregF <greg@LunarG.com>
Wed, 6 Jan 2016 17:56:48 +0000 (10:56 -0700)
update_external_sources.bat

index 0a391fc..ee29882 100755 (executable)
@@ -1,5 +1,5 @@
 @echo off\r
-REM Update source for glslang (and eventually LunarGLASS)\r
+REM Update source for glslang, LunarGLASS, spirv-tools\r
 \r
 setlocal EnableDelayedExpansion\r
 set errorCode=0\r
@@ -7,6 +7,7 @@ set BUILD_DIR=%~dp0
 set BASE_DIR=%BUILD_DIR%..\r
 set GLSLANG_DIR=%BASE_DIR%\glslang\r
 set LUNARGLASS_DIR=%BASE_DIR%\LunarGLASS\r
+set SPIRV_TOOLS_DIR=%BASE_DIR%\spirv-tools\r
 \r
 REM // ======== Parameter parsing ======== //\r
 \r
@@ -16,16 +17,20 @@ REM // ======== Parameter parsing ======== //
       echo Available options:\r
       echo   --sync-glslang      just pull glslang_revision\r
       echo   --sync-LunarGLASS   just pull LunarGLASS_revision\r
+         echo   --sync-spirv-tools  just pull spirv-tools_revision\r
       echo   --build-glslang     pulls glslang_revision, configures CMake, builds Release and Debug\r
       echo   --build-LunarGLASS  pulls LunarGLASS_revision, configures CMake, builds Release and Debug\r
-      echo   --all               sync and build both glslang and LunarGLASS\r
+      echo   --build-spirv-tools pulls spirv-tools_revision, configures CMake, builds Release and Debug\r
+      echo   --all               sync and build glslang, LunarGLASS, spirv-tools\r
       goto:finish\r
    )\r
 \r
    set sync-glslang=0\r
    set sync-LunarGLASS=0\r
+   set sync-spirv-tools=0\r
    set build-glslang=0\r
    set build-LunarGLASS=0\r
+   set build-spirv-tools=0\r
    set check-glslang-build-dependencies=0\r
    set check-LunarGLASS-fetch-dependencies=0\r
    set check-LunarGLASS-build-dependencies=0\r
@@ -47,6 +52,12 @@ REM // ======== Parameter parsing ======== //
          goto:parameterLoop\r
       )\r
 \r
+         if "%1" == "--sync-spirv-tools" (\r
+         set sync-spirv-tools=1\r
+         shift\r
+         goto:parameterLoop\r
+      )\r
+\r
       if "%1" == "--build-glslang" (\r
          set sync-glslang=1\r
          set check-glslang-build-dependencies=1\r
@@ -64,11 +75,22 @@ REM // ======== Parameter parsing ======== //
          goto:parameterLoop\r
       )\r
 \r
+         if "%1" == "--build-spirv-tools" (\r
+         set sync-spirv-tools=1\r
+                REM glslang has the same needs as spirv-tools\r
+         set check-glslang-build-dependencies=1\r
+         set build-spirv-tools=1\r
+         shift\r
+         goto:parameterLoop\r
+      )\r
+\r
       if "%1" == "--all" (\r
          set sync-glslang=1\r
          set sync-LunarGLASS=1\r
+         set sync-spirv-tools=1\r
          set build-glslang=1\r
          set build-LunarGLASS=1\r
+         set build-spirv-tools=1\r
          set check-LunarGLASS-fetch-dependencies=1\r
          set check-glslang-build-dependencies=1\r
          set check-LunarGLASS-build-dependencies=1\r
@@ -190,15 +212,24 @@ if not exist glslang_revision (
    goto:error\r
 )\r
 \r
+if not exist spirv-tools_revision (\r
+   echo.\r
+   echo Missing spirv-tools_revision file!  Place it next to this script with target version in it.\r
+   set errorCode=1\r
+   goto:error\r
+)\r
+\r
 set /p LUNARGLASS_REVISION= < LunarGLASS_revision\r
 set /p GLSLANG_REVISION= < glslang_revision\r
+set /p SPIRV_TOOLS_REVISION= < spirv-tools_revision\r
 echo LUNARGLASS_REVISION=%LUNARGLASS_REVISION%\r
 echo GLSLANG_REVISION=%GLSLANG_REVISION%\r
+echo SPIRV_TOOLS_REVISION=%SPIRV_TOOLS_REVISION%\r
 \r
 set /p LUNARGLASS_REVISION_R32= < LunarGLASS_revision_R32\r
 echo LUNARGLASS_REVISION_R32=%LUNARGLASS_REVISION_R32%\r
 \r
-echo Creating and/or updating glslang and LunarGLASS in %BASE_DIR%\r
+echo Creating and/or updating glslang, LunarGLASS, spirv-tools in %BASE_DIR%\r
 \r
 if %sync-glslang% equ 1 (\r
    rd /S /Q %GLSLANG_DIR%\r
@@ -220,6 +251,17 @@ if %sync-LunarGLASS% equ 1 (
    if %errorCode% neq 0 (goto:error)\r
 )\r
 \r
+if %sync-spirv-tools% equ 1 (\r
+   rd /S /Q %SPIRV_TOOLS_DIR%\r
+   if %errorlevel% neq 0 (goto:error)\r
+   if not exist %SPIRV_TOOLS_DIR% (\r
+      call:create_spirv-tools\r
+   )\r
+   if %errorCode% neq 0 (goto:error)\r
+   call:update_spirv-tools\r
+   if %errorCode% neq 0 (goto:error)\r
+)\r
+\r
 if %build-glslang% equ 1 (\r
    call:build_glslang\r
    if %errorCode% neq 0 (goto:error)\r
@@ -230,9 +272,13 @@ if %build-LunarGLASS% equ 1 (
    if %errorCode% neq 0 (goto:error)\r
 )\r
 \r
-REM If we made it here, we are golden\r
+if %build-spirv-tools% equ 1 (\r
+   call:build_spirv-tools\r
+   if %errorCode% neq 0 (goto:error)\r
+)\r
+\r
 echo.\r
-echo Success\r
+echo Exiting\r
 goto:finish\r
 \r
 :error\r
@@ -328,6 +374,27 @@ goto:eof
    svn revert -R .\r
 goto:eof\r
 \r
+:create_spirv-tools\r
+   echo.\r
+   echo Creating local spirv-tools repository %SPIRV_TOOLS_DIR%)\r
+   mkdir %SPIRV_TOOLS_DIR%\r
+   cd %SPIRV_TOOLS_DIR%\r
+   git clone git@gitlab.khronos.org:spirv/spirv-tools.git .
+   git checkout %SPIRV_TOOLS_REVISION%\r
+   if not exist %SPIRV_TOOLS_DIR%\source (\r
+      echo spirv-tools source download failed!\r
+      set errorCode=1\r
+   )\r
+goto:eof\r
+\r
+:update_spirv-tools\r
+   echo.\r
+   echo Updating %SPIRV_TOOLS_DIR%\r
+   cd %SPIRV_TOOLS_DIR%\r
+   git fetch --all\r
+   git checkout %SPIRV_TOOLS_REVISION%\r
+goto:eof\r
+\r
 :build_glslang\r
    echo.\r
    echo Building %GLSLANG_DIR%\r
@@ -405,3 +472,27 @@ goto:eof
    REM     goto:eof\r
    REM  )\r
 goto:eof\r
+\r
+:build_spirv-tools\r
+   echo.\r
+   echo Building %SPIRV_TOOLS_DIR%\r
+   cd  %SPIRV_TOOLS_DIR%\r
+   mkdir build\r
+   set SPIRV_TOOLS_BUILD_DIR=%SPIRV_TOOLS_DIR%\build\r
+   cd %SPIRV_TOOLS_BUILD_DIR%\r
+   cmake -G "Visual Studio 12 2013 Win64" ..\r
+   msbuild ALL_BUILD.vcxproj /p:Platform=x64 /p:Configuration=Debug\r
+   REM Check for existence of one lib, even though we should check for all results\r
+   if not exist %SPIRV_TOOLS_BUILD_DIR%\Debug\SPIRV-Tools.lib (\r
+      echo.\r
+      echo spirv-tools Debug build failed!\r
+      set errorCode=1\r
+   )\r
+   msbuild ALL_BUILD.vcxproj /p:Platform=x64 /p:Configuration=Release\r
+   REM Check for existence of one lib, even though we should check for all results\r
+   if not exist %SPIRV_TOOLS_BUILD_DIR%\Release\SPIRV-Tools.lib (\r
+      echo.\r
+      echo spirv-tools Release build failed!\r
+      set errorCode=1\r
+   )\r
+goto:eof\r