Skip to content

Commit 57d3855

Browse files
committed
Updates README.md with new build instructions and required CFLAGS
1 parent 50e5b04 commit 57d3855

File tree

1 file changed

+11
-20
lines changed

1 file changed

+11
-20
lines changed

README.md

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ SQLCipher is maintained by Zetetic, LLC, and additional information and document
1717
- 100% of data in the database file is encrypted
1818
- Good security practices (CBC mode, HMAC, key derivation)
1919
- Zero-configuration and application level cryptography
20-
- Algorithms provided by the peer reviewed OpenSSL crypto library.
21-
- Configurable crypto providers
20+
- Support for multiple cryptographic providers
2221

2322
## Compatibility
2423

@@ -32,26 +31,18 @@ The SQLCipher team welcomes contributions to the core library. All contributions
3231

3332
## Compiling
3433

35-
Building SQLCipher is similar to compiling a regular version of SQLite from source, with a couple of small exceptions:
34+
Building SQLCipher is similar to compiling a regular version of SQLite from source, with a few small exceptions. You must:
3635

37-
1. You *must* define `SQLITE_HAS_CODEC` and either `SQLITE_TEMP_STORE=2` or `SQLITE_TEMP_STORE=3`
38-
2. You will need to link against a support cryptographic provider (OpenSSL, LibTomCrypt, CommonCrypto/Security.framework, or NSS)
36+
1. define `SQLITE_HAS_CODEC`
37+
2. define `SQLITE_TEMP_STORE=2` or `SQLITE_TEMP_STORE=3` (or use `configure`'s --with-tempstore=yes option)
38+
3. define `SQLITE_EXTRA_INIT=sqlcipher_extra_init` and `SQLITE_EXTRA_SHUTDOWN=sqlcipher_extra_shutdown`
39+
4. define `SQLITE_THREADSAFE` to `1` or `2` (enabled automatically by `configure`)
40+
2. compile and link with a supported cryptographic provider (OpenSSL, LibTomCrypt, CommonCrypto/Security.framework, or NSS)
3941

40-
The following examples demonstrate linking against OpenSSL, which is a readily available provider on most Unix-like systems.
41-
42-
Example 1. Static linking (replace /opt/local/lib with the path to libcrypto.a). Note in this
43-
example, `--with-tempstore=yes` is setting `SQLITE_TEMP_STORE=2` for the build.
44-
45-
```
46-
$ ./configure --with-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" \
47-
LDFLAGS="/opt/local/lib/libcrypto.a"
48-
$ make
49-
```
50-
51-
Example 2. Dynamic linking
42+
The following examples demonstrate use of OpenSSL, which is a readily available provider on most Unix-like systems. Note that, in this example, `--with-tempstore=yes` is setting `SQLITE_TEMP_STORE=2` for the build, and `SQLITE_THREADSAFE` has a default value of `1`.
5243

5344
```
54-
$ ./configure --with-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC" \
45+
$ ./configure --with-tempstore=yes CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_EXTRA_INIT=sqlcipher_extra_init -DSQLITE_EXTRA_SHUTDOWN=sqlcipher_extra_shutdown" \
5546
LDFLAGS="-lcrypto"
5647
$ make
5748
```
@@ -65,7 +56,7 @@ As a result, the SQLCipher package includes it's own independent tests that exer
6556
To run SQLCipher specific tests, configure as described here and run the following to execute the tests and receive a report of the results:
6657

6758
```
68-
$ ./configure --with-tempstore=yes --enable-fts5 CFLAGS="-DSQLITE_HAS_CODEC -DSQLCIPHER_TEST" \
59+
$ ./configure --with-tempstore=yes --enable-fts5 CFLAGS="-DSQLITE_HAS_CODEC -DSQLITE_EXTRA_INIT=sqlcipher_extra_init -DSQLITE_EXTRA_SHUTDOWN=sqlcipher_extra_shutdown -DSQLCIPHER_TEST" \
6960
LDFLAGS="-lcrypto"
7061
$ make testfixture
7162
$ ./testfixture test/sqlcipher.test
@@ -133,7 +124,7 @@ support@zetetic.net!
133124

134125
## Community Edition Open Source License
135126

136-
Copyright (c) 2020, ZETETIC LLC
127+
Copyright (c) 2025, ZETETIC LLC
137128
All rights reserved.
138129

139130
Redistribution and use in source and binary forms, with or without

0 commit comments

Comments
 (0)