[libcxx-commits] [libcxx] cd7f975 - [libc++] NFC: Simplify substitutions by using lit recursive substitutions
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Mar 27 08:09:18 PDT 2020
Author: Louis Dionne
Date: 2020-03-27T11:09:08-04:00
New Revision: cd7f9751c30092033a5e97591876f972daf61989
URL: https://github.com/llvm/llvm-project/commit/cd7f9751c30092033a5e97591876f972daf61989
DIFF: https://github.com/llvm/llvm-project/commit/cd7f9751c30092033a5e97591876f972daf61989.diff
LOG: [libc++] NFC: Simplify substitutions by using lit recursive substitutions
Since lit supports expanding substitutions recursively, we can define
substitutions in terms of other substitutions. This allows us to simplify
how libc++ substitutions are defined.
This doesn't change the substitutions at all, it only makes them simpler
to define.
Added:
Modified:
libcxx/test/lit.cfg
libcxx/utils/libcxx/test/config.py
libcxx/utils/libcxx/test/format.py
Removed:
################################################################################
diff --git a/libcxx/test/lit.cfg b/libcxx/test/lit.cfg
index ed5aa29d9175..e6e0542c2fbe 100644
--- a/libcxx/test/lit.cfg
+++ b/libcxx/test/lit.cfg
@@ -53,3 +53,5 @@ configuration = config_module.Configuration(lit_config, config)
configuration.configure()
configuration.print_config_info()
config.test_format = configuration.get_test_format()
+
+lit_config.recursiveExpansionLimit = 10
diff --git a/libcxx/utils/libcxx/test/config.py b/libcxx/utils/libcxx/test/config.py
index 2d0c3deadbc3..66e60cd75cf3 100644
--- a/libcxx/utils/libcxx/test/config.py
+++ b/libcxx/utils/libcxx/test/config.py
@@ -1039,35 +1039,26 @@ def configure_substitutions(self):
if self.target_info.is_darwin():
# Do not pass DYLD_LIBRARY_PATH to the compiler, linker, etc. as
# these tools are not meant to exercise the just-built libraries.
- tool_env += 'env DYLD_LIBRARY_PATH="" '
+ tool_env += 'env DYLD_LIBRARY_PATH=""'
sub = self.config.substitutions
- cxx_path = tool_env + pipes.quote(self.cxx.path)
# Configure compiler substitutions
- sub.append(('%{cxx}', cxx_path))
+ sub.append(('%{cxx}', '{} {}'.format(tool_env, pipes.quote(self.cxx.path))))
sub.append(('%{libcxx_src_root}', self.libcxx_src_root))
# Configure flags substitutions
- flags_str = ' '.join([pipes.quote(f) for f in self.cxx.flags])
- compile_flags_str = ' '.join([pipes.quote(f) for f in self.cxx.compile_flags])
- link_flags_str = ' '.join([pipes.quote(f) for f in self.cxx.link_flags])
- all_flags = '%s %s %s' % (flags_str, compile_flags_str, link_flags_str)
- sub.append(('%{flags}', flags_str))
- sub.append(('%{compile_flags}', compile_flags_str))
- sub.append(('%{link_flags}', link_flags_str))
+ sub.append(('%{flags}', ' '.join(map(pipes.quote, self.cxx.flags))))
+ sub.append(('%{compile_flags}', ' '.join(map(pipes.quote, self.cxx.compile_flags))))
+ sub.append(('%{link_flags}', ' '.join(map(pipes.quote, self.cxx.link_flags))))
if self.cxx.isVerifySupported():
- verify_str = ' ' + ' '.join(self.cxx.verify_flags) + ' '
- sub.append(('%{verify}', verify_str))
- # Add compile and link shortcuts
- compile_str = (cxx_path + ' -o %t.o %s -c ' + flags_str
- + ' ' + compile_flags_str)
- build_str = cxx_path + ' -o %t.exe %s ' + all_flags
+ sub.append(('%{verify}', ' '.join(self.cxx.verify_flags)))
+ # Add compile and build shortcuts
+ sub.append(('%{compile}', '%{cxx} -o %t.o %s -c %{flags} %{compile_flags}'))
+ sub.append(('%{build}', '%{cxx} -o %t.exe %s %{flags} %{compile_flags} %{link_flags}'))
if self.cxx.use_modules:
- sub.append(('%{build_module}', build_str))
+ sub.append(('%{build_module}', '%{build}'))
elif self.cxx.modules_flags is not None:
- modules_str = ' '.join(self.cxx.modules_flags) + ' '
- sub.append(('%{build_module}', build_str + ' ' + modules_str))
- sub.append(('%{compile}', compile_str))
- sub.append(('%{build}', build_str))
+ sub.append(('%{build_module}', '%{{build}} {}'.format(' '.join(self.cxx.modules_flags))))
+
# Configure exec prefix substitutions.
# Configure run env substitution.
codesign_ident = self.get_lit_conf('llvm_codesign_identity', '')
@@ -1077,13 +1068,11 @@ def configure_substitutions(self):
'--dependencies %%file_dependencies --env %s -- ' % \
(pipes.quote(sys.executable), pipes.quote(run_py),
codesign_ident, env_vars)
- run_str = exec_str + '%t.exe'
sub.append(('%{exec}', exec_str))
- sub.append(('%{run}', run_str))
+ sub.append(('%{run}', '%{exec} %t.exe'))
# Configure not program substitutions
not_py = os.path.join(self.libcxx_src_root, 'utils', 'not.py')
- not_str = '%s %s ' % (pipes.quote(sys.executable), pipes.quote(not_py))
- sub.append(('%{not} ', not_str))
+ sub.append(('%{not}', '{} {}'.format(pipes.quote(sys.executable), pipes.quote(not_py))))
if self.get_lit_conf('libcxx_gdb'):
sub.append(('%{libcxx_gdb}', self.get_lit_conf('libcxx_gdb')))
diff --git a/libcxx/utils/libcxx/test/format.py b/libcxx/utils/libcxx/test/format.py
index 2776af182f71..b5046aba1ca4 100644
--- a/libcxx/utils/libcxx/test/format.py
+++ b/libcxx/utils/libcxx/test/format.py
@@ -124,7 +124,8 @@ def _execute(self, test, lit_config):
substitutions = lit.TestRunner.getDefaultSubstitutions(test, tmpDir,
tmpBase)
substitutions.append(('%file_dependencies', ' '.join(data_files)))
- script = lit.TestRunner.applySubstitutions(script, substitutions)
+ script = lit.TestRunner.applySubstitutions(script, substitutions,
+ recursion_limit=lit_config.recursiveExpansionLimit)
test_cxx = copy.deepcopy(self.cxx)
if is_fail_test:
More information about the libcxx-commits
mailing list