28 lines
964 B
Python
28 lines
964 B
Python
|
#! /usr/bin/env python
|
||
|
# encoding: utf-8
|
||
|
|
||
|
import os,sys
|
||
|
import Task
|
||
|
from TaskGen import extension,taskgen,after,before
|
||
|
EXT_ASM=['.s','.S','.asm','.ASM','.spp','.SPP']
|
||
|
as_str='${AS} ${ASFLAGS} ${_ASINCFLAGS} ${SRC} -o ${TGT}'
|
||
|
Task.simple_task_type('asm',as_str,'PINK',ext_out='.o',shell=False)
|
||
|
def asm_hook(self,node):
|
||
|
try:obj_ext=self.obj_ext
|
||
|
except AttributeError:obj_ext='_%d.o'%self.idx
|
||
|
task=self.create_task('asm',node,node.change_ext(obj_ext))
|
||
|
self.compiled_tasks.append(task)
|
||
|
self.meths.append('asm_incflags')
|
||
|
def asm_incflags(self):
|
||
|
self.env.append_value('_ASINCFLAGS',self.env.ASINCFLAGS)
|
||
|
var=('cxx'in self.features)and'CXX'or'CC'
|
||
|
self.env.append_value('_ASINCFLAGS',self.env['_%sINCFLAGS'%var])
|
||
|
def detect(conf):
|
||
|
conf.find_program(['gas','as'],var='AS')
|
||
|
if not conf.env.AS:conf.env.AS=conf.env.CC
|
||
|
|
||
|
extension(EXT_ASM)(asm_hook)
|
||
|
after('apply_obj_vars_cc')(asm_incflags)
|
||
|
after('apply_obj_vars_cxx')(asm_incflags)
|
||
|
before('apply_link')(asm_incflags)
|