1*b7893ccfSSadaf Ebrahimi@echo off
2*b7893ccfSSadaf EbrahimiREM Update source for glslang, spirv-tools, and shaderc
3*b7893ccfSSadaf Ebrahimi
4*b7893ccfSSadaf EbrahimiREM
5*b7893ccfSSadaf EbrahimiREM Copyright 2016 The Android Open Source Project
6*b7893ccfSSadaf EbrahimiREM Copyright (C) 2015 Valve Corporation
7*b7893ccfSSadaf EbrahimiREM Copyright 2018 LunarG, Inc.
8*b7893ccfSSadaf EbrahimiREM
9*b7893ccfSSadaf EbrahimiREM Licensed under the Apache License, Version 2.0 (the "License");
10*b7893ccfSSadaf EbrahimiREM you may not use this file except in compliance with the License.
11*b7893ccfSSadaf EbrahimiREM You may obtain a copy of the License at
12*b7893ccfSSadaf EbrahimiREM
13*b7893ccfSSadaf EbrahimiREM      http://www.apache.org/licenses/LICENSE-2.0
14*b7893ccfSSadaf EbrahimiREM
15*b7893ccfSSadaf EbrahimiREM Unless required by applicable law or agreed to in writing, software
16*b7893ccfSSadaf EbrahimiREM distributed under the License is distributed on an "AS IS" BASIS,
17*b7893ccfSSadaf EbrahimiREM WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18*b7893ccfSSadaf EbrahimiREM See the License for the specific language governing permissions and
19*b7893ccfSSadaf EbrahimiREM limitations under the License.
20*b7893ccfSSadaf EbrahimiREM
21*b7893ccfSSadaf Ebrahimi
22*b7893ccfSSadaf Ebrahimisetlocal EnableDelayedExpansion
23*b7893ccfSSadaf Ebrahimiset errorCode=0
24*b7893ccfSSadaf Ebrahimiset ANDROID_BUILD_DIR=%~dp0
25*b7893ccfSSadaf Ebrahimiset BUILD_DIR=%ANDROID_BUILD_DIR%
26*b7893ccfSSadaf Ebrahimiset BASE_DIR=%BUILD_DIR%\third_party
27*b7893ccfSSadaf Ebrahimiset SHADERC_DIR=%BASE_DIR%\shaderc
28*b7893ccfSSadaf Ebrahimi
29*b7893ccfSSadaf Ebrahimifor %%X in (where.exe) do (set FOUND=%%~$PATH:X)
30*b7893ccfSSadaf Ebrahimiif not defined FOUND (
31*b7893ccfSSadaf Ebrahimi   echo Dependency check failed:
32*b7893ccfSSadaf Ebrahimi   echo   where.exe not found
33*b7893ccfSSadaf Ebrahimi   echo   This script requires Windows Vista or later, which includes where.exe.
34*b7893ccfSSadaf Ebrahimi   set errorCode=1
35*b7893ccfSSadaf Ebrahimi)
36*b7893ccfSSadaf Ebrahimi
37*b7893ccfSSadaf Ebrahimiwhere /q git.exe
38*b7893ccfSSadaf Ebrahimiif %ERRORLEVEL% equ 1 (
39*b7893ccfSSadaf Ebrahimi   echo Dependency check failed:
40*b7893ccfSSadaf Ebrahimi   echo   git.exe not found
41*b7893ccfSSadaf Ebrahimi   echo   Git for Windows can be downloaded here:  https://git-scm.com/download/win
42*b7893ccfSSadaf Ebrahimi   echo   Install and ensure git.exe makes it into your PATH
43*b7893ccfSSadaf Ebrahimi   set errorCode=1
44*b7893ccfSSadaf Ebrahimi)
45*b7893ccfSSadaf Ebrahimi
46*b7893ccfSSadaf Ebrahimiwhere /q ndk-build.cmd
47*b7893ccfSSadaf Ebrahimiif %ERRORLEVEL% equ 1 (
48*b7893ccfSSadaf Ebrahimi   echo Dependency check failed:
49*b7893ccfSSadaf Ebrahimi   echo   ndk-build.cmd not found
50*b7893ccfSSadaf Ebrahimi   echo   Android NDK can be downloaded here:  http://developer.android.com/ndk/guides/setup.html
51*b7893ccfSSadaf Ebrahimi   echo   Install and ensure ndk-build.cmd makes it into your PATH
52*b7893ccfSSadaf Ebrahimi   set errorCode=1
53*b7893ccfSSadaf Ebrahimi)
54*b7893ccfSSadaf Ebrahimi
55*b7893ccfSSadaf Ebrahimi:main
56*b7893ccfSSadaf Ebrahimi
57*b7893ccfSSadaf Ebrahimiif %errorCode% neq 0 (goto:error)
58*b7893ccfSSadaf Ebrahimi
59*b7893ccfSSadaf Ebrahimiecho Creating and/or updating glslang, spirv-tools, spirv-headers, shaderc, vulkan-headers, vulkan-tools in %BASE_DIR%
60*b7893ccfSSadaf Ebrahimi
61*b7893ccfSSadaf Ebrahimiset build-shaderc=1
62*b7893ccfSSadaf Ebrahimi
63*b7893ccfSSadaf EbrahimiREM Pull down or update external dependencies
64*b7893ccfSSadaf Ebrahimiecho Update external dependencies based on the %ANDROID_BUILD_DIR%/known_good.json file
65*b7893ccfSSadaf Ebrahimipy -3 ../scripts/update_deps.py --no-build --dir %BASE_DIR% --known_good_dir %BUILD_DIR%
66*b7893ccfSSadaf Ebrahimi
67*b7893ccfSSadaf Ebrahimi
68*b7893ccfSSadaf Ebrahimiif %build-shaderc% equ 1 (
69*b7893ccfSSadaf Ebrahimi   call:build_shaderc
70*b7893ccfSSadaf Ebrahimi   if %errorCode% neq 0 (goto:error)
71*b7893ccfSSadaf Ebrahimi)
72*b7893ccfSSadaf Ebrahimi
73*b7893ccfSSadaf Ebrahimiecho.
74*b7893ccfSSadaf Ebrahimiecho Exiting
75*b7893ccfSSadaf Ebrahimigoto:finish
76*b7893ccfSSadaf Ebrahimi
77*b7893ccfSSadaf Ebrahimi:error
78*b7893ccfSSadaf Ebrahimiecho.
79*b7893ccfSSadaf Ebrahimiecho Halting due to error
80*b7893ccfSSadaf Ebrahimigoto:finish
81*b7893ccfSSadaf Ebrahimi
82*b7893ccfSSadaf Ebrahimi:finish
83*b7893ccfSSadaf Ebrahimiif not "%cd%\" == "%BUILD_DIR%" ( cd %BUILD_DIR% )
84*b7893ccfSSadaf Ebrahimiendlocal
85*b7893ccfSSadaf EbrahimiREM This needs a fix to return error, something like exit %errorCode%
86*b7893ccfSSadaf EbrahimiREM Right now it is returning 0
87*b7893ccfSSadaf Ebrahimigoto:eof
88*b7893ccfSSadaf Ebrahimi
89*b7893ccfSSadaf Ebrahimi
90*b7893ccfSSadaf Ebrahimi
91*b7893ccfSSadaf EbrahimiREM // ======== Functions ======== //
92*b7893ccfSSadaf Ebrahimi
93*b7893ccfSSadaf Ebrahimi:build_shaderc
94*b7893ccfSSadaf Ebrahimi   echo.
95*b7893ccfSSadaf Ebrahimi   echo Building %SHADERC_DIR%
96*b7893ccfSSadaf Ebrahimi   cd %SHADERC_DIR%\android_test
97*b7893ccfSSadaf Ebrahimi   echo Building shaderc with Android NDK
98*b7893ccfSSadaf Ebrahimi   call ndk-build NDK_APPLICATION_MK=../../../jni/shaderc/Application.mk THIRD_PARTY_PATH=../third_party -j 4
99*b7893ccfSSadaf Ebrahimi   REM Check for existence of one lib, even though we should check for all results
100*b7893ccfSSadaf Ebrahimi   if not exist %SHADERC_DIR%\android_test\obj\local\x86\libshaderc.a (
101*b7893ccfSSadaf Ebrahimi      echo.
102*b7893ccfSSadaf Ebrahimi      echo shaderc build failed!
103*b7893ccfSSadaf Ebrahimi      set errorCode=1
104*b7893ccfSSadaf Ebrahimi   )
105*b7893ccfSSadaf Ebrahimigoto:eof
106