xref: /sqlite-3.40.0/tool/GetTclKit.bat (revision cc730488)
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 "%TEMP%\%%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" -n "%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
176ECHO.
177ECHO Wrote "%ROOT%\SetTclKitEnv.bat".
178ECHO Please run it to set the necessary Tcl environment variables.
179ECHO.
180
181GOTO no_errors
182
183:fn_TclKitX86Variables
184  IF NOT DEFINED TCLKIT_PATCHLEVEL (
185    SET TCLKIT_PATCHLEVEL=8.6.4
186  )
187  SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
188  SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
189  SET TCLKIT_SDK=libtclkit-sdk-x86-%TCLKIT_PATCHLEVEL%
190  SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
191  SET TCLKIT_FILES=%TCLKIT_EXE% unzip.exe %TCLKIT_SDK_ZIP%
192  GOTO :EOF
193
194:fn_TclKitX64Variables
195  IF NOT DEFINED TCLKIT_PATCHLEVEL (
196    REM
197    REM NOTE: By default, use latest available version of the TclKit SDK
198    REM       for x64.  However, the "default" TclKit executable for x86
199    REM       is still used here because it is the only one "well-known"
200    REM       to be available for download.
201    REM
202    SET TCLKIT_PATCHLEVEL=8.6.3
203    SET TCLKIT_EXE=tclkit-8.6.4.exe
204  ) ELSE (
205    SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
206  )
207  SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
208  SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL%
209  SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
210  SET TCLKIT_FILES=%TCLKIT_EXE% unzip.exe %TCLKIT_SDK_ZIP%
211  GOTO :EOF
212
213:fn_UnquoteVariable
214  IF NOT DEFINED %1 GOTO :EOF
215  SETLOCAL
216  SET __ECHO_CMD=ECHO %%%1%%
217  FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
218    SET VALUE=%%V
219  )
220  SET VALUE=%VALUE:"=%
221  REM "
222  ENDLOCAL && SET %1=%VALUE%
223  GOTO :EOF
224
225:fn_ResetErrorLevel
226  VERIFY > NUL
227  GOTO :EOF
228
229:fn_SetErrorLevel
230  VERIFY MAYBE 2> NUL
231  GOTO :EOF
232
233:usage
234  ECHO.
235  ECHO Usage: %~nx0 ^<processor^>
236  ECHO.
237  ECHO The only supported values for processor are "x86" and "x64".
238  GOTO errors
239
240:errors
241  CALL :fn_SetErrorLevel
242  ENDLOCAL
243  ECHO.
244  ECHO Failure, errors were encountered.
245  GOTO end_of_file
246
247:no_errors
248  CALL :fn_ResetErrorLevel
249  ENDLOCAL
250  ECHO.
251  ECHO Success, no errors were encountered.
252  GOTO end_of_file
253
254:end_of_file
255%__ECHO% EXIT /B %ERRORLEVEL%
256