Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add detailed comments to the build tools used to generate the VSIX package. Also, allow the build configurations and native library directories to be overridden for the multi-platform build tool for MSVC. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
0482c73bfdf80b0c0ce9abea706554d7 |
User & Date: | mistachkin 2012-10-19 00:23:31.437 |
Context
2012-10-19
| ||
02:10 | Make sure substructure elements have proper alignment in the ICU tokenizers of FTS2 and FTS3. (check-in: aaa2d9b0db user: drh tags: trunk) | |
00:23 | Add detailed comments to the build tools used to generate the VSIX package. Also, allow the build configurations and native library directories to be overridden for the multi-platform build tool for MSVC. (check-in: 0482c73bfd user: mistachkin tags: trunk) | |
2012-10-18
| ||
20:49 | Put auxiliary libraries after libsqlite3.a in the testfixture target of the "main.mk" makefile. (check-in: 8fc8548f52 user: drh tags: trunk) | |
Changes
Changes to tool/build-all-msvc.bat.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @ECHO OFF :: :: build-all-msvc.bat -- :: :: Multi-Platform Build Tool for MSVC :: 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) | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | @ECHO OFF :: :: build-all-msvc.bat -- :: :: 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) |
︙ | ︙ | |||
89 90 91 92 93 94 95 96 97 98 99 100 101 102 | REM IF NOT DEFINED PLATFORMS ( SET PLATFORMS=x86 x86_amd64 x86_arm ) %_VECHO% Platforms = '%PLATFORMS%' 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 x86_NAME=x86 SET x86_amd64_NAME=x64 | > > > > > > > > > > | 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | REM IF NOT DEFINED PLATFORMS ( SET PLATFORMS=x86 x86_amd64 x86_arm ) %_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: 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 x86_NAME=x86 SET x86_amd64_NAME=x64 |
︙ | ︙ | |||
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | REM NOTE: Check for the external tools needed during the build process ^(i.e. REM those that do not get compiled as part of the build process itself^) REM along the PATH. REM FOR %%T IN (gawk.exe tclsh85.exe) DO ( SET %%T_PATH=%%~dp$PATH:T ) REM REM NOTE: Set the TOOLPATH variable to contain all the directories where the REM external tools were found in the search above. REM SET TOOLPATH=%gawk.exe_PATH%;%tclsh85.exe_PATH% %_VECHO% ToolPath = '%TOOLPATH%' REM REM NOTE: Check for MSVC 2012 because the Windows SDK directory handling is REM slightly different for that version. REM IF "%VisualStudioVersion%" == "11.0" ( | > > > > > > > > > > > > > > > > > > > > > > > | > | 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 | REM NOTE: Check for the external tools needed during the build process ^(i.e. REM those that do not get compiled as part of the build process itself^) REM along the PATH. REM FOR %%T IN (gawk.exe tclsh85.exe) DO ( SET %%T_PATH=%%~dp$PATH:T ) 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 SET TOOLPATH=%gawk.exe_PATH%;%tclsh85.exe_PATH% %_VECHO% ToolPath = '%TOOLPATH%' REM 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 ( CALL :fn_UnsetVariable SET_NSDKLIBPATH ) REM REM NOTE: This is the outer loop. There should be exactly one iteration per REM platform. |
︙ | ︙ | |||
178 179 180 181 182 183 184 | CALL :fn_UnsetVariable WindowsSdkDir_old REM REM NOTE: Reset the PATH here to the absolute bare minimum required. REM SET PATH=%TOOLPATH%;%SystemRoot%\System32;%SystemRoot% | | | 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 | CALL :fn_UnsetVariable WindowsSdkDir_old REM REM NOTE: Reset the PATH here to the absolute bare minimum required. REM SET PATH=%TOOLPATH%;%SystemRoot%\System32;%SystemRoot% FOR %%B IN (%CONFIGURATIONS%) DO ( 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 IF /I "%%B" == "Debug" ( SET DEBUG=2 |
︙ | ︙ |
Changes to tool/mkvsix.tcl.
1 2 3 4 | #!/usr/bin/tclsh # # This script is used to generate a VSIX (Visual Studio Extension) file for # SQLite usable by Visual Studio. | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | #!/usr/bin/tclsh # # 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 # # Typically, when on Windows, this script is executed using commands similar to # the following (from a normal Windows command prompt window): # # 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 if {!$usage} then {exit 1} } puts stdout "usage:\ |
︙ | ︙ | |||
241 242 243 244 245 246 247 | fail [appendArgs "cannot locate SQLITE_VERSION value in \"" \ [file join $sourceDirectory sqlite3.h] \"] } ############################################################################### # | | > > > > | 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 | fail [appendArgs "cannot locate SQLITE_VERSION value in \"" \ [file join $sourceDirectory sqlite3.h] \"] } ############################################################################### # # NOTE: Setup all the master file list data. This includes the source and # destination file names, build-neutral boolean flags, platform-neutral # boolean flags, and the dynamic content (subst) boolean flags. There # is also one set of boolean flags per build configuration, currently # "Debug" and "Retail", that control which files are skipped for it. # if {![info exists fileNames(source)]} then { set fileNames(source) [list "" "" "" \ [file join $sourceDirectory sqlite3.h] \ [file join $binaryDirectory <build> <platform> sqlite3.lib] \ [file join $binaryDirectory <build> <platform> sqlite3.dll]] |
︙ | ︙ |