Package wafadmin :: Package Tools :: Module winres
[hide private]
[frames] | no frames]

Source Code for Module wafadmin.Tools.winres

 1  #!/usr/bin/env python 
 2  # encoding: utf-8 
 3  # Brant Young, 2007 
 4   
 5  "This hook is called when the class cpp/cc task generator encounters a '.rc' file: X{.rc -> [.res|.rc.o]}" 
 6   
 7  import os, sys 
 8  import TaskGen, Task 
 9  from Utils import quote_whitespace 
10  from TaskGen import extension 
11   
12  EXT_WINRC = ['.rc'] 
13   
14  winrc_str = '${WINRC} ${_CPPDEFFLAGS} ${_CXXDEFFLAGS} ${_CCDEFFLAGS} ${WINRCFLAGS} ${_CPPINCFLAGS} ${_CXXINCFLAGS} ${_CCINCFLAGS} ${WINRC_TGT_F}${TGT} ${WINRC_SRC_F}${SRC}' 
15 16 @extension(EXT_WINRC) 17 -def rc_file(self, node):
18 obj_ext = '.rc.o' 19 if self.env['WINRC_TGT_F'] == '/fo ': obj_ext = '.res' 20 21 rctask = self.create_task('winrc') 22 rctask.set_inputs(node) 23 rctask.set_outputs(node.change_ext(obj_ext)) 24 25 # make linker can find compiled resource files 26 self.compiled_tasks.append(rctask)
27 28 # create our action, for use with rc file 29 Task.simple_task_type('winrc', winrc_str, color='BLUE', before='cc cxx')
30 31 -def detect(conf):
32 v = conf.env 33 34 cc = os.path.basename(''.join(v['CC']).lower()) 35 cxx = os.path.basename(''.join(v['CXX']).lower()) 36 37 # find rc.exe 38 if cc in ['gcc', 'cc', 'g++', 'c++']: 39 winrc = conf.find_program('windres', var='WINRC') 40 v['WINRC_TGT_F'] = '-o ' 41 v['WINRC_SRC_F'] = '-i ' 42 elif cc == 'cl.exe' or cxx == 'cl.exe': 43 winrc = conf.find_program('RC', var='WINRC') 44 v['WINRC_TGT_F'] = '/fo ' 45 v['WINRC_SRC_F'] = ' ' 46 else: 47 return 0 48 49 if not winrc: 50 conf.fatal('winrc was not found!!') 51 else: 52 v['WINRC'] = quote_whitespace(winrc) 53 54 v['WINRCFLAGS'] = ''
55