xref: /sqlite-3.40.0/tool/GetTclKit.bat (revision dfe4e6bb)
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=https://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% TclKitVersion = '%TCLKIT_VERSION%'
79%_VECHO% TclKitPatchLevel = '%TCLKIT_PATCHLEVEL%'
80%_VECHO% TclKitNoEnv = '%TCLKIT_NOENV%'
81%_VECHO% TclKitNoSdk = '%TCLKIT_NOSDK%'
82%_VECHO% TclKitExe = '%TCLKIT_EXE%'
83%_VECHO% TclKitLib = '%TCLKIT_LIB%'
84%_VECHO% TclKitLibStub = '%TCLKIT_LIB_STUB%'
85%_VECHO% TclKitSdk = '%TCLKIT_SDK%'
86%_VECHO% TclKitSdkZip = '%TCLKIT_SDK_ZIP%'
87%_VECHO% TclKitFiles = '%TCLKIT_FILES%'
88
89CALL :fn_ResetErrorLevel
90
91FOR %%T IN (csc.exe) DO (
92  SET %%T_PATH=%%~dp$PATH:T
93)
94
95%_VECHO% Csc.exe_PATH = '%csc.exe_PATH%'
96
97IF DEFINED csc.exe_PATH (
98  GOTO skip_addToPath
99)
100
101IF DEFINED FRAMEWORKDIR (
102  REM Use the existing .NET Framework directory...
103) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v2.0.50727" (
104  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v2.0.50727
105) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v3.5" (
106  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v3.5
107) ELSE IF EXIST "%windir%\Microsoft.NET\Framework64\v4.0.30319" (
108  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework64\v4.0.30319
109) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v2.0.50727" (
110  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v2.0.50727
111) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v3.5" (
112  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v3.5
113) ELSE IF EXIST "%windir%\Microsoft.NET\Framework\v4.0.30319" (
114  SET FRAMEWORKDIR=%windir%\Microsoft.NET\Framework\v4.0.30319
115) ELSE (
116  ECHO No suitable version of the .NET Framework appears to be installed.
117  GOTO errors
118)
119
120%_VECHO% FrameworkDir = '%FRAMEWORKDIR%'
121
122IF NOT EXIST "%FRAMEWORKDIR%\csc.exe" (
123  ECHO The file "%FRAMEWORKDIR%\csc.exe" is missing.
124  GOTO errors
125)
126
127SET PATH=%FRAMEWORKDIR%;%PATH%
128
129:skip_addToPath
130
131IF NOT EXIST "%TEMP%\GetFile.exe" (
132  %__ECHO% csc.exe "/out:%TEMP%\GetFile.exe" /target:exe "%TOOLS%\GetFile.cs"
133
134  IF ERRORLEVEL 1 (
135    ECHO Compilation of "%TOOLS%\GetFile.cs" failed.
136    GOTO errors
137  )
138)
139
140FOR %%F IN (%TCLKIT_FILES%) DO (
141  IF NOT EXIST "%TEMP%\%%F" (
142    %__ECHO% "%TEMP%\GetFile.exe" "%TCLKIT_URI%%%F"
143
144    IF ERRORLEVEL 1 (
145      ECHO Download of "%%F" from "%TCLKIT_URI%" failed.
146      GOTO errors
147    )
148  )
149)
150
151IF DEFINED TCLKIT_NOENV GOTO skip_sdkUnZip
152IF DEFINED TCLKIT_NOSDK GOTO skip_sdkUnZip
153
154IF NOT EXIST "%TEMP%\%TCLKIT_SDK%" (
155  %__ECHO% MKDIR "%TEMP%\%TCLKIT_SDK%"
156
157  IF ERRORLEVEL 1 (
158    ECHO Could not create directory "%TEMP%\%TCLKIT_SDK%".
159    GOTO errors
160  )
161)
162
163%__ECHO% "%TEMP%\unzip.exe" -n "%TEMP%\%TCLKIT_SDK_ZIP%" -d "%TEMP%\%TCLKIT_SDK%"
164
165IF ERRORLEVEL 1 (
166  ECHO Could not unzip "%TEMP%\%TCLKIT_SDK_ZIP%" to "%TEMP%\%TCLKIT_SDK%".
167  GOTO errors
168)
169
170:skip_sdkUnZip
171
172IF DEFINED TCLKIT_NOENV GOTO skip_sdkEnvironment
173
174%__ECHO% ECHO SET TCLSH_CMD=%TEMP%\%TCLKIT_EXE%%OVERWRITE%"%ROOT%\SetTclKitEnv.bat"
175
176IF DEFINED TCLKIT_NOSDK GOTO skip_sdkVariables
177
178%__ECHO% ECHO SET TCLINCDIR=%TEMP%\%TCLKIT_SDK%\include%APPEND%"%ROOT%\SetTclKitEnv.bat"
179%__ECHO% ECHO SET TCLLIBDIR=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ROOT%\SetTclKitEnv.bat"
180%__ECHO% ECHO SET LIBTCLPATH=%TEMP%\%TCLKIT_SDK%\lib%APPEND%"%ROOT%\SetTclKitEnv.bat"
181%__ECHO% ECHO SET LIBTCL=%TCLKIT_LIB%%APPEND%"%ROOT%\SetTclKitEnv.bat"
182%__ECHO% ECHO SET LIBTCLSTUB=%TCLKIT_LIB_STUB%%APPEND%"%ROOT%\SetTclKitEnv.bat"
183
184:skip_sdkVariables
185
186ECHO.
187ECHO Wrote "%ROOT%\SetTclKitEnv.bat".
188ECHO Please run it to set the necessary Tcl environment variables.
189ECHO.
190
191:skip_sdkEnvironment
192
193GOTO no_errors
194
195:fn_TclKitX86Variables
196  IF NOT DEFINED TCLKIT_PATCHLEVEL (
197    SET TCLKIT_PATCHLEVEL=8.6.4
198  )
199  SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=%
200  SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2%
201  SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
202  SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
203  SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a
204  SET TCLKIT_SDK=libtclkit-sdk-x86-%TCLKIT_PATCHLEVEL%
205  SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
206  SET TCLKIT_FILES=%TCLKIT_EXE%
207  IF NOT DEFINED TCLKIT_NOENV IF NOT DEFINED TCLKIT_NOSDK (
208    SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP%
209  )
210  GOTO :EOF
211
212:fn_TclKitX64Variables
213  IF NOT DEFINED TCLKIT_PATCHLEVEL (
214    REM
215    REM NOTE: By default, use latest available version of the TclKit SDK
216    REM       for x64.  However, the "default" TclKit executable for x86
217    REM       is still used here because it is the only one "well-known"
218    REM       to be available for download.
219    REM
220    SET TCLKIT_PATCHLEVEL=8.6.3
221    SET TCLKIT_EXE=tclkit-8.6.4.exe
222  ) ELSE (
223    SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
224  )
225  SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=%
226  SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2%
227  SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
228  SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a
229  SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL%
230  SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
231  SET TCLKIT_FILES=%TCLKIT_EXE%
232  IF NOT DEFINED TCLKIT_NOENV IF NOT DEFINED TCLKIT_NOSDK (
233    SET TCLKIT_FILES=%TCLKIT_FILES% unzip.exe %TCLKIT_SDK_ZIP%
234  )
235  GOTO :EOF
236
237:fn_UnquoteVariable
238  IF NOT DEFINED %1 GOTO :EOF
239  SETLOCAL
240  SET __ECHO_CMD=ECHO %%%1%%
241  FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
242    SET VALUE=%%V
243  )
244  SET VALUE=%VALUE:"=%
245  REM "
246  ENDLOCAL && SET %1=%VALUE%
247  GOTO :EOF
248
249:fn_ResetErrorLevel
250  VERIFY > NUL
251  GOTO :EOF
252
253:fn_SetErrorLevel
254  VERIFY MAYBE 2> NUL
255  GOTO :EOF
256
257:usage
258  ECHO.
259  ECHO Usage: %~nx0 ^<processor^>
260  ECHO.
261  ECHO The only supported values for processor are "x86" and "x64".
262  GOTO errors
263
264:errors
265  CALL :fn_SetErrorLevel
266  ENDLOCAL
267  ECHO.
268  ECHO Failure, errors were encountered.
269  GOTO end_of_file
270
271:no_errors
272  CALL :fn_ResetErrorLevel
273  ENDLOCAL
274  ECHO.
275  ECHO Success, no errors were encountered.
276  GOTO end_of_file
277
278:end_of_file
279%__ECHO% EXIT /B %ERRORLEVEL%
280