/ Changes On Branch win32Resources
Login

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