| # -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- |
| |
| def options(opt): |
| opt.add_option('--with-sanitizer', action='store', default='', dest='sanitizers', |
| help='Comma-separated list of compiler sanitizers to enable [default=none]') |
| |
| def configure(conf): |
| for san in conf.options.sanitizers.split(','): |
| if not san: |
| continue |
| |
| sanflag = '-fsanitize=%s' % san |
| conf.start_msg('Checking if compiler supports %s' % sanflag) |
| |
| if conf.check_cxx(cxxflags=['-Werror', sanflag, '-fno-omit-frame-pointer'], |
| linkflags=[sanflag], mandatory=False): |
| conf.end_msg('yes') |
| conf.env.append_unique('CXXFLAGS', [sanflag, '-fno-omit-frame-pointer']) |
| conf.env.append_unique('LINKFLAGS', [sanflag]) |
| else: |
| conf.end_msg('no', color='RED') |
| conf.fatal('%s sanitizer is not supported by the current compiler' % san) |