make sqldiff ;# The "sqldiff" command-line tool
#### Targets below require tcl-dev ####
make tclextension-install ;# Install the SQLite TCL extension
- make devtest ;# Run development tests
+ make test ;# Run development tests
make releasetest ;# Run full release tests
make sqlite3_analyzer ;# Builds the "sqlite3_analyzer" tool
make sqldiff.exe
#### Targets below require TCL development libraries ####
make tclextension-install
- make devtest
+ make test
make releasetest
make sqlite3_analyzer.exe
# Notes On Compiling SQLite On All Kinds Of Unix
+## Executive Summary
+
+ 1. Get a tarball of the canonical SQLite source tree and unpack it
+ 2. Run: `./configure`
+ 3. Run commands like: <ul>
+ <li> `make sqlite3.c`
+ <li> `make sqlite3`</ul>
+
+## Details
+
Here are step-by-step instructions on how to build SQLite from
canonical source on any modern machine that isn't Windows. These
notes are tested (on 2024-10-11) on Ubuntu and on MacOS, but they
for the following targets:
<ul>
<li> `make tclextension-install`
- <li> `make devtest`
+ <li> `make test`
<li> `make releasetest`
<li> `make sqlite3_analyzer`
</ul>
# Notes On Compiling SQLite On Windows 11
+## Executive Summary
+
+ 1. Install Microsoft Visual Studio
+ 2. Get a "Native Tools Command Prompt"
+ 3. Get a tarball of the canonical SQLite source tree and unpack it
+ 4. Run commands like: <ul>
+ <li> `make sqlite3.c`
+ <li> `make sqlite3.exe`
+ <li> `make sqlite3.dll`</ul>
+
+## Details For Standard 64-bit Builds On Either x64 Or ARM
+
Below are step-by-step instructions on how to build SQLite from
-canonical source on a new Windows 11 PC, as of 2025-10-31.
+canonical source on a new Windows 11 PC, as of 2026-08-01.
See [](./compile-for-unix.md) for a similar guide for unix-like
systems, including MacOS.
4. Download the SQLite source tree and unpack it. CD into the
toplevel directory of the source tree.
- 5. Run the "`Makefile.msc`" makefile with an appropriate target.
- Examples:
+ 5. The source tree contains the "`make.bat`" batch script that
+ simulations the behavior of Unix-style "make" using "`nmake`".
+ So the build process for Windows is the same as for Unix:
<ul>
- <li> `nmake /f makefile.msc`
- <li> `nmake /f makefile.msc sqlite3.c`
- <li> `nmake /f makefile.msc sqlite3.exe`
- <li> `nmake /f makefile.msc sqldiff.exe`
- <li> `nmake /f makefile.msc sqlite3_rsync.exe`
+ <li> `make sqlite3.c`
+ <li> `make sqlite3.exe`
+ <li> `make sqldiff.exe`
+ <li> `make sqlite3_rsync.exe`
</ul>
- <p>No TCL is required for the nmake targets above. But for the ones
+ <p>No TCL is required for the make targets above. But for the ones
that follow, you will need a TCL installation, as described in step 3
above. If you install TCL in some directory other than C:\\Tcl, then
you will also need to add the "TCLDIR=<i><dir></i>" option on the
nmake command line to tell nmake where your TCL is installed.
<ul>
- <li> `nmake /f makefile.msc tclextension-install`
- <li> `nmake /f makefile.msc devtest`
- <li> `nmake /f makefile.msc releasetest`
- <li> `nmake /f makefile.msc sqlite3_analyzer.exe`
+ <li> `make tclextension-install`
+ <li> `make test`
+ <li> `make releasetest`
</ul>
It is not required that you run the "tclextension-install" target prior to
7. For a debugging build of the CLI, where the ".treetrace" and ".wheretrace"
commands work, add the DEBUG=3 argument to nmake. Like this:
<ul>
- <li> `nmake /f makefile.msc DEBUG=3 clean sqlite3.exe`
+ <li> `make DEBUG=3 clean sqlite3`
</ul>
-
## 32-bit Builds
-C The\suse\sof\ssqlite3_set_clientdata()\sto\slimit\srecursion\sin\s[4687e04d948b787c]\nis\sincorrect.\s\sFixed\shere.
-D 2026-07-31T22:45:45.106
+C Updates\sto\sbuild\sinstructions,\sespecially\son\sWindows.\s\sFix\sa\sharmless\ncompiler\sworking\sin\sdebug\sbuilds\son\sWindows.
+D 2026-08-01T15:08:48.942
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F Makefile.in 5fda086f33b144da08119255da1d2557f983d0764a13707f05acf0159fd89ba5
F Makefile.linux-generic bd3e3cacd369821a6241d4ea1967395c962dfe3057e38cb0a435cee0e8b789d0
F Makefile.msc 4f25c07ccb10cd4fb04eaefba912296664b26cf65152d51974f24272fcf4aa6d
-F README.md f00091ffb5c6379b783afb57ca5f443a5742e119082f37c407f64a5e16c56346
+F README.md 8a7487de00e6d6d360cec15cc114cbb397207e1b975901683561506401c6d48c
F VERSION 99cf3be5f13d091183e4314b7fc2e0c0e69accfbe64608b45a313338bbdd7b62
F art/icon-243x273.gif 9750b734f82fdb3dc43127753d5e6fbf3b62c9f4e136c2fbf573b2f57ea87af5
F art/icon-80x90.gif 65509ce3e5f86a9cd64fe7fca2d23954199f31fe44c1e09e208c80fb83d87031
F configure 9a00b21dfd13757bbfb8d89b30660a89ec1f8f3a79402b8f9f9b6fc475c3303a x
F contrib/sqlitecon.tcl eb4c6578e08dd353263958da0dc620f8400b869a50d06e271ab0be85a51a08d3
F doc/F2FS.txt c1d4a0ae9711cfe0e1d8b019d154f1c29e0d3abfe820787ba1e9ed7691160fcd
-F doc/compile-for-unix.md ebd6e461c71d43291e7e8c6487c9c2716bd997053556ec757509011e77e25581
-F doc/compile-for-windows.md 36601c95fa4070eebfe757684271d17a7c4a586912ba706d0b5e7817e1df54ad
+F doc/compile-for-unix.md e729dff2f54ce7afbb0a8bb6813dcbc8720b3838133c5c7449e39962e6fe5c62
+F doc/compile-for-windows.md 19f87b5b2bd980e0f91c31b2c9d3375e60b4d7901c9bf0c5d060f7cb48334706
F doc/json-enhancements.md e356fc834781f1f1aa22ee300027a270b2c960122468499bf347bb123ce1ea4f
F doc/jsonb.md acd77fc3a709f51242655ad7803510c886aa8304202fa9cf2abc5f5c4e9d7ae5
F doc/lemon.html 2085fda0a90a94fe92159a79dccc5c30d5a2313524887a31659cd66162f17233
F src/expr.c 43c750797e82d5686c0f198d759f77d9c9166038837d7574d75d71649e09a335
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 931f74cec1dc8038a0217ef340c91ce147dd1bbed08dc40c47ee0ec6edfffb08
-F src/func.c 208b4d073a1e823df8d0e19d0529093c09a9984851dcfda9808445541cefe6d0
+F src/func.c d833ab92ed95e84af60247e7d752cda33234d8979173442079d54d96e9853dd9
F src/global.c 7eea537ac0c113ac55cb2dd4d8fc2a6a91ae478be34231b4efaffc46817fee85
F src/hash.c 03c8c0f4be9e8bcb6de65aa26d34a61d48a9430747084a69f9469fbb00ea52ca
F src/hash.h 46b92795a95bfefb210f52f0c316e9d7cdbcdd7e7fcfb0d8be796d3a5767cddf
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 180e75e07630b4fa7abdd28ad889e27031071555078989c40a8c10a1d2905338
-R 8d2d0a9b939ec4258bc739ddc737c04c
+P bf44a08adc94b8c7c69921a1292d56bec0cbd9f3ac772e31d8ea5866e9f46063
+R c754dcf7739c1f4243cfe1763468ec65
U drh
-Z 050ff26189eb4a838917e6b965cbb5aa
+Z e200f72878b5b96a81f656ca3cb9100b
# Remove this line to create a well-formed Fossil manifest.
-bf44a08adc94b8c7c69921a1292d56bec0cbd9f3ac772e31d8ea5866e9f46063
+be245e136a550faa7c84694156c40dc9778f50b00016892c29a2314bef14b6b7
}
}while( i<iGt );
- assert( iLt>0 && iLt<iGt && iGt<n );
+ assert( iLt>0 && iLt<iGt && (unsigned)iGt<n );
testcase( iGt>iLt+1 );
assert( a[iLt]==rPivot );
assert( a[iLt-1]<=rPivot );