[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