xref: /sqlite-3.40.0/tool/GetTclKit.bat (revision 5b66350a)
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% unzip.exe %TCLKIT_SDK_ZIP%
200  GOTO :EOF
201
202:fn_TclKitX64Variables
203  IF NOT DEFINED TCLKIT_PATCHLEVEL (
204    REM
205    REM NOTE: By default, use latest available version of the TclKit SDK
206    REM       for x64.  However, the "default" TclKit executable for x86
207    REM       is still used here because it is the only one "well-known"
208    REM       to be available for download.
209    REM
210    SET TCLKIT_PATCHLEVEL=8.6.3
211    SET TCLKIT_EXE=tclkit-8.6.4.exe
212  ) ELSE (
213    SET TCLKIT_EXE=tclkit-%TCLKIT_PATCHLEVEL%.exe
214  )
215  SET TCLKIT_VERSION=%TCLKIT_PATCHLEVEL:.=%
216  SET TCLKIT_VERSION=%TCLKIT_VERSION:~0,2%
217  SET TCLKIT_LIB=libtclkit%TCLKIT_PATCHLEVEL:.=%.lib
218  SET TCLKIT_LIB_STUB=libtclstub%TCLKIT_VERSION:.=%.a
219  SET TCLKIT_SDK=libtclkit-sdk-x64-%TCLKIT_PATCHLEVEL%
220  SET TCLKIT_SDK_ZIP=%TCLKIT_SDK%.zip
221  SET TCLKIT_FILES=%TCLKIT_EXE% unzip.exe %TCLKIT_SDK_ZIP%
222  GOTO :EOF
223
224:fn_UnquoteVariable
225  IF NOT DEFINED %1 GOTO :EOF
226  SETLOCAL
227  SET __ECHO_CMD=ECHO %%%1%%
228  FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
229    SET VALUE=%%V
230  )
231  SET VALUE=%VALUE:"=%
232  REM "
233  ENDLOCAL && SET %1=%VALUE%
234  GOTO :EOF
235
236:fn_ResetErrorLevel
237  VERIFY > NUL
238  GOTO :EOF
239
240:fn_SetErrorLevel
241  VERIFY MAYBE 2> NUL
242  GOTO :EOF
243
244:usage
245  ECHO.
246  ECHO Usage: %~nx0 ^<processor^>
247  ECHO.
248  ECHO The only supported values for processor are "x86" and "x64".
249  GOTO errors
250
251:errors
252  CALL :fn_SetErrorLevel
253  ENDLOCAL
254  ECHO.
255  ECHO Failure, errors were encountered.
256  GOTO end_of_file
257
258:no_errors
259  CALL :fn_ResetErrorLevel
260  ENDLOCAL
261  ECHO.
262  ECHO Success, no errors were encountered.
263  GOTO end_of_file
264
265:end_of_file
266%__ECHO% EXIT /B %ERRORLEVEL%
267