[PATCH] D55171: [gn build] Slightly simplify write_cmake_config.

Phabricator via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Dec 2 14:28:24 PST 2018


This revision was automatically updated to reflect the committed changes.
Closed by commit rL348106: [gn build] Slightly simplify write_cmake_config. (authored by nico, committed by ).

Changed prior to commit:
  https://reviews.llvm.org/D55171?vs=176273&id=176299#toc

Repository:
  rL LLVM

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D55171/new/

https://reviews.llvm.org/D55171

Files:
  llvm/trunk/utils/gn/build/write_cmake_config.py


Index: llvm/trunk/utils/gn/build/write_cmake_config.py
===================================================================
--- llvm/trunk/utils/gn/build/write_cmake_config.py
+++ llvm/trunk/utils/gn/build/write_cmake_config.py
@@ -1,10 +1,17 @@
 #!/usr/bin/env python
-"""Processes a foo.h.cmake file and writes foo.h.
+"""Emulates the bits of CMake's configure_file() function needed in LLVM.
+
+The CMake build uses configure_file() for several things.  This emulates that
+function for the GN build.  In the GN build, this runs at build time, instead
+of at generator time.
 
 Takes a list of KEY=VALUE pairs (where VALUE can be empty).
 
-Handles these types of lines (note that FOO= sets the value of FOO to the empty
-string, which is falsy, but FOO=0 sets it to '0' which is truthy):
+On each line, replaces ${KEY} with VALUE.
+
+After that, also handles these special cases (note that FOO= sets the value of
+FOO to the empty string, which is falsy, but FOO=0 sets it to '0' which is
+truthy):
 
 1.) #cmakedefine01 FOO
     Checks if key FOO is set to a truthy value, and depending on that prints
@@ -13,29 +20,15 @@
         #define FOO 1
         #define FOO 0
 
-2.) #cmakedefine FOO
+2.) #cmakedefine FOO [...]
     Checks if key FOO is set to a truthy in value, and depending on that prints
     one of the following two lines:
 
-        #define FOO
+        #define FOO [...]
         /* #undef FOO */
 
-3.) #cmakedefine FOO asdf${BAR}jkl
-    Checks if key FOO is set to a truthy values, and if so replaces all
-    variable references in `asdf${BAR}jkl` with their value and prints that
-    (else it prints the same undef line as the previous form):
-
-        #define FOO asdfBAR_VALjkl
-        /* #undef FOO */
-
-4.) #define FOO asdf{BAR}jkl
-    Always gets its variable values filled in, independent of FOO's value being
-    set:
-
-        #define FOO asdfBAR_VALjkl
-
 Fails if any of the KEY=VALUE arguments aren't needed for processing the
-.h.cmake file, or if the .h.cmake file has unreplaces ${VAR} references after
+.h.cmake file, or if the .h.cmake file has unreplaced ${VAR} references after
 processing all values.
 """
 
@@ -70,9 +63,10 @@
         def repl(m):
             unused_values.discard(m.group(1))
             return values[m.group(1)]
+        in_line = var_re.sub(repl, in_line)
         if in_line.startswith('#cmakedefine01 '):
             _, var = in_line.split()
-            out_lines.append('#define %s %d\n' % (var, 1 if values[var] else 0))
+            in_line = '#define %s %d\n' % (var, 1 if values[var] else 0)
             unused_values.discard(var)
         elif in_line.startswith('#cmakedefine '):
             _, var = in_line.split(None, 1)
@@ -81,14 +75,11 @@
             except:
                 var, val = var.rstrip(), '\n'
             if values[var]:
-                out_lines.append('#define %s %s' % (var,
-                                                    var_re.sub(repl, val)))
+                in_line = '#define %s %s' % (var, val)
             else:
-                out_lines.append('/* #undef %s */\n' % var)
+                in_line = '/* #undef %s */\n' % var
             unused_values.discard(var)
-        else:
-            # In particular, handles `#define FOO ${FOO}` lines.
-            out_lines.append(var_re.sub(repl, in_line))
+        out_lines.append(in_line)
 
     if unused_values:
         print >>sys.stderr, 'Unused --values args:'


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D55171.176299.patch
Type: text/x-patch
Size: 3445 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181202/da8732b6/attachment.bin>


More information about the llvm-commits mailing list