summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2019-04-11 17:06:01 +0200
committerTobias Hunger <tobias.hunger@qt.io>2019-04-12 11:35:01 +0000
commit2ec3f492a7964648e838ef663fe41e4e7351c9df (patch)
tree50d50d217eff26a0e4542e534b2c2fb672c2daf6 /util
parent8f0eb6557970a2407afa7190e617afdc5d3ef691 (diff)
CMake: pro2cmake.py: Handle setting a key with $$key in the value
Change-Id: I86552ed2a30f07f8c6060b2bad04fd5489b1d482 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'util')
-rwxr-xr-xutil/cmake/pro2cmake.py28
1 files changed, 18 insertions, 10 deletions
diff --git a/util/cmake/pro2cmake.py b/util/cmake/pro2cmake.py
index 7f4af835ff..44326e488e 100755
--- a/util/cmake/pro2cmake.py
+++ b/util/cmake/pro2cmake.py
@@ -189,7 +189,7 @@ class Operation:
else:
self._value = [str(value), ]
- def process(self, input, transformer):
+ def process(self, key, input, transformer):
assert(False)
def __repr__(self):
@@ -212,7 +212,7 @@ class Operation:
class AddOperation(Operation):
- def process(self, input, transformer):
+ def process(self, key, input, transformer):
return input + transformer(self._value)
def __repr__(self):
@@ -220,7 +220,7 @@ class AddOperation(Operation):
class UniqueAddOperation(Operation):
- def process(self, input, transformer):
+ def process(self, key, input, transformer):
result = input
for v in transformer(self._value):
if v not in result:
@@ -232,11 +232,18 @@ class UniqueAddOperation(Operation):
class SetOperation(Operation):
- def process(self, input, transformer):
+ def process(self, key, input, transformer):
+ values = [] # typing.List[str]
+ for v in self._value:
+ if v != '$$' + key:
+ values.append(v)
+ else:
+ values += input
+
if transformer:
- return list(transformer(self._value))
+ return list(transformer(values))
else:
- return self._value
+ return values
def __repr__(self):
return '=({})'.format(self._dump())
@@ -246,7 +253,7 @@ class RemoveOperation(Operation):
def __init__(self, value):
super().__init__(value)
- def process(self, input, transformer):
+ def process(self, key, input, transformer):
input_set = set(input)
value_set = set(self._value)
result = []
@@ -513,7 +520,7 @@ class Scope(object):
op_transformer = lambda files: files
for op in self._operations.get(key, []):
- result = op.process(result, op_transformer)
+ result = op.process(key, result, op_transformer)
for ic in self._included_children:
result = list(ic._evalOps(key, transformer, result))
@@ -540,7 +547,8 @@ class Scope(object):
expanded_files = [] # typing.List[str]
for f in files:
- expanded_files += self._expand_value(f)
+ r = self._expand_value(f)
+ expanded_files += r
mapped_files = list(map(lambda f: map_to_file(f, self, is_include=is_include), expanded_files))
@@ -568,7 +576,7 @@ class Scope(object):
if match.group(0) == value:
return self.get(match.group(1))
- replacement = self.expand(match.group(1))
+ replacement = self.get(match.group(1))
replacement_str = replacement[0] if replacement else ''
result = result[:match.start()] \
+ replacement_str \