32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
|
#! /usr/bin/env python
|
||
|
# encoding: utf-8
|
||
|
|
||
|
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']
|
||
|
def apply_nasm_vars(self):
|
||
|
if hasattr(self,'nasm_flags'):
|
||
|
for flag in self.to_list(self.nasm_flags):
|
||
|
self.env.append_value('NASM_FLAGS',flag)
|
||
|
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))
|
||
|
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')
|
||
|
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)
|
||
|
|
||
|
before('apply_link')(apply_nasm_vars)
|
||
|
extension(EXT_NASM)(nasm_file)
|