summaryrefslogtreecommitdiff
path: root/buildtools/wafsamba/samba_includes.py
blob: 54d43a3b9472bd5cea63d01c946653db108ce62f (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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# a includes processing tool to speed up include path calculations

from TaskGen import feature, before, after
import preproc
import os

kak = {}
@feature('cc', 'cxx')
@after('apply_type_vars', 'apply_lib_vars', 'apply_core')
def apply_incpaths(self):
	lst = []
	# TODO move the uselib processing out of here
	for lib in self.to_list(self.uselib):
		for path in self.env['CPPPATH_' + lib]:
			if not path in lst:
				lst.append(path)
	if preproc.go_absolute:
		for path in preproc.standard_includes:
			if not path in lst:
				lst.append(path)

	for path in self.to_list(self.includes):
		if not path in lst:
			if preproc.go_absolute or not os.path.isabs(path):
				lst.append(path)
			else:
				self.env.prepend_value('CPPPATH', path)

	for path in lst:
		node = None
		if os.path.isabs(path):
			if preproc.go_absolute:
				node = self.bld.root.find_dir(path)
		elif path[0] == '#':
			node = self.bld.srcnode
			if len(path) > 1:
				try:
					node = kak[path]
				except KeyError:
					kak[path] = node = node.find_dir(path[1:])
		else:
			try:
				node = kak[(self.path.id, path)]
			except KeyError:
				kak[(self.path.id, path)] = node = self.path.find_dir(path)

		if node:
			self.env.append_value('INC_PATHS', node)

cac = {}
@feature('cc')
@after('apply_incpaths')
def apply_obj_vars_cc(self):
    """after apply_incpaths for INC_PATHS"""
    env = self.env
    app = env.append_unique
    cpppath_st = env['CPPPATH_ST']

    global cac

    # local flags come first
    # set the user-defined includes paths
    for i in env['INC_PATHS']:

        try:
            app('_CCINCFLAGS', cac[i.id])
        except KeyError:
            cac[i.id] = [cpppath_st % i.bldpath(env), cpppath_st % i.srcpath(env)]
            app('_CCINCFLAGS', cac[i.id])

    # set the library include paths
    for i in env['CPPPATH']:
        app('_CCINCFLAGS', cpppath_st % i)

import Node, Environment

def vari(self):
	return "default"
Environment.Environment.variant = vari

def variant(self, env):
	if not env: return 0
	elif self.id & 3 == Node.FILE: return 0
	else: return "default"
Node.Node.variant = variant