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