Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: third_party/sqlite/sqlite-src-3170000/tool/build-all-msvc.bat

Issue 2747283002: [sql] Import reference version of SQLite 3.17.. (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 @ECHO OFF
2
3 ::
4 :: build-all-msvc.bat --
5 ::
6 :: Multi-Platform Build Tool for MSVC
7 ::
8
9 REM
10 REM This batch script is used to build the SQLite DLL for multiple platforms
11 REM and configurations using MSVC. The built SQLite DLLs, their associated
12 REM import libraries, and optionally their symbols files, are placed within
13 REM the directory specified on the command line, in sub-directories named for
14 REM their respective platforms and configurations. This batch script must be
15 REM run from inside a Visual Studio Command Prompt for the desired version of
16 REM Visual Studio ^(the initial platform configured for the command prompt does
17 REM not really matter^). Exactly one command line argument is required, the
18 REM name of an existing directory to be used as the final destination directory
19 REM for the generated output files, which will be placed in sub-directories
20 REM created therein. Ideally, the directory specified should be empty.
21 REM
22 REM Example:
23 REM
24 REM CD /D C:\dev\sqlite\core
25 REM CALL tool\build-all-msvc.bat C:\Temp
26 REM
27 REM In the example above, "C:\dev\sqlite\core" represents the root of the
28 REM source tree for SQLite and "C:\Temp" represents the final destination
29 REM directory for the generated output files.
30 REM
31 REM Please note that the SQLite build process performed by the Makefile
32 REM associated with this batch script requires a Tcl shell to be present
33 REM in a directory contained in the PATH environment variable unless a
34 REM pre-existing amalgamation file is used.
35 REM
36 REM There are several environment variables that may be set to modify the
37 REM behavior of this batch script and its associated Makefile. The list of
38 REM platforms to build may be overriden by using the PLATFORMS environment
39 REM variable, which should contain a list of platforms ^(e.g. x86 x86_amd64
40 REM x86_arm^). All platforms must be supported by the version of Visual Studio
41 REM being used. The list of configurations to build may be overridden by
42 REM setting the CONFIGURATIONS environment variable, which should contain a
43 REM list of configurations to build ^(e.g. Debug Retail^). Neither of these
44 REM variable values may contain any double quotes, surrounding or embedded.
45 REM
46 REM Finally, the NCRTLIBPATH, NUCRTLIBPATH, and NSDKLIBPATH environment
47 REM variables may be set to specify the location of the CRT, Universal CRT, and
48 REM Windows SDK, respectively, that may be needed to compile executables native
49 REM to the architecture of the build machine during any cross-compilation that
50 REM may be necessary, depending on the platforms to be built. These values in
51 REM these three variables should be surrounded by double quotes if they contain
52 REM spaces.
53 REM
54 REM There are a few other environment variables that impact the build process
55 REM when set ^(to anything^), they are:
56 REM
57 REM USE_AUTOCONF_MAKEFILE
58 REM
59 REM When set, the "autoconf" Makefile for MSVC will be used instead of the main
60 REM Makefile for MSVC. It must exist at "%ROOT%\autoconf\Makefile.msc".
61 REM
62 REM NOCLEAN
63 REM
64 REM When set, the "clean" target will not be used during each build iteration.
65 REM However, the target binaries, if any, will still be deleted manually prior
66 REM to being rebuilt. Setting this environment variable is only rarely needed
67 REM and could cause issues in some circumstances; therefore, setting it is not
68 REM recommended.
69 REM
70 REM NOSYMBOLS
71 REM
72 REM When set, copying of symbol files ^(*.pdb^) created during the build will
73 REM be skipped and they will not appear in the final destination directory.
74 REM Setting this environment variable is never strictly needed and could cause
75 REM issues in some circumstances; therefore, setting it is not recommended.
76 REM
77 REM NOMEMDEBUG
78 REM
79 REM When set, disables use of MEMDEBUG when building binaries for the "Debug"
80 REM configuration.
81 REM
82 REM BUILD_ALL_SHELL
83 REM
84 REM When set, the command line shell will be built for each selected platform
85 REM and configuration as well. In addition, the command line shell binaries
86 REM will be copied, with their symbols, to the final destination directory.
87 REM
88 REM USE_WINV63_NSDKLIBPATH
89 REM
90 REM When set, modifies how the NSDKLIBPATH environment variable is built, based
91 REM on the WindowsSdkDir environment variable. It forces this batch script to
92 REM assume the Windows 8.1 SDK location should be used.
93 REM
94 REM USE_WINV100_NSDKLIBPATH
95 REM
96 REM When set, modifies how the NSDKLIBPATH environment variable is built, based
97 REM on the WindowsSdkDir environment variable. It causes this batch script to
98 REM assume the Windows 10.0 SDK location should be used.
99 REM
100 REM NMAKE_ARGS
101 REM NMAKE_ARGS_DEBUG
102 REM NMAKE_ARGS_RETAIL
103 REM
104 REM When set, these values are expanded and passed to the NMAKE command line,
105 REM after its other arguments. These may be used to specify additional NMAKE
106 REM options, for example:
107 REM
108 REM SET NMAKE_ARGS=FOR_WINRT=1
109 REM SET NMAKE_ARGS_DEBUG=MEMDEBUG=1
110 REM SET NMAKE_ARGS_RETAIL=WIN32HEAP=1
111 REM
112 REM Using the above command before running this tool will cause the compiled
113 REM binaries to target the WinRT environment, which provides a subset of the
114 REM Win32 API.
115 REM
116 REM DLL_FILE_NAME
117 REM DLL_PDB_FILE_NAME
118 REM LIB_FILE_NAME
119 REM EXE_FILE_NAME
120 REM EXE_PDB_FILE_NAME
121 REM
122 REM When set, these values will override the associated target file name used
123 REM for the build.
124 REM
125 SETLOCAL
126
127 REM SET __ECHO=ECHO
128 REM SET __ECHO2=ECHO
129 REM SET __ECHO3=ECHO
130 IF NOT DEFINED _AECHO (SET _AECHO=REM)
131 IF NOT DEFINED _CECHO (SET _CECHO=REM)
132 IF NOT DEFINED _VECHO (SET _VECHO=REM)
133
134 SET REDIRECT=^>
135 IF DEFINED __ECHO SET REDIRECT=^^^>
136
137 %_AECHO% Running %0 %*
138
139 REM SET DFLAGS=/L
140
141 %_VECHO% DFlags = '%DFLAGS%'
142
143 SET FFLAGS=/V /F /G /H /I /R /Y /Z
144
145 %_VECHO% FFlags = '%FFLAGS%'
146
147 SET ROOT=%~dp0\..
148 SET ROOT=%ROOT:\\=\%
149
150 %_VECHO% Root = '%ROOT%'
151
152 REM
153 REM NOTE: The first and only argument to this batch file should be the output
154 REM directory where the platform-specific binary directories should be
155 REM created.
156 REM
157 SET BINARYDIRECTORY=%1
158
159 IF NOT DEFINED BINARYDIRECTORY (
160 GOTO usage
161 )
162
163 %_VECHO% BinaryDirectory = '%BINARYDIRECTORY%'
164
165 SET DUMMY=%2
166
167 IF DEFINED DUMMY (
168 GOTO usage
169 )
170
171 REM
172 REM NOTE: From this point, we need a clean error level. Reset it now.
173 REM
174 CALL :fn_ResetErrorLevel
175
176 REM
177 REM NOTE: Change the current directory to the root of the source tree, saving
178 REM the current directory on the directory stack.
179 REM
180 %__ECHO2% PUSHD "%ROOT%"
181
182 IF ERRORLEVEL 1 (
183 ECHO Could not change directory to "%ROOT%".
184 GOTO errors
185 )
186
187 REM
188 REM NOTE: This batch file requires the ComSpec environment variable to be set,
189 REM typically to something like "C:\Windows\System32\cmd.exe".
190 REM
191 IF NOT DEFINED ComSpec (
192 ECHO The ComSpec environment variable must be defined.
193 GOTO errors
194 )
195
196 REM
197 REM NOTE: This batch file requires the VcInstallDir environment variable to be
198 REM set. Tyipcally, this means this batch file needs to be run from an
199 REM MSVC command prompt.
200 REM
201 IF NOT DEFINED VCINSTALLDIR (
202 ECHO The VCINSTALLDIR environment variable must be defined.
203 GOTO errors
204 )
205
206 REM
207 REM NOTE: If the list of platforms is not already set, use the default list.
208 REM
209 IF NOT DEFINED PLATFORMS (
210 SET PLATFORMS=x86 x86_amd64 x86_arm
211 )
212
213 %_VECHO% Platforms = '%PLATFORMS%'
214
215 REM
216 REM NOTE: If the list of configurations is not already set, use the default
217 REM list.
218 REM
219 IF NOT DEFINED CONFIGURATIONS (
220 SET CONFIGURATIONS=Debug Retail
221 )
222
223 %_VECHO% Configurations = '%CONFIGURATIONS%'
224
225 REM
226 REM NOTE: If the command used to invoke NMAKE is not already set, use the
227 REM default.
228 REM
229 IF NOT DEFINED NMAKE_CMD (
230 IF DEFINED USE_AUTOCONF_MAKEFILE (
231 SET NMAKE_CMD=nmake -B -f autoconf\Makefile.msc
232 ) ELSE (
233 SET NMAKE_CMD=nmake -B -f Makefile.msc
234 )
235 )
236
237 %_VECHO% NmakeCmd = '%NMAKE_CMD%'
238 %_VECHO% NmakeArgs = '%NMAKE_ARGS%'
239 %_VECHO% NmakeArgsDebug = '%NMAKE_ARGS_DEBUG%'
240 %_VECHO% NmakeArgsRetail = '%NMAKE_ARGS_RETAIL%'
241
242 REM
243 REM NOTE: Setup environment variables to translate between the MSVC platform
244 REM names and the names to be used for the platform-specific binary
245 REM directories.
246 REM
247 SET amd64_NAME=x64
248 SET arm_NAME=ARM
249 SET x64_NAME=x64
250 SET x86_NAME=x86
251 SET x86_amd64_NAME=x64
252 SET x86_arm_NAME=ARM
253 SET x86_x64_NAME=x64
254
255 %_VECHO% amd64_Name = '%amd64_NAME%'
256 %_VECHO% arm_Name = '%arm_NAME%'
257 %_VECHO% x64_Name = '%x64_NAME%'
258 %_VECHO% x86_Name = '%x86_NAME%'
259 %_VECHO% x86_amd64_Name = '%x86_amd64_NAME%'
260 %_VECHO% x86_arm_Name = '%x86_arm_NAME%'
261 %_VECHO% x86_x64_Name = '%x86_x64_NAME%'
262
263 REM
264 REM NOTE: Check for the external tools needed during the build process ^(i.e.
265 REM those that do not get compiled as part of the build process itself^)
266 REM along the PATH.
267 REM
268 IF DEFINED TCLSH_CMD (
269 SET TCLSH_FILE=%TCLSH_CMD%
270 ) ELSE (
271 SET TCLSH_FILE=tclsh.exe
272 )
273
274 FOR %%T IN (%TCLSH_FILE%) DO (
275 SET %%T_PATH=%%~dp$PATH:T
276 )
277
278 REM
279 REM NOTE: A Tcl shell executable is required during the SQLite build process
280 REM unless a pre-existing amalgamation file is used.
281 REM
282 IF NOT DEFINED %TCLSH_FILE%_PATH (
283 ECHO The Tcl shell executable "%TCLSH_FILE%" is required to be in the PATH.
284 GOTO errors
285 )
286
287 REM
288 REM NOTE: Setup the default names for the build targets we are creating. Any
289 REM ^(or all^) of these may end up being overridden.
290 REM
291 IF NOT DEFINED DLL_FILE_NAME (
292 SET DLL_FILE_NAME=sqlite3.dll
293 )
294
295 IF NOT DEFINED DLL_PDB_FILE_NAME (
296 SET DLL_PDB_FILE_NAME=sqlite3.pdb
297 )
298
299 IF NOT DEFINED LIB_FILE_NAME (
300 SET LIB_FILE_NAME=sqlite3.lib
301 )
302
303 IF NOT DEFINED EXE_FILE_NAME (
304 SET EXE_FILE_NAME=sqlite3.exe
305 )
306
307 IF NOT DEFINED EXE_PDB_FILE_NAME (
308 SET EXE_PDB_FILE_NAME=sqlite3sh.pdb
309 )
310
311 REM
312 REM NOTE: Set the TOOLPATH variable to contain all the directories where the
313 REM external tools were found in the search above.
314 REM
315 CALL :fn_CopyVariable %TCLSH_FILE%_PATH TOOLPATH
316
317 %_VECHO% ToolPath = '%TOOLPATH%'
318
319 REM
320 REM NOTE: Setting the Windows SDK library path is only required for MSVC
321 REM 2012, 2013, and 2015.
322 REM
323 CALL :fn_UnsetVariable SET_NSDKLIBPATH
324
325 REM
326 REM NOTE: Setting the Universal CRT library path is only required for MSVC
327 REM 2015.
328 REM
329 CALL :fn_UnsetVariable SET_NUCRTLIBPATH
330
331 REM
332 REM NOTE: Check for MSVC 2012, 2013, and 2015 specially because the Windows
333 REM SDK directory handling is slightly different for those versions.
334 REM
335 IF "%VisualStudioVersion%" == "11.0" (
336 REM
337 REM NOTE: If the Windows SDK library path has already been set, do not set
338 REM it to something else later on.
339 REM
340 IF NOT DEFINED NSDKLIBPATH (
341 SET SET_NSDKLIBPATH=1
342 )
343 ) ELSE IF "%VisualStudioVersion%" == "12.0" (
344 REM
345 REM NOTE: If the Windows SDK library path has already been set, do not set
346 REM it to something else later on.
347 REM
348 IF NOT DEFINED NSDKLIBPATH (
349 SET SET_NSDKLIBPATH=1
350 )
351 ) ELSE IF "%VisualStudioVersion%" == "14.0" (
352 REM
353 REM NOTE: If the Windows SDK library path has already been set, do not set
354 REM it to something else later on.
355 REM
356 IF NOT DEFINED NSDKLIBPATH (
357 SET SET_NSDKLIBPATH=1
358 )
359
360 REM
361 REM NOTE: If the Universal CRT library path has already been set, do not set
362 REM it to something else later on.
363 REM
364 IF NOT DEFINED NUCRTLIBPATH (
365 SET SET_NUCRTLIBPATH=1
366 )
367 )
368
369 REM
370 REM NOTE: This is the name of the sub-directory where the UCRT libraries may
371 REM be found. It is only used when compiling against the UCRT.
372 REM
373 IF DEFINED UCRTVersion (
374 SET NUCRTVER=%UCRTVersion%
375 ) ELSE (
376 SET NUCRTVER=10.0.10586.0
377 )
378
379 REM
380 REM NOTE: This is the name of the sub-directory where the Windows 10.0 SDK
381 REM libraries may be found. It is only used when compiling with the
382 REM Windows 10.0 SDK.
383 REM
384 IF DEFINED WindowsSDKLibVersion (
385 SET WIN10SDKVER=%WindowsSDKLibVersion:\=%
386 ) ELSE (
387 SET WIN10SDKVER=%NUCRTVER%
388 )
389
390 REM
391 REM NOTE: Check if this is the Windows Phone SDK. If so, a different batch
392 REM file is necessary to setup the build environment. Since the variable
393 REM values involved here may contain parenthesis, using GOTO instead of
394 REM an IF block is required.
395 REM
396 IF DEFINED WindowsPhoneKitDir GOTO set_vcvarsall_phone
397 SET VCVARSALL=%VCINSTALLDIR%\vcvarsall.bat
398 GOTO set_vcvarsall_done
399 :set_vcvarsall_phone
400 SET VCVARSALL=%VCINSTALLDIR%\WPSDK\WP80\vcvarsphoneall.bat
401 :set_vcvarsall_done
402 SET VCVARSALL=%VCVARSALL:\\=\%
403
404 REM
405 REM NOTE: This is the outer loop. There should be exactly one iteration per
406 REM platform.
407 REM
408 FOR %%P IN (%PLATFORMS%) DO (
409 REM
410 REM NOTE: Using the MSVC platform name, lookup the simpler platform name to
411 REM be used for the name of the platform-specific binary directory via
412 REM the environment variables setup earlier.
413 REM
414 CALL :fn_CopyVariable %%P_NAME PLATFORMNAME
415
416 REM
417 REM NOTE: This is the second loop. There should be exactly one iteration.
418 REM This loop is necessary because the PlatformName environment
419 REM variable was set above and that value is needed by some of the
420 REM commands contained in the inner loop. If these commands were
421 REM directly contained in the outer loop, the PlatformName environment
422 REM variable would be stuck with its initial empty value instead.
423 REM
424 FOR /F "tokens=2* delims==" %%D IN ('SET PLATFORMNAME') DO (
425 REM
426 REM NOTE: Attempt to clean the environment of all variables used by MSVC
427 REM and/or Visual Studio. This block may need to be updated in the
428 REM future to account for additional environment variables.
429 REM
430 CALL :fn_UnsetVariable CommandPromptType
431 CALL :fn_UnsetVariable DevEnvDir
432 CALL :fn_UnsetVariable DNX_HOME
433 CALL :fn_UnsetVariable ExtensionSdkDir
434 CALL :fn_UnsetVariable Framework35Version
435 CALL :fn_UnsetVariable Framework40Version
436 CALL :fn_UnsetVariable FrameworkDir
437 CALL :fn_UnsetVariable FrameworkDir32
438 CALL :fn_UnsetVariable FrameworkVersion
439 CALL :fn_UnsetVariable FrameworkVersion32
440 CALL :fn_UnsetVariable FSHARPINSTALLDIR
441 CALL :fn_UnsetVariable INCLUDE
442 CALL :fn_UnsetVariable LIB
443 CALL :fn_UnsetVariable LIBPATH
444 CALL :fn_UnsetVariable NETFXSDKDir
445 CALL :fn_UnsetVariable Platform
446 CALL :fn_UnsetVariable UCRTVersion
447 CALL :fn_UnsetVariable UniversalCRTSdkDir
448 REM CALL :fn_UnsetVariable VCINSTALLDIR
449 CALL :fn_UnsetVariable VSINSTALLDIR
450 CALL :fn_UnsetVariable WindowsLibPath
451 CALL :fn_UnsetVariable WindowsPhoneKitDir
452 CALL :fn_UnsetVariable WindowsSdkDir
453 CALL :fn_UnsetVariable WindowsSdkDir_35
454 CALL :fn_UnsetVariable WindowsSdkDir_old
455 CALL :fn_UnsetVariable WindowsSDKLibVersion
456 CALL :fn_UnsetVariable WindowsSDKVersion
457 CALL :fn_UnsetVariable WindowsSDK_ExecutablePath_x86
458 CALL :fn_UnsetVariable WindowsSDK_ExecutablePath_x64
459
460 REM
461 REM NOTE: Reset the PATH here to the absolute bare minimum required.
462 REM
463 SET PATH=%TOOLPATH%;%SystemRoot%\System32;%SystemRoot%
464
465 REM
466 REM NOTE: This is the inner loop. There are normally two iterations, one
467 REM for each supported build configuration, e.g. Debug or Retail.
468 REM
469 FOR %%B IN (%CONFIGURATIONS%) DO (
470 REM
471 REM NOTE: When preparing the debug build, set the DEBUG and MEMDEBUG
472 REM environment variables to be picked up by the MSVC makefile
473 REM itself.
474 REM
475 %_AECHO% Building the %%B configuration for platform %%P with name %%D...
476
477 IF /I "%%B" == "Debug" (
478 REM
479 REM NOTE: Using this level for the DEBUG environment variable should
480 REM disable all compiler optimizations and prevent use of the
481 REM NDEBUG define. Additionally, both SQLITE_ENABLE_API_ARMOR
482 REM and SQLITE_DEBUG defines should be enabled.
483 REM
484 SET DEBUG=3
485
486 REM
487 REM NOTE: Setting this to non-zero should enable the SQLITE_MEMDEBUG
488 REM define.
489 REM
490 IF NOT DEFINED NOMEMDEBUG (
491 SET MEMDEBUG=1
492 )
493 ) ELSE (
494 CALL :fn_UnsetVariable DEBUG
495 CALL :fn_UnsetVariable MEMDEBUG
496 )
497
498 REM
499 REM NOTE: Copy the extra NMAKE arguments for this configuration into the
500 REM common variable used by the actual commands.
501 REM
502 CALL :fn_CopyVariable NMAKE_ARGS_%%B NMAKE_ARGS_CFG
503
504 REM
505 REM NOTE: Launch a nested command shell to perform the following steps:
506 REM
507 REM 1. Setup the MSVC environment for this platform using the
508 REM official batch file.
509 REM
510 REM 2. Make sure that no stale build output files are present.
511 REM
512 REM 3. Build the "sqlite3.dll" and "sqlite3.lib" binaries for this
513 REM platform.
514 REM
515 REM 4. Copy the "sqlite3.dll" and "sqlite3.lib" binaries for this
516 REM platform to the platform-specific directory beneath the
517 REM binary directory.
518 REM
519 REM 5. Unless prevented from doing so, copy the "sqlite3.pdb"
520 REM symbols file for this platform to the platform-specific
521 REM directory beneath the binary directory.
522 REM
523 "%ComSpec%" /C (
524 REM
525 REM NOTE: Attempt to setup the MSVC environment for this platform.
526 REM
527 %__ECHO3% CALL "%VCVARSALL%" %%P
528
529 IF ERRORLEVEL 1 (
530 ECHO Failed to call "%VCVARSALL%" for platform %%P.
531 GOTO errors
532 )
533
534 REM
535 REM NOTE: If this batch file is not running in "what-if" mode, check to
536 REM be sure we were actually able to setup the MSVC environment
537 REM as current versions of their official batch file do not set
538 REM the exit code upon failure.
539 REM
540 IF NOT DEFINED __ECHO3 (
541 IF NOT DEFINED WindowsPhoneKitDir (
542 IF NOT DEFINED WindowsSdkDir (
543 ECHO Cannot build, Windows SDK not found for platform %%P.
544 GOTO errors
545 )
546 )
547 )
548
549 REM
550 REM NOTE: When using MSVC 2012, 2013, or 2015, the native SDK path
551 REM cannot simply be the "lib" sub-directory beneath the location
552 REM specified in the WindowsSdkDir environment variable because
553 REM that location does not actually contain the necessary library
554 REM files for x86. This must be done for each iteration because
555 REM it relies upon the WindowsSdkDir environment variable being
556 REM set by the batch file used to setup the MSVC environment.
557 REM
558 IF DEFINED SET_NSDKLIBPATH (
559 REM
560 REM NOTE: The Windows Phone SDK has a slightly different directory
561 REM structure and must be handled specially here.
562 REM
563 IF DEFINED WindowsPhoneKitDir (
564 CALL :fn_CopyVariable WindowsPhoneKitDir NSDKLIBPATH
565 CALL :fn_AppendVariable NSDKLIBPATH \lib\x86
566 ) ELSE IF DEFINED WindowsSdkDir (
567 CALL :fn_CopyVariable WindowsSdkDir NSDKLIBPATH
568
569 REM
570 REM NOTE: The Windows 8.x and Windows 10.0 SDKs have a slightly
571 REM different directory naming conventions.
572 REM
573 IF DEFINED USE_WINV100_NSDKLIBPATH (
574 CALL :fn_AppendVariable NSDKLIBPATH \..\10\lib\%WIN10SDKVER%\um\x8 6
575 CALL :fn_CopyVariable WindowsSdkDir PSDKLIBPATH
576 CALL :fn_AppendVariable PSDKLIBPATH lib\%WIN10SDKVER%\um\%%D
577 ) ELSE IF DEFINED USE_WINV63_NSDKLIBPATH (
578 CALL :fn_AppendVariable NSDKLIBPATH \lib\winv6.3\um\x86
579 ) ELSE IF "%VisualStudioVersion%" == "12.0" (
580 CALL :fn_AppendVariable NSDKLIBPATH \..\8.0\lib\win8\um\x86
581 ) ELSE IF "%VisualStudioVersion%" == "14.0" (
582 CALL :fn_AppendVariable NSDKLIBPATH \..\8.0\lib\win8\um\x86
583 ) ELSE (
584 CALL :fn_AppendVariable NSDKLIBPATH \lib\win8\um\x86
585 )
586 )
587 )
588
589 REM
590 REM NOTE: When using MSVC 2015, setting the Universal CRT library path
591 REM for x86 may be required as well. This must also be done for
592 REM each iteration because it relies upon the UniversalCRTSdkDir
593 REM environment variable being set by the batch file used to
594 REM setup the MSVC environment.
595 REM
596 IF DEFINED SET_NUCRTLIBPATH (
597 IF DEFINED UniversalCRTSdkDir (
598 CALL :fn_CopyVariable UniversalCRTSdkDir NUCRTLIBPATH
599 CALL :fn_AppendVariable NUCRTLIBPATH \lib\%NUCRTVER%\ucrt\x86
600 )
601 )
602
603 REM
604 REM NOTE: Unless prevented from doing so, invoke NMAKE with the MSVC
605 REM makefile to clean any stale build output from previous
606 REM iterations of this loop and/or previous runs of this batch
607 REM file, etc.
608 REM
609 IF NOT DEFINED NOCLEAN (
610 CALL :fn_MakeClean %%D
611
612 IF ERRORLEVEL 1 (
613 ECHO Failed to clean for platform %%P.
614 GOTO errors
615 )
616 ) ELSE (
617 REM
618 REM NOTE: Even when the cleaning step has been disabled, we still
619 REM need to remove the build output for all the files we are
620 REM specifically wanting to build for each platform.
621 REM
622 %_AECHO% Cleaning final core library output files only...
623 %__ECHO% DEL /Q *.lo "%DLL_FILE_NAME%" "%LIB_FILE_NAME%" "%DLL_PDB_FIL E_NAME%" 2%REDIRECT% NUL
624 )
625
626 REM
627 REM NOTE: Call NMAKE with the MSVC makefile to build the "sqlite3.dll"
628 REM binary. The x86 compiler will be used to compile the native
629 REM command line tools needed during the build process itself.
630 REM Also, disable looking for and/or linking to the native Tcl
631 REM runtime library.
632 REM
633 CALL :fn_MakeDll %%D
634
635 IF ERRORLEVEL 1 (
636 ECHO Failed to build %%B "%DLL_FILE_NAME%" for platform %%P.
637 GOTO errors
638 )
639
640 REM
641 REM NOTE: Copy the "sqlite3.dll" file to the appropriate directory for
642 REM the build and platform beneath the binary directory.
643 REM
644 %__ECHO% XCOPY "%DLL_FILE_NAME%" "%BINARYDIRECTORY%\%%B\%%D\" %FFLAGS% % DFLAGS%
645
646 IF ERRORLEVEL 1 (
647 ECHO Failed to copy "%DLL_FILE_NAME%" to "%BINARYDIRECTORY%\%%B\%%D\".
648 GOTO errors
649 )
650
651 REM
652 REM NOTE: Copy the "sqlite3.lib" file to the appropriate directory for
653 REM the build and platform beneath the binary directory.
654 REM
655 %__ECHO% XCOPY "%LIB_FILE_NAME%" "%BINARYDIRECTORY%\%%B\%%D\" %FFLAGS% % DFLAGS%
656
657 IF ERRORLEVEL 1 (
658 ECHO Failed to copy "%LIB_FILE_NAME%" to "%BINARYDIRECTORY%\%%B\%%D\".
659 GOTO errors
660 )
661
662 REM
663 REM NOTE: Copy the "sqlite3.pdb" file to the appropriate directory for
664 REM the build and platform beneath the binary directory unless we
665 REM are prevented from doing so.
666 REM
667 IF NOT DEFINED NOSYMBOLS (
668 IF EXIST "%DLL_PDB_FILE_NAME%" (
669 %__ECHO% XCOPY "%DLL_PDB_FILE_NAME%" "%BINARYDIRECTORY%\%%B\%%D\" %F FLAGS% %DFLAGS%
670
671 IF ERRORLEVEL 1 (
672 ECHO Failed to copy "%DLL_PDB_FILE_NAME%" to "%BINARYDIRECTORY%\%% B\%%D\".
673 GOTO errors
674 )
675 )
676 )
677
678 REM
679 REM NOTE: If requested, also build the shell executable.
680 REM
681 IF DEFINED BUILD_ALL_SHELL (
682 REM
683 REM NOTE: If necessary, make sure any previous build output for the
684 REM shell executable is deleted.
685 REM
686 IF DEFINED NOCLEAN (
687 REM
688 REM NOTE: Even when the cleaning step has been disabled, we still
689 REM need to remove the build output for all the files we are
690 REM specifically wanting to build for each platform.
691 REM
692 %_AECHO% Cleaning final shell executable output files only...
693 %__ECHO% DEL /Q "%EXE_FILE_NAME%" "%EXE_PDB_FILE_NAME%" 2%REDIRECT% NUL
694 )
695
696 REM
697 REM NOTE: Call NMAKE with the MSVC makefile to build the "sqlite3.exe"
698 REM binary. The x86 compiler will be used to compile the native
699 REM command line tools needed during the build process itself.
700 REM Also, disable looking for and/or linking to the native Tcl
701 REM runtime library.
702 REM
703 CALL :fn_MakeExe %%D
704
705 IF ERRORLEVEL 1 (
706 ECHO Failed to build %%B "%EXE_FILE_NAME%" for platform %%P.
707 GOTO errors
708 )
709
710 REM
711 REM NOTE: Copy the "sqlite3.exe" file to the appropriate directory
712 REM for the build and platform beneath the binary directory.
713 REM
714 %__ECHO% XCOPY "%EXE_FILE_NAME%" "%BINARYDIRECTORY%\%%B\%%D\" %FFLAGS% %DFLAGS%
715
716 IF ERRORLEVEL 1 (
717 ECHO Failed to copy "%EXE_FILE_NAME%" to "%BINARYDIRECTORY%\%%B\%%D\ ".
718 GOTO errors
719 )
720
721 REM
722 REM NOTE: Copy the "sqlite3sh.pdb" file to the appropriate directory
723 REM for the build and platform beneath the binary directory
724 REM unless we are prevented from doing so.
725 REM
726 IF NOT DEFINED NOSYMBOLS (
727 IF EXIST "%EXE_PDB_FILE_NAME%" (
728 %__ECHO% XCOPY "%EXE_PDB_FILE_NAME%" "%BINARYDIRECTORY%\%%B\%%D\" %FFLAGS% %DFLAGS%
729
730 IF ERRORLEVEL 1 (
731 ECHO Failed to copy "%EXE_PDB_FILE_NAME%" to "%BINARYDIRECTORY%\ %%B\%%D\".
732 GOTO errors
733 )
734 )
735 )
736 )
737 )
738 )
739 )
740
741 REM
742 REM NOTE: Handle any errors generated during the nested command shell.
743 REM
744 IF ERRORLEVEL 1 (
745 GOTO errors
746 )
747 )
748
749 REM
750 REM NOTE: Restore the saved current directory from the directory stack.
751 REM
752 %__ECHO2% POPD
753
754 IF ERRORLEVEL 1 (
755 ECHO Could not restore directory.
756 GOTO errors
757 )
758
759 REM
760 REM NOTE: If we get to this point, we have succeeded.
761 REM
762 GOTO no_errors
763
764 :fn_MakeClean
765 %__ECHO% %NMAKE_CMD% clean "PLATFORM=%1" XCOMPILE=1 USE_NATIVE_LIBPATHS=1 NO_T CL=1 %NMAKE_ARGS% %NMAKE_ARGS_CFG%
766 GOTO :EOF
767
768 :fn_MakeDll
769 %__ECHO% %NMAKE_CMD% "%DLL_FILE_NAME%" "PLATFORM=%1" XCOMPILE=1 USE_NATIVE_LIB PATHS=1 NO_TCL=1 %NMAKE_ARGS% %NMAKE_ARGS_CFG%
770 GOTO :EOF
771
772 :fn_MakeExe
773 %__ECHO% %NMAKE_CMD% "%EXE_FILE_NAME%" "PLATFORM=%1" XCOMPILE=1 USE_NATIVE_LIB PATHS=1 NO_TCL=1 %NMAKE_ARGS% %NMAKE_ARGS_CFG%
774 GOTO :EOF
775
776 :fn_ShowVariable
777 SETLOCAL
778 SET __ECHO_CMD=ECHO %%%2%%
779 FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
780 IF NOT "%%V" == "" (
781 IF NOT "%%V" == "%%%2%%" (
782 %_VECHO% %1 = '%%V'
783 )
784 )
785 )
786 ENDLOCAL
787 GOTO :EOF
788
789 :fn_ResetErrorLevel
790 VERIFY > NUL
791 GOTO :EOF
792
793 :fn_SetErrorLevel
794 VERIFY MAYBE 2> NUL
795 GOTO :EOF
796
797 :fn_CopyVariable
798 IF NOT DEFINED %1 GOTO :EOF
799 IF "%2" == "" GOTO :EOF
800 SETLOCAL
801 SET __ECHO_CMD=ECHO %%%1%%
802 FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
803 SET VALUE=%%V
804 )
805 ENDLOCAL && SET %2=%VALUE%
806 GOTO :EOF
807
808 :fn_UnsetVariable
809 SETLOCAL
810 SET VALUE=%1
811 IF DEFINED VALUE (
812 SET VALUE=
813 ENDLOCAL
814 SET %VALUE%=
815 ) ELSE (
816 ENDLOCAL
817 )
818 CALL :fn_ResetErrorLevel
819 GOTO :EOF
820
821 :fn_AppendVariable
822 SET __ECHO_CMD=ECHO %%%1%%
823 IF DEFINED %1 (
824 FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
825 SET %1=%%V%~2
826 )
827 ) ELSE (
828 SET %1=%~2
829 )
830 SET __ECHO_CMD=
831 CALL :fn_ResetErrorLevel
832 GOTO :EOF
833
834 :usage
835 ECHO.
836 ECHO Usage: %~nx0 ^<binaryDirectory^>
837 ECHO.
838 GOTO errors
839
840 :errors
841 CALL :fn_SetErrorLevel
842 ENDLOCAL
843 ECHO.
844 ECHO Failure, errors were encountered.
845 GOTO end_of_file
846
847 :no_errors
848 CALL :fn_ResetErrorLevel
849 ENDLOCAL
850 ECHO.
851 ECHO Success, no errors were encountered.
852 GOTO end_of_file
853
854 :end_of_file
855 %__ECHO% EXIT /B %ERRORLEVEL%
OLDNEW
« no previous file with comments | « third_party/sqlite/sqlite-src-3170000/tool/addopcodes.tcl ('k') | third_party/sqlite/sqlite-src-3170000/tool/build-shell.sh » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698