2011-09-10 11:13:51 +02:00
|
|
|
#!/usr/bin/env python
|
|
|
|
# encoding: utf-8
|
2018-01-01 20:53:49 +01:00
|
|
|
# Thomas Nagy, 2008-2018 (ita)
|
2011-09-10 11:13:51 +02:00
|
|
|
|
|
|
|
"""
|
|
|
|
Assembly support, used by tools such as gas and nasm
|
|
|
|
|
|
|
|
To declare targets using assembly::
|
|
|
|
|
|
|
|
def configure(conf):
|
|
|
|
conf.load('gcc gas')
|
|
|
|
|
|
|
|
def build(bld):
|
|
|
|
bld(
|
|
|
|
features='c cstlib asm',
|
|
|
|
source = 'test.S',
|
|
|
|
target = 'asmtest')
|
|
|
|
|
|
|
|
bld(
|
|
|
|
features='asm asmprogram',
|
|
|
|
source = 'test.S',
|
|
|
|
target = 'asmtest')
|
|
|
|
|
|
|
|
Support for pure asm programs and libraries should also work::
|
|
|
|
|
|
|
|
def configure(conf):
|
|
|
|
conf.load('nasm')
|
|
|
|
conf.find_program('ld', 'ASLINK')
|
|
|
|
|
|
|
|
def build(bld):
|
|
|
|
bld(
|
|
|
|
features='asm asmprogram',
|
|
|
|
source = 'test.S',
|
|
|
|
target = 'asmtest')
|
|
|
|
"""
|
|
|
|
|
2015-10-11 11:32:27 +02:00
|
|
|
from waflib import Task
|
2011-09-10 11:13:51 +02:00
|
|
|
from waflib.Tools.ccroot import link_task, stlink_task
|
2015-10-11 11:32:27 +02:00
|
|
|
from waflib.TaskGen import extension
|
2011-09-10 11:13:51 +02:00
|
|
|
|
|
|
|
class asm(Task.Task):
|
|
|
|
"""
|
2016-06-25 20:10:04 +02:00
|
|
|
Compiles asm files by gas/nasm/yasm/...
|
2011-09-10 11:13:51 +02:00
|
|
|
"""
|
|
|
|
color = 'BLUE'
|
2014-04-30 22:37:36 +02:00
|
|
|
run_str = '${AS} ${ASFLAGS} ${ASMPATH_ST:INCPATHS} ${DEFINES_ST:DEFINES} ${AS_SRC_F}${SRC} ${AS_TGT_F}${TGT}'
|
2011-09-10 11:13:51 +02:00
|
|
|
|
|
|
|
@extension('.s', '.S', '.asm', '.ASM', '.spp', '.SPP')
|
|
|
|
def asm_hook(self, node):
|
|
|
|
"""
|
2016-06-25 20:10:04 +02:00
|
|
|
Binds the asm extension to the asm task
|
2011-09-10 11:13:51 +02:00
|
|
|
|
|
|
|
:param node: input file
|
|
|
|
:type node: :py:class:`waflib.Node.Node`
|
|
|
|
"""
|
|
|
|
return self.create_compiled_task('asm', node)
|
|
|
|
|
|
|
|
class asmprogram(link_task):
|
2016-06-25 20:10:04 +02:00
|
|
|
"Links object files into a c program"
|
2011-10-16 18:19:31 +02:00
|
|
|
run_str = '${ASLINK} ${ASLINKFLAGS} ${ASLNK_TGT_F}${TGT} ${ASLNK_SRC_F}${SRC}'
|
2011-09-10 11:13:51 +02:00
|
|
|
ext_out = ['.bin']
|
|
|
|
inst_to = '${BINDIR}'
|
|
|
|
|
|
|
|
class asmshlib(asmprogram):
|
2016-06-25 20:10:04 +02:00
|
|
|
"Links object files into a c shared library"
|
2011-09-10 11:13:51 +02:00
|
|
|
inst_to = '${LIBDIR}'
|
|
|
|
|
|
|
|
class asmstlib(stlink_task):
|
2016-06-25 20:10:04 +02:00
|
|
|
"Links object files into a c static library"
|
2011-09-10 11:13:51 +02:00
|
|
|
pass # do not remove
|
|
|
|
|
2012-09-18 23:54:02 +02:00
|
|
|
def configure(conf):
|
2016-06-25 20:10:04 +02:00
|
|
|
conf.env.ASMPATH_ST = '-I%s'
|