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