third_party:waf: update to upstream 2.0.4 release
[amitay/samba.git] / third_party / waf / waflib / extras / proc.py
1 #! /usr/bin/env python
2 # encoding: utf-8
3 # WARNING! Do not edit! https://waf.io/book/index.html#_obtaining_the_waf_file
4
5 #! /usr/bin/env python
6 # per rosengren 2011
7
8 from os import environ, path
9 from waflib import TaskGen, Utils
10
11 def options(opt):
12         grp = opt.add_option_group('Oracle ProC Options')
13         grp.add_option('--oracle_home', action='store', default=environ.get('PROC_ORACLE'), help='Path to Oracle installation home (has bin/lib)')
14         grp.add_option('--tns_admin', action='store', default=environ.get('TNS_ADMIN'), help='Directory containing server list (TNS_NAMES.ORA)')
15         grp.add_option('--connection', action='store', default='dummy-user/dummy-password@dummy-server', help='Format: user/password@server')
16
17 def configure(cnf):
18         env = cnf.env
19         if not env.PROC_ORACLE:
20                 env.PROC_ORACLE = cnf.options.oracle_home
21         if not env.PROC_TNS_ADMIN:
22                 env.PROC_TNS_ADMIN = cnf.options.tns_admin
23         if not env.PROC_CONNECTION:
24                 env.PROC_CONNECTION = cnf.options.connection
25         cnf.find_program('proc', var='PROC', path_list=env.PROC_ORACLE + path.sep + 'bin')
26
27 def proc(tsk):
28         env = tsk.env
29         gen = tsk.generator
30         inc_nodes = gen.to_incnodes(Utils.to_list(getattr(gen,'includes',[])) + env['INCLUDES'])
31
32         cmd = (
33                 [env.PROC] +
34                 ['SQLCHECK=SEMANTICS'] +
35                 (['SYS_INCLUDE=(' + ','.join(env.PROC_INCLUDES) + ')']
36                         if env.PROC_INCLUDES else []) +
37                 ['INCLUDE=(' + ','.join(
38                         [i.bldpath() for i in inc_nodes]
39                 ) + ')'] +
40                 ['userid=' + env.PROC_CONNECTION] +
41                 ['INAME=' + tsk.inputs[0].bldpath()] +
42                 ['ONAME=' + tsk.outputs[0].bldpath()]
43         )
44         exec_env = {
45                 'ORACLE_HOME': env.PROC_ORACLE,
46                 'LD_LIBRARY_PATH': env.PROC_ORACLE + path.sep + 'lib',
47         }
48         if env.PROC_TNS_ADMIN:
49                 exec_env['TNS_ADMIN'] = env.PROC_TNS_ADMIN
50         return tsk.exec_command(cmd, env=exec_env)
51
52 TaskGen.declare_chain(
53         name = 'proc',
54         rule = proc,
55         ext_in = '.pc',
56         ext_out = '.c',
57 )
58