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