2013-07-16 13:28:28 +02:00
|
|
|
from waflib.Configure import conf
|
|
|
|
|
|
|
|
@conf
|
|
|
|
def get_config_header(self, defines=True, headers=False, define_prefix=''):
|
|
|
|
"""
|
|
|
|
Only difference is it outputs `#define VAR 0` or `#define VAR value`
|
|
|
|
instead of `#undef VAR` or `#define VAR val`.
|
|
|
|
"""
|
|
|
|
from waflib.Tools.c_config import DEFKEYS, INCKEYS
|
|
|
|
lst = []
|
|
|
|
if headers:
|
|
|
|
for x in self.env[INCKEYS]:
|
|
|
|
lst.append('#include <%s>' % x)
|
|
|
|
|
|
|
|
if defines:
|
|
|
|
for x in self.env[DEFKEYS]:
|
|
|
|
val = self.is_defined(x) and self.get_define(x) or "0"
|
|
|
|
lst.append('#define %s %s' % (define_prefix + x, val))
|
|
|
|
|
|
|
|
return "\n".join(lst)
|
|
|
|
|
|
|
|
from waflib import TaskGen
|
|
|
|
|
|
|
|
@TaskGen.extension('.m')
|
|
|
|
def m_hook(self, node):
|
|
|
|
"""
|
|
|
|
Makes waf call the c compiler for objective-c files
|
|
|
|
"""
|
|
|
|
return self.create_compiled_task('c', node)
|
|
|
|
|
2018-06-16 15:17:46 +02:00
|
|
|
def try_last_linkflags(cls):
|
|
|
|
try:
|
|
|
|
return cls.orig_run_str + ' ${LAST_LINKFLAGS}'
|
|
|
|
except AttributeError:
|
|
|
|
try:
|
|
|
|
return cls.hcode + ' ${LAST_LINKFLAGS}'
|
|
|
|
except TypeError:
|
|
|
|
return cls.hcode.decode('iso8859-1') + ' ${LAST_LINKFLAGS}'
|
|
|
|
|
2013-07-16 13:28:28 +02:00
|
|
|
def build(ctx):
|
|
|
|
from waflib import Task
|
2014-10-11 20:35:10 +02:00
|
|
|
|
2013-07-16 13:28:28 +02:00
|
|
|
cls = Task.classes['cprogram']
|
|
|
|
class cprogram(cls):
|
2018-06-16 15:17:46 +02:00
|
|
|
run_str = try_last_linkflags(cls)
|
|
|
|
|
|
|
|
cls = Task.classes['cshlib']
|
|
|
|
class cshlib(cls):
|
|
|
|
run_str = try_last_linkflags(cls)
|
2013-07-16 13:28:28 +02:00
|
|
|
|
|
|
|
cls = Task.classes['macplist']
|
|
|
|
class macplist(cls):
|
|
|
|
def run(self):
|
|
|
|
from waflib import Utils
|
|
|
|
if getattr(self, 'code', None):
|
|
|
|
txt = self.code
|
|
|
|
else:
|
|
|
|
txt = self.inputs[0].read()
|
|
|
|
txt = Utils.subst_vars(txt, self.env)
|
|
|
|
self.outputs[0].write(txt)
|