mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.3 KiB
49 lines
1.3 KiB
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
# Thomas Nagy, 2008
|
|
|
|
"""
|
|
Nasm processing
|
|
"""
|
|
|
|
import os
|
|
import TaskGen, Task, Utils
|
|
from TaskGen import taskgen, before, extension
|
|
|
|
nasm_str = '${NASM} ${NASM_FLAGS} ${NASM_INCLUDES} ${SRC} -o ${TGT}'
|
|
|
|
EXT_NASM = ['.s', '.S', '.asm', '.ASM', '.spp', '.SPP']
|
|
|
|
@before('apply_link')
|
|
def apply_nasm_vars(self):
|
|
|
|
# flags
|
|
if hasattr(self, 'nasm_flags'):
|
|
for flag in self.to_list(self.nasm_flags):
|
|
self.env.append_value('NASM_FLAGS', flag)
|
|
|
|
# includes - well, if we suppose it works with c processing
|
|
if hasattr(self, 'includes'):
|
|
for inc in self.to_list(self.includes):
|
|
node = self.path.find_dir(inc)
|
|
if not node:
|
|
raise Utils.WafError('cannot find the dir' + inc)
|
|
self.env.append_value('NASM_INCLUDES', '-I%s' % node.srcpath(self.env))
|
|
self.env.append_value('NASM_INCLUDES', '-I%s' % node.bldpath(self.env))
|
|
|
|
@extension(EXT_NASM)
|
|
def nasm_file(self, node):
|
|
try: obj_ext = self.obj_ext
|
|
except AttributeError: obj_ext = '_%d.o' % self.idx
|
|
|
|
task = self.create_task('nasm', node, node.change_ext(obj_ext))
|
|
self.compiled_tasks.append(task)
|
|
|
|
self.meths.append('apply_nasm_vars')
|
|
|
|
# create our action here
|
|
Task.simple_task_type('nasm', nasm_str, color='BLUE', ext_out='.o', shell=False)
|
|
|
|
def detect(conf):
|
|
nasm = conf.find_program(['nasm', 'yasm'], var='NASM', mandatory=True)
|
|
|
|
|