From: Reid Kleckner Date: Wed, 1 Jun 2022 04:15:46 +0000 (-0700) Subject: Revert "[Bazel][GN] Reuse the GN LLVM config file generation code" X-Git-Tag: upstream/15.0.7~6251 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=17296607a761086b2c0e6518ceaa16415dceb55b;p=platform%2Fupstream%2Fllvm.git 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. --- diff --git a/llvm/utils/gn/build/write_cmake_config.gni b/llvm/utils/gn/build/write_cmake_config.gni index 80a97ef..bbaab21 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 27386f4..ff69079 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 @@ empty string, which is falsy, but FOO=0 sets it to '0' which is truthy): #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 e1b7a0b..2e9faad 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 c133a03..5beb3cc 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=", + 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 0000000..be872fb --- /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 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 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 header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the 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 header file. */ +/* #undef HAVE_FFI_FFI_H */ + +/* Define to 1 if you have the 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 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 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 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 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 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 header file. */ +#define HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the 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 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 header file. */ +#define HAVE_TERMIOS_H 1 + +/* Define to 1 if you have the header file. */ +/* HAVE_UNISTD_H defined in Bazel */ + +/* Define to 1 if you have the 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 0000000..2810f49 --- /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 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 dc86f26..0000000 --- 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, -)