From: mistachkin Date: Fri, 12 Oct 2012 18:06:07 +0000 (+0000) Subject: Tooling support for including the debug build in the VSIX package. X-Git-Tag: version-3.7.15~72 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0ec074450253a66741ff7d6efb7acdaa5b6845f8;p=thirdparty%2Fsqlite.git Tooling support for including the debug build in the VSIX package. FossilOrigin-Name: de784399ed1f0e27fc875e32719643d19819c8fb --- diff --git a/Makefile.msc b/Makefile.msc index 4b83eee739..db997fd34b 100644 --- a/Makefile.msc +++ b/Makefile.msc @@ -9,53 +9,75 @@ TOP = . # Set this non-0 to create and use the SQLite amalgamation file. # +!IFNDEF USE_AMALGAMATION USE_AMALGAMATION = 1 +!ENDIF # Set this non-0 to use the International Components for Unicode (ICU). # +!IFNDEF USE_ICU USE_ICU = 0 +!ENDIF # Set this non-0 to dynamically link to the MSVC runtime library. # +!IFNDEF USE_CRT_DLL USE_CRT_DLL = 0 +!ENDIF # Set this non-0 to attempt setting the native compiler automatically # for cross-compiling the command line tools needed during the compilation # process. # +!IFNDEF XCOMPILE XCOMPILE = 0 +!ENDIF # Set this non-0 to use the native libraries paths for cross-compiling # the command line tools needed during the compilation process. # +!IFNDEF USE_NATIVE_LIBPATHS USE_NATIVE_LIBPATHS = 0 +!ENDIF # Set this 0 to skip the compiling and embedding of version resources. # +!IFNDEF USE_RC USE_RC = 1 +!ENDIF # Set this non-0 to compile binaries suitable for the WinRT environment. # This setting does not apply to any binaries that require Tcl to operate # properly (i.e. the text fixture, etc). # +!IFNDEF FOR_WINRT FOR_WINRT = 0 +!ENDIF # Set this non-0 to skip attempting to look for and/or link with the Tcl # runtime library. # +!IFNDEF NO_TCL NO_TCL = 0 +!ENDIF # Set this to non-0 to create and use PDBs. # +!IFNDEF SYMBOLS SYMBOLS = 1 +!ENDIF # Set this to non-0 to use the SQLite debugging heap subsystem. # +!IFNDEF MEMDEBUG MEMDEBUG = 0 +!ENDIF # Set this to non-0 to use the Win32 native heap subsystem. # +!IFNDEF WIN32HEAP WIN32HEAP = 0 +!ENDIF # Set this to one of the following values to enable various debugging # features. Each level includes the debugging options from the previous @@ -68,7 +90,9 @@ WIN32HEAP = 0 # 4 == SQLITE_DEBUG_OS_TRACE: Enables output from the OSTRACE() macros. # 5 == SQLITE_ENABLE_IOTRACE: Enables output from the IOTRACE() macros. # +!IFNDEF DEBUG DEBUG = 0 +!ENDIF # Check for the predefined command macro CC. This should point to the compiler # binary for the target platform. If it is not defined, simply define it to diff --git a/manifest b/manifest index a9ba1e0df6..1c8a92fbfd 100644 --- a/manifest +++ b/manifest @@ -1,9 +1,9 @@ -C Fix\sduplicate\stest\sname\sin\swhereD.test. -D 2012-10-10T13:59:11.378 +C Tooling\ssupport\sfor\sincluding\sthe\sdebug\sbuild\sin\sthe\sVSIX\spackage. +D 2012-10-12T18:06:07.816 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5f4f26109f9d80829122e0e09f9cda008fa065fb F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 -F Makefile.msc a8495ef567c1872cd9e0679c96a02aafbf9c43b5 +F Makefile.msc 1d8a5d3cf33b8b8d3247c99367a37af384cc7ebd F Makefile.vxworks b18ad88e9a8c6a001f5cf4a389116a4f1a7ab45f F README cd04a36fbc7ea56932a4052d7d0b7f09f27c33d6 F VERSION edab4af5a4623f8198833ea481ce98ab53750a8d @@ -975,7 +975,7 @@ F test/wherelimit.test 5e9fd41e79bb2b2d588ed999d641d9c965619b31 F test/win32lock.test b2a539e85ae6b2d78475e016a9636b4451dc7fb9 F test/zeroblob.test caaecfb4f908f7bc086ed238668049f96774d688 F test/zerodamage.test e7f77fded01dfcdf92ac2c5400f1e35d7a21463c -F tool/build-all-msvc.bat cd505f24717ca4ecd94c651f763d7bb4e7fe68af x +F tool/build-all-msvc.bat 76b835e0ab91e30f22d8aa48db9dea4d2dc59e9f x F tool/build-shell.sh b64a481901fc9ffe5ca8812a2a9255b6cfb77381 F tool/checkSpacing.c 810e51703529a204fc4e1eb060e9ab663e3c06d2 F tool/diffdb.c 7524b1b5df217c20cd0431f6789851a4e0cb191b @@ -993,7 +993,7 @@ F tool/mksqlite3c-noext.tcl 8bce31074e4cbe631bb7676526a048335f4c9f02 F tool/mksqlite3c.tcl 589c7f44e990be1b8443cfe4808dce392b0327fa F tool/mksqlite3h.tcl 78013ad79a5e492e5f764f3c7a8ef834255061f8 F tool/mksqlite3internalh.tcl 3dca7bb5374cee003379b8cbac73714f610ef795 -F tool/mkvsix.tcl 19b2ab9ea16445953a76568a5bbe4cb864f92dfe +F tool/mkvsix.tcl a27951f30bb39c3504196610f17f687fc0b1c94d F tool/offsets.c fe4262fdfa378e8f5499a42136d17bf3b98f6091 F tool/omittest.tcl 4665982e95a6e5c1bd806cf7bc3dea95be422d77 F tool/opcodeDoc.awk b3a2a3d5d3075b8bd90b7afe24283efdd586659c @@ -1019,7 +1019,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh fbc018d67fd7395f440c28f33ef0f94420226381 F tool/win/sqlite.vsix 67d8a99aceb56384a81b3f30d6c71743146d2cc9 -P 96247853ef3d556a13b899b4c907b9fa2c78d513 -R eb33f3fc302126c0f34a21ed878e78ec +P 1182b54af0fd43d5e6aa6399837e7915aa60a578 +R 9e8254ec6d4a71f688da7a8600f59454 U mistachkin -Z 046d6c9be8479dde4d96235907c599c3 +Z 3494f0e2927d2f78ffed9eda067be39b diff --git a/manifest.uuid b/manifest.uuid index 4d5754fee5..7dc7f51b40 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -1182b54af0fd43d5e6aa6399837e7915aa60a578 \ No newline at end of file +de784399ed1f0e27fc875e32719643d19819c8fb \ No newline at end of file diff --git a/tool/build-all-msvc.bat b/tool/build-all-msvc.bat index 58e2dca3e3..989a2af795 100755 --- a/tool/build-all-msvc.bat +++ b/tool/build-all-msvc.bat @@ -10,6 +10,7 @@ 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) @@ -181,129 +182,144 @@ FOR %%P IN (%PLATFORMS%) DO ( REM SET PATH=%TOOLPATH%;%SystemRoot%\System32;%SystemRoot% - REM - 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 - 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 ( + FOR %%B IN (Debug Retail) DO ( REM - REM NOTE: Attempt to setup the MSVC environment for this platform. + 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 - %__ECHO% CALL "%VCINSTALLDIR%\vcvarsall.bat" %%P - - IF ERRORLEVEL 1 ( - ECHO Failed to call "%VCINSTALLDIR%\vcvarsall.bat" for platform %%P. - GOTO errors + IF /I "%%B" == "Debug" ( + SET DEBUG=2 + SET MEMDEBUG=1 + ) ELSE ( + CALL :fn_UnsetVariable DEBUG + CALL :fn_UnsetVariable MEMDEBUG ) 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 as - REM current versions of their official batch file do not set the - REM exit code upon failure. + REM NOTE: Launch a nested command shell to perform the following steps: REM - IF NOT DEFINED __ECHO ( - IF NOT DEFINED WindowsSdkDir ( - ECHO Cannot build, Windows SDK not found for platform %%P. - GOTO errors - ) - ) - + REM 1. Setup the MSVC environment for this platform using the + REM official batch file. REM - 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 2. Make sure that no stale build output files are present. REM - IF DEFINED SET_NSDKLIBPATH ( - CALL :fn_CopyVariable WindowsSdkDir NSDKLIBPATH - CALL :fn_AppendVariable NSDKLIBPATH \lib\win8\um\x86 - ) - + REM 3. Build the "sqlite3.dll" and "sqlite3.lib" binaries for this + REM platform. 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 4. Copy the "sqlite3.dll" and "sqlite3.lib" binaries for this + REM platform to the platform-specific directory beneath the + REM binary directory. REM - IF NOT DEFINED NOCLEAN ( - %__ECHO% nmake -f Makefile.msc clean + "%ComSpec%" /C ( + REM + REM NOTE: Attempt to setup the MSVC environment for this platform. + REM + %__ECHO3% CALL "%VCINSTALLDIR%\vcvarsall.bat" %%P IF ERRORLEVEL 1 ( - ECHO Failed to clean for platform %%P. + ECHO Failed to call "%VCINSTALLDIR%\vcvarsall.bat" for platform %%P. GOTO errors ) - ) ELSE ( + REM - 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 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 - %__ECHO% DEL /Q sqlite3.dll sqlite3.lib sqlite3.pdb - ) + IF NOT DEFINED __ECHO ( + IF NOT DEFINED WindowsSdkDir ( + ECHO Cannot build, Windows SDK not found for platform %%P. + GOTO errors + ) + ) - 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: 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 + IF DEFINED SET_NSDKLIBPATH ( + CALL :fn_CopyVariable WindowsSdkDir NSDKLIBPATH + CALL :fn_AppendVariable NSDKLIBPATH \lib\win8\um\x86 + ) - IF ERRORLEVEL 1 ( - ECHO Failed to build "sqlite3.dll" for platform %%P. - GOTO errors - ) + 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 -f Makefile.msc 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 the files we are + REM specifically wanting to build for each platform. + REM + %__ECHO% DEL /Q sqlite3.dll sqlite3.lib sqlite3.pdb + ) - 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% + 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 -f Makefile.msc sqlite3.dll XCOMPILE=1 USE_NATIVE_LIBPATHS=1 NO_TCL=1 %NMAKE_ARGS% - IF ERRORLEVEL 1 ( - ECHO Failed to copy "sqlite3.dll" to "%BINARYDIRECTORY%\%%D\". - GOTO errors - ) + IF ERRORLEVEL 1 ( + ECHO Failed to build %%B "sqlite3.dll" for platform %%P. + GOTO errors + ) - 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% + 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% - IF ERRORLEVEL 1 ( - ECHO Failed to copy "sqlite3.lib" to "%BINARYDIRECTORY%\%%D\". - GOTO errors - ) + IF ERRORLEVEL 1 ( + ECHO Failed to copy "sqlite3.dll" to "%BINARYDIRECTORY%\%%B\%%D\". + GOTO errors + ) - 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% + 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% IF ERRORLEVEL 1 ( - ECHO Failed to copy "sqlite3.pdb" to "%BINARYDIRECTORY%\%%D\". + ECHO Failed to copy "sqlite3.lib" to "%BINARYDIRECTORY%\%%B\%%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 + ) + ) ) ) ) diff --git a/tool/mkvsix.tcl b/tool/mkvsix.tcl index a7517786c5..6a84758cc8 100644 --- a/tool/mkvsix.tcl +++ b/tool/mkvsix.tcl @@ -90,12 +90,13 @@ proc substFile { fileName } { return [writeFile $fileName [uplevel 1 [list subst [readFile $fileName]]]] } -proc replacePlatform { fileName platformName } { +proc replaceBuildAndPlatform { fileName buildName platformName } { # # NOTE: Returns the specified file name containing the platform name instead # of platform placeholder tokens. # - return [string map [list $platformName] $fileName] + return [string map [list $buildName $platformName] \ + $fileName] } set script [file normalize [info script]] @@ -249,12 +250,12 @@ if {![regexp -line -- $pattern $data dummy version]} then { if {![info exists fileNames(source)]} then { set fileNames(source) [list "" "" "" \ [file join $sourceDirectory sqlite3.h] \ - [file join $binaryDirectory sqlite3.lib] \ - [file join $binaryDirectory sqlite3.dll]] + [file join $binaryDirectory sqlite3.lib] \ + [file join $binaryDirectory sqlite3.dll]] if {![info exists no(symbols)]} then { lappend fileNames(source) \ - [file join $binaryDirectory sqlite3.pdb] + [file join $binaryDirectory sqlite3.pdb] } } @@ -262,27 +263,31 @@ if {![info exists fileNames(destination)]} then { set fileNames(destination) [list \ [file join $stagingDirectory extension.vsixmanifest] \ [file join $stagingDirectory SDKManifest.xml] \ - [file join $stagingDirectory DesignTime CommonConfiguration \ - SQLite.WinRT.props] \ - [file join $stagingDirectory DesignTime CommonConfiguration \ - sqlite3.h] \ - [file join $stagingDirectory DesignTime CommonConfiguration \ - sqlite3.lib] \ - [file join $stagingDirectory Redist CommonConfiguration \ - sqlite3.dll]] + [file join $stagingDirectory DesignTime \ + SQLite.WinRT.props] \ + [file join $stagingDirectory DesignTime sqlite3.h] \ + [file join $stagingDirectory DesignTime sqlite3.lib] \ + [file join $stagingDirectory Redist sqlite3.dll]] if {![info exists no(symbols)]} then { lappend fileNames(destination) \ - [file join $stagingDirectory Redist Debug \ - sqlite3.pdb] + [file join $stagingDirectory Redist sqlite3.pdb] } } -if {![info exists fileNames(neutral)]} then { - set fileNames(neutral) [list 1 1 1 1 0 0] +if {![info exists fileNames(buildNeutral)]} then { + set fileNames(buildNeutral) [list 1 1 1 1 0 0] if {![info exists no(symbols)]} then { - lappend fileNames(neutral) 0 + lappend fileNames(buildNeutral) 0 + } +} + +if {![info exists fileNames(platformNeutral)]} then { + set fileNames(platformNeutral) [list 1 1 1 1 0 0] + + if {![info exists no(symbols)]} then { + lappend fileNames(platformNeutral) 0 } } @@ -294,6 +299,31 @@ if {![info exists fileNames(subst)]} then { } } +if {![info exists fileNames(noDebug)]} then { + set fileNames(noDebug) [list 0 0 0 0 0 0] + + if {![info exists no(symbols)]} then { + lappend fileNames(noDebug) 0 + } +} + +if {![info exists fileNames(noRetail)]} then { + set fileNames(noRetail) [list 0 0 0 0 0 0] + + if {![info exists no(symbols)]} then { + lappend fileNames(noRetail) 1 + } +} + +############################################################################### + +# +# NOTE: Setup the list of builds supported by this script. +# +if {![info exists buildNames]} then { + set buildNames [list Debug Retail] +} + ############################################################################### # @@ -338,45 +368,63 @@ eval $extractCommand # foreach sourceFileName $fileNames(source) \ destinationFileName $fileNames(destination) \ - isNeutral $fileNames(neutral) useSubst $fileNames(subst) { + buildNeutral $fileNames(buildNeutral) platformNeutral \ + $fileNames(platformNeutral) useSubst $fileNames(subst) \ + noDebug $fileNames(noDebug) noRetail $fileNames(noRetail) { # - # 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: 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. # - foreach platformName [expr {$isNeutral ? [list neutral] : $platformNames}] { + foreach buildName \ + [expr {$buildNeutral ? [list CommonConfiguration] : $buildNames}] { # - # NOTE: Use the actual platform name in the destination file name. + # NOTE: Should the current file be skipped for this build? # - set newDestinationFileName [replacePlatform $destinationFileName \ - $platformName] + if {[info exists no${buildName}] && [set no${buildName}]} then { + continue + } # - # NOTE: Does the source file need to be copied to the destination file? + # 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. # - if {[string length $sourceFileName] > 0} then { + foreach platformName \ + [expr {$platformNeutral ? [list neutral] : $platformNames}] { # - # NOTE: First, make sure the destination directory exists. + # NOTE: Use the actual platform name in the destination file name. # - file mkdir [file dirname $newDestinationFileName] + set newDestinationFileName [replaceBuildAndPlatform \ + $destinationFileName $buildName $platformName] # - # NOTE: Then, copy the source file to the destination file verbatim. + # NOTE: Does the source file need to be copied to the destination file? # - file copy [replacePlatform $sourceFileName $platformName] \ - $newDestinationFileName - } + 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. + # + file copy [replaceBuildAndPlatform $sourceFileName $buildName \ + $platformName] $newDestinationFileName + } - # - # NOTE: Does the destination file contain dynamic replacements that must - # be processed now? - # - if {$useSubst} then { # - # NOTE: Perform any dynamic replacements contained in the destination - # file and then re-write it in-place. + # NOTE: Does the destination file contain dynamic replacements that must + # be processed now? # - substFile $newDestinationFileName + if {$useSubst} then { + # + # NOTE: Perform any dynamic replacements contained in the destination + # file and then re-write it in-place. + # + substFile $newDestinationFileName + } } } }