waf

FORK: waf with some random patches
git clone https://git.neptards.moe/neptards/waf.git
Log | Files | Refs | README

wscript (1202B)


      1 #! /usr/bin/env python
      2 
      3 def options(opt):
      4 	opt.load('compiler_c')
      5 
      6 def configure(conf):
      7 	conf.load('compiler_c')
      8 	conf.find_program('ldd')
      9 	conf.where_is_shlib(lib='m')
     10 
     11 # --- support code below ---
     12 
     13 import re
     14 from waflib import Task, TaskGen, Configure
     15 
     16 class ldd_run(Task.Task):
     17 	color = 'PINK'
     18 	run_str = '${LDD} ${SRC} > ${TGT}'
     19 
     20 	def post_run(self):
     21 		ret = Task.Task.post_run(self)
     22 		libname = self.generator.lib
     23 		re_libpath = re.compile('lib%s.*\s+=>\s+(\S+%s\S+)\s+' % (libname, libname), re.M)
     24 		m = re_libpath.search(self.outputs[0].read())
     25 		if m:
     26 			self.generator.tmp.append(m.group(1))
     27 		else:
     28 			return ret or 1
     29 		return ret
     30 
     31 @TaskGen.feature('ldd_check')
     32 @TaskGen.after_method('apply_link')
     33 def do_ldd_check(self):
     34 	self.create_task('ldd_run', self.link_task.outputs[0], self.path.find_or_declare('ldd.out'))
     35 
     36 @Configure.conf
     37 def where_is_shlib(self, lib):
     38 	tmp = []
     39 	def check_msg(self):
     40 		return tmp[0]
     41 
     42 	self.check(
     43 		fragment  = 'int main() { return 0; }\n',
     44 		features  = 'c cprogram ldd_check',
     45 		lib       = lib,
     46 		linkflags = '-Wl,--no-as-needed',
     47 		msg       = 'Where is library %r' % lib,
     48 		define    = 'LIBFROM',
     49 		tmp       = tmp,
     50 		okmsg     = check_msg)
     51 
     52 	return tmp[0]
     53