Commit 1541d648 authored by Arnout Vandecappelle (Essensium/Mind)'s avatar Arnout Vandecappelle (Essensium/Mind) Committed by Peter Korsgaard
Browse files

sqlcipher: new package



SQLCipher is a fork of SQLite that adds AES encryption using OpenSSL.
It relies on tcl to generate some of its source code, so host-tcl is
required.

[Peter: select openssl]
Signed-off-by: default avatarArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Signed-off-by: default avatarPeter Korsgaard <jacmet@sunsite.dk>
parent e0cfcc47
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -272,6 +272,7 @@ endmenu
menu "Database"
source "package/berkeleydb/Config.in"
source "package/mysql_client/Config.in"
source "package/sqlcipher/Config.in"
source "package/sqlite/Config.in"
endmenu

+28 −0
Original line number Diff line number Diff line
config BR2_PACKAGE_SQLCIPHER
	bool "sqlcipher"
	depends on !BR2_PACKAGE_SQLITE
	select BR2_PACKAGE_OPENSSL
	help
	  SQLCipher is an SQLite extension that provides 256 bits AES
	  encryption of database files.  Note that it is a fork of SQLite
	  and they cannot be installed side-by-side.
	  http://sqlcipher.net

config BR2_PACKAGE_SQLCIPHER_READLINE
	bool "Command-line editing"
	depends on BR2_PACKAGE_SQLCIPHER
	select BR2_PACKAGE_NCURSES
	select BR2_PACKAGE_READLINE
	help
	  Enable command-line editing. This requires ncurses and readline.

config BR2_PACKAGE_SQLCIPHER_STAT3
	bool "Additional query optimizations (stat3)"
	depends on BR2_PACKAGE_SQLCIPHER
	help
	  Adds additional logic to the ANALYZE command and to the query
	  planner that can help SQLite to choose a better query plan under
	  certain situations.

comment "sqlcipher conflicts with sqlite"
	depends on BR2_PACKAGE_SQLITE
+56 −0
Original line number Diff line number Diff line
#############################################################
#
# Sqlcipher extension of sqlite
# http://sqlcipher.net
#
#############################################################
SQLCIPHER_VERSION = 1.1.9
SQLCIPHER_SITE = http://github.com/sjlombardo/sqlcipher/tarball/v$(SQLCIPHER_VERSION)
SQLCIPHER_DEPENDENCIES = openssl host-tcl
SQLCIPHER_INSTALL_STAGING = YES

SQLCIPHER_CONF_ENV = \
	CFLAGS+=" $(SQLCIPHER_CFLAGS)" \
	LDFLAGS+=" $(SQLCIPHER_LDFLAGS)" \
	TCLSH_CMD=$(HOST_DIR)/usr/bin/tclsh8.4

SQLCIPHER_CONF_OPT = \
	--enable-threadsafe \
	--localstatedir=/var

SQLCIPHER_CFLAGS += -DSQLITE_HAS_CODEC # Required according to the README
SQLCIPHER_LDFLAGS += -lcrypto

ifneq ($(BR2_LARGEFILE),y)
# the sqlite configure script fails to define SQLITE_DISABLE_LFS when
# --disable-largefile is passed, breaking the build. Work around it by
# simply adding it to CFLAGS for configure instead
SQLCIPHER_CFLAGS += -DSQLITE_DISABLE_LFS
endif

ifeq ($(BR2_PACKAGE_SQLCIPHER_STAT3),y)
SQLCIPHER_CFLAGS += -DSQLITE_ENABLE_STAT3
endif

ifeq ($(BR2_PACKAGE_SQLCIPHER_READLINE),y)
SQLCIPHER_DEPENDENCIES += ncurses readline
SQLCIPHER_CONF_OPT += --with-readline-inc="-I$(STAGING_DIR)/usr/include"
else
SQLCIPHER_CONF_OPT += --disable-readline
endif

define SQLCIPHER_UNINSTALL_TARGET_CMDS
	rm -f $(TARGET_DIR)/usr/bin/sqlite3
	rm -f $(TARGET_DIR)/usr/lib/libsqlite3*
	rm -f $(TARGET_DIR)/usr/lib/pkgconfig/sqlite3.pc
	rm -f $(TARGET_DIR)/usr/include/sqlite3*.h
endef

define SQLCIPHER_UNINSTALL_STAGING_CMDS
	rm -f $(STAGING_DIR)/usr/bin/sqlite3
	rm -f $(STAGING_DIR)/usr/lib/libsqlite3*
	rm -f $(STAGING_DIR)/usr/lib/pkgconfig/sqlite3.pc
	rm -f $(STAGING_DIR)/usr/include/sqlite3*.h
endef

$(eval $(call AUTOTARGETS))