config XZ_DEC
	tristate "XZ decompression support"
	select CRC32
	help
	  LZMA2 compression algorithm and BCJ filters are supported using
	  the .xz file format as the container. For integrity checking,
	  CRC32 is supported. See Documentation/xz.txt for more information.

if XZ_DEC

config XZ_DEC_X86
	bool "x86 BCJ filter decoder"
	default y if X86
	select XZ_DEC_BCJ

config XZ_DEC_POWERPC
	bool "PowerPC BCJ filter decoder"
	default y if PPC
	select XZ_DEC_BCJ

config XZ_DEC_IA64
	bool "IA-64 BCJ filter decoder"
	default y if IA64
	select XZ_DEC_BCJ

config XZ_DEC_ARM
	bool "ARM BCJ filter decoder"
	default y if ARM
	select XZ_DEC_BCJ

config XZ_DEC_ARMTHUMB
	bool "ARM-Thumb BCJ filter decoder"
	default y if (ARM && ARM_THUMB)
	select XZ_DEC_BCJ

config XZ_DEC_SPARC
	bool "SPARC BCJ filter decoder"
	default y if SPARC
	select XZ_DEC_BCJ

config XZ_DEC_MICROLZMA
	bool "MicroLZMA decoder"
	default n
	help
	  MicroLZMA is a header format variant where the first byte
	  of a raw LZMA stream (without the end of stream marker) has
	  been replaced with a bitwise-negation of the lc/lp/pb
	  properties byte. MicroLZMA was created to be used in EROFS
	  but can be used by other things too where wasting minimal
	  amount of space for headers is important.

	  Unless you know that you need this, say N.

endif

config XZ_DEC_BCJ
	bool
	default n

config XZ_DEC_TEST
	tristate "XZ decompressor tester"
	default n
	depends on XZ_DEC
	help
	  This allows passing .xz files to the in-kernel XZ decoder via
	  a character special file. It calculates CRC32 of the decompressed
	  data and writes diagnostics to the system log.

	  Unless you are developing the XZ decoder, you don't need this
	  and should say N.
