gclient: evaluate variables before passing them to GN

This helps make sure they have proper types (e.g. True
instead of "True" for booleans).

Also see https://chromium-review.googlesource.com/c/chromium/src/+/681854
for context.

Bug: 756688, 570091
Change-Id: I1e4d26df724e8e94cc3daba361191856f80a1b2c
Reviewed-on: https://chromium-review.googlesource.com/681705
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Paweł Hajdan Jr. <phajdan.jr@chromium.org>
diff --git a/gclient.py b/gclient.py
index 14c8891..1654750 100755
--- a/gclient.py
+++ b/gclient.py
@@ -959,8 +959,10 @@
 
   def WriteGNArgsFile(self):
     lines = ['# Generated from %r' % self.deps_file]
+    variables = self.get_vars()
     for arg in self._gn_args:
-      lines.append('%s = %s' % (arg, ToGNString(self.get_vars()[arg])))
+      value = gclient_eval.EvaluateCondition(variables[arg], variables)
+      lines.append('%s = %s' % (arg, ToGNString(value)))
     with open(os.path.join(self.root.root_dir, self._gn_args_file), 'w') as f:
       f.write('\n'.join(lines))