# Path: waflib/Tools/ccroot.py
# SYSTEM_LIB_PATHS = ['/usr/lib64', '/usr/lib', '/usr/local/lib64', '/usr/local/lib']
# USELIB_VARS = Utils.defaultdict(set)
# def create_compiled_task(self, name, node):
# def to_incnodes(self, inlst):
# def apply_incpaths(self):
# 	def add_target(self, target):
# 	def exec_command(self, *k, **kw):
# 	def exec_mf(self):
# def rm_tgt(cls):
# 	def wrap(self):
# def apply_skip_stlib_link_deps(self):
# def apply_link(self):
# def use_rec(self, name, **kw):
# def process_use(self):
# def accept_node_to_link(self, node):
# def add_objects_from_tgen(self, tg):
# def get_uselib_vars(self):
# def propagate_uselib_vars(self):
# def apply_implib(self):
# def apply_vnum(self):
# 	def keyword(self):
# 	def run(self):
# 	def runnable_status(self):
# 	def runnable_status(self):
# def read_shlib(self, name, paths=[], export_includes=[], export_defines=[]):
# def read_stlib(self, name, paths=[], export_includes=[], export_defines=[]):
# def process_lib(self):
# 	def runnable_status(self):
# def add_those_o_files(self, node):
# def process_objs(self):
# def read_object(self, obj):
# def set_full_paths_hpux(self):
# class link_task(Task.Task):
# class stlink_task(link_task):
# class vnum(Task.Task):
# class fake_shlib(link_task):
# class fake_stlib(stlink_task):
# class fake_o(Task.Task):
# 
# Path: waflib/Configure.py
# def conf(f):
# 	"""
# 	Decorator: attach new configuration functions to :py:class:`waflib.Build.BuildContext` and
# 	:py:class:`waflib.Configure.ConfigurationContext`. The methods bound will accept a parameter
# 	named 'mandatory' to disable the configuration errors::
# 
# 		def configure(conf):
# 			conf.find_program('abc', mandatory=False)
# 
# 	:param f: method to bind
# 	:type f: function
# 	"""
# 	def fun(*k, **kw):
# 		mandatory = kw.pop('mandatory', True)
# 		try:
# 			return f(*k, **kw)
# 		except Errors.ConfigurationError:
# 			if mandatory:
# 				raise
# 
# 	fun.__name__ = f.__name__
# 	setattr(ConfigurationContext, f.__name__, fun)
# 	setattr(Build.BuildContext, f.__name__, fun)
# 	return f


from waflib.Tools import ccroot, ar, gxx
from waflib.Configure import conf
import waflib.extras.clang_cross_common
	import os
	conf.get_cc_version(cxx, clang=True)
	conf.env.CXX_NAME = 'clang'

@conf
def clangxx_modifier_x86_64_w64_mingw32(conf):
	conf.gcc_modifier_win32()

@conf
def clangxx_modifier_i386_w64_mingw32(conf):
	conf.gcc_modifier_win32()

@conf
def clangxx_modifier_msvc(conf):
	v = conf.env
	v.cxxprogram_PATTERN = v.cprogram_PATTERN
	v.cxxshlib_PATTERN   = v.cshlib_PATTERN

	v.CXXFLAGS_cxxshlib  = []
	v.LINKFLAGS_cxxshlib = v.LINKFLAGS_cshlib
	v.cxxstlib_PATTERN   = v.cstlib_PATTERN

	v.LINK_CXX           = v.CXX + ['-fuse-ld=lld', '-nostdlib']
	v.CXXLNK_TGT_F       = v.CCLNK_TGT_F

@conf
def clangxx_modifier_x86_64_windows_msvc(conf):
	conf.clang_modifier_msvc()
	conf.clangxx_modifier_msvc()

	# Allow the user to override any flags if they so desire.

