#! /usr/bin/env python
# encoding: utf-8
# a1batross, mittorn, 2018

def options(opt):
	pass

def configure(conf):
	if conf.options.BUILD_TYPE != 'sanitize':
		conf.fatal('useless without -T sanitize')

	if conf.env.COMPILER_CC != 'clang':
		conf.fatal('only clang is supported')

	conf.env.append_unique('CFLAGS', '-fsanitize=fuzzer')
	conf.env.append_unique('LINKFLAGS', '-fsanitize=fuzzer')

def add_runner_target(bld, lib, func):
	source = bld.path.ant_glob('*.c')
	includes = '.'

	bld(
		source   = source,
		target   = 'run-fuzzer-' + func,
		features = 'c cprogram',
		includes = includes,
		use      = 'DL werror',
		defines  = ['FUNC="Fuzz_' + func + '"', 'LIB="' + lib + '"'],
		install_path = bld.env.BINDIR,
		subsystem = bld.env.CONSOLE_SUBSYSTEM
	)

def build(bld):
	add_runner_target(bld, 'libxash.so', 'Sound_LoadMPG')
	add_runner_target(bld, 'libxash.so', 'Sound_ParseID3Tag')
	add_runner_target(bld, 'libxash.so', 'Sound_LoadWAV')
	add_runner_target(bld, 'libxash.so', 'Image_LoadBMP')
	add_runner_target(bld, 'libxash.so', 'Image_LoadPNG')
	add_runner_target(bld, 'libxash.so', 'Image_LoadDDS')
	add_runner_target(bld, 'libxash.so', 'Image_LoadTGA')
