[llvm] 1729660 - Revert "[Bazel][GN] Reuse the GN LLVM config file generation code"
Reid Kleckner via llvm-commits
llvm-commits at lists.llvm.org
Tue May 31 21:16:28 PDT 2022
Author: Reid Kleckner
Date: 2022-05-31T21:15:46-07:00
New Revision: 17296607a761086b2c0e6518ceaa16415dceb55b
URL: https://github.com/llvm/llvm-project/commit/17296607a761086b2c0e6518ceaa16415dceb55b
DIFF: https://github.com/llvm/llvm-project/commit/17296607a761086b2c0e6518ceaa16415dceb55b.diff
LOG: Revert "[Bazel][GN] Reuse the GN LLVM config file generation code"
This reverts commit e2ee8bf9818189b900e65d6ea8f1ae6fc75455ce.
This change is beyond my ability to integrate into Google's internal
build configuration tonight.
Added:
llvm/utils/gn/build/write_cmake_config.py
utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h
utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h
Modified:
llvm/utils/gn/build/write_cmake_config.gni
utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
utils/bazel/llvm-project-overlay/llvm/config.bzl
Removed:
llvm/utils/write_cmake_config.py
utils/bazel/llvm-project-overlay/llvm/write_cmake_config.bzl
################################################################################
diff --git a/llvm/utils/gn/build/write_cmake_config.gni b/llvm/utils/gn/build/write_cmake_config.gni
index 80a97ef490854..bbaab212350ce 100644
--- a/llvm/utils/gn/build/write_cmake_config.gni
+++ b/llvm/utils/gn/build/write_cmake_config.gni
@@ -28,7 +28,7 @@ template("write_cmake_config") {
assert(defined(invoker.values), "must set 'values' in $target_name")
action(target_name) {
- script = "//llvm/utils/write_cmake_config.py"
+ script = "//llvm/utils/gn/build/write_cmake_config.py"
sources = [ invoker.input ]
outputs = [ invoker.output ]
diff --git a/llvm/utils/write_cmake_config.py b/llvm/utils/gn/build/write_cmake_config.py
similarity index 91%
rename from llvm/utils/write_cmake_config.py
rename to llvm/utils/gn/build/write_cmake_config.py
index 27386f4e02ad2..ff69079bbef76 100755
--- a/llvm/utils/write_cmake_config.py
+++ b/llvm/utils/gn/build/write_cmake_config.py
@@ -2,8 +2,8 @@
r"""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 alternative build systems such as GN and Bazel. In both GN and
-Bazel, config file generation happens during the build rather than before it.
+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).
@@ -28,9 +28,8 @@
#define FOO [...]
/* #undef FOO */
-To ensure that config file changes do not go unnoticed, this script fails if
-any of the KEY=VALUE arguments aren't needed for processing the input file, or
-if the input file references keys that weren't passed in.
+Fails if any of the KEY=VALUE arguments aren't needed for processing the
+input file, or if the input file references keys that weren't passed in.
"""
import argparse
diff --git a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
index e1b7a0b28c12b..2e9faad29af96 100644
--- a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel
@@ -2,9 +2,9 @@
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-load(":write_cmake_config.bzl", "write_cmake_config")
+load(":template_rule.bzl", "template_rule")
load(":tblgen.bzl", "gentbl")
-load(":config.bzl", "config_h_values", "llvm_config_h_values", "llvm_global_defines")
+load(":config.bzl", "llvm_config_defines")
load(":targets.bzl", "llvm_targets")
load(":enum_targets_gen.bzl", "enum_targets_gen")
load(":binary_alias.bzl", "binary_alias")
@@ -101,30 +101,17 @@ genrule(
cmd = "echo '#define LLVM_VERSION_INFO \"git\"' > $@",
)
-write_cmake_config(
+template_rule(
name = "abi_breaking_h_gen",
src = "include/llvm/Config/abi-breaking.h.cmake",
out = "include/llvm/Config/abi-breaking.h",
- # Currently, in the Bazel build, we opt out of ABI breaking checks and
- # reverse iteration.
- values = [
- "LLVM_ENABLE_ABI_BREAKING_CHECKS=",
- "LLVM_ENABLE_REVERSE_ITERATION=",
- ],
-)
-
-write_cmake_config(
- name = "config_h_gen",
- src = "include/llvm/Config/config.h.cmake",
- out = "include/llvm/Config/config.h",
- values = config_h_values,
-)
+ substitutions = {
+ # Define to enable checks that alter the LLVM C++ ABI
+ "#cmakedefine01 LLVM_ENABLE_ABI_BREAKING_CHECKS": "#define LLVM_ENABLE_ABI_BREAKING_CHECKS 0",
-write_cmake_config(
- name = "llvm_config_h_gen",
- src = "include/llvm/Config/llvm-config.h.cmake",
- out = "include/llvm/Config/llvm-config.h",
- values = llvm_config_h_values,
+ # Define to enable reverse iteration of unordered llvm containers
+ "#cmakedefine01 LLVM_ENABLE_REVERSE_ITERATION": "#define LLVM_ENABLE_REVERSE_ITERATION 0",
+ },
)
# To enable
diff testing out of tree
@@ -142,7 +129,7 @@ cc_library(
"include/llvm/Config/llvm-config.h",
],
copts = llvm_copts,
- defines = llvm_global_defines,
+ defines = llvm_config_defines,
includes = ["include"],
textual_hdrs = [
"include/llvm/Config/AsmParsers.def",
@@ -2920,11 +2907,11 @@ cc_binary(
copts = llvm_copts,
stamp = 0,
deps = [
+ ":Symbolize",
":BitReader",
":Core",
- ":Debuginfod",
":Support",
- ":Symbolize",
+ ":Debuginfod",
],
)
@@ -4442,8 +4429,3 @@ cc_binary(
":Support",
],
)
-
-py_binary(
- name = "write_cmake_config",
- srcs = ["utils/write_cmake_config.py"],
-)
diff --git a/utils/bazel/llvm-project-overlay/llvm/config.bzl b/utils/bazel/llvm-project-overlay/llvm/config.bzl
index c133a036dc7f3..5beb3cc7c410d 100644
--- a/utils/bazel/llvm-project-overlay/llvm/config.bzl
+++ b/utils/bazel/llvm-project-overlay/llvm/config.bzl
@@ -4,195 +4,9 @@
"""Defines variables that use selects to configure LLVM based on platform."""
-def maybe_one(b):
- """Return "1" if b is True, else empty string"""
- return "1" if b else ""
-
-def maybe_value(b, val):
- """Return val if b is True, else empty string"""
- return val if b else ""
-
-def get_config_values(host_os, arch, triple):
- """Return CMake variables for config.h
-
- The variables for config.h are mostly LLVM-internal portability defines.
- """
- is_win = host_os == "win"
- is_posix = not is_win
- is_mac = host_os == "mac"
- is_linux = host_os == "linux"
-
- one_if_linux = maybe_one(is_linux)
- one_if_posix = maybe_one(is_posix)
- one_if_mac = maybe_one(is_mac)
- one_if_win = maybe_one(is_win)
-
- if is_win:
- shlib_ext = ".dll"
- elif is_mac:
- shlib_ext = ".dylib"
- else:
- shlib_ext = ".so"
-
- # Common variables.
+def native_arch_defines(arch, triple):
return [
- "BUG_REPORT_URL=https://github.com/llvm/llvm-project/issues/",
- "ENABLE_BACKTRACES=1",
- "ENABLE_CRASH_OVERRIDES=1",
- "HAVE_CRASHREPORTERCLIENT_H=",
- "HAVE_DECL_FE_ALL_EXCEPT=1",
- "HAVE_DECL_FE_INEXACT=1",
- "LLVM_ENABLE_CRASH_DUMPS=",
- "HAVE_ERRNO_H=1",
- "HAVE_FCNTL_H=1",
- "HAVE_FENV_H=1",
- "HAVE_FFI_CALL=",
- "HAVE_FFI_FFI_H=",
- "HAVE_FFI_H=",
- "HAVE_LIBPFM=",
- "HAVE_LIBPSAPI=",
- "HAVE_MALLCTL=",
- "HAVE_SIGNAL_H=1",
- "HAVE_STD_IS_TRIVIALLY_COPYABLE=1",
- "HAVE_STRERROR=1",
- "HAVE_SYS_STAT_H=1",
- "HAVE_SYS_TYPES_H=1",
- "HAVE_VALGRIND_VALGRIND_H=",
- "HAVE__ALLOCA=",
- "HAVE___ALLOCA=",
- "HAVE___ASHLDI3=",
- "HAVE___ASHRDI3=",
- "HAVE___CHKSTK=",
- "HAVE___CHKSTK_MS=",
- "HAVE___CMPDI2=",
- "HAVE___DIVDI3=",
- "HAVE___FIXDFDI=",
- "HAVE___FIXSFDI=",
- "HAVE___FLOATDIDF=",
- "HAVE___LSHRDI3=",
- "HAVE___MAIN=",
- "HAVE___MODDI3=",
- "HAVE___UDIVDI3=",
- "HAVE___UMODDI3=",
- "HAVE____CHKSTK=",
- "HAVE____CHKSTK_MS=",
- "HOST_LINK_VERSION=",
- "LIBPFM_HAS_FIELD_CYCLES=",
- "LLVM_TARGET_TRIPLE_ENV=",
- "LLVM_VERSION_INFO=",
- "LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO=1",
- "LLVM_WINDOWS_PREFER_FORWARD_SLASH=",
- "PACKAGE_BUGREPORT=https://github.com/llvm/llvm-project/issues/",
- "PACKAGE_NAME=LLVM",
- "PACKAGE_STRING=LLVM git",
- "PACKAGE_VERSION=git",
- "PACKAGE_VENDOR=",
- "RETSIGTYPE=void",
- "LLVM_GISEL_COV_ENABLED=",
- "LLVM_GISEL_COV_PREFIX=",
-
- # TODO: These are configurable in gn, which means people might actually
- # want other values here.
- "HAVE_LIBEDIT=",
- "LLVM_ENABLE_TERMINFO=",
- "LLVM_ENABLE_LIBXML2=",
- "HAVE_MALLINFO2=",
-
- # Various Linux-only APIs.
- "HAVE_FUTIMENS=" + one_if_linux,
- "HAVE_LINK_H=" + one_if_linux,
- "HAVE_LSEEK64=" + one_if_linux,
- "HAVE_MALLINFO=" + one_if_linux,
- "HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC=" + one_if_linux,
-
- # Various Mac-only APIs.
- "HAVE_CRASHREPORTER_INFO=" + one_if_mac,
- "HAVE_DECL_ARC4RANDOM=" + one_if_mac,
- "HAVE_DLADDR=" + one_if_mac,
- "HAVE_MACH_MACH_H=" + one_if_mac,
- "HAVE_MALLOC_MALLOC_H=" + one_if_mac,
- "HAVE_MALLOC_ZONE_STATISTICS=" + one_if_mac,
- "HAVE_PROC_PID_RUSAGE=" + one_if_mac,
- "HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC=" + one_if_mac,
- "HAVE_UNW_ADD_DYNAMIC_FDE=" + one_if_mac,
-
- # Win-only APIs.
- "HAVE_DECL_STRERROR_S=" + one_if_win,
- "HAVE__CHSIZE_S=" + one_if_win,
-
- # General Posix defines.
- "HAVE_BACKTRACE=" + one_if_posix,
- "HAVE_POSIX_SPAWN=" + one_if_posix,
- "HAVE_PTHREAD_GETNAME_NP=" + one_if_posix,
- "HAVE_DEREGISTER_FRAME=" + one_if_posix,
- "HAVE_REGISTER_FRAME=" + one_if_posix,
- "HAVE_DLFCN_H=" + one_if_posix,
- "HAVE_DLOPEN=" + one_if_posix,
- "HAVE_FUTIMES=" + one_if_posix,
- "HAVE_GETPAGESIZE=" + one_if_posix,
- "HAVE_GETRLIMIT=" + one_if_posix,
- "HAVE_GETRUSAGE=" + one_if_posix,
- "HAVE_ISATTY=" + one_if_posix,
- "HAVE_LIBPTHREAD=" + one_if_posix,
- "HAVE_PTHREAD_SETNAME_NP=" + one_if_posix,
- "HAVE_PREAD=" + one_if_posix,
- "HAVE_PTHREAD_H=" + one_if_posix,
- "HAVE_PTHREAD_MUTEX_LOCK=" + one_if_posix,
- "HAVE_PTHREAD_RWLOCK_INIT=" + one_if_posix,
- "HAVE_SBRK=" + one_if_posix,
- "HAVE_SETENV=" + one_if_posix,
- "HAVE_SETRLIMIT=" + one_if_posix,
- "HAVE_SIGALTSTACK=" + one_if_posix,
- "HAVE_STRERROR_R=" + one_if_posix,
- "HAVE_SYSCONF=" + one_if_posix,
- "HAVE_SYS_IOCTL_H=" + one_if_posix,
- "HAVE_SYS_MMAN_H=" + one_if_posix,
- "HAVE_SYS_PARAM_H=" + one_if_posix,
- "HAVE_SYS_RESOURCE_H=" + one_if_posix,
- "HAVE_SYS_TIME_H=" + one_if_posix,
- "HAVE_TERMIOS_H=" + one_if_posix,
- "HAVE_UNISTD_H=" + one_if_posix,
- "HAVE__UNWIND_BACKTRACE=" + one_if_posix,
-
- # Miscellaneous corner case variables.
- "stricmp=" + maybe_value(is_win, "_stricmp"),
- "strdup=" + maybe_value(is_win, "_strdup"),
- "LTDL_SHLIB_EXT=" + shlib_ext,
- "LLVM_PLUGIN_EXT=" + shlib_ext,
- "BACKTRACE_HEADER=" + maybe_value(is_posix, "execinfo.h"),
-
- # This is oddly duplicated with llvm-config.h.
- "LLVM_DEFAULT_TARGET_TRIPLE=" + triple,
- "LLVM_SUPPORT_XCODE_SIGNPOSTS=",
- ]
-
-def get_llvm_config_values(host_os, arch, triple):
- is_win = host_os == "win"
- is_posix = not is_win
- return [
- "LLVM_BUILD_LLVM_DYLIB=",
- "LLVM_BUILD_SHARED_LIBS=",
- "LLVM_DEFAULT_TARGET_TRIPLE=" + triple,
- "LLVM_ENABLE_DUMP=",
- "LLVM_FORCE_ENABLE_STATS=",
- "LLVM_FORCE_USE_OLD_TOOLCHAIN=",
- "LLVM_HAS_ATOMICS=1",
- "LLVM_HAVE_TF_API=",
- "LLVM_HOST_TRIPLE=" + triple,
- "LLVM_NATIVE_ARCH=" + arch,
- "LLVM_UNREACHABLE_OPTIMIZE=1",
- "LLVM_USE_INTEL_JITEVENTS=",
- "LLVM_USE_OPROFILE=",
- "LLVM_USE_PERF=",
- "LLVM_WITH_Z3=",
-
- # TODO: Define this properly.
- "LLVM_VERSION_MAJOR=15",
- "LLVM_VERSION_MINOR=0",
- "LLVM_VERSION_PATCH=0",
- "PACKAGE_VERSION=15.0.0git",
- "LLVM_ON_UNIX=" + maybe_one(is_posix),
- "HAVE_SYSEXITS_H=" + maybe_one(is_posix),
+ r'LLVM_NATIVE_ARCH=\"{}\"'.format(arch),
"LLVM_NATIVE_ASMPARSER=LLVMInitialize{}AsmParser".format(arch),
"LLVM_NATIVE_ASMPRINTER=LLVMInitialize{}AsmPrinter".format(arch),
"LLVM_NATIVE_DISASSEMBLER=LLVMInitialize{}Disassembler".format(arch),
@@ -200,41 +14,44 @@ def get_llvm_config_values(host_os, arch, triple):
"LLVM_NATIVE_TARGETINFO=LLVMInitialize{}TargetInfo".format(arch),
"LLVM_NATIVE_TARGETMC=LLVMInitialize{}TargetMC".format(arch),
"LLVM_NATIVE_TARGETMCA=LLVMInitialize{}TargetMCA".format(arch),
-
- # TODO: These are configurable in gn, which means people might actually
- # want other values here.
- "LLVM_ENABLE_THREADS=1",
- "LLVM_HAVE_LIBXAR=",
- "LLVM_ENABLE_ZLIB=",
- "LLVM_ENABLE_CURL=",
- "LLVM_ENABLE_DIA_SDK=",
+ r'LLVM_HOST_TRIPLE=\"{}\"'.format(triple),
+ r'LLVM_DEFAULT_TARGET_TRIPLE=\"{}\"'.format(triple),
]
-# TODO: We should split out host vs. target here.
-# TODO: Figure out how to use select so that we can share this translation from
-# Bazel platform configuration to LLVM host and target selection.
-config_h_values = select({
- "@bazel_tools//src/conditions:windows": get_config_values("win", "X86", "x86_64-pc-win32"),
- "@bazel_tools//src/conditions:darwin_arm64": get_config_values("mac", "AArch64", "arm64-apple-darwin"),
- "@bazel_tools//src/conditions:darwin_x86_64": get_config_values("mac", "X86", "x86_64-unknown-darwin"),
- "@bazel_tools//src/conditions:linux_aarch64": get_config_values("linux", "AArch64", "aarch64-unknown-linux-gnu"),
- "@bazel_tools//src/conditions:linux_ppc64le": get_config_values("linux", "PowerPC", "powerpc64le-unknown-linux-gnu"),
- "@bazel_tools//src/conditions:linux_s390x": get_config_values("linux", "SystemZ", "systemz-unknown-linux_gnu"),
- "//conditions:default": get_config_values("linux", "X86", "x86_64-unknown-linux-gnu"),
-})
-
-llvm_config_h_values = select({
- "@bazel_tools//src/conditions:windows": get_llvm_config_values("win", "X86", "x86_64-pc-win32"),
- "@bazel_tools//src/conditions:darwin_arm64": get_llvm_config_values("mac", "AArch64", "arm64-apple-darwin"),
- "@bazel_tools//src/conditions:darwin_x86_64": get_llvm_config_values("mac", "X86", "x86_64-unknown-darwin"),
- "@bazel_tools//src/conditions:linux_aarch64": get_llvm_config_values("linux", "AArch64", "aarch64-unknown-linux-gnu"),
- "@bazel_tools//src/conditions:linux_ppc64le": get_llvm_config_values("linux", "PowerPC", "powerpc64le-unknown-linux-gnu"),
- "@bazel_tools//src/conditions:linux_s390x": get_llvm_config_values("linux", "SystemZ", "systemz-unknown-linux_gnu"),
- "//conditions:default": get_llvm_config_values("linux", "X86", "x86_64-unknown-linux-gnu"),
-})
+posix_defines = [
+ "LLVM_ON_UNIX=1",
+ "HAVE_BACKTRACE=1",
+ "BACKTRACE_HEADER=<execinfo.h>",
+ r'LTDL_SHLIB_EXT=\".so\"',
+ r'LLVM_PLUGIN_EXT=\".so\"',
+ "LLVM_ENABLE_THREADS=1",
+ "HAVE_DEREGISTER_FRAME=1",
+ "HAVE_LIBPTHREAD=1",
+ "HAVE_PTHREAD_GETNAME_NP=1",
+ "HAVE_PTHREAD_H=1",
+ "HAVE_PTHREAD_SETNAME_NP=1",
+ "HAVE_REGISTER_FRAME=1",
+ "HAVE_SETENV_R=1",
+ "HAVE_STRERROR_R=1",
+ "HAVE_SYSEXITS_H=1",
+ "HAVE_UNISTD_H=1",
+]
-linux_defines = [
+linux_defines = posix_defines + [
"_GNU_SOURCE",
+ "HAVE_LINK_H=1",
+ "HAVE_LSEEK64=1",
+ "HAVE_MALLINFO=1",
+ "HAVE_SBRK=1",
+ "HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC=1",
+]
+
+macos_defines = posix_defines + [
+ "HAVE_MACH_MACH_H=1",
+ "HAVE_MALLOC_MALLOC_H=1",
+ "HAVE_MALLOC_ZONE_STATISTICS=1",
+ "HAVE_PROC_PID_RUSAGE=1",
+ "HAVE_UNW_ADD_DYNAMIC_FDE=1",
]
win32_defines = [
@@ -247,23 +64,36 @@ win32_defines = [
"_SCL_SECURE_NO_WARNINGS",
"UNICODE",
"_UNICODE",
+
+ # LLVM features
+ r'LTDL_SHLIB_EXT=\".dll\"',
+ r'LLVM_PLUGIN_EXT=\".dll\"',
]
# TODO: We should switch to platforms-based config settings to make this easier
# to express.
os_defines = select({
"@bazel_tools//src/conditions:windows": win32_defines,
- "@bazel_tools//src/conditions:darwin": [],
- "@bazel_tools//src/conditions:freebsd": [],
+ "@bazel_tools//src/conditions:darwin": macos_defines,
+ "@bazel_tools//src/conditions:freebsd": posix_defines,
"//conditions:default": linux_defines,
})
-# These shouldn't be needed by the C++11 standard, but are for some
-# platforms (e.g. glibc < 2.18. See
-# https://sourceware.org/bugzilla/show_bug.cgi?id=15366). These are also
-# included unconditionally in the CMake build:
-# https://github.com/llvm/llvm-project/blob/cd0dd8ece8e/llvm/cmake/modules/HandleLLVMOptions.cmake#L907-L909
-llvm_global_defines = os_defines + [
+# TODO: We should split out host vs. target here.
+llvm_config_defines = os_defines + select({
+ "@bazel_tools//src/conditions:windows": native_arch_defines("X86", "x86_64-pc-win32"),
+ "@bazel_tools//src/conditions:darwin_arm64": native_arch_defines("AArch64", "arm64-apple-darwin"),
+ "@bazel_tools//src/conditions:darwin_x86_64": native_arch_defines("X86", "x86_64-unknown-darwin"),
+ "@bazel_tools//src/conditions:linux_aarch64": native_arch_defines("AArch64", "aarch64-unknown-linux-gnu"),
+ "@bazel_tools//src/conditions:linux_ppc64le": native_arch_defines("PowerPC", "powerpc64le-unknown-linux-gnu"),
+ "@bazel_tools//src/conditions:linux_s390x": native_arch_defines("SystemZ", "systemz-unknown-linux_gnu"),
+ "//conditions:default": native_arch_defines("X86", "x86_64-unknown-linux-gnu"),
+}) + [
+ # These shouldn't be needed by the C++11 standard, but are for some
+ # platforms (e.g. glibc < 2.18. See
+ # https://sourceware.org/bugzilla/show_bug.cgi?id=15366). These are also
+ # included unconditionally in the CMake build:
+ # https://github.com/llvm/llvm-project/blob/cd0dd8ece8e/llvm/cmake/modules/HandleLLVMOptions.cmake#L907-L909
"__STDC_LIMIT_MACROS",
"__STDC_CONSTANT_MACROS",
"__STDC_FORMAT_MACROS",
diff --git a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h
new file mode 100644
index 0000000000000..be872fbf22915
--- /dev/null
+++ b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h
@@ -0,0 +1,379 @@
+/*===------- llvm/Config/config.h - llvm configuration ------------*- C -*-===*/
+/* */
+/* 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 is a manual port of config.h.cmake for the symbols that do not change
+ based on platform. Those that do change should not be defined here and
+ instead use Bazel cc_library defines. Some attempt has been made to extract
+ such symbols that do vary based on platform (for the platforms we care about)
+ into Bazel defines, but it is by no means complete, so if you see something
+ that looks wrong, it probably is. */
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+// Include this header only under the llvm source tree.
+// This is a private header.
+
+/* Exported configuration */
+#include "llvm/Config/llvm-config.h"
+
+/* Bug report URL. */
+#define BUG_REPORT_URL "https://github.com/llvm/llvm-project/issues/"
+
+/* Define to 1 to enable backtraces, and to 0 otherwise. */
+#define ENABLE_BACKTRACES 1
+
+/* Define to 1 to enable crash overrides, and to 0 otherwise. */
+#define ENABLE_CRASH_OVERRIDES 1
+
+/* Define to 1 to enable crash memory dumps, and to 0 otherwise. */
+#define LLVM_ENABLE_CRASH_DUMPS 0
+
+/* Define to 1 to prefer forward slashes on Windows, and to 0 prefer
+ backslashes. */
+#define LLVM_WINDOWS_PREFER_FORWARD_SLASH 0
+
+/* Define to 1 if you have the `backtrace' function. */
+/* HAVE_BACKTRACE defined in Bazel */
+
+/* BACKTRACE_HEADER defined in Bazel */
+
+/* Define to 1 if you have the <CrashReporterClient.h> header file. */
+/* HAVE_CRASHREPORTERCLIENT_H defined in Bazel */
+
+/* can use __crashreporter_info__ */
+/* HAVE_CRASHREPORTER_INFO defined in Bazel */
+
+/* Define to 1 if you have the declaration of `arc4random', and to 0 if you
+ don't. */
+#define HAVE_DECL_ARC4RANDOM 0
+
+/* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you
+ don't. */
+#define HAVE_DECL_FE_ALL_EXCEPT 1
+
+/* Define to 1 if you have the declaration of `FE_INEXACT', and to 0 if you
+ don't. */
+#define HAVE_DECL_FE_INEXACT 1
+
+/* Define to 1 if you have the declaration of `strerror_s', and to 0 if you
+ don't. */
+#define HAVE_DECL_STRERROR_S 0
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if dlopen() is available on this platform. */
+#define HAVE_DLOPEN 1
+
+/* Define if dladdr() is available on this platform. */
+/* #undef HAVE_DLADDR */
+
+/* Define to 1 if we can register EH frames on this platform. */
+/* HAVE_REGISTER_FRAME defined in Bazel*/
+
+/* Define to 1 if we can deregister EH frames on this platform. */
+/* HAVE_DEREGISTER_FRAME defined in Bazel*/
+
+/* Define if __unw_add_dynamic_fde() is available on this platform. */
+/* HAVE_UNW_ADD_DYNAMIC_FDE defined in Bazel */
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define to 1 if you have the <fenv.h> header file. */
+#define HAVE_FENV_H 1
+
+/* Define if libffi is available on this platform. */
+/* #undef HAVE_FFI_CALL */
+
+/* Define to 1 if you have the <ffi/ffi.h> header file. */
+/* #undef HAVE_FFI_FFI_H */
+
+/* Define to 1 if you have the <ffi.h> header file. */
+/* #undef HAVE_FFI_H */
+
+/* Define to 1 if you have the `futimens' function. */
+#define HAVE_FUTIMENS 1
+
+/* Define to 1 if you have the `futimes' function. */
+#define HAVE_FUTIMES 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getrlimit' function. */
+#define HAVE_GETRLIMIT 1
+
+/* Define to 1 if you have the `getrusage' function. */
+#define HAVE_GETRUSAGE 1
+
+/* Define to 1 if you have the `isatty' function. */
+#define HAVE_ISATTY 1
+
+/* Define to 1 if you have the `edit' library (-ledit). */
+/* #undef HAVE_LIBEDIT */
+
+/* Define to 1 if you have the `pfm' library (-lpfm). */
+/* #undef HAVE_LIBPFM */
+
+/* Define to 1 if the `perf_branch_entry' struct has field cycles. */
+/* #undef LIBPFM_HAS_FIELD_CYCLES */
+
+/* Define to 1 if you have the `psapi' library (-lpsapi). */
+/* #undef HAVE_LIBPSAPI */
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#define HAVE_LIBPTHREAD 1
+
+/* Define to 1 if you have the `pthread_getname_np' function. */
+#define HAVE_PTHREAD_GETNAME_NP 1
+
+/* Define to 1 if you have the `pthread_setname_np' function. */
+#define HAVE_PTHREAD_SETNAME_NP 1
+
+/* Define to 1 if you have the <link.h> header file. */
+/* HAVE_LINK_H defined in Bazel */
+
+/* Define to 1 if you have the `lseek64' function. */
+/* HAVE_LSEEK64 defined in Bazel */
+
+/* Define to 1 if you have the <mach/mach.h> header file. */
+/* HAVE_MACH_MACH_H defined in Bazel */
+
+/* Define to 1 if you have the `mallctl' function. */
+/* #undef HAVE_MALLCTL */
+
+/* Define to 1 if you have the `mallinfo' function. */
+/* HAVE_MALLINFO defined in Bazel */
+
+/* Define to 1 if you have the <malloc/malloc.h> header file. */
+/* HAVE_MALLOC_MALLOC_H defined in Bazel */
+
+/* Define to 1 if you have the `malloc_zone_statistics' function. */
+/* HAVE_MALLOC_ZONE_STATISTICS defined in Bazel */
+
+/* Define to 1 if you have the `posix_spawn' function. */
+#define HAVE_POSIX_SPAWN 1
+
+/* Define to 1 if you have the `pread' function. */
+#define HAVE_PREAD 1
+
+/* Define to 1 if you have the <pthread.h> header file. */
+/* HAVE_PTHREAD_H defined in Bazel */
+
+/* Have pthread_mutex_lock */
+#define HAVE_PTHREAD_MUTEX_LOCK 1
+
+/* Have pthread_rwlock_init */
+#define HAVE_PTHREAD_RWLOCK_INIT 1
+
+/* Define to 1 if you have the `sbrk' function. */
+/* HAVE_SBRK defined in Bazel */
+
+/* Define to 1 if you have the `setenv' function. */
+/* HAVE_SETENV defined in Bazel */
+
+/* Define to 1 if you have the `setrlimit' function. */
+#define HAVE_SETRLIMIT 1
+
+/* Define to 1 if you have the `sigaltstack' function. */
+#define HAVE_SIGALTSTACK 1
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+/* HAVE_STRERROR_R defined in Bazel */
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if stat struct has st_mtimespec member .*/
+/* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */
+
+/* Define to 1 if stat struct has st_mtim member. */
+/* HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC defined in Bazel */
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define if the setupterm() function is supported this platform. */
+/* LLVM_ENABLE_TERMINFO defined in Bazel */
+
+/* Define to 1 if you have the <termios.h> header file. */
+#define HAVE_TERMIOS_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+/* HAVE_UNISTD_H defined in Bazel */
+
+/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
+/* #undef HAVE_VALGRIND_VALGRIND_H */
+
+/* Have host's _alloca */
+/* #undef HAVE__ALLOCA */
+
+/* Define to 1 if you have the `_chsize_s' function. */
+/* #undef HAVE__CHSIZE_S */
+
+/* Define to 1 if you have the `_Unwind_Backtrace' function. */
+#define HAVE__UNWIND_BACKTRACE 1
+
+/* Have host's __alloca */
+/* #undef HAVE___ALLOCA */
+
+/* Have host's __ashldi3 */
+/* #undef HAVE___ASHLDI3 */
+
+/* Have host's __ashrdi3 */
+/* #undef HAVE___ASHRDI3 */
+
+/* Have host's __chkstk */
+/* #undef HAVE___CHKSTK */
+
+/* Have host's __chkstk_ms */
+/* #undef HAVE___CHKSTK_MS */
+
+/* Have host's __cmpdi2 */
+/* #undef HAVE___CMPDI2 */
+
+/* Have host's __divdi3 */
+/* #undef HAVE___DIVDI3 */
+
+/* Have host's __fixdfdi */
+/* #undef HAVE___FIXDFDI */
+
+/* Have host's __fixsfdi */
+/* #undef HAVE___FIXSFDI */
+
+/* Have host's __floatdidf */
+/* #undef HAVE___FLOATDIDF */
+
+/* Have host's __lshrdi3 */
+/* #undef HAVE___LSHRDI3 */
+
+/* Have host's __main */
+/* #undef HAVE___MAIN */
+
+/* Have host's __moddi3 */
+/* #undef HAVE___MODDI3 */
+
+/* Have host's __udivdi3 */
+/* #undef HAVE___UDIVDI3 */
+
+/* Have host's __umoddi3 */
+/* #undef HAVE___UMODDI3 */
+
+/* Have host's ___chkstk */
+/* #undef HAVE____CHKSTK */
+
+/* Have host's ___chkstk_ms */
+/* #undef HAVE____CHKSTK_MS */
+
+/* Linker version detected at compile time. */
+/* #undef HOST_LINK_VERSION */
+
+/* Target triple LLVM will generate code for by default */
+/* Doesn't use `cmakedefine` because it is allowed to be empty. */
+/* LLVM_DEFAULT_TARGET_TRIPLE defined in Bazel */
+
+/* Define if zlib compression is available */
+/* LLVM_ENABLE_ZLIB defined in Bazel */
+
+/* Define if overriding target triple is enabled */
+/* #undef LLVM_TARGET_TRIPLE_ENV */
+
+/* LLVM version information */
+/* #undef LLVM_VERSION_INFO */
+
+/* Whether tools show host and target info when invoked with --version */
+#define LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO 1
+
+/* Define if libxml2 is supported on this platform. */
+/* #undef LLVM_ENABLE_LIBXML2 */
+
+/* Define to the extension used for shared libraries, say, ".so". */
+/* LTDL_SHLIB_EXT defined in Bazel */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "https://github.com/llvm/llvm-project/issues/"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "LLVM"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING PACKAGE_NAME " " LLVM_VERSION_STRING
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION LLVM_VERSION_STRING
+
+/* Define to the vendor of this package. */
+/* #undef PACKAGE_VENDOR */
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define if std::is_trivially_copyable is supported */
+#define HAVE_STD_IS_TRIVIALLY_COPYABLE 1
+
+/* Define to a function implementing stricmp */
+/* stricmp defined conditionally below. */
+
+/* Define to a function implementing strdup */
+/* strdup defined conditionally below. */
+
+/* Whether GlobalISel rule coverage is being collected */
+#define LLVM_GISEL_COV_ENABLED 0
+
+/* Define to the default GlobalISel coverage file prefix */
+/* #undef LLVM_GISEL_COV_PREFIX */
+
+/* Whether Timers signpost passes in Xcode Instruments */
+#define LLVM_SUPPORT_XCODE_SIGNPOSTS 0
+
+/* HAVE_PROC_PID_RUSAGE defined in Bazel */
+
+/* Directly provide definitions here behind platform preprocessor definitions.
+ * The preprocessor conditions are sufficient to handle all of the configuration
+ * on platforms targeted by Bazel, and defining these here more faithfully
+ * matches how the users of this header expect things to work with CMake.
+ * FIXME: We should consider moving other platform defines to use this technique
+ * as well.
+ */
+
+#ifdef _WIN32
+#define stricmp _stricmp
+#define strdup _strdup
+#endif
+
+#endif
diff --git a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h
new file mode 100644
index 0000000000000..2810f49dff438
--- /dev/null
+++ b/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h
@@ -0,0 +1,127 @@
+/*===------- llvm/Config/llvm-config.h - llvm configuration -------*- C -*-===*/
+/* */
+/* 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 is a manual port of config.h.cmake for the symbols that do not change
+ based on platform. Those that do change should not be defined here and
+ instead use Bazel cc_library defines. Some attempt has been made to extract
+ such symbols that do vary based on platform (for the platforms we care about)
+ into Bazel defines, but it is by no means complete, so if you see something
+ that looks wrong, it probably is. */
+
+
+/* This file enumerates variables from the LLVM configuration so that they
+ can be in exported headers and won't override package specific directives.
+ This is a C header that can be included in the llvm-c headers. */
+
+#ifndef LLVM_CONFIG_H
+#define LLVM_CONFIG_H
+
+/* Define if LLVM_ENABLE_DUMP is enabled */
+/* #undef LLVM_ENABLE_DUMP */
+
+/* Target triple LLVM will generate code for by default */
+/* LLVM_DEFAULT_TARGET_TRIPLE defined in Bazel */
+
+/* Define if threads enabled */
+#define LLVM_ENABLE_THREADS 1
+
+/* Has gcc/MSVC atomic intrinsics */
+#define LLVM_HAS_ATOMICS 1
+
+/* Host triple LLVM will be executed on */
+/* LLVM_HOST_TRIPLE defined in Bazel */
+
+/* LLVM architecture name for the native architecture, if available */
+/* LLVM_NATIVE_ARCH defined in Bazel */
+
+/* LLVM name for the native AsmParser init function, if available */
+/* LLVM_NATIVE_ASMPARSER defined in Bazel */
+
+/* LLVM name for the native AsmPrinter init function, if available */
+/* LLVM_NATIVE_ASMPRINTER defined in Bazel */
+
+/* LLVM name for the native Disassembler init function, if available */
+/* LLVM_NATIVE_DISASSEMBLER defined in Bazel */
+
+/* LLVM name for the native Target init function, if available */
+/* LLVM_NATIVE_TARGET defined in Bazel */
+
+/* LLVM name for the native TargetInfo init function, if available */
+/* LLVM_NATIVE_TARGETINFO defined in Bazel */
+
+/* LLVM name for the native target MC init function, if available */
+/* LLVM_NATIVE_TARGETMC defined in Bazel */
+
+/* LLVM name for the native target MCA init function, if available */
+/* LLVM_NATIVE_TARGETMCA defined in Bazel */
+
+/* Define if this is Unixish platform */
+/* LLVM_ON_UNIX defined in Bazel */
+
+/* Define if we have the Intel JIT API runtime support library */
+#define LLVM_USE_INTEL_JITEVENTS 0
+
+/* Define if we have the oprofile JIT-support library */
+#define LLVM_USE_OPROFILE 0
+
+/* Define if we have the perf JIT-support library */
+#define LLVM_USE_PERF 0
+
+/* Major version of the LLVM API */
+#define LLVM_VERSION_MAJOR 15
+
+/* Minor version of the LLVM API */
+#define LLVM_VERSION_MINOR 0
+
+/* Patch version of the LLVM API */
+#define LLVM_VERSION_PATCH 0
+
+/* LLVM version string */
+#define LLVM_VERSION_STRING "15.0.0git"
+
+/* Whether LLVM records statistics for use with GetStatistics(),
+ * PrintStatistics() or PrintStatisticsJSON()
+ */
+#define LLVM_FORCE_ENABLE_STATS 0
+
+/* Define if we have z3 and want to build it */
+/* #undef LLVM_WITH_Z3 */
+
+/* Define if we have curl and want to use it */
+/* #undef LLVM_ENABLE_CURL */
+
+/* Define if LLVM was built with a dependency to the libtensorflow dynamic library */
+/* #undef LLVM_HAVE_TF_API */
+
+/* Define if LLVM was built with a dependency to the tensorflow compiler */
+/* #undef LLVM_HAVE_TF_AOT */
+
+/* Define to 1 if you have the <sysexits.h> header file. */
+/* HAVE_SYSEXITS_H defined in Bazel */
+
+/* Define if the xar_open() function is supported this platform. */
+/* #undef HAVE_LIBXAR */
+
+/* Define if building libLLVM shared library */
+/* #undef LLVM_BUILD_LLVM_DYLIB */
+
+/* Define if building LLVM with BUILD_SHARED_LIBS */
+/* #undef LLVM_BUILD_SHARED_LIBS */
+
+/* Define if building LLVM with LLVM_FORCE_USE_OLD_TOOLCHAIN_LIBS */
+/* #undef LLVM_FORCE_USE_OLD_TOOLCHAIN ${LLVM_FORCE_USE_OLD_TOOLCHAIN} */
+
+/* Define if llvm_unreachable should be optimized with undefined behavior
+ * in non assert builds */
+#define LLVM_UNREACHABLE_OPTIMIZE 1
+
+/* Define to 1 if you have the DIA SDK installed, and to 0 if you don't. */
+#define LLVM_ENABLE_DIA_SDK 0
+
+#endif
diff --git a/utils/bazel/llvm-project-overlay/llvm/write_cmake_config.bzl b/utils/bazel/llvm-project-overlay/llvm/write_cmake_config.bzl
deleted file mode 100644
index dc86f26842f60..0000000000000
--- a/utils/bazel/llvm-project-overlay/llvm/write_cmake_config.bzl
+++ /dev/null
@@ -1,52 +0,0 @@
-# This file is licensed 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
-
-# Rule for transforming CMake config files.
-#
-# Typical usage:
-# load("/tools/build_rules/write_cmake_config", "write_cmake_config")
-# write_cmake_config(
-# name = "ExpandMyTemplate",
-# src = "my.template",
-# out = "my.txt",
-# substitutions = {
-# "$VAR1": "foo",
-# "$VAR2": "bar",
-# }
-# )
-#
-# Args:
-# name: The name of the rule.
-# template: The template file to expand
-# out: The destination of the expanded file
-# substitutions: A dictionary mapping strings to their substitutions
-
-def write_cmake_config_impl(ctx):
- args = ctx.actions.args()
- args.add(ctx.files._script[0])
- args.add(ctx.file.src)
- args.add_all(ctx.attr.values)
- args.add("-o", ctx.outputs.out)
- ctx.actions.run(
- mnemonic = "WriteCMakeConfig",
- executable = "python3",
- inputs = ctx.files._script + [ ctx.file.src ],
- outputs = [ctx.outputs.out],
- arguments = [args],
- )
-
-write_cmake_config = rule(
- attrs = {
- "src": attr.label(
- mandatory = True,
- allow_single_file = True,
- ),
- "out": attr.output(mandatory = True),
- "values": attr.string_list(mandatory = True),
- "_script": attr.label(default="//llvm:write_cmake_config")
- },
- # output_to_genfiles is required for header files.
- output_to_genfiles = True,
- implementation = write_cmake_config_impl,
-)
More information about the llvm-commits
mailing list