# Path: waflib/Tools/ccroot.py
# SYSTEM_LIB_PATHS = ['/usr/lib64', '/usr/lib', '/usr/local/lib64', '/usr/local/lib']
# USELIB_VARS = Utils.defaultdict(set)
# def create_compiled_task(self, name, node):
# def to_incnodes(self, inlst):
# def apply_incpaths(self):
# 	def add_target(self, target):
# 	def exec_command(self, *k, **kw):
# 	def exec_mf(self):
# def rm_tgt(cls):
# 	def wrap(self):
# def apply_skip_stlib_link_deps(self):
# def apply_link(self):
# def use_rec(self, name, **kw):
# def process_use(self):
# def accept_node_to_link(self, node):
# def add_objects_from_tgen(self, tg):
# def get_uselib_vars(self):
# def propagate_uselib_vars(self):
# def apply_implib(self):
# def apply_vnum(self):
# 	def keyword(self):
# 	def run(self):
# 	def runnable_status(self):
# 	def runnable_status(self):
# def read_shlib(self, name, paths=[], export_includes=[], export_defines=[]):
# def read_stlib(self, name, paths=[], export_includes=[], export_defines=[]):
# def process_lib(self):
# 	def runnable_status(self):
# def add_those_o_files(self, node):
# def process_objs(self):
# def read_object(self, obj):
# def set_full_paths_hpux(self):
# class link_task(Task.Task):
# class stlink_task(link_task):
# class vnum(Task.Task):
# class fake_shlib(link_task):
# class fake_stlib(stlink_task):
# class fake_o(Task.Task):
# 
# Path: waflib/Configure.py
# def conf(f):
# 	"""
# 	Decorator: attach new configuration functions to :py:class:`waflib.Build.BuildContext` and
# 	:py:class:`waflib.Configure.ConfigurationContext`. The methods bound will accept a parameter
# 	named 'mandatory' to disable the configuration errors::
# 
# 		def configure(conf):
# 			conf.find_program('abc', mandatory=False)
# 
# 	:param f: method to bind
# 	:type f: function
# 	"""
# 	def fun(*k, **kw):
# 		mandatory = kw.pop('mandatory', True)
# 		try:
# 			return f(*k, **kw)
# 		except Errors.ConfigurationError:
# 			if mandatory:
# 				raise
# 
# 	fun.__name__ = f.__name__
# 	setattr(ConfigurationContext, f.__name__, fun)
# 	setattr(Build.BuildContext, f.__name__, fun)
# 	return f


# Path: waflib/extras/clangxx_cross.py
from waflib.Tools import ccroot, ar, gxx
from waflib.Configure import conf
import waflib.extras.clang_cross_common
	import os

	conf.get_cc_version(cxx, clang=True)
	conf.env.CXX_NAME = 'clang'

@conf
def clangxx_modifier_x86_64_w64_mingw32(conf):
	conf.gcc_modifier_win32()

@conf
def clangxx_modifier_i386_w64_mingw32(conf):
	conf.gcc_modifier_win32()

@conf
def clangxx_modifier_msvc(conf):
	v = conf.env
	v.cxxprogram_PATTERN = v.cprogram_PATTERN
	v.cxxshlib_PATTERN   = v.cshlib_PATTERN

	v.CXXFLAGS_cxxshlib  = []
	v.LINKFLAGS_cxxshlib = v.LINKFLAGS_cshlib
	v.cxxstlib_PATTERN   = v.cstlib_PATTERN

	v.LINK_CXX           = v.CXX + ['-fuse-ld=lld', '-nostdlib']
	v.CXXLNK_TGT_F       = v.CCLNK_TGT_F

@conf
def clangxx_modifier_x86_64_windows_msvc(conf):
	conf.clang_modifier_msvc()
	conf.clangxx_modifier_msvc()

	# Allow the user to override any flags if they so desire.

	clang_modifier_user_func = getattr(conf, 'clangxx_modifier_x86_64_windows_msvc_user', None)