Add example for cleaning when top==out.

This commit is contained in:
Jerome Carretero 2012-06-02 19:47:11 -04:00
parent 5915ae6d59
commit 6b05e61567
3 changed files with 77 additions and 0 deletions

4
playground/top_eq_out/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
.lock-w*
.conf_check_*
config.log
c4che

View File

@ -0,0 +1,2 @@
int truc=5;

View File

@ -0,0 +1,71 @@
#! /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)