forked from mirror/waf
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
987 B
Python
39 lines
987 B
Python
#! /usr/bin/env python
|
|
|
|
"""
|
|
Strip a program/library after it is created.
|
|
|
|
Since creating the file and modifying it occurs in the same
|
|
task, there will be no race condition with other tasks dependent
|
|
on the output.
|
|
|
|
For other implementation possibilities, see strip_hack.py and strip_on_install.py
|
|
"""
|
|
|
|
from waflib import Task
|
|
|
|
def configure(conf):
|
|
conf.find_program('strip')
|
|
|
|
def wrap_compiled_task(classname):
|
|
# override the class to add a new 'run' method
|
|
# such an implementation guarantees that the absence of race conditions
|
|
#
|
|
cls1 = Task.classes[classname]
|
|
cls2 = type(classname, (cls1,), {'run_str': '${STRIP} ${TGT[0].abspath()}'})
|
|
cls3 = type(classname, (cls2,), {})
|
|
|
|
def run_all(self):
|
|
if self.env.NO_STRIPPING:
|
|
return cls1.run(self)
|
|
ret = cls1.run(self)
|
|
if ret:
|
|
return ret
|
|
return cls2.run(self)
|
|
cls3.run = run_all
|
|
|
|
for k in 'cprogram cshlib cxxprogram cxxshlib fcprogram fcshlib dprogram dshlib'.split():
|
|
if k in Task.classes:
|
|
wrap_compiled_task(k)
|
|
|