waf/playground/top_eq_out/wscript

72 lines
1.5 KiB
Python

#! /usr/bin/env python
# encoding: utf-8
"""
Example providing a clean context for when top==out.
When top==out, waf will not do anything by default
in the clean context, because it could be dangerous.
You need to do something for your particular use case.
This example will remove all the generated files that
will appear under out.
The distclean operation, which normally removes the build folder
completely plus some files, is also modified to remove
the rest of waf-generated files.
Notes:
- this example won't work when using dynamic builds.
This is because it uses the tasks output files, which
are known in advance.
For it to work, you would need to store the outputs of
dynamic builds somewhere.
But top == out is a rare case, so why bother.
"""
VERSION='0.0.1'
APPNAME='clean_test'
top = '.'
out = '.'
def options(opt):
opt.load('compiler_cxx')
def configure(conf):
conf.load('compiler_cxx')
conf.check(header_name='stdio.h', features='cxx cxxprogram', mandatory=False)
def build(bld):
bld(features='cxx', source='a.cpp', target='pouet')
if bld.cmd == 'clean':
for tgen in bld.get_all_task_gen():
tgen.post()
for t in tgen.tasks:
for n in t.outputs:
if n.is_child_of(bld.bldnode):
n.delete()
def distclean(ctx):
import os, shutil
from waflib import Context
for fn in os.listdir('.'):
if fn.startswith('.conf_check_') or fn.startswith(".lock-w") \
or fn in (Context.DBFILE, 'config.log') \
or fn == 'c4che':
if os.path.isdir(fn):
shutil.rmtree(fn)
else:
os.unlink(fn)