Skip to content

Commit 3778346

Browse files
committed
Merge branch 'prerelease'
2 parents 32137cb + 83cddfd commit 3778346

184 files changed

Lines changed: 48826 additions & 3459 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# SQLCipher Change Log
22
All notable changes to this project will be documented in this file.
33

4+
## [4.2.0] - (May 2019 - [4.2.0 changes])
5+
- Adds PRAGMA cipher_integrity_check to perform independent verification of page HMACs
6+
- Updates baseline to upstream SQLite 3.28.0
7+
48
## [4.1.0] - (March 2019 - [4.1.0 changes])
59
- Defer reading salt from header until key derivation is triggered
610
- Clarify usage of sqlite3_rekey for plaintext databases in header
@@ -140,7 +144,9 @@ All notable changes to this project will be documented in this file.
140144
### Security
141145
- Change KDF iteration length from 4,000 to 64,000
142146

143-
[unreleased]: https://github.com/sqlcipher/sqlcipher/compare/v4.1.0...prerelease
147+
[unreleased]: https://github.com/sqlcipher/sqlcipher/compare/v4.2.0...prerelease
148+
[4.2.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.2.0
149+
[4.2.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.1.0...v4.2.0
144150
[4.1.0]: https://github.com/sqlcipher/sqlcipher/tree/v4.1.0
145151
[4.1.0 changes]: https://github.com/sqlcipher/sqlcipher/compare/v4.0.1...v4.1.0
146152
[4.0.1]: https://github.com/sqlcipher/sqlcipher/tree/v4.0.1

LICENSE.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
The author disclaims copyright to this source code. In place of
2+
a legal notice, here is a blessing:
3+
4+
* May you do good and not evil.
5+
* May you find forgiveness for yourself and forgive others.
6+
* May you share freely, never taking more than you give.

Makefile.in

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ TESTSRC = \
442442
$(TOP)/src/test_tclsh.c \
443443
$(TOP)/src/test_tclvar.c \
444444
$(TOP)/src/test_thread.c \
445+
$(TOP)/src/test_vdbecov.c \
445446
$(TOP)/src/test_vfs.c \
446447
$(TOP)/src/test_windirent.c \
447448
$(TOP)/src/test_window.c \
@@ -1083,12 +1084,9 @@ opcodes.h: parse.h $(TOP)/src/vdbe.c $(TOP)/tool/mkopcodeh.tcl
10831084
#
10841085
parse.h: parse.c
10851086

1086-
parse.c: $(TOP)/src/parse.y lemon$(BEXE) $(TOP)/tool/addopcodes.tcl
1087+
parse.c: $(TOP)/src/parse.y lemon$(BEXE)
10871088
cp $(TOP)/src/parse.y .
1088-
rm -f parse.h
10891089
./lemon$(BEXE) $(OPT_FEATURE_FLAGS) $(OPTS) parse.y
1090-
mv parse.h parse.h.temp
1091-
$(TCLSH_CMD) $(TOP)/tool/addopcodes.tcl parse.h.temp >parse.h
10921090

10931091
sqlite3.h: $(TOP)/src/sqlite.h.in $(TOP)/manifest mksourceid$(BEXE) $(TOP)/VERSION
10941092
$(TCLSH_CMD) $(TOP)/tool/mksqlite3h.tcl $(TOP) >sqlite3.h
@@ -1182,10 +1180,10 @@ fts3_write.lo: $(TOP)/ext/fts3/fts3_write.c $(HDR) $(EXTHDR)
11821180
rtree.lo: $(TOP)/ext/rtree/rtree.c $(HDR) $(EXTHDR)
11831181
$(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/rtree/rtree.c
11841182

1185-
sqlite3session.lo: $(TOP)/ext/userauth/userauth.c $(HDR) $(EXTHDR)
1183+
userauth.lo: $(TOP)/ext/userauth/userauth.c $(HDR) $(EXTHDR)
11861184
$(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/userauth/userauth.c
11871185

1188-
userauth.lo: $(TOP)/ext/session/sqlite3session.c $(HDR) $(EXTHDR)
1186+
sqlite3session.lo: $(TOP)/ext/session/sqlite3session.c $(HDR) $(EXTHDR)
11891187
$(LTCOMPILE) -DSQLITE_CORE -c $(TOP)/ext/session/sqlite3session.c
11901188

11911189
json1.lo: $(TOP)/ext/misc/json1.c
@@ -1407,8 +1405,9 @@ loadfts$(EXE): $(TOP)/tool/loadfts.c libsqlite3.la
14071405
# releasetest.tcl script.
14081406
#
14091407
VALIDIDS=' sqlite3(changeset|changegroup|session)?_'
1410-
checksymbols: sqlite3.lo
1411-
nm -g --defined-only sqlite3.lo | egrep -v $(VALIDIDS); test $$? -ne 0
1408+
checksymbols: sqlite3.o
1409+
nm -g --defined-only sqlite3.o
1410+
nm -g --defined-only sqlite3.o | egrep -v $(VALIDIDS); test $$? -ne 0
14121411
echo '0 errors out of 1 tests'
14131412

14141413
# Build the amalgamation-autoconf package. The amalamgation-tarball target builds
@@ -1457,7 +1456,7 @@ install: sqlcipher$(TEXE) lib_install sqlite3.h sqlcipher.pc ${HAVE_TCL:1=tcl_in
14571456
$(INSTALL) -m 0644 sqlcipher.pc $(DESTDIR)$(pkgconfigdir)
14581457

14591458
pkgIndex.tcl:
1460-
echo 'package ifneeded sqlite3 $(RELEASE) [list load $(TCLLIBDIR)/libtclsqlite3$(SHLIB_SUFFIX) sqlite3]' > $@
1459+
echo 'package ifneeded sqlite3 $(RELEASE) [list load [file join $$dir libtclsqlite3[info sharedlibextension]] sqlite3]' > $@
14611460
tcl_install: lib_install libtclsqlite3.la pkgIndex.tcl
14621461
$(INSTALL) -d $(DESTDIR)$(TCLLIBDIR)
14631462
$(LTINSTALL) libtclsqlite3.la $(DESTDIR)$(TCLLIBDIR)

Makefile.msc

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,13 @@ SQLITETCLH = sqlite_tcl.h
320320
SQLITETCLDECLSH = sqlite_tclDecls.h
321321
!ENDIF
322322

323+
# This is the name to use for the dynamic link library (DLL) containing the
324+
# Tcl bindings for SQLite.
325+
#
326+
!IFNDEF SQLITE3TCLDLL
327+
SQLITE3TCLDLL = tclsqlite3.dll
328+
!ENDIF
329+
323330
# These are the additional targets that the targets that integrate with the
324331
# Tcl library should depend on when compiling, etc.
325332
#
@@ -495,9 +502,9 @@ UCRTLIBPATH = $(UCRTLIBPATH:\\=\)
495502
# will run on the platform that is doing the build.
496503
#
497504
!IF $(USE_FULLWARN)!=0
498-
BCC = $(NCC) -nologo -W4 $(CCOPTS) $(BCCOPTS)
505+
BCC = $(NCC) -nologo -W4 -Fd$*.pdb $(CCOPTS) $(BCCOPTS)
499506
!ELSE
500-
BCC = $(NCC) -nologo -W3 $(CCOPTS) $(BCCOPTS)
507+
BCC = $(NCC) -nologo -W3 -Fd$*.pdb $(CCOPTS) $(BCCOPTS)
501508
!ENDIF
502509

503510
# Check if assembly code listings should be generated for the source
@@ -853,6 +860,14 @@ RCC = $(RCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1
853860
# prior to running nmake in order to match the actual installed location and
854861
# version on this machine.
855862
#
863+
!IFNDEF TCLVERSION
864+
TCLVERSION = 86
865+
!ENDIF
866+
867+
!IFNDEF TCLSUFFIX
868+
TCLSUFFIX =
869+
!ENDIF
870+
856871
!IFNDEF TCLDIR
857872
TCLDIR = $(TOP)\compat\tcl
858873
!ENDIF
@@ -866,11 +881,11 @@ TCLLIBDIR = $(TCLDIR)\lib
866881
!ENDIF
867882

868883
!IFNDEF LIBTCL
869-
LIBTCL = tcl86.lib
884+
LIBTCL = tcl$(TCLVERSION)$(TCLSUFFIX).lib
870885
!ENDIF
871886

872887
!IFNDEF LIBTCLSTUB
873-
LIBTCLSTUB = tclstub86.lib
888+
LIBTCLSTUB = tclstub$(TCLVERSION)$(TCLSUFFIX).lib
874889
!ENDIF
875890

876891
!IFNDEF LIBTCLPATH
@@ -1063,7 +1078,7 @@ RCC = $(RCC) -I$(ICUINCDIR)
10631078
# Command line prefixes for compiling code, compiling resources,
10641079
# linking, etc.
10651080
#
1066-
LTCOMPILE = $(TCC) -Fo$@
1081+
LTCOMPILE = $(TCC) -Fo$@ -Fd$*.pdb
10671082
LTRCOMPILE = $(RCC) -r
10681083
LTLIB = lib.exe
10691084
LTLINK = $(TCC) -Fe$@
@@ -1081,6 +1096,11 @@ LTLIBS = $(LTLIBS) rpcrt4.lib
10811096
!IFDEF PLATFORM
10821097
LTLINKOPTS = $(LTLINKOPTS) /NOLOGO /MACHINE:$(PLATFORM)
10831098
LTLIBOPTS = /NOLOGO /MACHINE:$(PLATFORM)
1099+
!ELSEIF "$(VISUALSTUDIOVERSION)"=="12.0" || \
1100+
"$(VISUALSTUDIOVERSION)"=="14.0" || \
1101+
"$(VISUALSTUDIOVERSION)"=="15.0"
1102+
LTLINKOPTS = /NOLOGO /MACHINE:x86
1103+
LTLIBOPTS = /NOLOGO /MACHINE:x86
10841104
!ELSE
10851105
LTLINKOPTS = $(LTLINKOPTS) /NOLOGO
10861106
LTLIBOPTS = /NOLOGO
@@ -1504,6 +1524,7 @@ TESTSRC = \
15041524
$(TOP)\src\test_tclsh.c \
15051525
$(TOP)\src\test_tclvar.c \
15061526
$(TOP)\src\test_thread.c \
1527+
$(TOP)\src\test_vdbecov.c \
15071528
$(TOP)\src\test_vfs.c \
15081529
$(TOP)\src\test_windirent.c \
15091530
$(TOP)\src\test_window.c \
@@ -1672,7 +1693,7 @@ TESTOPTS = --verbose=file --output=test-out.txt
16721693
# Extra targets for the "all" target that require Tcl.
16731694
#
16741695
!IF $(NO_TCL)==0
1675-
ALL_TCL_TARGETS = libtclsqlite3.lib
1696+
ALL_TCL_TARGETS = $(SQLITE3TCLDLL)
16761697
!ELSE
16771698
ALL_TCL_TARGETS =
16781699
!ENDIF
@@ -1704,7 +1725,22 @@ libsqlite3.lib: $(LIBOBJ)
17041725
$(LTLIB) $(LTLIBOPTS) /OUT:$@ $(LIBOBJ) $(TLIBS)
17051726

17061727
libtclsqlite3.lib: tclsqlite.lo libsqlite3.lib
1707-
$(LTLIB) $(LTLIBOPTS) $(LTLIBPATHS) /OUT:$@ tclsqlite.lo libsqlite3.lib $(LIBTCLSTUB) $(TLIBS)
1728+
$(LTLIB) $(LTLIBOPTS) $(TCLLIBPATHS) $(LTLIBPATHS) /OUT:$@ tclsqlite.lo libsqlite3.lib $(LIBTCLSTUB) $(TLIBS)
1729+
1730+
tclsqlite3.def: tclsqlite.lo
1731+
echo EXPORTS > tclsqlite3.def
1732+
dumpbin /all tclsqlite.lo \
1733+
| $(TCLSH_CMD) $(TOP)\tool\replace.tcl include "^\s+/EXPORT:_?((?:Sqlite3|Tclsqlite3)_[^@]*)(?:@\d+)?$$" \1 \
1734+
| sort >> tclsqlite3.def
1735+
1736+
pkgIndex.tcl: $(TOP)\VERSION
1737+
for /F %%V in ('type "$(TOP)\VERSION"') do ( \
1738+
echo package ifneeded sqlite3 @version@ [list load [file join $$dir $(SQLITE3TCLDLL)] sqlite3] \
1739+
| $(TCLSH_CMD) $(TOP)\tool\replace.tcl exact @version@ %%V > pkgIndex.tcl \
1740+
)
1741+
1742+
$(SQLITE3TCLDLL): libtclsqlite3.lib $(LIBRESOBJS) tclsqlite3.def pkgIndex.tcl
1743+
$(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL /DEF:tclsqlite3.def /OUT:$@ libtclsqlite3.lib $(LIBRESOBJS) $(LTLIBS) $(TLIBS)
17081744
# <</mark>>
17091745

17101746
$(SQLITE3DLL): $(LIBOBJ) $(LIBRESOBJS) $(CORE_LINK_DEP)
@@ -1844,7 +1880,7 @@ opcodes.lo: opcodes.c
18441880
#
18451881
!IF $(USE_RC)!=0
18461882
# <<block1>>
1847-
$(LIBRESOBJS): $(TOP)\src\sqlite3.rc $(SQLITE3H)
1883+
$(LIBRESOBJS): $(TOP)\src\sqlite3.rc $(SQLITE3H) $(TOP)\VERSION
18481884
echo #ifndef SQLITE_RESOURCE_VERSION > sqlite3rc.h
18491885
for /F %%V in ('type "$(TOP)\VERSION"') do ( \
18501886
echo #define SQLITE_RESOURCE_VERSION %%V \
@@ -2110,12 +2146,10 @@ opcodes.h: parse.h $(TOP)\src\vdbe.c $(TOP)\tool\mkopcodeh.tcl
21102146
#
21112147
parse.h: parse.c
21122148

2113-
parse.c: $(TOP)\src\parse.y lemon.exe $(TOP)\tool\addopcodes.tcl
2149+
parse.c: $(TOP)\src\parse.y lemon.exe
21142150
del /Q parse.y parse.h parse.h.temp 2>NUL
21152151
copy $(TOP)\src\parse.y .
21162152
.\lemon.exe $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(EXT_FEATURE_FLAGS) $(OPTS) parse.y
2117-
move parse.h parse.h.temp
2118-
$(TCLSH_CMD) $(TOP)\tool\addopcodes.tcl parse.h.temp > parse.h
21192153

21202154
$(SQLITE3H): $(TOP)\src\sqlite.h.in $(TOP)\manifest mksourceid.exe $(TOP)\VERSION
21212155
$(TCLSH_CMD) $(TOP)\tool\mksqlite3h.tcl $(TOP:\=/) > $(SQLITE3H) $(MKSQLITE3H_ARGS)
@@ -2521,6 +2555,7 @@ clean:
25212555
del /Q *.bsc *.def *.cod *.da *.bb *.bbg *.vc gmon.out 2>NUL
25222556
del /Q $(SQLITE3EXE) $(SQLITE3DLL) Replace.exe 2>NUL
25232557
# <<mark>>
2558+
del /Q $(SQLITE3TCLDLL) pkgIndex.tcl 2>NUL
25242559
del /Q opcodes.c opcodes.h 2>NUL
25252560
del /Q lemon.* lempar.c parse.* 2>NUL
25262561
del /Q mksourceid.* mkkeywordhash.* keywordhash.h 2>NUL
@@ -2531,6 +2566,7 @@ clean:
25312566
del /Q .target_source 2>NUL
25322567
del /Q tclsqlite3.exe $(SQLITETCLH) $(SQLITETCLDECLSH) 2>NUL
25332568
del /Q lsm.dll lsmtest.exe 2>NUL
2569+
del /Q atrc.exe changesetfuzz.exe dbtotxt.exe index_usage.exe 2>NUL
25342570
del /Q testloadext.dll 2>NUL
25352571
del /Q testfixture.exe test.db 2>NUL
25362572
del /Q LogEst.exe fts3view.exe rollback-test.exe showdb.exe dbdump.exe 2>NUL

README.md

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -136,16 +136,28 @@ This repository contains the complete source code for the
136136
are also included. However, many other test scripts
137137
and most of the documentation are managed separately.
138138

139-
SQLite [does not use Git](https://sqlite.org/whynotgit.html).
140-
If you are reading this on GitHub, then you are looking at an
141-
unofficial mirror. See <https://sqlite.org/src> for the official
142-
repository.
143-
144-
## Obtaining The Code
139+
## Version Control
145140

146141
SQLite sources are managed using the
147142
[Fossil](https://www.fossil-scm.org/), a distributed version control system
148-
that was specifically designed to support SQLite development.
143+
that was specifically designed and written to support SQLite development.
144+
The [Fossil repository](https://sqlite.org/src/timeline) contains the urtext.
145+
146+
If you are reading this on GitHub or some other Git repository or service,
147+
then you are looking at a mirror. The names of check-ins and
148+
other artifacts in a Git mirror are different from the official
149+
names for those objects. The offical names for check-ins are
150+
found in a footer on the check-in comment for authorized mirrors.
151+
The official check-in name can also be seen in the `manifest.uuid` file
152+
in the root of the tree. Always use the official name, not the
153+
Git-name, when communicating about an SQLite check-in.
154+
155+
If you pulled your SQLite source code from a secondary source and want to
156+
verify its integrity, there are hints on how to do that in the
157+
[Verifying Code Authenticity](#vauth) section below.
158+
159+
## Obtaining The Code
160+
149161
If you do not want to use Fossil, you can download tarballs or ZIP
150162
archives or [SQLite archives](https://sqlite.org/cli.html#sqlar) as follows:
151163

@@ -160,7 +172,7 @@ archives or [SQLite archives](https://sqlite.org/cli.html#sqlar) as follows:
160172
[SQLite-archive](https://www.sqlite.org/src/sqlar/sqlite.sqlar?r=release).
161173

162174
* For other check-ins, substitute an appropriate branch name or
163-
tag or hash prefix for "release" in the URLs of the previous
175+
tag or hash prefix in place of "release" in the URLs of the previous
164176
bullet. Or browse the [timeline](https://www.sqlite.org/src/timeline)
165177
to locate the check-in desired, click on its information page link,
166178
then click on the "Tarball" or "ZIP Archive" links on the information
@@ -294,11 +306,8 @@ the src/parse.y file. The conversion of "parse.y" into "parse.c" is done
294306
by the [lemon](./doc/lemon.html) LALR(1) parser generator. The source code
295307
for lemon is at tool/lemon.c. Lemon uses the tool/lempar.c file as a
296308
template for generating its parser.
297-
298309
Lemon also generates the **parse.h** header file, at the same time it
299-
generates parse.c. But the parse.h header file is
300-
modified further (to add additional symbols) using the ./addopcodes.tcl
301-
Tcl script.
310+
generates parse.c.
302311

303312
The **opcodes.h** header file contains macros that define the numbers
304313
corresponding to opcodes in the "VDBE" virtual machine. The opcodes.h
@@ -425,10 +434,42 @@ Key files:
425434
There are many other source files. Each has a succinct header comment that
426435
describes its purpose and role within the larger system.
427436

437+
<a name="vauth"></a>
438+
## Verifying Code Authenticity
439+
440+
If you obtained an SQLite source tree from a secondary source, such as a
441+
GitHub mirror, and you want to verify that it has not been altered, there
442+
are a couple of ways to do that.
443+
444+
If you have a release version of SQLite, and you are using the
445+
`sqlite3.c` amalgamation, then SHA3-256 hashes for the amalgamation are
446+
available in the [change log](https://www.sqlite.org/changes.html) on
447+
the official website. After building the `sqlite3.c` file, you can check
448+
that it is authentic by comparing the hash. This does not ensure that the
449+
test scripts are unaltered, but it does validate the deliverable part of
450+
the code and the verification process only involves computing and
451+
comparing a single hash.
452+
453+
For versions other than an official release, or if you are building the
454+
`sqlite3.c` amalgamation using non-standard build options, the verification
455+
process is a little more involved. The `manifest` file at the root directory
456+
of the source tree
457+
contains either a SHA3-256 hash (for newer files) or a SHA1 hash (for
458+
older files) for every source file in the repository. You can write a script
459+
to extracts hashes from `manifest` and verifies the hashes against the
460+
corresponding files in the source tree. The SHA3-256 hash of the `manifest`
461+
file itself is the official name of the version of the source tree that you
462+
have. The `manifest.uuid` file should contain the SHA3-256 hash of the
463+
`manifest` file. If all of the above hash comparisons are correct, then
464+
you can be confident that your source tree is authentic and unadulterated.
465+
466+
The format of the `manifest` file should be mostly self-explanatory, but
467+
if you want details, they are available
468+
[here](https://fossil-scm.org/fossil/doc/trunk/www/fileformat.wiki#manifest).
428469

429470
## Contacts
430471

431-
The main SQLite webpage is [http://www.sqlite.org/](http://www.sqlite.org/)
472+
The main SQLite website is [http://www.sqlite.org/](http://www.sqlite.org/)
432473
with geographically distributed backups at
433474
[http://www2.sqlite.org/](http://www2.sqlite.org) and
434475
[http://www3.sqlite.org/](http://www3.sqlite.org).

SQLCipher.podspec.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
"requires_arc": false,
1616
"source": {
1717
"git": "https://github.com/sqlcipher/sqlcipher.git",
18-
"tag": "v4.1.0"
18+
"tag": "v4.2.0"
1919
},
2020
"summary": "Full Database Encryption for SQLite.",
21-
"version": "4.1.0",
21+
"version": "4.2.0",
2222
"subspecs": [
2323
{
2424
"compiler_flags": [

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.27.2
1+
3.28.0

autoconf/Makefile.msc

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -433,9 +433,9 @@ UCRTLIBPATH = $(UCRTLIBPATH:\\=\)
433433
# will run on the platform that is doing the build.
434434
#
435435
!IF $(USE_FULLWARN)!=0
436-
BCC = $(NCC) -nologo -W4 $(CCOPTS) $(BCCOPTS)
436+
BCC = $(NCC) -nologo -W4 -Fd$*.pdb $(CCOPTS) $(BCCOPTS)
437437
!ELSE
438-
BCC = $(NCC) -nologo -W3 $(CCOPTS) $(BCCOPTS)
438+
BCC = $(NCC) -nologo -W3 -Fd$*.pdb $(CCOPTS) $(BCCOPTS)
439439
!ENDIF
440440

441441
# Check if assembly code listings should be generated for the source
@@ -808,7 +808,7 @@ BCC = $(BCC) -Zi
808808
# Command line prefixes for compiling code, compiling resources,
809809
# linking, etc.
810810
#
811-
LTCOMPILE = $(TCC) -Fo$@
811+
LTCOMPILE = $(TCC) -Fo$@ -Fd$*.pdb
812812
LTRCOMPILE = $(RCC) -r
813813
LTLIB = lib.exe
814814
LTLINK = $(TCC) -Fe$@
@@ -826,6 +826,11 @@ LTLIBS = $(LTLIBS) rpcrt4.lib
826826
!IFDEF PLATFORM
827827
LTLINKOPTS = /NOLOGO /MACHINE:$(PLATFORM)
828828
LTLIBOPTS = /NOLOGO /MACHINE:$(PLATFORM)
829+
!ELSEIF "$(VISUALSTUDIOVERSION)"=="12.0" || \
830+
"$(VISUALSTUDIOVERSION)"=="14.0" || \
831+
"$(VISUALSTUDIOVERSION)"=="15.0"
832+
LTLINKOPTS = /NOLOGO /MACHINE:x86
833+
LTLIBOPTS = /NOLOGO /MACHINE:x86
829834
!ELSE
830835
LTLINKOPTS = /NOLOGO
831836
LTLIBOPTS = /NOLOGO

0 commit comments

Comments
 (0)