| # Gaudi Framework, version v25r0 |

Home |  | Generated: Mon Feb 17 2014

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
gaudi-policy.py
Go to the documentation of this file.
1 # -*- python -*-
2
3 ## stdlib imports
4 import os
5 import os.path as osp
6 import re
7 import sys
8
9 ## waf imports
10 import waflib.Errors
11 import waflib.Logs as msg
12 import waflib.Utils
13 import waflib.Configure
14 import waflib.Build
15 import waflib.Task
16 import waflib.Tools.ccroot
17 from waflib.Configure import conf
18 from waflib.TaskGen import feature, before_method, after_method, extension, after
19
20
21 ### ---------------------------------------------------------------------------
22 @feature('cxx', 'c')
23 @after_method('apply_incpaths')
24 def _gaudi_insert_blddir(self):
25 self.env.prepend_value('INCPATHS', self.env.BUILD_INSTALL_AREA_INCDIR)
26 self.env.prepend_value('INCPATHS', '.')
27
28 self.env.prepend_value('LIBPATH', self.env.BUILD_INSTALL_AREA_LIBDIR)
29 return
30
31 ### ---------------------------------------------------------------------------
32 @feature('hwaf_runtime_tsk', '*')
33 @before_method('process_rule')
34 def _gaudi_insert_project_level_pythonpath(self):
35 '''
36 insert_project_level_pythonpath adds ${INSTALL_AREA}/python into the
37 ${PYTHONPATH} environment variable.
38 '''
39 _get = getattr(self, 'hwaf_get_install_path', None)
40 if not _get: _get = getattr(self.bld, 'hwaf_get_install_path')
41 pydir = _get('${INSTALL_AREA}/python')
42 self.env.prepend_value('PYTHONPATH', pydir)
43 return
44
45 ### ---------------------------------------------------------------------------
46 @feature('hwaf_runtime_tsk', '*')
47 @before_method('process_rule')
48 def _gaudi_insert_project_level_joboptpath(self):
49 '''
50 insert_project_level_joboptpath adds ${INSTALL_AREA}/jobOptions into the
51 ${JOBOPTSEARCHPATH} environment variable.
52 '''
53 _get = getattr(self, 'hwaf_get_install_path', None)
54 if not _get: _get = getattr(self.bld, 'hwaf_get_install_path')
55 d = _get('${INSTALL_AREA}/jobOptions')
56 self.env.prepend_value('JOBOPTSEARCHPATH', d)
57 return
58
59 ### ---------------------------------------------------------------------------
60 @feature('hwaf_runtime_tsk', '*')
61 @before_method('process_rule')
62 def _gaudi_insert_project_level_datapath(self):
63 '''
64 insert_project_level_datapath adds ${INSTALL_AREA}/share into the
65 ${DATAPATH} environment variable.
66 '''
67 _get = getattr(self, 'hwaf_get_install_path', None)
68 if not _get: _get = getattr(self.bld, 'hwaf_get_install_path')
69 d = _get('${INSTALL_AREA}/share')
70 self.env.prepend_value('DATAPATH', d)
71 return
72
73 ### ---------------------------------------------------------------------------
74 @feature('hwaf_runtime_tsk', '*')
75 @before_method('process_rule')
76 def _gaudi_insert_project_level_xmlpath(self):
77 '''
78 insert_project_level_xmlpath adds ${INSTALL_AREA}/XML into the
79 ${XMLPATH} environment variable.
80 '''
81 _get = getattr(self, 'hwaf_get_install_path', None)
82 if not _get: _get = getattr(self.bld, 'hwaf_get_install_path')
83 d = _get('${INSTALL_AREA}/XML')
84 self.env.prepend_value('XMLPATH', d)
85 return
86
87 ### ---------------------------------------------------------------------------
88 @conf
89 def gaudi_install_python_modules(ctx, **kw):
90 # extract package name
91 PACKAGE_NAME = osp.basename(ctx.hwaf_pkg_name())
92
93 # add ${INSTALL_AREA}/python to PYTHONPATH if not there already
94 #pypath = ctx.hwaf_get_install_path('${INSTALL_AREA}/python')
95 pypath = waflib.Utils.subst_vars('${INSTALL_AREA}/python', ctx.env)
96 if not (pypath in ctx.env.get_flat('PYTHONPATH')):
97 ctx.env.prepend_value('PYTHONPATH', pypath)
98 pass
99
100 #source = waflib.Utils.to_list(source)
101 pydir = ctx.path.find_dir('python')
102 if not pydir:
103 msg.error(
104 '[%s] no such directory: [%s]' % (
105 PACKAGE_NAME,
106 os.path.join(ctx.path.abspath(), 'python'),
107 )
108 )
109 msg.error('cannot execute [gaudi_install_python_modules]')
110 return
111 pyfiles = pydir.ant_glob(
112 '**/*',
113 dir=False,
114 relative_trick=True,
115 )
116 ctx(
117 features = 'py',
118 name = 'py-%s' % PACKAGE_NAME,
119 source = pyfiles,
120 install_path = '${INSTALL_AREA}/python/%s' % PACKAGE_NAME,
121 )
122 return
123
124 ### ---------------------------------------------------------------------------
125 @conf
126 def gaudi_install_scripts(ctx, **kw):
127 # extract package name
128 PACKAGE_NAME = osp.basename(ctx.hwaf_pkg_name())
129
130 source = kw.get('source', 'scripts/*')
131
132 source = waflib.Utils.to_list(source)
133 _srcs = []
134 for f in source:
135 _srcs.extend(ctx.path.ant_glob(f, dir=False))
136 source = _srcs[:]
137 del _srcs
138
139 ctx.install_files(
140 '${INSTALL_AREA}/bin',
141 source,
142 #relative_trick=True,
143 chmod=waflib.Utils.O755,
144 )
145 return
146
147 ### ---------------------------------------------------------------------------
148 @conf
149 def gaudi_dictionary(ctx, **kw):
150
151 kw = dict(kw)
152
153 name = kw["name"]
154 source = kw["source"]
155 selection_file = kw["selection_file"]
156
157 del kw["name"]
158 del kw["source"]
159 del kw["selection_file"]
160
161 o = ctx.build_reflex_dict(
162 name = name,
163 source = source,
164 selection_file = selection_file,
165 **kw
166 )
167 return o
168
169 ### ---------------------------------------------------------------------------
170 @conf
171 def gaudi_install_joboptions(ctx, **kw):
172 # extract package name
173 PACKAGE_NAME = osp.basename(ctx.hwaf_pkg_name())
174
175 jobo_dir = ctx.path.find_dir('options')
176 jobos = jobo_dir.ant_glob('**/*', dir=False)
177
178 ctx.install_files(
179 '${INSTALL_AREA}/jobOptions/%s' % PACKAGE_NAME,
180 jobos,
181 cwd=jobo_dir,
182 relative_trick=True
183 )
184 return
185
186 ### ---------------------------------------------------------------------------
187 @conf
188 def gaudi_install_data(ctx, **kw):
189 # extract package name
190 PACKAGE_NAME = osp.basename(ctx.hwaf_pkg_name())
191
192 source = kw['source']
193 relative_trick = kw.get('relative_trick', False)
194 cwd = kw.get('cwd', None)
195 if cwd:
196 cwd = waflib.Utils.to_list(cwd)[0]
197 cwd = ctx.path.find_dir(cwd)
198
199 source = waflib.Utils.to_list(source)
200 _srcs = []
201 for f in source:
202 _srcs.extend(ctx.path.ant_glob(f, dir=False))
203 source = _srcs[:]
204 del _srcs
205
206 ctx.install_files(
207 '${INSTALL_AREA}/share',
208 source,
209 relative_trick=relative_trick,
210 cwd=cwd,
211 postpone=False,
212 )
213 return
214
215 ### -----------------------------------------------------------------------------
216 @conf
217 def gaudi_install_headers(ctx, incdir=None, relative_trick=True, cwd=None):
218
219 # extract package name
220 PACKAGE_NAME = osp.basename(ctx.hwaf_pkg_name())
221 inc_node = None
222 if not incdir:
223 inc_node = ctx.path.find_dir(PACKAGE_NAME)
224 if not inc_node:
225 return
226 else:
227 if isinstance(incdir, str):
228 inc_node = ctx.path.find_dir(incdir)
229 else:
230 inc_node = incdir
231 pass
232 pass
233
234 if isinstance(cwd, str):
235 cwd = ctx.path.find_dir(cwd)
236
237 if not inc_node:
238 ctx.fatal('no such directory [%s] (pkg=%s)' % (incdir, ctx.hwaf_pkg_name()))
239 pass
240
241 includes = inc_node.ant_glob('**/*', dir=False)
242 ctx.install_files(
243 '${INSTALL_AREA}/include', includes,
244 relative_trick=relative_trick,
245 cwd=cwd,
246 postpone=False,
247 )
248
249 incpath = waflib.Utils.subst_vars('${INSTALL_AREA}/include',ctx.env)
250 ctx.env.append_unique('INCLUDES_%s' % PACKAGE_NAME,
251 [incpath,inc_node.parent.abspath()])
252 # msg.info("--> [%s] %s: %r" %(PACKAGE_NAME,incpath,
253 # ctx.env.get_flat('INCLUDES_%s'%PACKAGE_NAME)))
254 return
255
256 ### ---------------------------------------------------------------------------
257 @conf
258 def gaudi_qmtest(ctx, **kw):
259 return
260
261 ### ---------------------------------------------------------------------------
262 @conf
263 def gaudi_library(ctx, **kw):
264 # extract package name
265 PACKAGE_NAME = osp.basename(ctx.hwaf_pkg_name())
266
267 ctx.gaudi_gen_package_version_header()
268
269 kw = dict(kw)
270 name = kw['name']
271 source = kw["source"]
272 del kw['name']
273 del kw['source']
274
275 linkflags = kw.get('linkflags', [])
276 linkflags = ctx.env.SHLINKFLAGS + linkflags
277 kw['linkflags'] = linkflags
278
279 src_node = ctx.path.find_dir('src')
280
281 srcs = ctx._cmt_get_srcs_lst(source)
282 includes = waflib.Utils.to_list(kw.get('includes', []))
283 includes.insert(0, ctx.path.abspath())
284 kw['includes'] = includes + [src_node]
285
286 export_incs = None
287 kw['export_includes'] = waflib.Utils.to_list(
288 kw.get('export_includes', [])
289 )[:]
290 if not kw['export_includes']:
291 inc_node = ctx.path.find_dir(PACKAGE_NAME)
292 if inc_node:
293 export_incs = '.'
294 kw['export_includes'].append(export_incs)
295 else:
296 export_incs = kw['export_includes']
297 #msg.info('%s: exports: %r' % (name, kw['export_includes']))
298 pass
299
300 kw['includes'].extend(kw['export_includes'])
301
302 kw['use'] = waflib.Utils.to_list(kw.get('use', [])) + ['dl']
303
304 defines = waflib.Utils.to_list(kw.get('defines', []))
305 kw['defines'] = defines + ctx._get_pkg_version_defines()
306
307 kw['features'] = waflib.Utils.to_list(kw.get('features', [])) + [
308 'cxx', 'cxxshlib', 'symlink_tsk',
309 ]
310 kw['target'] = kw.get('target', name)
311
312 #msg.info ("==> gaudi_library(%s, '%s', %r)..." % (name, srcs, kw.keys()))
313 o = ctx(
314 name = name,
315 source = srcs,
316 install_path = '${INSTALL_AREA}/lib',
317 libpath = ctx.env.LD_LIBRARY_PATH + [ctx.path.get_bld().abspath()],
318 **kw
319 )
320 o.reentrant = True
321 # for use-exports
322 ctx.env['LIB_%s' % name] = [name]
323 ctx.env.append_unique('LIBPATH_%s'%name, ctx.path.get_bld().abspath())
324
325 uses = waflib.Utils.to_list(kw.get('use', []))
326 ctx.hwaf_propagate_uselib(name, uses)
327
328 #msg.info('--> libpath[%s]: %s' % (name, ctx.env['LIBPATH_%s'%name]))
329 #msg.info('--> incpath[%s]: %s' % (name, export_incs))
330 if export_incs:
331 export_incs = waflib.Utils.to_list(export_incs)[0]
332 if export_incs == '.':
333 ctx.gaudi_install_headers()
334 pass
335 pass
336
337 return o
338
339 ### ---------------------------------------------------------------------------
340 @conf
341 def gaudi_module(ctx, **kw):
342 kw = dict(kw)
343 do_genmap = kw.get('do_genmap', True)
344 do_genconf= kw.get('do_genconf', True)
345
346 name = kw['name']
347 source = kw["source"]
348 del kw['name']
349 del kw['source']
350
351 ctx.gaudi_gen_package_version_header()
352
353 #msg.info('=========== %s ============' % name)
354 #msg.info("::: %s" % ctx.path.abspath())
355 src_node = ctx.path.find_dir('src')
356 bld_node = src_node.get_bld()
357
358 srcs = ctx._cmt_get_srcs_lst(source)
359 includes = waflib.Utils.to_list(kw.get('includes', []))
360 includes.insert(0, ctx.path.abspath())
361 includes.insert(1, ctx.path.get_bld().abspath())
362 #includes.insert(1, ctx.path.abspath()+'/'+PACKAGE_NAME)
363 kw['includes'] = includes + [src_node]
364
365 linkflags = waflib.Utils.to_list(kw.get('linkflags', []))
366 linkflags = ctx.env.SHLINKFLAGS + linkflags
367 kw['linkflags'] = linkflags
368
369 defines = waflib.Utils.to_list(kw.get('defines', []))
370 kw['defines'] = defines + ctx._get_pkg_version_defines()
371
372 kw['depends_on'] = waflib.Utils.to_list(kw.get('use', [])) + \
373 waflib.Utils.to_list(kw.get('depends_on', []))
374 #print("---> depends: %s" % kw['depends_on'])
375
376 # extract package name
377 PACKAGE_NAME = ctx._get_pkg_name()
378
379 # schedule the requested features
380 features = ['cxx', 'cxxshlib',]
381 features.append('symlink_tsk')
382 if do_genmap:
383 features.append('gen_map')
384 if do_genconf:
385 features.append('gen_conf')
386 #features.append('py')
387
388 kw['features'] = waflib.Utils.to_list(kw.get('features',[])) + features
389 kw['target'] = kw.get('target', name)
390
391 lib = ctx(
392 name=name,
393 source=srcs,
394 **kw)
395 lib.name = 'complib-%s' % name
396 lib.reentrant = True
397 lib.install_path = '${INSTALL_AREA}/lib'
398 lib.libpath = ctx.env.LD_LIBRARY_PATH + [ctx.path.get_bld().abspath()]
399 lib_name = "lib%s.so" % (lib.target,) # FIXME !!
400 lib.env['GENCONF_LIBNAME'] = lib.target
401 lib.env['PACKAGE_NAME'] = PACKAGE_NAME
402
403 return lib
404
405 ### ---------------------------------------------------------------------------
406 @conf
407 def gaudi_pyext(ctx, **kw):
408 return
409
410 ### ---------------------------------------------------------------------------
411 @conf
412 def gaudi_application(ctx, **kw):
413 kw = dict(kw)
414
415 name = kw['name']
416 source = kw["source"]
417 del kw['name']
418 del kw['source']
419
420 ctx.gaudi_gen_package_version_header()
421
422 # FIXME: hack !!! cppunit doesn't propagate correctly...
423 do_test = kw.get('do_test', False)
424 if do_test:
425 return
426
427 kw['features'] = waflib.Utils.to_list(
428 kw.get('features', '')) + [
429 'cxx', 'cxxprogram', 'symlink_tsk',
430 ]
431
432 kw['use'] = waflib.Utils.to_list(kw.get('use', []))
433
434 pkg_node = ctx.path.get_src()
435 src_node = ctx.path.find_dir('src')
436
437 srcs = ctx._cmt_get_srcs_lst(source)
438 linkflags = waflib.Utils.to_list(kw.get('linkflags', []))
439 linkflags = ctx.env.SHLINKFLAGS + linkflags
440 kw['linkflags'] = linkflags
441
442 defines = waflib.Utils.to_list(kw.get('defines', []))
443 kw['defines'] = defines + ctx._get_pkg_version_defines()
444
445 includes = waflib.Utils.to_list(kw.get('includes', []))
446 includes.insert(0, ctx.path.abspath())
447 #includes.insert(1, ctx.path.abspath()+'/'+PACKAGE_NAME)
448 kw['includes'] = includes + [src_node]
449
450 # extract package name
451 PACKAGE_NAME = ctx._get_pkg_name()
452
453 exe = ctx(
454 name=name,
455 source=srcs,
456 **kw)
457 exe.install_path = '${INSTALL_AREA}/bin'
458 exe.libpath = ctx.env.LD_LIBRARY_PATH + [ctx.path.get_bld().abspath()]
459 exe.target = name+'.exe'
460
461 return exe
462
463 ### ----------------------------------------------------------------------------
464 @feature('gen_conf')
465 @after('symlink_tsk')
466 def schedule_gen_conf(self):
467 lnk_task = getattr(self, 'link_task', None)
468 if not lnk_task:
469 return
470 for n in lnk_task.outputs:
471 gen_conf_hook(self, n)
472 pass
473
474 @after('symlink_tsk')
475 def gen_conf_hook(self, node):
476 "Bind the .dsomap file extension to the creation of a genconf task"
477 dso = self.env['GENCONF_LIBNAME']
478 bld_node = node.get_bld().parent
479 pkg_name = bld_node.name # FIXME!!
480 genconf_dir_node = bld_node.make_node('genConf').make_node(pkg_name)
481 self.env['GENCONF_OUTPUTDIR'] = genconf_dir_node.abspath()
482 genconf_node = genconf_dir_node.make_node('%sConf.py' % dso)
483 initpy_node = genconf_dir_node.make_node('__init__.py')
484 confdb_node = genconf_dir_node.make_node('%s_confDb.py' % dso)
485 tsk = self.create_task('gen_conf',
486 node,
487 [genconf_node,genconf_dir_node,initpy_node,confdb_node])
488 # schedule the merge of confdb.py files
489 merge_confdb_hook(self, confdb_node).set_run_after(tsk)
490
491 # schedule the installation of py-files
492 src_node = self.path.get_src()
493 py_dir = src_node.find_dir('python')
494 py_files = [genconf_node, confdb_node]
495 if not py_dir:
496 py_files.append(initpy_node)
497 PACKAGE_NAME = self.env['PACKAGE_NAME']
498 self.bld(
499 features='py',
500 name ='py-genconf-%s' % PACKAGE_NAME,
501 source = py_files,
502 install_path = '${INSTALL_AREA}/python/%s' % PACKAGE_NAME,
503 )
504
505 # add ${INSTALL_AREA}/python to PYTHONPATH if not there already
506 pypath = waflib.Utils.subst_vars('${INSTALL_AREA}/python', self.env)
507 if not pypath in self.env.get_flat('PYTHONPATH'):
508 self.env.prepend_value('PYTHONPATH', pypath)
509 pass
510
511 return
512
513 class gen_conf(waflib.Task.Task):
514 vars = ['GENCONF', 'DEFINES', 'INCLUDES', 'GENCONF_CONFIGURABLE_MODULE']
515 color= 'BLUE'
516 ext_in = ['.bin', '.so']
517 ext_out = ['.py']
518 shell = False
519 reentrant = True
520 after = ['cxxshlib', 'cxxprogram', 'symlink_tsk', 'gen_map']
521 depends_on = ['genconf', 'complib-GaudiCoreSvc']
522
523 def run(self):
524 import os
525 cmd = '${GENCONF} -p ${PACKAGE_NAME} -i %s -o ${GENCONF_OUTPUTDIR} --configurable-module ${GENCONF_CONFIGURABLE_MODULE}' % (
526 self.inputs[0].name,
527 )
528 cmd = waflib.Utils.subst_vars(cmd, self.env)
529
530 bld_node = self.inputs[0].parent.get_bld()
531
532 o = self.outputs[0].change_ext('.genconf.log')
533 fout_node = bld_node.find_or_declare(o.name)
534 fout = open(fout_node.abspath(), 'w')
535 env = self.generator.bld._get_env_for_subproc()
536 rc = self.generator.bld.exec_command(
537 cmd,
538 stdout=fout,
539 stderr=fout,
540 env=env
541 )
542 if rc != 0:
543 msg.error("** error running [%s]" % cmd)
544 msg.error(fout_node.read())
545 return rc
546
547 ### ---------------------------------------------------------------------------
548 g_confdb_merger = None
549 @feature('merge_confdb')
550 def schedule_merge_confdb(self):
551 pass
552
553 @extension('_confDb.py')
554 def merge_confdb_hook(self, node):
555 global g_confdb_merger
556 if g_confdb_merger is None:
557 import os
558 bld_area = os.path.basename(self.env['BUILD_INSTALL_AREA'])
559 bld_node = self.bld.bldnode.find_dir(bld_area)
560 py_node = bld_node.make_node('python')
561 py_node.mkdir()
562 out_node = py_node.make_node(
563 'project_%s_merged_confDb.py' %
564 self.bld.hwaf_project_name().replace('-', '_')
565 )
566 g_confdb_merger = self.create_task('merge_confdb', node, out_node)
567 self.bld.install_files(
568 '${INSTALL_AREA}/python',
569 out_node,
570 relative_trick=False
571 )
572 else:
573 g_confdb_merger.inputs.append(node)
574 return g_confdb_merger
575
576 class merge_confdb(waflib.Task.Task):
577 color='PINK'
578 ext_in = ['_confDb.py']
579 #ext_out= ['.py']
580 after = ['merge_dsomap',]
581 run_str = 'cat ${SRC} > ${TGT}'
582 reentrant = False
583
584 def runnable_status(self):
585 status = waflib.Task.Task.runnable_status(self)
586 if status == waflib.Task.ASK_LATER:
587 return status
588
589 import os
590 for in_node in self.inputs:
591 try:
592 os.stat(in_node.abspath())
593 except:
594 msg.debug("::missing input [%s]" % in_node.abspath())
595 return waflib.Task.ASK_LATER
596 return waflib.Task.RUN_ME
597
598
599 ### utils
600
601 ### ---------------------------------------------------------------------------
602 def gaudi_gen_package_version_header(ctx,**kw):
603 # extract package name
604 pkgname = osp.basename(ctx.hwaf_pkg_name())
605 hdr = ctx.path.get_bld().make_node('%sVersion.h' % pkgname)
606 def rule(task):
607 tgt = task.outputs[0]
608 data = '''
609 #ifndef %(proj)s_VERSION
610 /* Automatically generated file: do not modify! */
611 #ifndef CALC_GAUDI_VERSION
612 #define CALC_GAUDI_VERSION(maj,min) (((maj) << 16) + (min))
613 #endif
614 #define %(proj)s_MAJOR_VERSION %(maj)d
615 #define %(proj)s_MINOR_VERSION %(min)d
616 #define %(proj)s_PATCH_VERSION %(pat)d
617 #define %(proj)s_VERSION CALC_GAUDI_VERSION(%(proj)s_MAJOR_VERSION,%(proj)s_MINOR_VERSION)
618 #endif
619 ''' % getattr(task.generator, 'pkg_version_data')
620 tgt.write(data)
621 return
622
623 pkg_infos = ctx.hwaf_pkg_infos()
624 version = pkg_infos.get('version', None)
625 if not version:
626 version_hwaf = ctx.path.get_src().find_resource('version.hwaf')
627 if version_hwaf: version = version_hwaf.read().strip()
628 else: version = 'HEAD'
629 pass
630
631 # put at least some default value
632 majver, minver, patver = 999, 999, 0
633
634 if version.startswith('HEAD'):
635 majver, minver, patver = 999, 999, 0 # special handling
636 else:
637 m = re.match("(v|([A-Za-z]+\-))(?P<maj_ver>[0-9]+)(r|\-)(?P<min_ver>[0-9]+)(?:(p|\-)(?P<pat_ver>[0-9]+))?", version)
638 if m:
639 majver = int(m.groupdict()['maj_ver'])
640 minver = int(m.groupdict()['min_ver'])
641 patver = int(m.groupdict()['pat_ver'] or 0)
642 pkg_version = (majver,minver,patver)
643
644 if not ctx.env['GEN_PKG_VERSION_HDR_%s' % pkgname]:
645 ctx(
646 name = 'gen-pkg-version-hdr-'+pkgname,
647 rule = rule,
648 source = 'wscript',
649 target = hdr.name,
650 pkg_version_data = {
651 'proj':pkgname.upper(),
652 'maj': majver,
653 'min': minver,
654 'pat': patver,
655 },
656 before = 'cxx',
657 )
658 ctx.env['GEN_PKG_VERSION_HDR_%s' % pkgname] = '1'
659 return
660
661 ### ---------------------------------------------------------------------------
662 import waflib.Build
663 waflib.Build.BuildContext.gaudi_module = gaudi_module
664 waflib.Build.BuildContext.gaudi_library = gaudi_library
665 waflib.Build.BuildContext.gaudi_application = gaudi_application
666
667 waflib.Build.BuildContext.gaudi_install_headers = gaudi_install_headers
668 waflib.Build.BuildContext.gaudi_gen_package_version_header = gaudi_gen_package_version_header