waf/playground/top_eq_out/wscript

63 lines
1.4 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 or distclean operations, because it is dangerous.
The example below illustrates project-specific cleaning operations.
Notes:
- The clean operation below can only remove the generated file that
are created during the current build (intermediate .o files)
will not be removed
- File outputs of dynamic builds cannot be removed
(output files are to be known in advance)
- The distclean operation, which normally removes the build folder
completely plus some files, is also modified to remove
the rest of waf-generated files.
"""
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_', ".lock-w")) \
or fn in (Context.DBFILE, 'config.log') \
or fn == 'c4che':
if os.path.isdir(fn):
shutil.rmtree(fn)
else:
os.remove(fn)