summaryrefslogtreecommitdiff
path: root/source4/build/scons/pidl.py
blob: c7d734a4fae53b9590943c0ff6f93d03952f4706 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""SCons.Tool.pidl

Tool-specific initialization for pidl (Perl-based IDL compiler)

"""

import SCons.Defaults
import SCons.Util
import SCons.Scanner

idl_scanner = SCons.Scanner.ClassicCPP("PIDLScan", '.idl', 'CPPPATH', r'depends\(([^,]+),+\)', SCons.Node.FS.default_fs)

def idl_emitter(target, source, env):
	base, ext = SCons.Util.splitext(str(source[0]))
	result = ['gen_ndr/%s.c' % base, 'gen_ndr/%s.h' % base]
	return result

pidl_builder = SCons.Builder.Builder(action='$PIDLCOM',
				     emitter = idl_emitter,
                                     src_suffix = '.idl',
                                     suffix='.c',
                                     scanner = idl_scanner)

def generate(env):
	env['PIDL']          = env.Detect('pidl') or './pidl/pidl'
	env['PIDLFLAGS']     = []
	env['PIDLCOM']       = '$PIDL $PIDLFLAGS -- $SOURCE'
	env['BUILDERS']['NdrMarshaller'] = pidl_builder

def exists(env):
	return env.Detect(['./pidl/pidl','pidl'])