mirror of
https://gitlab.com/ita1024/waf.git
synced 2024-11-26 11:51:20 +01:00
80 lines
2.2 KiB
Python
80 lines
2.2 KiB
Python
#! /usr/bin/env python
|
|
# encoding: utf-8
|
|
# Thomas Nagy, 2010 (ita)
|
|
|
|
VERSION='0.0.1'
|
|
APPNAME='cc_test'
|
|
|
|
"""
|
|
The build groups can be processed all at once (required for the progress bar)
|
|
or sequentially in a lazy manner.
|
|
|
|
Each time one more .c file will be added during the build and compiled and linked in app
|
|
|
|
$ waf distclean configure build build
|
|
'distclean' finished successfully (0.005s)
|
|
Setting top to : /dynamic_build
|
|
Setting out to : /dynamic_build/build
|
|
Checking for 'gcc' (c compiler) : ok
|
|
'configure' finished successfully (0.091s)
|
|
|
|
Waf: Entering directory `/dynamic_build/build'
|
|
[1/1] foo_3.c: -> build/foo_3.c
|
|
[2/4] c: main.c -> build/main.c.1.o
|
|
[3/4] c: build/foo_3.c -> build/foo_3.c.1.o
|
|
[4/4] cprogram: build/main.c.1.o build/foo_3.c.1.o -> build/app
|
|
Waf: Leaving directory `/dynamic_build/build'
|
|
'build' finished successfully (5.169s)
|
|
|
|
Waf: Entering directory `/dynamic_build/build'
|
|
[1/1] foo_17.c: -> build/foo_17.c
|
|
[3/5] c: build/foo_17.c -> build/foo_17.c.1.o
|
|
[5/5] cprogram: build/main.c.1.o build/foo_17.c.1.o build/foo_3.c.1.o -> build/app
|
|
Waf: Leaving directory `/dynamic_build/build'
|
|
'build' finished successfully (5.144s)
|
|
"""
|
|
|
|
top = '.'
|
|
|
|
def options(opt):
|
|
opt.load('compiler_c')
|
|
|
|
def configure(conf):
|
|
conf.load('compiler_c')
|
|
|
|
|
|
def build(bld):
|
|
"""
|
|
groups will be processed one by one during the build
|
|
the progress bar display will be inaccurate
|
|
"""
|
|
|
|
bld.post_mode = Build.POST_LAZY
|
|
|
|
import random
|
|
rnd = random.randint(0, 25)
|
|
bld(
|
|
rule = "sleep 2 && (echo 'int num%d = %d;' > ${TGT})" % (rnd, rnd),
|
|
target = 'foo_%d.c' % rnd,
|
|
)
|
|
|
|
bld.add_group()
|
|
|
|
bld.program(source='main.c', target='app', dynamic_source='*.c')
|
|
|
|
# support for the "dynamic_source" attribute follows
|
|
|
|
from waflib import Build, Utils, TaskGen
|
|
@TaskGen.feature('c')
|
|
@TaskGen.before('process_source', 'process_rule')
|
|
def dynamic_post(self):
|
|
"""
|
|
bld(dynamic_source='*.c', ..) will search for source files to add to the attribute 'source'
|
|
we could also call "eval" or whatever expression
|
|
"""
|
|
if not getattr(self, 'dynamic_source', None):
|
|
return
|
|
self.source = Utils.to_list(self.source)
|
|
self.source.extend(self.path.get_bld().ant_glob(self.dynamic_source, remove=False))
|
|
|