blob: 644438724f7ebcf9c480f9380f0fd67c909d9065 [file] [log] [blame]
#===----------------------------------------------------------------------===##
#
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#
#===----------------------------------------------------------------------===##
def _getSubstitution(substitution, config):
for (orig, replacement) in config.substitutions:
if orig == substitution:
return replacement
raise ValueError('Substitution {} is not in the config.'.format(substitution))
def configure(parameters, features, config, lit_config):
# Apply the actions supplied by parameters to the configuration first, since
# parameters are things that we request explicitly and which might influence
# what features are implicitly made available next.
for param in parameters:
actions = param.getActions(config, lit_config.params)
for action in actions:
action.applyTo(config)
lit_config.note("Applied '{}' as a result of parameter '{}'".format(
action.pretty(config, lit_config.params),
param.pretty(config, lit_config.params)))
# Then, apply the automatically-detected features.
for feature in features:
actions = feature.getActions(config)
for action in actions:
action.applyTo(config)
lit_config.note("Applied '{}' as a result of implicitly detected feature '{}'".format(
action.pretty(config, lit_config.params),
feature.pretty(config)))
# Print the basic substitutions
for sub in ('%{cxx}', '%{flags}', '%{compile_flags}', '%{link_flags}', '%{exec}'):
lit_config.note("Using {} substitution: '{}'".format(sub, _getSubstitution(sub, config)))