Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 2053a0d9eaaf755b990f80ce4df504a7 > files > 368

waf-1.5.9-1mdv2010.0.noarch.rpm

#! /usr/bin/env python
# encoding: UTF-8
# Peter Forai
# Thomas Nagy, 2008

"""
Demonstrates how to create a c++ app that runs python scripts

Useful for apps providing script extensions
"""

VERSION='0.0.1'
APPNAME='swig_test'
srcdir = '.'
blddir = 'build'

def set_options(opt):
	opt.tool_options('g++')
	opt.tool_options('python')

def configure(conf):
	conf.check_tool('g++ python')
	conf.check_python_version((2,4,2))
	conf.check_python_headers()
	conf.check_tool('swig', tooldir='.')
	conf.check_swig_version('1.3.27')

def build(bld):

	# embedding
	#
	# use swig_flags = '-c++ -python -dump_classes' for debugging

	obj = bld.new_task_gen(
		features = 'cxx cprogram pyembed',
		source = 'embed/src1.cpp embed/bind.swig',
		target = 'embed/embed_demo',
		swig_flags = '-c++ -python -Wall',
		includes = '. embed')


	# extending
	#
	# be careful that the .py produced by swig is mandatory for using the library
	#
	# it is possible to disable 'mylib', and to add extend/a.cpp
	# to the source of extend/python/_test_swig_waf and remeve uselib_local

	bld.new_task_gen(
		features = 'cxx cshlib',
		source = 'extend/a.cpp',
		target = 'extend/mylib',
		includes = 'extend',
		export_inc_dirs = 'extend',
		vnum = '1.2.3',
		name = 'mylib')

	bld.new_task_gen(
		features = 'cxx cshlib pyext',
		source = 'extend/python/test_swig_waf.i',
		target = 'extend/python/_test_swig_waf',
		swig_flags = '-c++ -python -Wall',
		includes = 'extend',
		vnum = '1.2.3',
		uselib_local = 'mylib')

	bld.add_post_fun(inst_py)
	bld.add_post_fun(exec_test)

def inst_py(bld):
	node = bld.path.find_or_declare('extend/python/test_swig_waf.py')
	bld.install_as('${PREFIX}/lib', node.abspath(bld.env))

def exec_test(bld):
	import os, stat
	try:
		print os.popen('''
PYTHONPATH=$PYTHONPATH:build/default/extend/python
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:build/default/extend/python:build/default/extend
python -c "import test_swig_waf; a=test_swig_waf.A(); print 'Testing: a.add(2, 3) ->', a.add(2, 3)"
'''.replace('\n', ' ')).read()
	except:
		pass

	# why does this fail now on mandriva???
	try:
		os.stat('build/default/embed/embed_demo')
		print os.popen('PYTHONPATH=$PYTHONPATH:build/default/embed/ build/default/embed/embed_demo').read()
	except:
		pass