xref: /sqlite-3.40.0/tool/GetTclKit.bat (revision dfff1ffe)
1@ECHO OFF
2
3::
4:: GetTclKit.bat --
5::
6:: TclKit Download Tool
7::
8
9SETLOCAL
10
11REM SET __ECHO=ECHO
12REM SET __ECHO2=ECHO
13REM SET __ECHO3=ECHO
14IF NOT DEFINED _AECHO (SET _AECHO=REM)
15IF NOT DEFINED _CECHO (SET _CECHO=REM)
16IF NOT DEFINED _VECHO (SET _VECHO=REM)
17
18SET OVERWRITE=^>
19IF DEFINED __ECHO SET OVERWRITE=^^^>
20
21SET APPEND=^>^>
22IF DEFINED __ECHO SET APPEND=^^^>^^^>
23
24SET PROCESSOR=%1
25
26IF DEFINED PROCESSOR (
27  CALL :fn_UnquoteVariable PROCESSOR
28) ELSE (
29  GOTO usage
30)
31
32%_VECHO% Processor = '%PROCESSOR%'
33
34SET DUMMY2=%2
35
36IF DEFINED DUMMY2 (
37  GOTO usage
38)
39
40SET ROOT=%~dp0\..
41SET ROOT=%ROOT:\\=\%
42
43%_VECHO% Root = '%ROOT%'
44
45SET TOOLS=%~dp0
46SET TOOLS=%TOOLS:~0,-1%
47
48%_VECHO% Tools = '%TOOLS%'
49
50IF NOT DEFINED windir (
51  ECHO The windir environment variable must be set first.
52  GOTO errors
53)
54
55%_VECHO% WinDir = '%windir%'
56
57IF NOT DEFINED TEMP (
58  ECHO The TEMP environment variable must be set first.
59  GOTO errors
60)
61
62%_VECHO% Temp = '%TEMP%'
63
64IF NOT DEFINED TCLKIT_URI (
65  SET TCLKIT_URI=http://tclsh.com/
66)
67
68%_VECHO% TclKitUri = '%TCLKIT_URI%'
69
70IF /I "%PROCESSOR%" == "x86" (
71  CALL :fn_TclKitX86Variables
72) ELSE IF /I "%PROCESSOR%" == "x64" (
73  CALL :fn_TclKitX64Variables
74) ELSE (
75  GOTO usage
76)
77
78%_VECHO% TclKitPatchLevel = '%TCLKIT_PATCHLEVEL%'
79%_VECHO% TclKitNoSdk = '%TCLKIT_NOSDK%'
80%_VECHO% TclKitExe = '%TCLKIT_EXE%'
81%_VECHO% TclKitLib = '%TCLKIT_LIB%'
82%_VECHO% TclKitSdk = '%TCLKIT_SDK%'
83%_VECHO% TclKitSdkZip = '%TCLKIT_SDK_ZIP%'
84%_VECHO% TclKitFiles = '%TCLKIT_FILES%'
85
86CALL :fn_ResetErrorLevel
87
88FOR %%T IN (csc.exe) DO (
89  SET %%T_PATH=%%~dp$PATH:T
90)
91
92%_VECHO% Csc.exe_PATH = '%csc.exe_PATH%'
93
94IF DEFINED csc.exe_PATH (
95  GOTO skip_addToPath
96)
97
98IF DEFINED FRAMEWORKDIR (
99  REM Use the existing .NET Framework directory...
100) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v2.0.50727" (
101  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v2.0.50727
102) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v3.5" (
103  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v3.5
104) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319" (
105  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v4.0.30319
106) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v2.0.50727" (
107  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v2.0.50727
108) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v3.5" (
109  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v3.5
110) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v4.0.30319" (
111  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v4.0.30319
112) ELSE (
113  ECHO No suitable version of the .NET Framework appears to be installed.
114  GOTO errors
115)
116
117%_VECHO% FrameworkDir = '%FRAMEWORKDIR%'
118
119IF NOT EXIST "%FRAMEWORKDIR%\csc.exe" (
120  ECHO The file "%FRAMEWORKDIR%\csc.exe" is missing.
121  GOTO errors
122)
123
124SET PATH=%FRAMEWORKDIR%;%PATH%
125
126:skip_addToPath
127
128%__ECHO% csc.exe "/out:%TEMP%\GetFile.exe" /target:exe "%TOOLS%\GetFile.cs"
129
130IF ERRORLEVEL 1 (
131  ECHO Compilation of "%TOOLS%\GetFile.cs" failed.
132  GOTO errors
133)
134
135FOR %%F IN (%TCLKIT_FILES%) DO (
136  IF NOT EXIST "%%F" (
137    %__ECHO% "%TEMP%\GetFile.exe" "%TCLKIT_URI%%%F"
138
139    IF ERRORLEVEL 1 (
140      ECHO Download of "%%F" from "%TCLKIT_URI%" failed.
141      GOTO errors
142    )
143  )
144)
145
146IF DEFINED TCLKIT_NOSDK GOTO skip_sdkUnZip
147
148IF NOT EXIST "%TEMP%\%TCLKIT_SDK%" (
149  %__ECHO% MKDIR "%TEMP%\%TCLKIT_SDK%"
150
151  IF ERRORLEVEL 1 (
152    ECHO Could not create directory "%TEMP%\%TCLKIT_SDK%".
153    GOTO errors
154  )
155)
156
157%__ECHO% "%TEMP%\unzip.exe" -o "%TEMP%\%TCLKIT_SDK_ZIP%" -d "%TEMP%\%TCLKIT_SDK%"
158
159IF ERRORLEVEL 1 (
160  ECHO Could not unzip "%TEMP%\%TCLKIT_SDK_ZIP%" to "%TEMP%\%TCLKIT_SDK%".
161  GOTO errors
162)
163
164:skip_sdkUnZip
165
166%__ECHO% ECHO SET TCLSH_CMD=%TEMP%\%TCLKIT_EXE%%OVERWRITE%"%ROOT%\SetTclKitEnv.bat"
167
168IF DEFINED TCLKIT_NOSDK GOTO skip_sdkVariables
169
170%__ECHO% ECHO SET TCLINCDIR=%TEMP%\%TCLKIT_SDK%\include%APPEND%"%ROOT%\SetTclKitEnv.bat"
171%__ECHO% ECHO SET TCLLIBDIR=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ROOT%\SetTclKitEnv.bat"
172%__ECHO% ECHO SET LIBTCL=%TCLKIT_LIB%%APPEND%"%ROOT%\SetTclKitEnv.bat"
173
174:skip_sdkVariables
175
176GOTO no_errors
177
178:fn_TclKitX86Variables
179  IF NOT DEFINED TCLKIT_PATCHLEVEL (
180    SET TCLKIT_PATCHLEVEL=8.6.4
181  )
182  SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
183  SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
184  SET TCLKIT_SDK=libtclkit-sdk-x86-%TCLKIT_PATCHLEVEL%
185  SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
186  SET TCLKIT_FILES=%TCLKIT_EXE% unzip.exe %TCLKIT_SDK_ZIP%
187  GOTO :EOF
188
189:fn_TclKitX64Variables
190  IF NOT DEFINED TCLKIT_PATCHLEVEL (
191    REM
192    REM NOTE: By default, use latest available version of the TclKit SDK
193    REM       for x64.  However, the "default" TclKit executable for x86
194    REM       is still used here because it is the only one "well-known"
195    REM       to be available for download.
196    REM
197    SET TCLKIT_PATCHLEVEL=8.6.3
198    SET TCLKIT_EXE=tclkit-8.6.4.exe
199  ) ELSE (
200    SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
201  )
202  SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
203  SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL%
204  SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
205  SET TCLKIT_FILES=%TCLKIT_EXE% unzip.exe %TCLKIT_SDK_ZIP%
206  GOTO :EOF
207
208:fn_UnquoteVariable
209  IF NOT DEFINED %1 GOTO :EOF
210  SETLOCAL
211  SET __ECHO_CMD=ECHO %%%1%%
212  FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
213    SET VALUE=%%V
214  )
215  SET VALUE=%VALUE:"=%
216  REM "
217  ENDLOCAL && SET %1=%VALUE%
218  GOTO :EOF
219
220:fn_ResetErrorLevel
221  VERIFY > NUL
222  GOTO :EOF
223
224:fn_SetErrorLevel
225  VERIFY MAYBE 2> NUL
226  GOTO :EOF
227
228:usage
229  ECHO.
230  ECHO Usage: %~nx0 ^<processor^>
231  ECHO.
232  ECHO The only supported values for processor are "x86" and "x64".
233  GOTO errors
234
235:errors
236  CALL :fn_SetErrorLevel
237  ENDLOCAL
238  ECHO.
239  ECHO Failure, errors were encountered.
240  GOTO end_of_file
241
242:no_errors
243  CALL :fn_ResetErrorLevel
244  ENDLOCAL
245  ECHO.
246  ECHO Success, no errors were encountered.
247  GOTO end_of_file
248
249:end_of_file
250%__ECHO% EXIT /B %ERRORLEVEL%
251