diff --git a/wscript b/wscript
index 8c89ab5..ee0e754 100644
--- a/wscript
+++ b/wscript
@@ -7,6 +7,13 @@
 APPNAME = 'PSync'
 GIT_TAG_PREFIX = ''
 
+BOOST_COMPRESSION_CODE = '''
+#include <boost/iostreams/filter/{0}.hpp>
+int main() {{ boost::iostreams::{0}_compressor test; }}
+'''
+
+COMPRESSION_SCHEMES = ['zlib', 'gzip', 'bzip2', 'lzma', 'zstd']
+
 def options(opt):
     opt.load(['compiler_c', 'compiler_cxx', 'gnu_dirs'])
     opt.load(['default-compiler-flags', 'coverage', 'sanitizers',
@@ -19,6 +26,10 @@
     optgrp.add_option('--with-tests', action='store_true', default=False,
                       help='Build unit tests')
 
+    for scheme in COMPRESSION_SCHEMES:
+        optgrp.add_option('--without-{}'.format(scheme), action='store_true', default=False,
+                          help='Build without {}'.format(scheme))
+
 def configure(conf):
     conf.load(['compiler_c', 'compiler_cxx', 'gnu_dirs',
                'default-compiler-flags', 'boost',
@@ -36,6 +47,14 @@
 
     conf.check_boost(lib=boost_libs, mt=True)
 
+    for scheme in COMPRESSION_SCHEMES:
+        if getattr(conf.options, 'without_{}'.format(scheme)):
+            continue
+        conf.check_cxx(fragment=BOOST_COMPRESSION_CODE.format(scheme),
+                       use='BOOST', execute=False, mandatory=False,
+                       msg='Checking for {} support in boost iostreams'.format(scheme),
+                       define_name='HAVE_{}'.format(scheme.upper()))
+
     conf.check_compiler_flags()
 
     # Loading "late" to prevent tests from being compiled with profiling flags
