Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch win32Resources Excluding Merge-Ins
This is equivalent to a diff from 7536101317 to 3af7c1a6af
2012-09-03
| ||
11:39 | Add resources describing the version number and other information to EXEs and DLLs generated using MSVC. (check-in: a15a70840e user: drh tags: trunk) | |
11:14 | Insert additional tab character. (Closed-Leaf check-in: 3af7c1a6af user: mistachkin tags: win32Resources) | |
11:01 | Linking and cleaning fixes for the tclsqlite3.exe target in the MSVC makefile. (check-in: 96d43c7a35 user: mistachkin tags: win32Resources) | |
10:32 | Add Win32 version resources to the applicable binaries built by the MSVC makefile. (check-in: e2f27d28b5 user: mistachkin tags: win32Resources) | |
2012-08-31
| ||
14:55 | In the spellfix phonehash() function, add letter W into the same character class as V. (check-in: 7536101317 user: drh tags: trunk) | |
12:31 | Changes for ERROR_PATH_NOT_FOUND in addition to ERROR_FILE_NOT_FOUND in winAccess(). (check-in: 527340abff user: drh tags: trunk) | |
Changes to Makefile.msc.
77 77 # Check for the command macro LD. This should point to the linker binary for 78 78 # the target platform. If it is not defined, simply define it to the legacy 79 79 # default value 'link.exe'. 80 80 # 81 81 !IFNDEF LD 82 82 LD = link.exe 83 83 !ENDIF 84 + 85 +# Check for the predefined command macro RC. This should point to the resource 86 +# compiler binary for the target platform. If it is not defined, simply define 87 +# it to the legacy default value 'rc.exe'. 88 +# 89 +!IFNDEF RC 90 +RC = rc.exe 91 +!ENDIF 84 92 85 93 # Check for the command macro NCC. This should point to the compiler binary 86 94 # for the platform the compilation process is taking place on. If it is not 87 95 # defined, simply define it to have the same value as the CC macro. When 88 96 # cross-compiling, it is suggested that this macro be modified via the command 89 97 # line (since nmake itself does not provide a built-in method to guess it). 90 98 # For example, to use the x86 compiler when cross-compiling for x64, a command ................................................................................ 146 154 !ENDIF 147 155 148 156 # C compiler and options for use in building executables that 149 157 # will run on the target platform. (BCC and TCC are usually the 150 158 # same unless your are cross-compiling.) 151 159 # 152 160 TCC = $(CC) -W3 -DSQLITE_OS_WIN=1 -I. -I$(TOP)\src -fp:precise 161 +RCC = $(RC) -DSQLITE_OS_WIN=1 -I. -I$(TOP)\src 153 162 154 163 # When compiling the library for use in the WinRT environment, 155 164 # the following compile-time options must be used as well to 156 165 # disable use of Win32 APIs that are not available and to enable 157 166 # use of Win32 APIs that are specific to Windows 8 and/or WinRT. 158 167 # 159 168 !IF $(FOR_WINRT)!=0 160 169 TCC = $(TCC) -DSQLITE_OS_WINRT=1 170 +RCC = $(RCC) -DSQLITE_OS_WINRT=1 161 171 TCC = $(TCC) -DWINAPI_FAMILY=WINAPI_PARTITION_APP 172 +RCC = $(RCC) -DWINAPI_FAMILY=WINAPI_PARTITION_APP 162 173 !ENDIF 163 174 164 175 # Also, we need to dynamically link to the correct MSVC runtime 165 176 # when compiling for WinRT (e.g. debug or release) OR if the 166 177 # USE_CRT_DLL option is set to force dynamically linking to the 167 178 # MSVC runtime library. 168 179 # ................................................................................ 182 193 183 194 # The mksqlite3c.tcl and mksqlite3h.tcl scripts will pull in 184 195 # any extension header files by default. For non-amalgamation 185 196 # builds, we need to make sure the compiler can find these. 186 197 # 187 198 !IF $(USE_AMALGAMATION)==0 188 199 TCC = $(TCC) -I$(TOP)\ext\fts3 200 +RCC = $(RCC) -I$(TOP)\ext\fts3 189 201 TCC = $(TCC) -I$(TOP)\ext\rtree 202 +RCC = $(RCC) -I$(TOP)\ext\rtree 190 203 !ENDIF 191 204 192 205 # Define -DNDEBUG to compile without debugging (i.e., for production usage) 193 206 # Omitting the define will cause extra debugging code to be inserted and 194 207 # includes extra comments when "EXPLAIN stmt" is used. 195 208 # 196 209 !IF $(DEBUG)==0 197 210 TCC = $(TCC) -DNDEBUG 198 211 BCC = $(BCC) -DNDEBUG 212 +RCC = $(RCC) -DNDEBUG 199 213 !ENDIF 200 214 201 215 !IF $(DEBUG)>1 202 216 TCC = $(TCC) -DSQLITE_DEBUG 217 +RCC = $(RCC) -DSQLITE_DEBUG 203 218 !ENDIF 204 219 205 220 !IF $(DEBUG)>3 206 221 TCC = $(TCC) -DSQLITE_DEBUG_OS_TRACE=1 222 +RCC = $(RCC) -DSQLITE_DEBUG_OS_TRACE=1 207 223 !ENDIF 208 224 209 225 !IF $(DEBUG)>4 210 226 TCC = $(TCC) -DSQLITE_ENABLE_IOTRACE 227 +RCC = $(RCC) -DSQLITE_ENABLE_IOTRACE 211 228 !ENDIF 212 229 213 230 # 214 231 # Prevent warnings about "insecure" MSVC runtime library functions 215 232 # being used. 216 233 # 217 234 TCC = $(TCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 218 235 BCC = $(BCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 236 +RCC = $(RCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS 219 237 220 238 # 221 239 # Prevent warnings about "deprecated" POSIX functions being used. 222 240 # 223 241 TCC = $(TCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS 224 242 BCC = $(BCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS 243 +RCC = $(RCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS 225 244 226 245 # 227 246 # Use the SQLite debugging heap subsystem? 228 247 # 229 248 !IF $(MEMDEBUG)!=0 230 249 TCC = $(TCC) -DSQLITE_MEMDEBUG=1 250 +RCC = $(RCC) -DSQLITE_MEMDEBUG=1 231 251 232 252 # 233 253 # Use native Win32 heap subsystem instead of malloc/free? 234 254 # 235 255 !ELSEIF $(WIN32HEAP)!=0 236 256 TCC = $(TCC) -DSQLITE_WIN32_MALLOC=1 257 +RCC = $(RCC) -DSQLITE_WIN32_MALLOC=1 237 258 238 259 # 239 260 # Validate the heap on every call into the native Win32 heap subsystem? 240 261 # 241 262 !IF $(DEBUG)>2 242 263 TCC = $(TCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1 264 +RCC = $(RCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1 243 265 !ENDIF 244 266 !ENDIF 245 267 246 268 # The locations of the Tcl header and library files. Also, the library that 247 269 # non-stubs enabled programs using Tcl must link against. These variables 248 270 # (TCLINCDIR, TCLLIBDIR, and LIBTCL) may be overridden via the environment 249 271 # prior to running nmake in order to match the actual installed location and ................................................................................ 294 316 # The library that programs using readline() must link against. 295 317 # 296 318 LIBREADLINE = 297 319 298 320 # Should the database engine be compiled threadsafe 299 321 # 300 322 TCC = $(TCC) -DSQLITE_THREADSAFE=1 323 +RCC = $(RCC) -DSQLITE_THREADSAFE=1 301 324 302 325 # Do threads override each others locks by default (1), or do we test (-1) 303 326 # 304 327 TCC = $(TCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 328 +RCC = $(RCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 305 329 306 330 # Any target libraries which libsqlite must be linked against 307 331 # 308 332 !IFNDEF TLIBS 309 333 TLIBS = 310 334 !ENDIF 311 335 ................................................................................ 312 336 # Flags controlling use of the in memory btree implementation 313 337 # 314 338 # SQLITE_TEMP_STORE is 0 to force temporary tables to be in a file, 1 to 315 339 # default to file, 2 to default to memory, and 3 to force temporary 316 340 # tables to always be in memory. 317 341 # 318 342 TCC = $(TCC) -DSQLITE_TEMP_STORE=1 343 +RCC = $(RCC) -DSQLITE_TEMP_STORE=1 319 344 320 345 # Enable/disable loadable extensions, and other optional features 321 346 # based on configuration. (-DSQLITE_OMIT*, -DSQLITE_ENABLE*). 322 347 # The same set of OMIT and ENABLE flags should be passed to the 323 348 # LEMON parser generator and the mkkeywordhash tool as well. 324 349 325 350 # BEGIN standard options ................................................................................ 329 354 # END standard options 330 355 331 356 # BEGIN required Windows option 332 357 OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_MAX_TRIGGER_DEPTH=100 333 358 # END required Windows option 334 359 335 360 TCC = $(TCC) $(OPT_FEATURE_FLAGS) 361 +RCC = $(RCC) $(OPT_FEATURE_FLAGS) 336 362 337 363 # Add in any optional parameters specified on the make commane line 338 364 # ie. make "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1". 339 365 TCC = $(TCC) $(OPTS) 366 +RCC = $(RCC) $(OPTS) 340 367 341 368 # If symbols are enabled, enable PDBs. 342 369 # If debugging is enabled, disable all optimizations and enable PDBs. 343 370 !IF $(DEBUG)>0 344 371 TCC = $(TCC) -Od -D_DEBUG 345 372 BCC = $(BCC) -Od -D_DEBUG 373 +RCC = $(RCC) -D_DEBUG 346 374 !ELSE 347 375 TCC = $(TCC) -O2 348 376 BCC = $(BCC) -O2 349 377 !ENDIF 350 378 351 379 !IF $(DEBUG)>0 || $(SYMBOLS)!=0 352 380 TCC = $(TCC) -Zi 353 381 BCC = $(BCC) -Zi 354 382 !ENDIF 355 383 356 384 # If ICU support is enabled, add the compiler options for it. 357 385 !IF $(USE_ICU)!=0 358 386 TCC = $(TCC) -DSQLITE_ENABLE_ICU=1 387 +RCC = $(RCC) -DSQLITE_ENABLE_ICU=1 359 388 TCC = $(TCC) -I$(TOP)\ext\icu 389 +RCC = $(RCC) -I$(TOP)\ext\icu 360 390 TCC = $(TCC) -I$(ICUINCDIR) 391 +RCC = $(RCC) -I$(ICUINCDIR) 361 392 !ENDIF 362 393 363 -# libtool compile/link 394 +# Command line prefixes for compiling code, compiling resources, 395 +# linking, etc. 364 396 LTCOMPILE = $(TCC) -Fo$@ 397 +LTRCOMPILE = $(RCC) -r 365 398 LTLIB = lib.exe 366 399 LTLINK = $(TCC) -Fe$@ 367 400 368 401 # If a platform was set, force the linker to target that. 369 402 # Note that the vcvars*.bat family of batch files typically 370 403 # set this for you. Otherwise, the linker will attempt 371 404 # to deduce the binary type based on the object files. ................................................................................ 729 762 730 763 libsqlite3.lib: $(LIBOBJ) 731 764 $(LTLIB) $(LTLIBOPTS) /OUT:$@ $(LIBOBJ) $(TLIBS) 732 765 733 766 libtclsqlite3.lib: tclsqlite.lo libsqlite3.lib 734 767 $(LTLIB) $(LTLIBOPTS) $(LTLIBPATHS) /OUT:$@ tclsqlite.lo libsqlite3.lib $(LIBTCL:tcl=tclstub) $(TLIBS) 735 768 736 -sqlite3.exe: $(TOP)\src\shell.c libsqlite3.lib sqlite3.h 769 +sqlite3.exe: $(TOP)\src\shell.c libsqlite3.lib sqlite3res.lo sqlite3.h 737 770 $(LTLINK) $(READLINE_FLAGS) \ 738 771 $(TOP)\src\shell.c \ 739 - /link $(LTLINKOPTS) $(LTLIBPATHS) libsqlite3.lib $(LIBREADLINE) $(LTLIBS) $(TLIBS) 772 + /link $(LTLINKOPTS) $(LTLIBPATHS) libsqlite3.lib sqlite3res.lo $(LIBREADLINE) $(LTLIBS) $(TLIBS) 740 773 741 774 # This target creates a directory named "tsrc" and fills it with 742 775 # copies of all of the C source code and header files needed to 743 776 # build on the target system. Some of the C source code and header 744 777 # files are automatically generated. This target takes care of 745 778 # all that automatic generation. 746 779 # ................................................................................ 780 813 # 781 814 parse.lo: parse.c $(HDR) 782 815 $(LTCOMPILE) -c parse.c 783 816 784 817 opcodes.lo: opcodes.c 785 818 $(LTCOMPILE) -c opcodes.c 786 819 820 +# Rule to build the Win32 resources object file. 821 +# 822 +sqlite3res.lo: $(TOP)\src\sqlite3.rc $(HDR) 823 + echo #ifndef SQLITE_RESOURCE_VERSION > sqlite3rc.h 824 + for /F %%V in ('type VERSION') do ( \ 825 + echo #define SQLITE_RESOURCE_VERSION %%V \ 826 + | $(NAWK) "/.*/ { gsub(/[.]/,\",\");print }" >> sqlite3rc.h \ 827 + ) 828 + echo #endif >> sqlite3rc.h 829 + $(LTRCOMPILE) -fo sqlite3res.lo $(TOP)\src\sqlite3.rc 830 + 787 831 # Rules to build individual *.lo files from files in the src directory. 788 832 # 789 833 alter.lo: $(TOP)\src\alter.c $(HDR) 790 834 $(LTCOMPILE) -c $(TOP)\src\alter.c 791 835 792 836 analyze.lo: $(TOP)\src\analyze.c $(HDR) 793 837 $(LTCOMPILE) -c $(TOP)\src\analyze.c ................................................................................ 995 1039 996 1040 tclsqlite.lo: $(TOP)\src\tclsqlite.c $(HDR) 997 1041 $(LTCOMPILE) -DUSE_TCL_STUBS=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c 998 1042 999 1043 tclsqlite-shell.lo: $(TOP)\src\tclsqlite.c $(HDR) 1000 1044 $(LTCOMPILE) -DTCLSH=1 -DBUILD_sqlite -I$(TCLINCDIR) -c $(TOP)\src\tclsqlite.c 1001 1045 1002 -tclsqlite3.exe: tclsqlite-shell.lo libsqlite3.lib 1003 - $(LTLINK) tclsqlite-shell.lo \ 1004 - /link $(LTLINKOPTS) $(LTLIBPATHS) libsqlite3.lib $(LTLIBS) $(TLIBS) 1046 +tclsqlite3.exe: tclsqlite-shell.lo libsqlite3.lib sqlite3res.lo 1047 + $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /OUT:$@ libsqlite3.lib tclsqlite-shell.lo sqlite3res.lo $(LTLIBS) $(TLIBS) 1005 1048 1006 1049 # Rules to build opcodes.c and opcodes.h 1007 1050 # 1008 1051 opcodes.c: opcodes.h $(TOP)\mkopcodec.awk 1009 1052 $(NAWK) -f $(TOP)\mkopcodec.awk opcodes.h > opcodes.c 1010 1053 1011 1054 opcodes.h: parse.h $(TOP)\src\vdbe.c $(TOP)\mkopcodeh.awk ................................................................................ 1110 1153 TESTFIXTURE_SRC1 = sqlite3.c 1111 1154 !IF $(USE_AMALGAMATION)==0 1112 1155 TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC0) 1113 1156 !ELSE 1114 1157 TESTFIXTURE_SRC = $(TESTSRC) $(TOP)\src\tclsqlite.c $(TESTFIXTURE_SRC1) 1115 1158 !ENDIF 1116 1159 1117 -testfixture.exe: $(TESTFIXTURE_SRC) $(HDR) 1160 +testfixture.exe: $(TESTFIXTURE_SRC) sqlite3res.lo $(HDR) 1118 1161 $(LTLINK) -DSQLITE_NO_SYNC=1 $(TESTFIXTURE_FLAGS) \ 1119 1162 -DBUILD_sqlite -I$(TCLINCDIR) \ 1120 1163 $(TESTFIXTURE_SRC) \ 1121 - /link $(LTLINKOPTS) $(LTLIBPATHS) $(LTLIBS) $(TLIBS) 1164 + /link $(LTLINKOPTS) $(LTLIBPATHS) sqlite3res.lo $(LTLIBS) $(TLIBS) 1122 1165 1123 1166 fulltest: testfixture.exe sqlite3.exe 1124 1167 .\testfixture.exe $(TOP)\test\all.test 1125 1168 1126 1169 soaktest: testfixture.exe sqlite3.exe 1127 1170 .\testfixture.exe $(TOP)\test\all.test -soak=1 1128 1171 ................................................................................ 1132 1175 sqlite3_analyzer.c: sqlite3.c $(TOP)\src\test_stat.c $(TOP)\src\tclsqlite.c $(TOP)\tool\spaceanal.tcl 1133 1176 copy sqlite3.c + $(TOP)\src\test_stat.c + $(TOP)\src\tclsqlite.c $@ 1134 1177 echo static const char *tclsh_main_loop(void){ >> $@ 1135 1178 echo static const char *zMainloop = >> $@ 1136 1179 $(NAWK) -f $(TOP)\tool\tostr.awk $(TOP)\tool\spaceanal.tcl >> $@ 1137 1180 echo ; return zMainloop; } >> $@ 1138 1181 1139 -sqlite3_analyzer.exe: sqlite3_analyzer.c 1182 +sqlite3_analyzer.exe: sqlite3_analyzer.c sqlite3res.lo 1140 1183 $(LTLINK) -DBUILD_sqlite -DTCLSH=2 -I$(TCLINCDIR) sqlite3_analyzer.c \ 1141 - /link $(LTLINKOPTS) $(LTLIBPATHS) $(LTLIBS) $(TLIBS) 1184 + /link $(LTLINKOPTS) $(LTLIBPATHS) sqlite3res.lo $(LTLIBS) $(TLIBS) 1142 1185 1143 1186 clean: 1144 1187 del /Q *.lo *.ilk *.lib *.obj *.pdb sqlite3.exe libsqlite3.lib 1145 1188 del /Q *.da *.bb *.bbg gmon.out 1146 1189 del /Q sqlite3.h opcodes.c opcodes.h 1147 1190 del /Q lemon.exe lempar.c parse.* 1148 1191 del /Q mkkeywordhash.exe keywordhash.h ................................................................................ 1149 1192 -rmdir /Q/S .deps 1150 1193 -rmdir /Q/S .libs 1151 1194 -rmdir /Q/S quota2a 1152 1195 -rmdir /Q/S quota2b 1153 1196 -rmdir /Q/S quota2c 1154 1197 -rmdir /Q/S tsrc 1155 1198 del /Q .target_source 1156 - del /Q tclsqlite3.exe 1199 + del /Q tclsqlite3.exe tclsqlite3.exp 1157 1200 del /Q testfixture.exe testfixture.exp test.db 1158 1201 del /Q sqlite3.dll sqlite3.lib sqlite3.exp sqlite3.def 1159 1202 del /Q sqlite3.c 1203 + del /Q sqlite3rc.h 1160 1204 del /Q sqlite3_analyzer.exe sqlite3_analyzer.exp sqlite3_analyzer.c 1161 1205 del /Q sqlite-output.vsix 1162 1206 1163 -# 1164 -# Windows section 1207 +# Dynamic link library section. 1165 1208 # 1166 1209 dll: sqlite3.dll 1167 1210 1168 1211 sqlite3.def: libsqlite3.lib 1169 1212 echo EXPORTS > sqlite3.def 1170 1213 dumpbin /all libsqlite3.lib \ 1171 1214 | $(NAWK) "/ 1 _?sqlite3_/ { sub(/^.* _?/,\"\");print }" \ 1172 1215 | sort >> sqlite3.def 1173 1216 1174 -sqlite3.dll: $(LIBOBJ) sqlite3.def 1175 - $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /DEF:sqlite3.def /OUT:$@ $(LIBOBJ) $(LTLIBS) $(TLIBS) 1217 +sqlite3.dll: $(LIBOBJ) sqlite3res.lo sqlite3.def 1218 + $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /DEF:sqlite3.def /OUT:$@ $(LIBOBJ) sqlite3res.lo $(LTLIBS) $(TLIBS)
Added src/sqlite3.rc.
1 +/* 2 +** 2012 September 2 3 +** 4 +** The author disclaims copyright to this source code. In place of 5 +** a legal notice, here is a blessing: 6 +** 7 +** May you do good and not evil. 8 +** May you find forgiveness for yourself and forgive others. 9 +** May you share freely, never taking more than you give. 10 +** 11 +****************************************************************************** 12 +** 13 +** This file contains code and resources that are specific to Windows. 14 +*/ 15 + 16 +#if !defined(_WIN32_WCE) 17 +#include "winresrc.h" 18 +#else 19 +#include "windows.h" 20 +#endif 21 + 22 +#include "sqlite3.h" 23 +#include "sqlite3rc.h" 24 + 25 +/* 26 + * English (U.S.) resources 27 + */ 28 + 29 +#ifdef _WIN32 30 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US 31 +#pragma code_page(1252) 32 +#endif /* _WIN32 */ 33 + 34 +/* 35 + * Version 36 + */ 37 + 38 +VS_VERSION_INFO VERSIONINFO 39 + FILEVERSION SQLITE_RESOURCE_VERSION 40 + PRODUCTVERSION SQLITE_RESOURCE_VERSION 41 + FILEFLAGSMASK 0x3F 42 +#if defined(_DEBUG) 43 + FILEFLAGS 0x1L 44 +#else 45 + FILEFLAGS 0x0L 46 +#endif 47 + FILEOS VOS__WINDOWS32 48 + FILETYPE VFT_APP 49 + FILESUBTYPE VFT2_UNKNOWN 50 +BEGIN 51 + BLOCK "StringFileInfo" 52 + BEGIN 53 + BLOCK "040904b0" 54 + BEGIN 55 + VALUE "CompanyName", "SQLite Development Team" 56 + VALUE "FileDescription", "SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine." 57 + VALUE "FileVersion", SQLITE_VERSION 58 + VALUE "InternalName", "sqlite3" 59 + VALUE "LegalCopyright", "http://www.sqlite.org/copyright.html" 60 + VALUE "ProductName", "SQLite" 61 + VALUE "ProductVersion", SQLITE_VERSION 62 + VALUE "SourceId", SQLITE_SOURCE_ID 63 + END 64 + END 65 + BLOCK "VarFileInfo" 66 + BEGIN 67 + VALUE "Translation", 0x409, 1200 68 + END 69 +END