summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc Espie <espie@cvs.openbsd.org>2012-11-29 05:12:07 +0000
committerMarc Espie <espie@cvs.openbsd.org>2012-11-29 05:12:07 +0000
commit89ecd126ef395f93a0f542ed684ec71f06c3a7f4 (patch)
treeb2bc786d7bd192b959c36b5cf6a1f4fdfc8115a2
parent4bd19d4632e0a26af00e12e3df2752b890092741 (diff)
minor update to 3.7.14.1
-rwxr-xr-xlib/libsqlite3/tool/build-all-msvc.bat444
-rw-r--r--lib/libsqlite3/tool/mkvsix.tcl548
2 files changed, 183 insertions, 809 deletions
diff --git a/lib/libsqlite3/tool/build-all-msvc.bat b/lib/libsqlite3/tool/build-all-msvc.bat
index 728183629b5..a2d7dae3a3e 100755
--- a/lib/libsqlite3/tool/build-all-msvc.bat
+++ b/lib/libsqlite3/tool/build-all-msvc.bat
@@ -6,61 +6,14 @@
:: Multi-Platform Build Tool for MSVC
::
-REM
-REM This batch script is used to build the SQLite DLL for multiple platforms
-REM and configurations using MSVC. The built SQLite DLLs, their associated
-REM import libraries, and optionally their symbols files, are placed within
-REM the directory specified on the command line, in sub-directories named for
-REM their respective platforms and configurations. This batch script must be
-REM run from inside a Visual Studio Command Prompt for the desired version of
-REM Visual Studio ^(the initial platform configured for the command prompt does
-REM not really matter^). Exactly one command line argument is required, the
-REM name of an existing directory to be used as the final destination directory
-REM for the generated output files, which will be placed in sub-directories
-REM created therein. Ideally, the directory specified should be empty.
-REM
-REM Example:
-REM
-REM CD /D C:\dev\sqlite\core
-REM tool\build-all-msvc.bat C:\Temp
-REM
-REM In the example above, "C:\dev\sqlite\core" represents the root of the
-REM source tree for SQLite and "C:\Temp" represents the final destination
-REM directory for the generated output files.
-REM
-REM There are several environment variables that may be set to modify the
-REM behavior of this batch script and its associated Makefile. The list of
-REM platforms to build may be overriden by using the PLATFORMS environment
-REM variable, which should contain a list of platforms ^(e.g. x86 x86_amd64
-REM x86_arm^). All platforms must be supported by the version of Visual Studio
-REM being used. The list of configurations to build may be overridden by
-REM setting the CONFIGURATIONS environment variable, which should contain a
-REM list of configurations to build ^(e.g. Debug Retail^). Neither of these
-REM variable values may contain any double quotes, surrounding or embedded.
-REM Finally, the NCRTLIBPATH and NSDKLIBPATH environment variables may be set
-REM to specify the location of the CRT and SDK, respectively, needed to compile
-REM executables native to the architecture of the build machine during any
-REM cross-compilation that may be necessary, depending on the platforms to be
-REM built. These values in these two variables should be surrounded by double
-REM quotes if they contain spaces.
-REM
-REM Please note that the SQLite build process performed by the Makefile
-REM associated with this batch script requires both Gawk ^(gawk.exe^) and Tcl
-REM 8.5 ^(tclsh85.exe^) to be present in a directory contained in the PATH
-REM environment variable unless a pre-existing amalgamation file is used.
-REM
SETLOCAL
REM SET __ECHO=ECHO
REM SET __ECHO2=ECHO
-REM SET __ECHO3=ECHO
IF NOT DEFINED _AECHO (SET _AECHO=REM)
IF NOT DEFINED _CECHO (SET _CECHO=REM)
IF NOT DEFINED _VECHO (SET _VECHO=REM)
-SET REDIRECT=^>
-IF DEFINED __ECHO SET REDIRECT=^^^>
-
%_AECHO% Running %0 %*
REM SET DFLAGS=/L
@@ -140,46 +93,17 @@ IF NOT DEFINED PLATFORMS (
%_VECHO% Platforms = '%PLATFORMS%'
REM
-REM NOTE: If the list of configurations is not already set, use the default
-REM list.
-REM
-IF NOT DEFINED CONFIGURATIONS (
- SET CONFIGURATIONS=Debug Retail
-)
-
-%_VECHO% Configurations = '%CONFIGURATIONS%'
-
-REM
-REM NOTE: If the command used to invoke NMAKE is not already set, use the
-REM default.
-REM
-IF NOT DEFINED NMAKE_CMD (
- SET NMAKE_CMD=nmake -B -f Makefile.msc
-)
-
-%_VECHO% NmakeCmd = '%NMAKE_CMD%'
-%_VECHO% NmakeArgs = '%NMAKE_ARGS%'
-
-REM
REM NOTE: Setup environment variables to translate between the MSVC platform
REM names and the names to be used for the platform-specific binary
REM directories.
REM
-SET amd64_NAME=x64
-SET arm_NAME=ARM
-SET x64_NAME=x64
SET x86_NAME=x86
SET x86_amd64_NAME=x64
SET x86_arm_NAME=ARM
-SET x86_x64_NAME=x64
-%_VECHO% amd64_Name = '%amd64_NAME%'
-%_VECHO% arm_Name = '%arm_NAME%'
-%_VECHO% x64_Name = '%x64_NAME%'
%_VECHO% x86_Name = '%x86_NAME%'
%_VECHO% x86_amd64_Name = '%x86_amd64_NAME%'
%_VECHO% x86_arm_Name = '%x86_arm_NAME%'
-%_VECHO% x86_x64_Name = '%x86_x64_NAME%'
REM
REM NOTE: Check for the external tools needed during the build process ^(i.e.
@@ -191,24 +115,6 @@ FOR %%T IN (gawk.exe tclsh85.exe) DO (
)
REM
-REM NOTE: The Gawk executable "gawk.exe" is required during the SQLite build
-REM process unless a pre-existing amalgamation file is used.
-REM
-IF NOT DEFINED gawk.exe_PATH (
- ECHO The Gawk executable "gawk.exe" is required to be in the PATH.
- GOTO errors
-)
-
-REM
-REM NOTE: The Tcl 8.5 executable "tclsh85.exe" is required during the SQLite
-REM build process unless a pre-existing amalgamation file is used.
-REM
-IF NOT DEFINED tclsh85.exe_PATH (
- ECHO The Tcl 8.5 executable "tclsh85.exe" is required to be in the PATH.
- GOTO errors
-)
-
-REM
REM NOTE: Set the TOOLPATH variable to contain all the directories where the
REM external tools were found in the search above.
REM
@@ -217,44 +123,16 @@ SET TOOLPATH=%gawk.exe_PATH%;%tclsh85.exe_PATH%
%_VECHO% ToolPath = '%TOOLPATH%'
REM
-REM NOTE: Check for MSVC 2012/2013 because the Windows SDK directory handling
-REM is slightly different for those versions.
+REM NOTE: Check for MSVC 2012 because the Windows SDK directory handling is
+REM slightly different for that version.
REM
IF "%VisualStudioVersion%" == "11.0" (
- REM
- REM NOTE: If the Windows SDK library path has already been set, do not set
- REM it to something else later on.
- REM
- IF NOT DEFINED NSDKLIBPATH (
- SET SET_NSDKLIBPATH=1
- )
-) ELSE IF "%VisualStudioVersion%" == "12.0" (
- REM
- REM NOTE: If the Windows SDK library path has already been set, do not set
- REM it to something else later on.
- REM
- IF NOT DEFINED NSDKLIBPATH (
- SET SET_NSDKLIBPATH=1
- )
+ SET SET_NSDKLIBPATH=1
) ELSE (
CALL :fn_UnsetVariable SET_NSDKLIBPATH
)
REM
-REM NOTE: Check if this is the Windows Phone SDK. If so, a different batch
-REM file is necessary to setup the build environment. Since the variable
-REM values involved here may contain parenthesis, using GOTO instead of
-REM an IF block is required.
-REM
-IF DEFINED WindowsPhoneKitDir GOTO set_vcvarsall_phone
-SET VCVARSALL=%VCINSTALLDIR%\vcvarsall.bat
-GOTO set_vcvarsall_done
-:set_vcvarsall_phone
-SET VCVARSALL=%VCINSTALLDIR%\WPSDK\WP80\vcvarsphoneall.bat
-:set_vcvarsall_done
-SET VCVARSALL=%VCVARSALL:\\=\%
-
-REM
REM NOTE: This is the outer loop. There should be exactly one iteration per
REM platform.
REM
@@ -264,10 +142,10 @@ FOR %%P IN (%PLATFORMS%) DO (
REM be used for the name of the platform-specific binary directory via
REM the environment variables setup earlier.
REM
- CALL :fn_CopyVariable %%P_NAME PLATFORMNAME
+ CALL :fn_SetVariable %%P_NAME PLATFORMNAME
REM
- REM NOTE: This is the second loop. There should be exactly one iteration.
+ REM NOTE: This is the inner loop. There should be exactly one iteration.
REM This loop is necessary because the PlatformName environment
REM variable was set above and that value is needed by some of the
REM commands contained in the inner loop. If these commands were
@@ -280,11 +158,9 @@ FOR %%P IN (%PLATFORMS%) DO (
REM and/or Visual Studio. This block may need to be updated in the
REM future to account for additional environment variables.
REM
- CALL :fn_UnsetVariable CommandPromptType
CALL :fn_UnsetVariable DevEnvDir
CALL :fn_UnsetVariable ExtensionSdkDir
CALL :fn_UnsetVariable Framework35Version
- CALL :fn_UnsetVariable Framework40Version
CALL :fn_UnsetVariable FrameworkDir
CALL :fn_UnsetVariable FrameworkDir32
CALL :fn_UnsetVariable FrameworkVersion
@@ -296,12 +172,9 @@ FOR %%P IN (%PLATFORMS%) DO (
CALL :fn_UnsetVariable Platform
REM CALL :fn_UnsetVariable VCINSTALLDIR
CALL :fn_UnsetVariable VSINSTALLDIR
- CALL :fn_UnsetVariable WindowsPhoneKitDir
CALL :fn_UnsetVariable WindowsSdkDir
CALL :fn_UnsetVariable WindowsSdkDir_35
CALL :fn_UnsetVariable WindowsSdkDir_old
- CALL :fn_UnsetVariable WindowsSDK_ExecutablePath_x86
- CALL :fn_UnsetVariable WindowsSDK_ExecutablePath_x64
REM
REM NOTE: Reset the PATH here to the absolute bare minimum required.
@@ -309,245 +182,128 @@ FOR %%P IN (%PLATFORMS%) DO (
SET PATH=%TOOLPATH%;%SystemRoot%\System32;%SystemRoot%
REM
- REM NOTE: This is the inner loop. There are normally two iterations, one
- REM for each supported build configuration, e.g. Debug or Retail.
+ REM NOTE: Launch a nested command shell to perform the following steps:
+ REM
+ REM 1. Setup the MSVC environment for this platform using the
+ REM official batch file.
REM
- FOR %%B IN (%CONFIGURATIONS%) DO (
+ REM 2. Make sure that no stale build output files are present.
+ REM
+ REM 3. Build the "sqlite3.dll" and "sqlite3.lib" binaries for this
+ REM platform.
+ REM
+ REM 4. Copy the "sqlite3.dll" and "sqlite3.lib" binaries for this
+ REM platform to the platform-specific directory beneath the
+ REM binary directory.
+ REM
+ "%ComSpec%" /C (
REM
- REM NOTE: When preparing the debug build, set the DEBUG and MEMDEBUG
- REM environment variables to be picked up by the MSVC makefile
- REM itself.
+ REM NOTE: Attempt to setup the MSVC environment for this platform.
REM
- %_AECHO% Building the %%B configuration for platform %%P with name %%D...
-
- IF /I "%%B" == "Debug" (
- REM
- REM NOTE: Using this level for the DEBUG environment variable should
- REM disable all compiler optimizations and prevent use of the
- REM NDEBUG define. Additionally, both SQLITE_ENABLE_API_ARMOR
- REM and SQLITE_DEBUG defines should be enabled.
- REM
- SET DEBUG=3
+ %__ECHO% CALL "%VCINSTALLDIR%\vcvarsall.bat" %%P
- REM
- REM NOTE: Setting this to non-zero should enable the SQLITE_MEMDEBUG
- REM define.
- REM
- SET MEMDEBUG=1
- ) ELSE (
- CALL :fn_UnsetVariable DEBUG
- CALL :fn_UnsetVariable MEMDEBUG
+ IF ERRORLEVEL 1 (
+ ECHO Failed to call "%VCINSTALLDIR%\vcvarsall.bat" for platform %%P.
+ GOTO errors
)
REM
- REM NOTE: Launch a nested command shell to perform the following steps:
+ REM NOTE: If this batch file is not running in "what-if" mode, check to
+ REM be sure we were actually able to setup the MSVC environment as
+ REM current versions of their official batch file do not set the
+ REM exit code upon failure.
REM
- REM 1. Setup the MSVC environment for this platform using the
- REM official batch file.
- REM
- REM 2. Make sure that no stale build output files are present.
+ IF NOT DEFINED __ECHO (
+ IF NOT DEFINED WindowsSdkDir (
+ ECHO Cannot build, Windows SDK not found for platform %%P.
+ GOTO errors
+ )
+ )
+
REM
- REM 3. Build the "sqlite3.dll" and "sqlite3.lib" binaries for this
- REM platform.
+ REM NOTE: When using MSVC 2012, the native SDK path cannot simply use
+ REM the "lib" sub-directory beneath the location specified in the
+ REM WindowsSdkDir environment variable because that location does
+ REM not actually contain the necessary library files for x86.
+ REM This must be done for each iteration because it relies upon
+ REM the WindowsSdkDir environment variable being set by the batch
+ REM file used to setup the MSVC environment.
REM
- REM 4. Copy the "sqlite3.dll" and "sqlite3.lib" binaries for this
- REM platform to the platform-specific directory beneath the
- REM binary directory.
+ IF DEFINED SET_NSDKLIBPATH (
+ CALL :fn_SetVariable WindowsSdkDir NSDKLIBPATH
+ CALL :fn_AppendVariable NSDKLIBPATH \lib\win8\um\x86
+ )
+
REM
- REM 5. Unless prevented from doing so, copy the "sqlite3.pdb"
- REM symbols file for this platform to the platform-specific
- REM directory beneath the binary directory.
+ REM NOTE: Unless prevented from doing so, invoke NMAKE with the MSVC
+ REM makefile to clean any stale build output from previous
+ REM iterations of this loop and/or previous runs of this batch
+ REM file, etc.
REM
- "%ComSpec%" /C (
- REM
- REM NOTE: Attempt to setup the MSVC environment for this platform.
- REM
- %__ECHO3% CALL "%VCVARSALL%" %%P
+ IF NOT DEFINED NOCLEAN (
+ %__ECHO% nmake -f Makefile.msc clean
IF ERRORLEVEL 1 (
- ECHO Failed to call "%VCVARSALL%" for platform %%P.
+ ECHO Failed to clean for platform %%P.
GOTO errors
)
-
+ ) ELSE (
REM
- REM NOTE: If this batch file is not running in "what-if" mode, check to
- REM be sure we were actually able to setup the MSVC environment
- REM as current versions of their official batch file do not set
- REM the exit code upon failure.
+ REM NOTE: Even when the cleaning step has been disabled, we still need
+ REM to remove the build output for the files we are specifically
+ REM wanting to build for each platform.
REM
- IF NOT DEFINED __ECHO3 (
- IF NOT DEFINED WindowsPhoneKitDir (
- IF NOT DEFINED WindowsSdkDir (
- ECHO Cannot build, Windows SDK not found for platform %%P.
- GOTO errors
- )
- )
- )
+ %__ECHO% DEL /Q sqlite3.dll sqlite3.lib sqlite3.pdb
+ )
- REM
- REM NOTE: When using MSVC 2012 and/or 2013, the native SDK path cannot
- REM simply use the "lib" sub-directory beneath the location
- REM specified in the WindowsSdkDir environment variable because
- REM that location does not actually contain the necessary library
- REM files for x86. This must be done for each iteration because
- REM it relies upon the WindowsSdkDir environment variable being
- REM set by the batch file used to setup the MSVC environment.
- REM
- IF DEFINED SET_NSDKLIBPATH (
- REM
- REM NOTE: The Windows Phone SDK has a slightly different directory
- REM structure and must be handled specially here.
- REM
- IF DEFINED WindowsPhoneKitDir (
- CALL :fn_CopyVariable WindowsPhoneKitDir NSDKLIBPATH
- CALL :fn_AppendVariable NSDKLIBPATH \lib\x86
- ) ELSE IF DEFINED WindowsSdkDir (
- CALL :fn_CopyVariable WindowsSdkDir NSDKLIBPATH
-
- REM
- REM NOTE: The Windows 8.1 SDK has a slightly different directory
- REM naming convention.
- REM
- IF DEFINED USE_WINV63_NSDKLIBPATH (
- CALL :fn_AppendVariable NSDKLIBPATH \lib\winv6.3\um\x86
- ) ELSE IF "%VisualStudioVersion%" == "12.0" (
- CALL :fn_AppendVariable NSDKLIBPATH \..\8.0\lib\win8\um\x86
- ) ELSE (
- CALL :fn_AppendVariable NSDKLIBPATH \lib\win8\um\x86
- )
- )
- )
+ REM
+ REM NOTE: Invoke NMAKE with the MSVC makefile to build the "sqlite3.dll"
+ REM binary. The x86 compiler will be used to compile the native
+ REM command line tools needed during the build process itself.
+ REM Also, disable looking for and/or linking to the native Tcl
+ REM runtime library.
+ REM
+ %__ECHO% nmake -f Makefile.msc sqlite3.dll "NCC=""%VCINSTALLDIR%\bin\cl.exe""" USE_NATIVE_LIBPATHS=1 NO_TCL=1 %NMAKE_ARGS%
- REM
- REM NOTE: Unless prevented from doing so, invoke NMAKE with the MSVC
- REM makefile to clean any stale build output from previous
- REM iterations of this loop and/or previous runs of this batch
- REM file, etc.
- REM
- IF NOT DEFINED NOCLEAN (
- %__ECHO% %NMAKE_CMD% clean
-
- IF ERRORLEVEL 1 (
- ECHO Failed to clean for platform %%P.
- GOTO errors
- )
- ) ELSE (
- REM
- REM NOTE: Even when the cleaning step has been disabled, we still
- REM need to remove the build output for all the files we are
- REM specifically wanting to build for each platform.
- REM
- %_AECHO% Cleaning final core library output files only...
- %__ECHO% DEL /Q *.lo sqlite3.dll sqlite3.lib sqlite3.pdb 2%REDIRECT% NUL
- )
+ IF ERRORLEVEL 1 (
+ ECHO Failed to build "sqlite3.dll" for platform %%P.
+ GOTO errors
+ )
- REM
- REM NOTE: Call NMAKE with the MSVC makefile to build the "sqlite3.dll"
- REM binary. The x86 compiler will be used to compile the native
- REM command line tools needed during the build process itself.
- REM Also, disable looking for and/or linking to the native Tcl
- REM runtime library.
- REM
- %__ECHO% %NMAKE_CMD% sqlite3.dll XCOMPILE=1 USE_NATIVE_LIBPATHS=1 NO_TCL=1 %NMAKE_ARGS%
+ REM
+ REM NOTE: Copy the "sqlite3.dll" file to the platform-specific directory
+ REM beneath the binary directory.
+ REM
+ %__ECHO% XCOPY sqlite3.dll "%BINARYDIRECTORY%\%%D\" %FFLAGS% %DFLAGS%
- IF ERRORLEVEL 1 (
- ECHO Failed to build %%B "sqlite3.dll" for platform %%P.
- GOTO errors
- )
+ IF ERRORLEVEL 1 (
+ ECHO Failed to copy "sqlite3.dll" to "%BINARYDIRECTORY%\%%D\".
+ GOTO errors
+ )
- REM
- REM NOTE: Copy the "sqlite3.dll" file to the appropriate directory for
- REM the build and platform beneath the binary directory.
- REM
- %__ECHO% XCOPY sqlite3.dll "%BINARYDIRECTORY%\%%B\%%D\" %FFLAGS% %DFLAGS%
+ REM
+ REM NOTE: Copy the "sqlite3.lib" file to the platform-specific directory
+ REM beneath the binary directory.
+ REM
+ %__ECHO% XCOPY sqlite3.lib "%BINARYDIRECTORY%\%%D\" %FFLAGS% %DFLAGS%
- IF ERRORLEVEL 1 (
- ECHO Failed to copy "sqlite3.dll" to "%BINARYDIRECTORY%\%%B\%%D\".
- GOTO errors
- )
+ IF ERRORLEVEL 1 (
+ ECHO Failed to copy "sqlite3.lib" to "%BINARYDIRECTORY%\%%D\".
+ GOTO errors
+ )
- REM
- REM NOTE: Copy the "sqlite3.lib" file to the appropriate directory for
- REM the build and platform beneath the binary directory.
- REM
- %__ECHO% XCOPY sqlite3.lib "%BINARYDIRECTORY%\%%B\%%D\" %FFLAGS% %DFLAGS%
+ REM
+ REM NOTE: Copy the "sqlite3.pdb" file to the platform-specific directory
+ REM beneath the binary directory unless we are prevented from doing
+ REM so.
+ REM
+ IF NOT DEFINED NOSYMBOLS (
+ %__ECHO% XCOPY sqlite3.pdb "%BINARYDIRECTORY%\%%D\" %FFLAGS% %DFLAGS%
IF ERRORLEVEL 1 (
- ECHO Failed to copy "sqlite3.lib" to "%BINARYDIRECTORY%\%%B\%%D\".
+ ECHO Failed to copy "sqlite3.pdb" to "%BINARYDIRECTORY%\%%D\".
GOTO errors
)
-
- REM
- REM NOTE: Copy the "sqlite3.pdb" file to the appropriate directory for
- REM the build and platform beneath the binary directory unless we
- REM are prevented from doing so.
- REM
- IF NOT DEFINED NOSYMBOLS (
- %__ECHO% XCOPY sqlite3.pdb "%BINARYDIRECTORY%\%%B\%%D\" %FFLAGS% %DFLAGS%
-
- IF ERRORLEVEL 1 (
- ECHO Failed to copy "sqlite3.pdb" to "%BINARYDIRECTORY%\%%B\%%D\".
- GOTO errors
- )
- )
-
- REM
- REM NOTE: If requested, also build the shell executable.
- REM
- IF DEFINED BUILD_ALL_SHELL (
- REM
- REM NOTE: If necessary, make sure any previous build output for the
- REM shell executable is deleted.
- REM
- IF DEFINED NOCLEAN (
- REM
- REM NOTE: Even when the cleaning step has been disabled, we still
- REM need to remove the build output for all the files we are
- REM specifically wanting to build for each platform.
- REM
- %_AECHO% Cleaning final shell executable output files only...
- %__ECHO% DEL /Q sqlite3.exe sqlite3sh.pdb 2%REDIRECT% NUL
- )
-
- REM
- REM NOTE: Call NMAKE with the MSVC makefile to build the "sqlite3.exe"
- REM binary. The x86 compiler will be used to compile the native
- REM command line tools needed during the build process itself.
- REM Also, disable looking for and/or linking to the native Tcl
- REM runtime library.
- REM
- %__ECHO% %NMAKE_CMD% sqlite3.exe XCOMPILE=1 USE_NATIVE_LIBPATHS=1 NO_TCL=1 %NMAKE_ARGS%
-
- IF ERRORLEVEL 1 (
- ECHO Failed to build %%B "sqlite3.exe" for platform %%P.
- GOTO errors
- )
-
- REM
- REM NOTE: Copy the "sqlite3.exe" file to the appropriate directory
- REM for the build and platform beneath the binary directory.
- REM
- %__ECHO% XCOPY sqlite3.exe "%BINARYDIRECTORY%\%%B\%%D\" %FFLAGS% %DFLAGS%
-
- IF ERRORLEVEL 1 (
- ECHO Failed to copy "sqlite3.exe" to "%BINARYDIRECTORY%\%%B\%%D\".
- GOTO errors
- )
-
- REM
- REM NOTE: Copy the "sqlite3sh.pdb" file to the appropriate directory
- REM for the build and platform beneath the binary directory
- REM unless we are prevented from doing so.
- REM
- IF NOT DEFINED NOSYMBOLS (
- %__ECHO% XCOPY sqlite3sh.pdb "%BINARYDIRECTORY%\%%B\%%D\" %FFLAGS% %DFLAGS%
-
- IF ERRORLEVEL 1 (
- ECHO Failed to copy "sqlite3sh.pdb" to "%BINARYDIRECTORY%\%%B\%%D\".
- GOTO errors
- )
- )
- )
)
)
)
@@ -583,10 +339,10 @@ GOTO no_errors
VERIFY MAYBE 2> NUL
GOTO :EOF
-:fn_CopyVariable
+:fn_SetVariable
+ SETLOCAL
IF NOT DEFINED %1 GOTO :EOF
IF "%2" == "" GOTO :EOF
- SETLOCAL
SET __ECHO_CMD=ECHO %%%1%%
FOR /F "delims=" %%V IN ('%__ECHO_CMD%') DO (
SET VALUE=%%V
diff --git a/lib/libsqlite3/tool/mkvsix.tcl b/lib/libsqlite3/tool/mkvsix.tcl
index 208ce2b1421..a7517786c51 100644
--- a/lib/libsqlite3/tool/mkvsix.tcl
+++ b/lib/libsqlite3/tool/mkvsix.tcl
@@ -2,99 +2,7 @@
#
# This script is used to generate a VSIX (Visual Studio Extension) file for
# SQLite usable by Visual Studio.
-#
-# PREREQUISITES
-#
-# 1. Tcl 8.4 and later are supported, earlier versions have not been tested.
-#
-# 2. The "sqlite3.h" file is assumed to exist in the parent directory of the
-# directory containing this script. The [optional] second command line
-# argument to this script may be used to specify an alternate location.
-# This script also assumes that the "sqlite3.h" file corresponds with the
-# version of the binaries to be packaged. This assumption is not verified
-# by this script.
-#
-# 3. The temporary directory specified in the TEMP or TMP environment variables
-# must refer to an existing directory writable by the current user.
-#
-# 4. The "zip" and "unzip" command line tools must be located either in a
-# directory contained in the PATH environment variable or specified as the
-# exact file names to execute in the "ZipTool" and "UnZipTool" environment
-# variables, respectively.
-#
-# 5. The template VSIX file (which is basically a zip file) must be located in
-# a "win" directory inside the directory containing this script. It should
-# not contain any executable binaries. It should only contain dynamic
-# textual content files to be processed using [subst] and/or static content
-# files to be copied verbatim.
-#
-# 6. The executable and other compiled binary files to be packaged into the
-# final VSIX file (e.g. DLLs, LIBs, and PDBs) must be located in a single
-# directory tree. The top-level directory of the tree must be specified as
-# the first command line argument to this script. The second level
-# sub-directory names must match those of the build configuration (e.g.
-# "Debug" or "Retail"). The third level sub-directory names must match
-# those of the platform (e.g. "x86", "x64", and "ARM"). For example, the
-# binary files to be packaged would need to be organized as follows when
-# packaging the "Debug" and "Retail" build configurations for the "x86" and
-# "x64" platforms (in this example, "C:\temp" is the top-level directory as
-# specified in the first command line argument):
-#
-# C:\Temp\Debug\x86\sqlite3.lib
-# C:\Temp\Debug\x86\sqlite3.dll
-# C:\Temp\Debug\x86\sqlite3.pdb
-# C:\Temp\Debug\x64\sqlite3.lib
-# C:\Temp\Debug\x64\sqlite3.dll
-# C:\Temp\Debug\x64\sqlite3.pdb
-# C:\Temp\Retail\x86\sqlite3.lib
-# C:\Temp\Retail\x86\sqlite3.dll
-# C:\Temp\Retail\x86\sqlite3.pdb
-# C:\Temp\Retail\x64\sqlite3.lib
-# C:\Temp\Retail\x64\sqlite3.dll
-# C:\Temp\Retail\x64\sqlite3.pdb
-#
-# The above directory tree organization is performed automatically if the
-# "tool\build-all-msvc.bat" batch script is used to build the binary files
-# to be packaged.
-#
-# USAGE
-#
-# The first argument to this script is required and must be the name of the
-# top-level directory containing the directories and files organized into a
-# tree as described in item 6 of the PREREQUISITES section, above. The second
-# argument is optional and if present must contain the name of the directory
-# containing the root of the source tree for SQLite. The third argument is
-# optional and if present must contain the flavor the VSIX package to build.
-# Currently, the only supported package flavors are "WinRT", "WinRT81", "WP80",
-# "WP81", and "Win32". The fourth argument is optional and if present must be
-# a string containing a list of platforms to include in the VSIX package. The
-# platform list is "platform1,platform2,platform3". The fifth argument is
-# optional and if present must contain the version of Visual Studio required by
-# the package. Currently, the only supported versions are "2012" and "2013".
-# The package flavors "WinRT81" and "WP81" are only supported when the Visual
-# Studio version is "2013". Typically, when on Windows, this script is
-# executed using commands similar to the following from a normal Windows
-# command prompt:
-#
-# CD /D C:\dev\sqlite\core
-# tclsh85 tool\mkvsix.tcl C:\Temp
-#
-# In the example above, "C:\dev\sqlite\core" represents the root of the source
-# tree for SQLite and "C:\Temp" represents the top-level directory containing
-# the executable and other compiled binary files, organized into a directory
-# tree as described in item 6 of the PREREQUISITES section, above.
-#
-# This script should work on non-Windows platforms as well, provided that all
-# the requirements listed in the PREREQUISITES section are met.
-#
-# NOTES
-#
-# The temporary directory is used as a staging area for the final VSIX file.
-# The template VSIX file is extracted, its contents processed, and then the
-# resulting files are packaged into the final VSIX file.
-#
-package require Tcl 8.4
-
+
proc fail { {error ""} {usage false} } {
if {[string length $error] > 0} then {
puts stdout $error
@@ -103,8 +11,7 @@ proc fail { {error ""} {usage false} } {
puts stdout "usage:\
[file tail [info nameofexecutable]]\
-[file tail [info script]] <binaryDirectory> \[sourceDirectory\]\
-\[packageFlavor\] \[platformNames\] \[vsVersion\]"
+[file tail [info script]] <binaryDirectory> \[sourceDirectory\]"
exit 1
}
@@ -174,104 +81,23 @@ proc writeFile { fileName data } {
return ""
}
-proc getMinVsVersionXmlChunk { vsVersion } {
- switch -exact $vsVersion {
- 2012 {
- return [appendArgs \
- "\r\n " {MinVSVersion="11.0"}]
- }
- 2013 {
- return [appendArgs \
- "\r\n " {MinVSVersion="12.0"}]
- }
- default {
- return ""
- }
- }
-}
-
-proc getMaxPlatformVersionXmlChunk { packageFlavor vsVersion } {
- #
- # NOTE: Only Visual Studio 2013 supports this SDK manifest attribute.
- #
- if {![string equal $vsVersion 2013]} then {
- return ""
- }
-
- switch -exact $packageFlavor {
- WinRT {
- return [appendArgs \
- "\r\n " {MaxPlatformVersion="8.0"}]
- }
- WinRT81 {
- return [appendArgs \
- "\r\n " {MaxPlatformVersion="8.1"}]
- }
- WP80 {
- return [appendArgs \
- "\r\n " {MaxPlatformVersion="8.0"}]
- }
- WP81 {
- return [appendArgs \
- "\r\n " {MaxPlatformVersion="8.1"}]
- }
- default {
- return ""
- }
- }
-}
-
-proc getExtraFileListXmlChunk { packageFlavor vsVersion } {
+proc substFile { fileName } {
#
- # NOTE: Windows Phone 8.0 does not require any extra attributes in its VSIX
- # package SDK manifests; however, it appears that Windows Phone 8.1
- # does.
+ # NOTE: Performs all Tcl command, variable, and backslash substitutions in
+ # the specified file and then re-writes the contents of that same file
+ # with the substituted data.
#
- if {[string equal $packageFlavor WP80]} then {
- return ""
- }
-
- set appliesTo [expr {[string equal $packageFlavor Win32] ? \
- "VisualC" : "WindowsAppContainer"}]
-
- switch -exact $vsVersion {
- 2012 {
- return [appendArgs \
- "\r\n " AppliesTo=\" $appliesTo \" \
- "\r\n " {DependsOn="Microsoft.VCLibs, version=11.0"}]
- }
- 2013 {
- return [appendArgs \
- "\r\n " AppliesTo=\" $appliesTo \" \
- "\r\n " {DependsOn="Microsoft.VCLibs, version=12.0"}]
- }
- default {
- return ""
- }
- }
+ return [writeFile $fileName [uplevel 1 [list subst [readFile $fileName]]]]
}
-proc replaceFileNameTokens { fileName name buildName platformName } {
+proc replacePlatform { fileName platformName } {
#
# NOTE: Returns the specified file name containing the platform name instead
# of platform placeholder tokens.
#
- return [string map [list <build> $buildName <platform> $platformName \
- <name> $name] $fileName]
+ return [string map [list <platform> $platformName] $fileName]
}
-proc substFile { fileName } {
- #
- # NOTE: Performs all Tcl command, variable, and backslash substitutions in
- # the specified file and then rewrites the contents of that same file
- # with the substituted data.
- #
- return [writeFile $fileName [uplevel 1 [list subst [readFile $fileName]]]]
-}
-
-#
-# NOTE: This is the entry point for this script.
-#
set script [file normalize [info script]]
if {[string length $script] == 0} then {
@@ -287,7 +113,7 @@ set rootName [file rootname [file tail $script]]
# NOTE: Process and verify all the command line arguments.
#
set argc [llength $argv]
-if {$argc < 1 || $argc > 5} then {fail}
+if {$argc != 1 && $argc != 2} then {fail}
set binaryDirectory [lindex $argv 0]
@@ -300,7 +126,7 @@ if {![file exists $binaryDirectory] || \
fail "binary directory does not exist"
}
-if {$argc >= 2} then {
+if {$argc == 2} then {
set sourceDirectory [lindex $argv 1]
} else {
#
@@ -319,136 +145,6 @@ if {![file exists $sourceDirectory] || \
fail "source directory does not exist"
}
-if {$argc >= 3} then {
- set packageFlavor [lindex $argv 2]
-} else {
- #
- # NOTE: Assume the package flavor is WinRT.
- #
- set packageFlavor WinRT
-}
-
-if {[string length $packageFlavor] == 0} then {
- fail "invalid package flavor"
-}
-
-if {$argc >= 4} then {
- set platformNames [list]
-
- foreach platformName [split [lindex $argv 3] ", "] {
- set platformName [string trim $platformName]
-
- if {[string length $platformName] > 0} then {
- lappend platformNames $platformName
- }
- }
-}
-
-if {$argc >= 5} then {
- set vsVersion [lindex $argv 4]
-} else {
- set vsVersion 2012
-}
-
-if {[string length $vsVersion] == 0} then {
- fail "invalid Visual Studio version"
-}
-
-if {![string equal $vsVersion 2012] && ![string equal $vsVersion 2013]} then {
- fail [appendArgs \
- "unsupported Visual Studio version, must be one of: " \
- [list 2012 2013]]
-}
-
-set shortNames(WinRT,2012) SQLite.WinRT
-set shortNames(WinRT,2013) SQLite.WinRT.2013
-set shortNames(WinRT81,2013) SQLite.WinRT81
-set shortNames(WP80,2012) SQLite.WP80
-set shortNames(WP80,2013) SQLite.WP80.2013
-set shortNames(WP81,2013) SQLite.WP81
-set shortNames(Win32,2012) SQLite.Win32
-set shortNames(Win32,2013) SQLite.Win32.2013
-
-set displayNames(WinRT,2012) "SQLite for Windows Runtime"
-set displayNames(WinRT,2013) "SQLite for Windows Runtime"
-set displayNames(WinRT81,2013) "SQLite for Windows Runtime (Windows 8.1)"
-set displayNames(WP80,2012) "SQLite for Windows Phone"
-set displayNames(WP80,2013) "SQLite for Windows Phone"
-set displayNames(WP81,2013) "SQLite for Windows Phone 8.1"
-set displayNames(Win32,2012) "SQLite for Windows"
-set displayNames(Win32,2013) "SQLite for Windows"
-
-if {[string equal $packageFlavor WinRT]} then {
- set shortName $shortNames($packageFlavor,$vsVersion)
- set displayName $displayNames($packageFlavor,$vsVersion)
- set targetPlatformIdentifier Windows
- set targetPlatformVersion v8.0
- set minVsVersion [getMinVsVersionXmlChunk $vsVersion]
- set maxPlatformVersion \
- [getMaxPlatformVersionXmlChunk $packageFlavor $vsVersion]
- set extraSdkPath ""
- set extraFileListAttributes \
- [getExtraFileListXmlChunk $packageFlavor $vsVersion]
-} elseif {[string equal $packageFlavor WinRT81]} then {
- if {$vsVersion ne "2013"} then {
- fail [appendArgs \
- "unsupported combination, package flavor " $packageFlavor \
- " is only supported with Visual Studio 2013"]
- }
- set shortName $shortNames($packageFlavor,$vsVersion)
- set displayName $displayNames($packageFlavor,$vsVersion)
- set targetPlatformIdentifier Windows
- set targetPlatformVersion v8.1
- set minVsVersion [getMinVsVersionXmlChunk $vsVersion]
- set maxPlatformVersion \
- [getMaxPlatformVersionXmlChunk $packageFlavor $vsVersion]
- set extraSdkPath ""
- set extraFileListAttributes \
- [getExtraFileListXmlChunk $packageFlavor $vsVersion]
-} elseif {[string equal $packageFlavor WP80]} then {
- set shortName $shortNames($packageFlavor,$vsVersion)
- set displayName $displayNames($packageFlavor,$vsVersion)
- set targetPlatformIdentifier "Windows Phone"
- set targetPlatformVersion v8.0
- set minVsVersion [getMinVsVersionXmlChunk $vsVersion]
- set maxPlatformVersion \
- [getMaxPlatformVersionXmlChunk $packageFlavor $vsVersion]
- set extraSdkPath "\\..\\$targetPlatformIdentifier"
- set extraFileListAttributes \
- [getExtraFileListXmlChunk $packageFlavor $vsVersion]
-} elseif {[string equal $packageFlavor WP81]} then {
- if {$vsVersion ne "2013"} then {
- fail [appendArgs \
- "unsupported combination, package flavor " $packageFlavor \
- " is only supported with Visual Studio 2013"]
- }
- set shortName $shortNames($packageFlavor,$vsVersion)
- set displayName $displayNames($packageFlavor,$vsVersion)
- set targetPlatformIdentifier WindowsPhoneApp
- set targetPlatformVersion v8.1
- set minVsVersion [getMinVsVersionXmlChunk $vsVersion]
- set maxPlatformVersion \
- [getMaxPlatformVersionXmlChunk $packageFlavor $vsVersion]
- set extraSdkPath "\\..\\$targetPlatformIdentifier"
- set extraFileListAttributes \
- [getExtraFileListXmlChunk $packageFlavor $vsVersion]
-} elseif {[string equal $packageFlavor Win32]} then {
- set shortName $shortNames($packageFlavor,$vsVersion)
- set displayName $displayNames($packageFlavor,$vsVersion)
- set targetPlatformIdentifier Windows
- set targetPlatformVersion v8.0
- set minVsVersion [getMinVsVersionXmlChunk $vsVersion]
- set maxPlatformVersion \
- [getMaxPlatformVersionXmlChunk $packageFlavor $vsVersion]
- set extraSdkPath ""
- set extraFileListAttributes \
- [getExtraFileListXmlChunk $packageFlavor $vsVersion]
-} else {
- fail [appendArgs \
- "unsupported package flavor, must be one of: " \
- [list WinRT WinRT81 WP80 WP81 Win32]]
-}
-
###############################################################################
#
@@ -472,8 +168,7 @@ if {![file exists $templateFile] || \
}
set currentDirectory [pwd]
-set outputFile [file join $currentDirectory [appendArgs sqlite- \
- $packageFlavor -output.vsix]]
+set outputFile [file join $currentDirectory sqlite-output.vsix]
if {[file exists $outputFile]} then {
fail [appendArgs "output file \"" $outputFile "\" already exists"]
@@ -549,94 +244,62 @@ if {![regexp -line -- $pattern $data dummy version]} then {
###############################################################################
#
-# NOTE: Setup all the master file list data. This includes the source file
-# names, the destination file names, and the file processing flags. The
-# possible file processing flags are:
-#
-# "buildNeutral" -- This flag indicates the file location and content do
-# not depend on the build configuration.
-#
-# "platformNeutral" -- This flag indicates the file location and content
-# do not depend on the build platform.
-#
-# "subst" -- This flag indicates that the file contains dynamic textual
-# content that needs to be processed using [subst] prior to
-# packaging the file into the final VSIX package. The primary
-# use of this flag is to insert the name of the VSIX package,
-# some package flavor-specific value, or the SQLite version
-# into a file.
-#
-# "noDebug" -- This flag indicates that the file should be skipped when
-# processing the debug build.
-#
-# "noRetail" -- This flag indicates that the file should be skipped when
-# processing the retail build.
-#
-# "move" -- This flag indicates that the file should be moved from the
-# source to the destination instead of being copied.
-#
-# This file metadata may be overridden, either in whole or in part, via
-# the user-specific customizations file.
+# NOTE: Setup the master file list data, including the necessary flags.
#
if {![info exists fileNames(source)]} then {
- set fileNames(source) [list "" "" \
- [file join $stagingDirectory DesignTime <build> <platform> sqlite3.props] \
- [file join $sourceDirectory sqlite3.h] \
- [file join $binaryDirectory <build> <platform> sqlite3.lib] \
- [file join $binaryDirectory <build> <platform> sqlite3.dll]]
+ set fileNames(source) [list "" "" "" \
+ [file join $sourceDirectory sqlite3.h] \
+ [file join $binaryDirectory <platform> sqlite3.lib] \
+ [file join $binaryDirectory <platform> sqlite3.dll]]
if {![info exists no(symbols)]} then {
lappend fileNames(source) \
- [file join $binaryDirectory <build> <platform> sqlite3.pdb]
+ [file join $binaryDirectory <platform> sqlite3.pdb]
}
}
if {![info exists fileNames(destination)]} then {
set fileNames(destination) [list \
- [file join $stagingDirectory extension.vsixmanifest] \
- [file join $stagingDirectory SDKManifest.xml] \
- [file join $stagingDirectory DesignTime <build> <platform> <name>.props] \
- [file join $stagingDirectory DesignTime <build> <platform> sqlite3.h] \
- [file join $stagingDirectory DesignTime <build> <platform> sqlite3.lib] \
- [file join $stagingDirectory Redist <build> <platform> sqlite3.dll]]
+ [file join $stagingDirectory extension.vsixmanifest] \
+ [file join $stagingDirectory SDKManifest.xml] \
+ [file join $stagingDirectory DesignTime CommonConfiguration \
+ <platform> SQLite.WinRT.props] \
+ [file join $stagingDirectory DesignTime CommonConfiguration \
+ <platform> sqlite3.h] \
+ [file join $stagingDirectory DesignTime CommonConfiguration \
+ <platform> sqlite3.lib] \
+ [file join $stagingDirectory Redist CommonConfiguration \
+ <platform> sqlite3.dll]]
if {![info exists no(symbols)]} then {
lappend fileNames(destination) \
- [file join $stagingDirectory Redist <build> <platform> sqlite3.pdb]
+ [file join $stagingDirectory Redist Debug \
+ <platform> sqlite3.pdb]
}
}
-if {![info exists fileNames(flags)]} then {
- set fileNames(flags) [list \
- [list buildNeutral platformNeutral subst] \
- [list buildNeutral platformNeutral subst] \
- [list buildNeutral platformNeutral subst move] \
- [list buildNeutral platformNeutral] \
- [list] [list] [list noRetail]]
+if {![info exists fileNames(neutral)]} then {
+ set fileNames(neutral) [list 1 1 1 1 0 0]
if {![info exists no(symbols)]} then {
- lappend fileNames(flags) [list noRetail]
+ lappend fileNames(neutral) 0
}
}
-###############################################################################
+if {![info exists fileNames(subst)]} then {
+ set fileNames(subst) [list 1 1 1 0 0 0]
-#
-# NOTE: Setup the list of builds supported by this script. These may be
-# overridden via the user-specific customizations file.
-#
-if {![info exists buildNames]} then {
- set buildNames [list Debug Retail]
+ if {![info exists no(symbols)]} then {
+ lappend fileNames(subst) 0
+ }
}
###############################################################################
#
-# NOTE: Setup the list of platforms supported by this script. These may be
-# overridden via the command line or the user-specific customizations
-# file.
+# NOTE: Setup the list of platforms supported by this script.
#
-if {![info exists platformNames] || [llength $platformNames] == 0} then {
+if {![info exists platformNames]} then {
set platformNames [list x86 x64 ARM]
}
@@ -648,117 +311,72 @@ if {![info exists platformNames] || [llength $platformNames] == 0} then {
file mkdir $stagingDirectory
#
-# NOTE: Build the Tcl command used to extract the template VSIX package to
-# the staging directory.
+# NOTE: Build the Tcl command used to extract the template package to the
+# staging directory.
#
set extractCommand [list exec -- $unzip $templateFile -d $stagingDirectory]
#
-# NOTE: Extract the template VSIX package to the staging directory.
+# NOTE: Extract the template package to the staging directory.
#
eval $extractCommand
###############################################################################
#
-# NOTE: Process each file in the master file list. There are actually three
-# parallel lists that contain the source file names, the destination file
-# names, and the file processing flags. If the "buildNeutral" flag is
-# present, the file location and content do not depend on the build
-# configuration and "CommonConfiguration" will be used in place of the
-# build configuration name. If the "platformNeutral" flag is present,
-# the file location and content do not depend on the build platform and
-# "neutral" will be used in place of the build platform name. If the
-# "subst" flag is present, the file is assumed to be a text file that may
-# contain Tcl variable, command, and backslash replacements, to be
-# dynamically replaced during processing using the Tcl [subst] command.
-# If the "noDebug" flag is present, the file will be skipped when
-# processing for the debug build. If the "noRetail" flag is present, the
-# file will be skipped when processing for the retail build. If the
-# "move" flag is present, the source file will be deleted after it is
-# copied to the destination file. If the source file name is an empty
-# string, the destination file name will be assumed to already exist in
-# the staging directory and will not be copied; however, Tcl variable,
-# command, and backslash replacements may still be performed on the
-# destination file prior to the final VSIX package being built if the
-# "subst" flag is present.
-#
-foreach sourceFileName $fileNames(source) \
- destinationFileName $fileNames(destination) \
- fileFlags $fileNames(flags) {
- #
- # NOTE: Process the file flags into separate boolean variables that may be
- # used within the loop.
- #
- set isBuildNeutral [expr {[lsearch $fileFlags buildNeutral] != -1}]
- set isPlatformNeutral [expr {[lsearch $fileFlags platformNeutral] != -1}]
- set isMove [expr {[lsearch $fileFlags move] != -1}]
- set useSubst [expr {[lsearch $fileFlags subst] != -1}]
-
+# NOTE: Process each file in the master file list. There are actually four
+# parallel lists that contain the source file names, destination file
+# names, the platform-neutral flags, and the use-subst flags. When the
+# platform-neutral flag is non-zero, the file is not platform-specific.
+# When the use-subst flag is non-zero, the file is considered to be a
+# text file that may contain Tcl variable and/or command replacements,
+# to be dynamically replaced during processing. If the source file name
+# is an empty string, then the destination file name will be assumed to
+# already exist in the staging directory and will not be copied; however,
+# dynamic replacements may still be performed on the destination file
+# prior to the package being re-zipped.
+#
+foreach sourceFileName $fileNames(source) \
+ destinationFileName $fileNames(destination) \
+ isNeutral $fileNames(neutral) useSubst $fileNames(subst) {
#
- # NOTE: If the current file is build-neutral, then only one build will
- # be processed for it, namely "CommonConfiguration"; otherwise, each
- # supported build will be processed for it individually.
+ # NOTE: If the current file is platform-neutral, then only one platform will
+ # be processed for it, namely "neutral"; otherwise, each supported
+ # platform will be processed for it individually.
#
- foreach buildName \
- [expr {$isBuildNeutral ? [list CommonConfiguration] : $buildNames}] {
+ foreach platformName [expr {$isNeutral ? [list neutral] : $platformNames}] {
#
- # NOTE: Should the current file be skipped for this build?
+ # NOTE: Use the actual platform name in the destination file name.
#
- if {[lsearch $fileFlags no${buildName}] != -1} then {
- continue
- }
+ set newDestinationFileName [replacePlatform $destinationFileName \
+ $platformName]
#
- # NOTE: If the current file is platform-neutral, then only one platform
- # will be processed for it, namely "neutral"; otherwise, each
- # supported platform will be processed for it individually.
+ # NOTE: Does the source file need to be copied to the destination file?
#
- foreach platformName \
- [expr {$isPlatformNeutral ? [list neutral] : $platformNames}] {
+ if {[string length $sourceFileName] > 0} then {
#
- # NOTE: Use the actual platform name in the destination file name.
+ # NOTE: First, make sure the destination directory exists.
#
- set newDestinationFileName [replaceFileNameTokens $destinationFileName \
- $shortName $buildName $platformName]
+ file mkdir [file dirname $newDestinationFileName]
#
- # NOTE: Does the source file need to be copied to the destination file?
+ # NOTE: Then, copy the source file to the destination file verbatim.
#
- if {[string length $sourceFileName] > 0} then {
- #
- # NOTE: First, make sure the destination directory exists.
- #
- file mkdir [file dirname $newDestinationFileName]
-
- #
- # NOTE: Then, copy the source file to the destination file verbatim.
- #
- set newSourceFileName [replaceFileNameTokens $sourceFileName \
- $shortName $buildName $platformName]
-
- file copy $newSourceFileName $newDestinationFileName
-
- #
- # NOTE: If this is a move instead of a copy, delete the source file
- # now.
- #
- if {$isMove} then {
- file delete $newSourceFileName
- }
- }
+ file copy [replacePlatform $sourceFileName $platformName] \
+ $newDestinationFileName
+ }
+ #
+ # NOTE: Does the destination file contain dynamic replacements that must
+ # be processed now?
+ #
+ if {$useSubst} then {
#
- # NOTE: Does the destination file contain dynamic replacements that must
- # be processed now?
+ # NOTE: Perform any dynamic replacements contained in the destination
+ # file and then re-write it in-place.
#
- if {$useSubst} then {
- #
- # NOTE: Perform any dynamic replacements contained in the destination
- # file and then re-write it in-place.
- #
- substFile $newDestinationFileName
- }
+ substFile $newDestinationFileName
}
}
}
@@ -773,13 +391,13 @@ foreach sourceFileName $fileNames(source) \
cd $stagingDirectory
#
-# NOTE: Build the Tcl command used to archive the final VSIX package in the
+# NOTE: Build the Tcl command used to archive the final package in the
# output directory.
#
set archiveCommand [list exec -- $zip -r $outputFile *]
#
-# NOTE: Build the final VSIX package archive in the output directory.
+# NOTE: Build the final package archive in the output directory.
#
eval $archiveCommand