config BR2_PACKAGE_SQLITE
	bool "sqlite"
	help
	  SQLite is a small C library that implements a
	  self-contained, embeddable, zero-configuration SQL database
	  engine.

	  http://www.sqlite.org/

if BR2_PACKAGE_SQLITE

config BR2_PACKAGE_SQLITE_STAT4
	bool "Additional query optimizations (stat4)"
	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.

config BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA
	bool "Enable convenient access to meta-data about tables and queries"
	help
	  When this option is defined there are some additional APIs
	  enabled to acces meta-data about tables and queries (see
	  https://sqlite.org/compile.html).

config BR2_PACKAGE_SQLITE_ENABLE_FTS3
	bool "Enable version 3 of the full-text search engine"
	help
	  When this option is defined in the amalgamation (see
	  http://www.sqlite.org/amalgamation.html), version 3 of the
	  full-text search engine is added to the build automatically.

config BR2_PACKAGE_SQLITE_ENABLE_JSON1
	bool "Enable the JSON extensions for SQLite"
	help
	  When this option is defined in the amalgamation, the JSON
	  extensions are added to the build automatically.

config BR2_PACKAGE_SQLITE_ENABLE_UNLOCK_NOTIFY
	bool "Enable sqlite3_unlock_notify() interface"
	help
	  This option enables the sqlite3_unlock_notify() interface
	  and its accosiated functionality. See the documentation
	  http://www.sqlite.org/unlock_notify.html for additional
	  information.

config BR2_PACKAGE_SQLITE_SECURE_DELETE
	bool "Set the secure_delete pragma on by default"
	help
	  This compile-time option changes the default settings of the
	  secure_delete pragma. When this option is not used,
	  secure_delete defaults to off. When this option is present,
	  secure_delete defaults to on.

	  The secure_delete setting causes deleted content to be
	  overwritten with zeros. There is a small performance penalty
	  for this since additional I/O must occur. On the other hand,
	  secure_delete can prevent sensitive information from
	  lingering in unused parts of the database file after it has
	  allegedly been deleted. See the documentation on the
	  http://www.sqlite.org/pragma.html#pragma_secure_delete for
	  additional information.

config BR2_PACKAGE_SQLITE_NO_SYNC
	bool "Disable fsync"
	help
	  By default SQLite forces all database transactions to
	  storage immediately using fsync() to protect against data
	  loss in case of power failure. This option turns this
	  behavior off resulting in higher performance especially when
	  using slow flash storage.

endif
