mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-11 17:08:42 +00:00
d015e481d7
Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D158936
70 lines
2.2 KiB
INI
70 lines
2.2 KiB
INI
# ===----------------------------------------------------------------------===##
|
|
#
|
|
# 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
|
|
#
|
|
# ===----------------------------------------------------------------------===##
|
|
|
|
# This configuration builds the C++23 std module.
|
|
# It is build when the current lit configuration supports modules.
|
|
#
|
|
# TODO MODULES Evaluate whether this file can be removed when CMake supports
|
|
# modules in libc++.
|
|
|
|
import os
|
|
import site
|
|
import subprocess
|
|
import libcxx.test.params, libcxx.test.config, libcxx.test.dsl
|
|
|
|
|
|
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 appendToSubstitution(substitutions, key, value):
|
|
return [(k, v + " " + value) if k == key else (k, v) for (k, v) in substitutions]
|
|
|
|
|
|
std = getSubstitution("%{cxx_std}", config)
|
|
if std == "cxx26":
|
|
std = "26"
|
|
elif std == "cxx23":
|
|
std = "23"
|
|
elif std == "cxx20":
|
|
std = "20"
|
|
else:
|
|
std = ""
|
|
|
|
if (
|
|
std
|
|
and not "libcpp-has-no-std-modules" in config.available_features
|
|
and not "clang-modules-build" in config.available_features
|
|
):
|
|
build = os.path.join(config.test_exec_root, "__config_module__")
|
|
config.substitutions = appendToSubstitution(
|
|
config.substitutions,
|
|
"%{compile_flags}",
|
|
"-fprebuilt-module-path="
|
|
+ os.path.join(config.test_exec_root, "__config_module__/CMakeFiles/std.dir"),
|
|
)
|
|
|
|
cmake = getSubstitution("%{cmake}", config)
|
|
flags = getSubstitution("%{flags}", config)
|
|
if "c++experimental" in config.available_features:
|
|
flags = f"{flags} -D_LIBCPP_ENABLE_EXPERIMENTAL"
|
|
|
|
subprocess.check_call(
|
|
[cmake, f"-DCMAKE_CXX_STANDARD={std}", f"-DCMAKE_CXX_FLAGS={flags}", build],
|
|
env={},
|
|
)
|
|
subprocess.check_call([cmake, "--build", build, "--", "-v"], env={})
|
|
config.substitutions = appendToSubstitution(
|
|
config.substitutions,
|
|
"%{link_flags}",
|
|
os.path.join(build, "libc++std.a"),
|
|
)
|