#! /usr/bin/env python
# encoding: utf-8

"""
 * weighttp - a lightweight and simple webserver benchmarking tool
 *
 * Author:
 *     Copyright (c) 2009 Thomas Porzelt
 *
 * License:
 *     MIT, see COPYING file
"""

import Options

# the following two variables are used by the target "waf dist"
VERSION='0.2'
APPNAME='weighttp'

# these variables are mandatory ('/' are converted automatically)
srcdir = '.'
blddir = 'build'


def set_options(opt):
	opt.tool_options('compiler_cc')
	
	# ./waf configure options
	#opt.add_option('--with-xyz', action='store_true', help='with xyz', dest = 'xyz', default = False)


def configure(conf):
	conf.env['CCFLAGS'] += [
		'-std=gnu99', '-Wall', '-Wshadow', '-W', '-pedantic', '-g', '-g2', '-O2', '-Wmissing-declarations',
		'-Wdeclaration-after-statement', '-Wno-pointer-sign', '-Wcast-align', '-Winline', '-Wsign-compare',
		'-Wnested-externs', '-Wpointer-arith', '-Wbad-function-cast', '-Wmissing-prototypes',
		'-fPIC', '-fno-strict-aliasing',
	]

	conf.check_tool('compiler_cc')

	# check for libev
	conf.check(lib='ev', uselib_store='ev', mandatory=True)
	conf.check(header_name='ev.h', uselib='ev', mandatory=True)

	# check for libpthread
	conf.check(lib='pthread', uselib_store='pthread', mandatory=True)
	conf.check(header_name='pthread.h', uselib='pthread', mandatory=True)

	# check for needed headers
	conf.check(header_name='unistd.h')
	conf.check(header_name='stdint.h')
	conf.check(header_name='fcntl.h')
	conf.check(header_name='inttypes.h')

	# check for needed functions
	#conf.check(function_name='writev', header_name='sys/uio.h', define_name='HAVE_WRITEV')


def build(bld):
	bld.new_task_gen(
		features = 'cc cprogram',
		source = ['src/client.c', 'src/weighttp.c', 'src/worker.c'],
		defines = ['HAVE_CONFIG_H=1', 'VERSION="' + VERSION + '"'],
		includes = '.',
		uselib = 'ev pthread',
		target = 'weighttp'
	)