diff --git a/utils/bazel/.bazelrc b/utils/bazel/.bazelrc index a52e21e87ee0f..6a33b2cb97663 100644 --- a/utils/bazel/.bazelrc +++ b/utils/bazel/.bazelrc @@ -58,14 +58,6 @@ build --experimental_cc_shared_library # https://github.com/bazelbuild/bazel/commit/03246077f948f2790a83520e7dccc2625650e6df build --build_runfile_links=false -############################################################################### -# Options to select different strategies for linking potential dependent -# libraries. The default leaves it disabled. -############################################################################### - -build:zlib_external --repo_env=BAZEL_LLVM_ZLIB_STRATEGY=external -build:zlib_system --repo_env=BAZEL_LLVM_ZLIB_STRATEGY=system - ############################################################################### # Options for "generic_clang" builds: these options should generally apply to # builds using a Clang-based compiler, and default to the `clang` executable on diff --git a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel index e3b20e43dd220..0600fe324368a 100644 --- a/utils/bazel/llvm-project-overlay/clang/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/clang/BUILD.bazel @@ -2,6 +2,8 @@ # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +load("@bazel_skylib//rules:common_settings.bzl", "bool_flag") +load("@bazel_skylib//rules:expand_template.bzl", "expand_template") load("@rules_python//python:defs.bzl", "py_binary") load( "//:vars.bzl", @@ -13,6 +15,16 @@ load( load("//:workspace_root.bzl", "workspace_root") load("//llvm:binary_alias.bzl", "binary_alias") load("//llvm:cc_plugin_library.bzl", "cc_plugin_library") +load( + "//config:cmakehelpers.bzl", + "cmakedefine", + "cmakedefine01_off", + "cmakedefine01_on", + "cmakedefine_sunset", + "cmakedefine_unset", + "cmakedefine_vset", + "cmakedefine_vunset", +) load("//llvm:driver.bzl", "llvm_driver_cc_binary") load("//mlir:tblgen.bzl", "gentbl_cc_library", "td_library") @@ -614,6 +626,49 @@ genrule( ), ) +expand_template( + name = "config_h", + out = "include/clang/Config/config.h", + substitutions = ( + {"${BUG_REPORT_URL}": "https://github.com/llvm/llvm-project/issues/"} | + cmakedefine01_on("CLANG_DEFAULT_PIE_ON_LINUX") | + { + "${CLANG_DEFAULT_LINKER}": "", + "${CLANG_DEFAULT_CXX_STDLIB}": "", + "${CLANG_DEFAULT_RTLIB}": "", + "${CLANG_DEFAULT_UNWINDLIB}": "", + "${CLANG_DEFAULT_OBJCOPY}": "objcopy", + "${CLANG_DEFAULT_OPENMP_RUNTIME}": "libomp", + "${CLANG_SYSTEMZ_DEFAULT_ARCH}": "z10", + "${CLANG_INSTALL_LIBDIR_BASENAME}": "lib", + "${CLANG_RESOURCE_DIR}": "", + "${C_INCLUDE_DIRS}": "", + } | + cmakedefine_sunset("CLANG_CONFIG_FILE_SYSTEM_DIR") | + cmakedefine_sunset("CLANG_CONFIG_FILE_USER_DIR") | + { + "${DEFAULT_SYSROOT}": "", + "${GCC_INSTALL_PREFIX}": "", + } | + cmakedefine_vunset("CLANG_HAVE_LIBXML") | + cmakedefine( + "CLANG_HAVE_RLIMITS", + disable = "@platforms//os:windows", + ) | + cmakedefine_vset("CLANG_HAVE_DLFCN_H") | + cmakedefine_vset("CLANG_HAVE_DLADDR") | + cmakedefine_sunset("HOST_LINK_VERSION") | + cmakedefine_unset("ENABLE_LINKER_BUILD_ID") | + cmakedefine01_on("ENABLE_X86_RELAX_RELOCATIONS") | + cmakedefine01_off("PPC_LINUX_DEFAULT_IEEELONGDOUBLE") | + cmakedefine01_off("CLANG_ENABLE_OBJC_REWRITER") | + cmakedefine01_on("CLANG_ENABLE_STATIC_ANALYZER") | + cmakedefine01_off("CLANG_SPAWN_CC1") | + cmakedefine01_off("CLANG_ENABLE_CIR") + ), + template = "include/clang/Config/config.h.cmake", +) + cc_library( name = "config", hdrs = [ diff --git a/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h b/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h deleted file mode 100644 index fd26489ffd5a8..0000000000000 --- a/utils/bazel/llvm-project-overlay/clang/include/clang/Config/config.h +++ /dev/null @@ -1,115 +0,0 @@ -/*===------- clang/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. */ - -#ifdef CLANG_CONFIG_H -#error config.h can only be included once -#else -#define CLANG_CONFIG_H - -/* Bug report URL. */ -#define BUG_REPORT_URL "https://github.com/llvm/llvm-project/issues/" - -/* Default to -fPIE and -pie on Linux. */ -#define CLANG_DEFAULT_PIE_ON_LINUX 1 - -/* Default linker to use. */ -#define CLANG_DEFAULT_LINKER "" - -/* Default C++ stdlib to use. */ -#define CLANG_DEFAULT_CXX_STDLIB "" - -/* Default runtime library to use. */ -#define CLANG_DEFAULT_RTLIB "" - -/* Default unwind library to use. */ -#define CLANG_DEFAULT_UNWINDLIB "" - -/* Default objcopy to use */ -#define CLANG_DEFAULT_OBJCOPY "objcopy" - -/* Default OpenMP runtime used by -fopenmp. */ -#define CLANG_DEFAULT_OPENMP_RUNTIME "libomp" - -/* Default architecture for SystemZ. */ -#define CLANG_SYSTEMZ_DEFAULT_ARCH "z10" - -/* Multilib basename for libdir. */ -#define CLANG_INSTALL_LIBDIR_BASENAME "lib" - -/* Relative directory for resource files */ -#define CLANG_RESOURCE_DIR "" - -/* Directories clang will search for headers */ -#define C_INCLUDE_DIRS "" - -/* Directories clang will search for configuration files */ -/* #undef CLANG_CONFIG_FILE_SYSTEM_DIR */ -/* #undef CLANG_CONFIG_FILE_USER_DIR */ - -/* Default to all compiler invocations for --sysroot=. */ -#define DEFAULT_SYSROOT "" - -/* Directory where gcc is installed. */ -#define GCC_INSTALL_PREFIX "" - -/* Define if we have libxml2 */ -/* #undef CLANG_HAVE_LIBXML */ - -/* Define if we have sys/resource.h (rlimits) */ -/* CLANG_HAVE_RLIMITS defined conditionally below */ - -/* Define if we have dlfcn.h */ -#define CLANG_HAVE_DLFCN_H 1 - -/* Define if dladdr() is available on this platform. */ -#define CLANG_HAVE_DLADDR 1 - -/* Linker version detected at compile time. */ -/* #undef HOST_LINK_VERSION */ - -/* pass --build-id to ld */ -/* #undef ENABLE_LINKER_BUILD_ID */ - -/* enable x86 relax relocations by default */ -#define ENABLE_X86_RELAX_RELOCATIONS 1 - -/* enable IEEE binary128 as default long double format on PowerPC Linux. */ -#define PPC_LINUX_DEFAULT_IEEELONGDOUBLE 0 - -/* Enable the experimental new pass manager by default */ -#define ENABLE_EXPERIMENTAL_NEW_PASS_MANAGER 0 - -/* Enable each functionality of modules */ -#define CLANG_ENABLE_OBJC_REWRITER 0 -#define CLANG_ENABLE_STATIC_ANALYZER 1 - -/* Spawn a new process clang.exe for the CC1 tool invocation, when necessary */ -#define CLANG_SPAWN_CC1 0 - -/* Whether to enable opaque pointers by default */ -#define CLANG_ENABLE_OPAQUE_POINTERS_INTERNAL 1 - -/* 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. - */ - -#ifndef _WIN32 -#define CLANG_HAVE_RLIMITS 1 -#endif - -#endif diff --git a/utils/bazel/llvm-project-overlay/config/BUILD.bazel b/utils/bazel/llvm-project-overlay/config/BUILD.bazel new file mode 100644 index 0000000000000..62690230b1901 --- /dev/null +++ b/utils/bazel/llvm-project-overlay/config/BUILD.bazel @@ -0,0 +1,177 @@ +# 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 + +"""Configurable build attributes for the overlay. + +To view the configurable build attributes in this file: + + bazel query 'kind(".*_flag", @llvm-project//config:all)' +""" + +load("@bazel_skylib//lib:selects.bzl", "selects") +load("@bazel_skylib//rules:common_settings.bzl", "bool_flag", "string_flag") + +# Common config settings mapping to platform triples. +# +# See also: //platform:BUILD.bazel. +# +# TODO(aaronmondal): Add triples for more useful configurations as per +# `llvm/include/llvm/TargetParser/Triple.h`. + +selects.config_setting_group( + name = "aarch64-apple-darwin", + match_all = [ + "@platforms//cpu:aarch64", + "@platforms//os:macos", + ], +) + +selects.config_setting_group( + name = "aarch64-unknown-linux-gnu", + match_all = [ + "@platforms//cpu:aarch64", + "@platforms//os:linux", + ], +) + +selects.config_setting_group( + name = "powerpc64le-unknown-linux-gnu", + match_all = [ + "@platforms//cpu:ppc64le", + "@platforms//os:linux", + ], +) + +selects.config_setting_group( + name = "systemz-unknown-linux_gnu", + match_all = [ + "@platforms//cpu:s390x", + "@platforms//os:linux", + ], +) + +# TODO(aaronmondal): Split this into `x86_64-pc-windows-gnu` and +# `x86_64-pc-windows-msvc`. +selects.config_setting_group( + name = "x86_64-pc-windows", + match_all = [ + "@platforms//cpu:x86_64", + "@platforms//os:windows", + ], +) + +selects.config_setting_group( + name = "x86_64-apple-darwin", + match_all = [ + "@platforms//cpu:x86_64", + "@platforms//os:macos", + ], +) + +selects.config_setting_group( + name = "x86_64-unknown-linux-gnu", + match_all = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], +) + +# Useful helpers. + +selects.config_setting_group( + name = "posix", + match_any = [ + "@platforms//os:linux", + "@platforms//os:macos", + "@platforms//os:freebsd", + ], +) + +# Configurable build attributes for llvm. + +# These map to CMake `option` fields on a best-effort basis. The default maps to +# CMake's `ON` or `OFF` value. +[ + ( + bool_flag( + name = option, + build_setting_default = default, + ), + # Only define the opposite of the default value to reduce target count + # and prevent accidental default redeclarations. + # + # This also acts as a failsafe to prevent drift if a default is flipped + # as a changed default triggers straightfoward errors in all places + # where no longer existing config_settings need to be adjusted. + ( + config_setting( + name = "{}_enabled".format(option), + flag_values = {":{}".format(option): "true"}, + ) if not default else config_setting( + name = "{}_disabled".format(option), + flag_values = {":{}".format(option): "false"}, + ) + ), + ) + for option, default in [ + ("LLVM_ENABLE_BACKTRACES", True), + ("LLVM_ENABLE_CRASH_OVERRIDES", True), + ("LLVM_ENABLE_CRASH_DUMPS", False), + + # These deviate slightly from CMake in that we use a boolean rather than + # ON/OFF/FORCE_ON since in Bazel ON collapses into FORCE_ON anyways. + ("LLVM_ENABLE_ZLIB", True), + ("LLVM_ENABLE_ZSTD", True), + ("LLVM_HAS_LOGF128", False), + ] +] + +# Most builds expect this to be disabled by default but MinGW builds expect it +# enabled by default. We handle this separately to clarify the intent that the +# default is ambiguous. +bool_flag( + name = "LLVM_WINDOWS_PREFER_FORWARD_SLASH", + build_setting_default = False, +) + +config_setting( + name = "LLVM_WINDOWS_PREFER_FORWARD_SLASH_enabled", + flag_values = {":LLVM_WINDOWS_PREFER_FORWARD_SLASH": "true"}, +) + +config_setting( + name = "LLVM_WINDOWS_PREFER_FORWARD_SLASH_disabled", + flag_values = {":LLVM_WINDOWS_PREFER_FORWARD_SLASH": "false"}, +) + +string_flag( + name = "LLVM_ENABLE_DEBUGLOC_COVERAGE_TRACKING", + build_setting_default = "DISABLED", + values = [ + "COVERAGE", + "DISABLED", + ], +) + +config_setting( + name = "LLVM_ENABLE_DEBUGLOC_COVERAGE_TRACKING_coverage", + flag_values = {":LLVM_ENABLE_DEBUGLOC_COVERAGE_TRACKING": "COVERAGE"}, +) + +bool_flag( + name = "LLVM_ENABLE_PLUGINS", + # TODO(aaronmondal): This should be enabled by default, but that currently + # breaks @llvm-project//llvm/unittests:analysis_tests. + build_setting_default = False, +) + +config_setting( + name = "LLVM_ENABLE_PLUGINS_enabled", + flag_values = {":LLVM_ENABLE_PLUGINS": "true"}, +) + +config_setting( + name = "LLVM_ENABLE_PLUGINS_disabled", + flag_values = {":LLVM_ENABLE_PLUGINS": "false"}, +) diff --git a/utils/bazel/llvm-project-overlay/config/cmakehelpers.bzl b/utils/bazel/llvm-project-overlay/config/cmakehelpers.bzl new file mode 100644 index 0000000000000..b60b807da7c48 --- /dev/null +++ b/utils/bazel/llvm-project-overlay/config/cmakehelpers.bzl @@ -0,0 +1,195 @@ +# 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 + +"""Helper functions to resolve CMake templates.""" + +load("@bazel_skylib//lib:selects.bzl", "selects") + +def cmakedefine_sset(define, value): + """Translate `#cmakedefine DEFINE "${DEFINE}"` to `#define DEFINE "VALUE"`. + + Args: + define: The string of a configurable define that may be set to a string + value. + + Returns: + A dict like + `{'#cmakedefine DEFINE "${DEFINE}"': '#define DEFINE "VALUE"'}`. + """ + return { + '#cmakedefine {} "${{{}}}"'.format( + define, + define, + ): '#define {} "{}"'.format(define, value), + } + +def cmakedefine_sunset(define): + """Translate `#cmakedefine DEFINE "${DEFINE}"` to `/* #undef DEFINE */`. + + Args: + define: The string of a configurable define that may be set to a string + value. + + Returns: + A dict like + `{'#cmakedefine DEFINE "${DEFINE}"': "/* #undef DEFINE */"}`. + """ + return { + '#cmakedefine {} "${{{}}}"'.format( + define, + define, + ): "/* #undef {} */".format(define), + } + +def cmakedefine_vset(define): + """Translate `#cmakedefine DEFINE ${DEFINE}` to `#define DEFINE 1`. + + Args: + define: The string of a configurable define that may be set to 1. + + Returns: + A dict like `{"#cmakedefine DEFINE ${DEFINE}": "#define DEFINE 1"}`. + """ + + return { + "#cmakedefine {} ${{{}}}".format( + define, + define, + ): "#define {} 1".format(define), + } + +def cmakedefine_vunset(define): + """Translate `#cmakedefine DEFINE ${DEFINE}` to `/* #undef DEFINE */`. + + Args: + define: The string of a configurable define that may be set to a value. + + Returns: + A dict like `{"#cmakedefine DEFINE ${DEFINE}": "/* #undef DEFINE */"}`. + """ + return { + "#cmakedefine {} ${{{}}}".format( + define, + define, + ): "/* #undef {} */".format(define), + } + +def cmakedefine_set(define): + """Translate `#cmakedefine DEFINE` to `#define DEFINE 1`. + + Args: + define: The string of a configurable define that may be set or unset. + + Returns: + A dict like `{"#cmakedefine DEFINE": "#define DEFINE 1"}`. + """ + return { + "#cmakedefine {}".format( + define, + ): "#define {} 1".format(define), + } + +def cmakedefine_unset(define): + """Translate `#cmakedefine DEFINE` to `/* #undef DEFINE */`. + + Args: + define: The string of a configurable define that may be set or unset. + + Returns: + A dict like `{"#cmakedefine DEFINE": "/* #undef DEFINE */"}`. + """ + return { + "#cmakedefine {}".format( + define, + ): "/* #undef {} */".format(define), + } + +def cmakedefine( + define, + enable = "//conditions:default", + disable = "//conditions:default"): + """Translate `#cmakedefine DEFINE ${DEFINE}` to `#define DEFINE 1` or + `/* #undef DEFINE */`. + + Args: + define: The string of a configurable define that may be unset or set to + a value. + enable: A `Label` or tuple of `Labels` declaring conditions that set + the define to 1. Defaults to `//conditions:default`. + disable: A `Label` or tuple of `Labels` declaring conditions that leave + the define undefined. Defaults to `//conditions:default`. + + Returns: + A `selects.with_or` of the structure: + + selects.with_or({ + enable: { + "#cmakedefine DEFINE ${DEFINE}": "#define DEFINE 1", + }, + disable: { + "#cmakedefine DEFINE ${DEFINE}": "/* #undef DEFINE */", + }, + }) + + Raises an error if `enable` and `disable` are both left at their defaults. + """ + return selects.with_or({ + enable: cmakedefine_vset(define), + disable: cmakedefine_vunset(define), + }) + +def cmakedefine01_on(define): + """Translate `#cmakedefine01 DEFINE` to `#define DEFINE 1`. + + Args: + define: The string of a configurable define that may be 0 or 1. + + Returns: + A dict like `{"#cmakedefine01 DEFINE": "#define DEFINE 1"}`. + """ + return { + "#cmakedefine01 {}".format(define): "#define {} 1".format(define), + } + +def cmakedefine01_off(define): + """Translate `#cmakedefine01 DEFINE` to `#define DEFINE 0`. + + Args: + define: The string of a configurable define that may be 0 or 1. + + Returns: + A dict like `{"#cmakedefine01 DEFINE": "#define DEFINE 0"}`. + """ + return { + "#cmakedefine01 {}".format(define): "#define {} 0".format(define), + } + +def cmakedefine01( + define, + enable = "//conditions:default", + disable = "//conditions:default"): + """Translate `#cmakedefine01 DEFINE` to `#define DEFINE 1` or + `#define DEFINE 0`. + + Args: + define: The string of a configurable define that may be set to 0 or 1. + enable: A `Label` or tuple of `Labels` declaring conditions that set + the define to 1. Defaults to `//conditions:default`. + disable: A `Label` or tuple of `Labels` declaring conditions that set + the define to 0. Defaults to `//conditions:default`. + + Returns: + A `selects.with_or` of the structure: + + selects.with_or({ + enable: {"#cmakedefine01 DEFINE": "#define DEFINE 1"}, + disable: {"#cmakedefine01 DEFINE": "#define DEFINE 0"}, + }) + + Raises an error if `enable` and `disable` are both left at their defaults. + """ + return selects.with_or({ + enable: cmakedefine01_on(define), + disable: cmakedefine01_off(define), + }) diff --git a/utils/bazel/llvm-project-overlay/lld/BUILD.bazel b/utils/bazel/llvm-project-overlay/lld/BUILD.bazel index 94bcf68896615..46ddd48771fb6 100644 --- a/utils/bazel/llvm-project-overlay/lld/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/lld/BUILD.bazel @@ -111,9 +111,13 @@ cc_library( "//llvm:TargetParser", "//llvm:TransformUtils", "//llvm:config", - "@llvm_zlib//:zlib", - "@llvm_zstd//:zstd", - ], + ] + select({ + "//config:LLVM_ENABLE_ZLIB_disabled": [], + "//conditions:default": ["@llvm_zlib//:zlib"], + }) + select({ + "//config:LLVM_ENABLE_ZSTD_disabled": [], + "//conditions:default": ["@llvm_zstd//:zstd"], + }), ) gentbl( diff --git a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel index c4775dffca260..2497a8c2d4eab 100644 --- a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel @@ -493,8 +493,10 @@ cc_library( "//llvm:Support", "//llvm:TargetParser", "//llvm:config", - "@llvm_zlib//:zlib", - ], + ] + select({ + "//config:LLVM_ENABLE_ZLIB_disabled": [], + "//conditions:default": ["@llvm_zlib//:zlib"], + }), ) cc_library( @@ -1416,8 +1418,10 @@ cc_library( "//lldb:Utility", "//llvm:Support", "//llvm:config", - "@llvm_zlib//:zlib", - ], + ] + select({ + "//config:LLVM_ENABLE_ZLIB_disabled": [], + "//conditions:default": ["@llvm_zlib//:zlib"], + }), ) cc_library( diff --git a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel index dfed324a9cb49..5317d01d8988c 100644 --- a/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/llvm/BUILD.bazel @@ -7,7 +7,11 @@ load("@bazel_skylib//rules:expand_template.bzl", "expand_template") load("@rules_python//python:defs.bzl", "py_binary") load("//mlir:tblgen.bzl", "gentbl_cc_library", "gentbl_filegroup", "td_library") load(":binary_alias.bzl", "binary_alias") -load(":config.bzl", "llvm_config_defines") +load( + ":config.bzl", + "CONFIG_H_SUBSTITUTIONS", + "LLVM_CONFIG_H_SUBSTITUTIONS", +) load(":driver.bzl", "generate_driver_selects", "generate_driver_tools_def", "llvm_driver_cc_binary", "select_driver_tools") load(":enum_targets_gen.bzl", "enum_targets_gen") load(":targets.bzl", "llvm_targets") @@ -153,13 +157,6 @@ expand_template( template = "include/llvm/Config/abi-breaking.h.cmake", ) -# To enable diff testing out of tree -exports_files([ - "include/llvm/Config/config.h.cmake", - "include/llvm/Config/llvm-config.h.cmake", - "include/llvm/Config/abi-breaking.h.cmake", -]) - td_library( name = "OptParserTdFiles", srcs = ["include/llvm/Option/OptParser.td"], @@ -171,14 +168,52 @@ llvm_config_target_defines = [ for t in llvm_targets ] +expand_template( + name = "config_h", + out = "include/llvm/Config/config.h", + substitutions = CONFIG_H_SUBSTITUTIONS, + template = "include/llvm/Config/config.h.cmake", +) + +expand_template( + name = "llvm-config_h", + out = "include/llvm/Config/llvm-config.h", + substitutions = LLVM_CONFIG_H_SUBSTITUTIONS, + template = "include/llvm/Config/llvm-config.h.cmake", +) + cc_library( name = "config", hdrs = [ "include/llvm/Config/abi-breaking.h", + "include/llvm/Config/config.h", "include/llvm/Config/llvm-config.h", ], copts = llvm_copts, - defines = llvm_config_defines + llvm_config_target_defines, + defines = select({ + "@platforms//os:windows": [ + "_CRT_SECURE_NO_DEPRECATE", + "_CRT_SECURE_NO_WARNINGS", + "_CRT_NONSTDC_NO_DEPRECATE", + "_CRT_NONSTDC_NO_WARNINGS", + "_SCL_SECURE_NO_DEPRECATE", + "_SCL_SECURE_NO_WARNINGS", + "UNICODE", + "_UNICODE", + ], + "//conditions:default": [ + "_GNU_SOURCE", + ], + }) + [ + # 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", + ], includes = ["include"], textual_hdrs = [ "include/llvm/Config/AsmParsers.def", @@ -316,17 +351,15 @@ cc_library( "include/llvm/Support/*.def", ]), deps = [ - ":config", ":Demangle", - # We unconditionally depend on the custom LLVM zlib wrapper. This will - # be an empty library unless zlib is enabled, in which case it will - # both provide the necessary dependencies and configuration defines. - "@llvm_zlib//:zlib", - # We unconditionally depend on the custom LLVM zstd wrapper. This will - # be an empty library unless zstd is enabled, in which case it will - # both provide the necessary dependencies and configuration defines. - "@llvm_zstd//:zstd", - ], + ":config", + ] + select({ + "//config:LLVM_ENABLE_ZLIB_disabled": [], + "//conditions:default": ["@llvm_zlib//:zlib"], + }) + select({ + "//config:LLVM_ENABLE_ZSTD_disabled": [], + "//conditions:default": ["@llvm_zstd//:zstd"], + }), ) # Note: although FileCheck (the binary) is a test utility, some non-test diff --git a/utils/bazel/llvm-project-overlay/llvm/config.bzl b/utils/bazel/llvm-project-overlay/llvm/config.bzl index 6e703d22e7756..44ad911f4e4d6 100644 --- a/utils/bazel/llvm-project-overlay/llvm/config.bzl +++ b/utils/bazel/llvm-project-overlay/llvm/config.bzl @@ -2,8 +2,9 @@ # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -"""Defines variables that use selects to configure LLVM based on platform.""" +"""Substitutions for use in templates related to the LLVM configuration.""" +load("@bazel_skylib//lib:selects.bzl", "selects") load( "//:vars.bzl", "LLVM_VERSION_MAJOR", @@ -11,109 +12,314 @@ load( "LLVM_VERSION_PATCH", "PACKAGE_VERSION", ) +load( + "//config:cmakehelpers.bzl", + "cmakedefine", + "cmakedefine01", + "cmakedefine01_off", + "cmakedefine01_on", + "cmakedefine_set", + "cmakedefine_sset", + "cmakedefine_sunset", + "cmakedefine_unset", + "cmakedefine_vset", + "cmakedefine_vunset", +) +load("//llvm:targets.bzl", "llvm_targets") -def native_arch_defines(arch, triple): - return [ - 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), - "LLVM_NATIVE_TARGET=LLVMInitialize{}Target".format(arch), - "LLVM_NATIVE_TARGETINFO=LLVMInitialize{}TargetInfo".format(arch), - "LLVM_NATIVE_TARGETMC=LLVMInitialize{}TargetMC".format(arch), - "LLVM_NATIVE_TARGETMCA=LLVMInitialize{}TargetMCA".format(arch), - r'LLVM_HOST_TRIPLE=\"{}\"'.format(triple), - r'LLVM_DEFAULT_TARGET_TRIPLE=\"{}\"'.format(triple), - ] - -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 = posix_defines + [ - "_GNU_SOURCE", - "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 = [ - # Windows system library specific defines. - "_CRT_SECURE_NO_DEPRECATE", - "_CRT_SECURE_NO_WARNINGS", - "_CRT_NONSTDC_NO_DEPRECATE", - "_CRT_NONSTDC_NO_WARNINGS", - "_SCL_SECURE_NO_DEPRECATE", - "_SCL_SECURE_NO_WARNINGS", - "UNICODE", - "_UNICODE", +CONFIG_H_SUBSTITUTIONS = ( + {"${BUG_REPORT_URL}": "https://github.com/llvm/llvm-project/issues/"} | + cmakedefine01( + "ENABLE_BACKTRACES", + disable = "//config:LLVM_ENABLE_BACKTRACES_disabled", + ) | + cmakedefine01( + "ENABLE_CRASH_OVERRIDES", + disable = "//config:LLVM_ENABLE_CRASH_OVERRIDES_disabled", + ) | + cmakedefine01( + "LLVM_ENABLE_CRASH_DUMPS", + enable = "//config:LLVM_ENABLE_CRASH_DUMPS_enabled", + ) | + cmakedefine01( + "ENABLE_DEBUGLOC_COVERAGE_TRACKING", + enable = "//config:LLVM_ENABLE_DEBUGLOC_COVERAGE_TRACKING_coverage", + ) | + cmakedefine01( + "LLVM_WINDOWS_PREFER_FORWARD_SLASH", + enable = ( + "@bazel_tools//tools/cpp:mingw", + "//config:LLVM_WINDOWS_PREFER_FORWARD_SLASH_enabled", + ), + disable = ( + "//config:LLVM_WINDOWS_PREFER_FORWARD_SLASH_disabled", + "//conditions:default", + ), + ) | + cmakedefine("HAVE_BACKTRACE", enable = "//config:posix") | + {"${BACKTRACE_HEADER}": "execinfo.h"} | + cmakedefine_unset("HAVE_CRASHREPORTERCLIENT_H") | + cmakedefine01_off("HAVE_CRASHREPORTER_INFO") | + cmakedefine01_off("HAVE_DECL_ARC4RANDOM") | + cmakedefine01_on("HAVE_DECL_FE_ALL_EXCEPT") | + cmakedefine01_on("HAVE_DECL_FE_INEXACT") | + cmakedefine01_off("HAVE_DECL_STRERROR_S") | + cmakedefine_vset("HAVE_DLOPEN") | + cmakedefine("HAVE_REGISTER_FRAME", enable = "//config:posix") | + cmakedefine("HAVE_DEREGISTER_FRAME", enable = "//config:posix") | + cmakedefine("HAVE_UNW_ADD_DYNAMIC_FDE", enable = "@platforms//os:macos") | + cmakedefine_vunset("HAVE_FFI_CALL") | + cmakedefine_vunset("HAVE_FFI_FFI_H") | + cmakedefine_vunset("HAVE_FFI_H") | + cmakedefine_vset("HAVE_FUTIMENS") | + cmakedefine_vset("HAVE_FUTIMES") | + cmakedefine_vset("HAVE_GETPAGESIZE") | + cmakedefine_vset("HAVE_GETRUSAGE") | + {"#cmakedefine HAVE_ISATTY 1": "#define HAVE_ISATTY 1"} | + cmakedefine_vunset("HAVE_LIBEDIT") | + # TODO: Wire this up Exegesis and remove custom logic. + cmakedefine_vunset("HAVE_LIBPFM") | + cmakedefine_vunset("LIBPFM_HAS_FIELD_CYCLES") | + cmakedefine_vunset("HAVE_LIBPSAPI") | + cmakedefine("HAVE_LIBPTHREAD", enable = "//config:posix") | + cmakedefine("HAVE_PTHREAD_GETNAME_NP", enable = "//config:posix") | + cmakedefine("HAVE_PTHREAD_SETNAME_NP", enable = "//config:posix") | + cmakedefine_vunset("HAVE_PTHREAD_GET_NAME_NP") | # TODO: Likely wrong? + cmakedefine_vunset("HAVE_PTHREAD_SET_NAME_NP") | # TODO: Likely wrong? + cmakedefine("HAVE_MACH_MACH_H", enable = "@platforms//os:macos") | + cmakedefine_vunset("HAVE_MALLCTL") | + cmakedefine("HAVE_MALLINFO", enable = "@platforms//os:linux") | + # TODO(aaronmondal): Make configurable and enable by default. + cmakedefine_vunset("HAVE_MALLINFO2") | + cmakedefine("HAVE_MALLOC_MALLOC_H", enable = "@platforms//os:macos") | + cmakedefine( + "HAVE_MALLOC_ZONE_STATISTICS", + enable = "@platforms//os:macos", + ) | + cmakedefine_vset("HAVE_POSIX_SPAWN") | + cmakedefine_vset("HAVE_PREAD") | + cmakedefine("HAVE_PTHREAD_H", enable = "//config:posix") | + cmakedefine_vset("HAVE_PTHREAD_MUTEX_LOCK") | + cmakedefine_vset("HAVE_PTHREAD_RWLOCK_INIT") | + cmakedefine("HAVE_SBRK", enable = "@platforms//os:linux") | + cmakedefine("HAVE_SETENV", enable = "//config:posix") | + cmakedefine_vset("HAVE_SIGALTSTACK") | + cmakedefine("HAVE_STRERROR_R", enable = "//config:posix") | + cmakedefine_vset("HAVE_SYSCONF") | + cmakedefine_vset("HAVE_SYS_MMAN_H") | + cmakedefine_vunset("HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC") | + cmakedefine( + "HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC", + enable = "@platforms//os:linux", + ) | + cmakedefine("HAVE_UNISTD_H", enable = "//config:posix") | + cmakedefine_vunset("HAVE_VALGRIND_VALGRIND_H") | + cmakedefine_vunset("HAVE__ALLOCA") | + cmakedefine_vunset("HAVE__CHSIZE_S") | + cmakedefine_vset("HAVE__UNWIND_BACKTRACE") | + cmakedefine_vunset("HAVE___ALLOCA") | + cmakedefine_vunset("HAVE___ASHLDI3") | + cmakedefine_vunset("HAVE___ASHRDI3") | + cmakedefine_vunset("HAVE___CHKSTK") | + cmakedefine_vunset("HAVE___CHKSTK_MS") | + cmakedefine_vunset("HAVE___CMPDI2") | + cmakedefine_vunset("HAVE___DIVDI3") | + cmakedefine_vunset("HAVE___FIXDFDI") | + cmakedefine_vunset("HAVE___FIXSFDI") | + cmakedefine_vunset("HAVE___FLOATDIDF") | + cmakedefine_vunset("HAVE___LSHRDI3") | + cmakedefine_vunset("HAVE___MAIN") | + cmakedefine_vunset("HAVE___MODDI3") | + cmakedefine_vunset("HAVE___UDIVDI3") | + cmakedefine_vunset("HAVE___UMODDI3") | + cmakedefine_vunset("HAVE____CHKSTK") | + cmakedefine_vunset("HAVE____CHKSTK_MS") | + cmakedefine_sunset("HOST_LINK_VERSION") | + cmakedefine_sunset("LLVM_TARGET_TRIPLE_ENV") | + cmakedefine01_on("LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO") | + cmakedefine01_on("LLVM_VERSION_PRINTER_SHOW_BUILD_CONFIG") | + cmakedefine_vunset("LLVM_ENABLE_LIBXML2") | + select({ + "@platforms//os:windows": cmakedefine_sset("LTDL_SHLIB_EXT", ".dll"), + "@platforms//os:macos": cmakedefine_sset("LTDL_SHLIB_EXT", ".dylib"), + "//conditions:default": cmakedefine_sset("LTDL_SHLIB_EXT", ".so"), + }) | + select({ + "@platforms//os:windows": cmakedefine_sset("LLVM_PLUGIN_EXT", ".dll"), + "@platforms//os:macos": cmakedefine_sset("LLVM_PLUGIN_EXT", ".dylib"), + "//conditions:default": cmakedefine_sset("LLVM_PLUGIN_EXT", ".so"), + }) | + cmakedefine_sset( + "PACKAGE_BUGREPORT", + "https://github.com/llvm/llvm-project/issues/", + ) | + cmakedefine_sset("PACKAGE_NAME", "LLVM") | + cmakedefine_sset( + "PACKAGE_STRING", + '" PACKAGE_NAME " " LLVM_VERSION_STRING "', + ) | + cmakedefine_sset("PACKAGE_VERSION", '" LLVM_VERSION_STRING "') | + cmakedefine_sunset("PACKAGE_VENDOR") | + select({ + "@platforms//os:windows": cmakedefine_sset("stricmp", "_stricmp"), + "//conditions:default": cmakedefine_vunset("stricmp"), + }) | + select({ + "@platforms//os:windows": cmakedefine_sset("strdup", "_strdup"), + "//conditions:default": cmakedefine_vunset("strdup"), + }) | + cmakedefine01_off("LLVM_GISEL_COV_ENABLED") | + cmakedefine_sunset("LLVM_GISEL_COV_PREFIX") | + cmakedefine01_off("LLVM_SUPPORT_XCODE_SIGNPOSTS") | + select({ + "@platforms//os:macos": { + "#cmakedefine HAVE_PROC_PID_RUSAGE 1": "#define HAVE_PROC_PID_RUSAGE 1", + }, + "//conditions:default": { + "#cmakedefine HAVE_PROC_PID_RUSAGE 1": "/* undef HAVE_PROC_PID_RUSAGE */", + }, + }) | + cmakedefine( + "HAVE_BUILTIN_THREAD_POINTER", + enable = "@platforms//os:linux", + disable = ( + # HAVE_BUILTIN_THREAD_POINTER is true for on Linux outside of ppc64 + # for all recent toolchains. + "//config:powerpc64le-unknown-linux-gnu", + "//conditions:default", + ), + ) | + cmakedefine_vset("HAVE_GETAUXVAL") +) - # LLVM features - r'LTDL_SHLIB_EXT=\".dll\"', - r'LLVM_PLUGIN_EXT=\".dll\"', +# TODO(aaronmondal): Consider reimplementing `@platforms` in a way that +# bidirectionally maps to llvm/TargetParser/Triple.h. +TRIPLES = [ + "aarch64-apple-darwin", + "aarch64-unknown-linux-gnu", + "powerpc64le-unknown-linux-gnu", + "systemz-unknown-linux_gnu", + "x86_64-apple-darwin", + "x86_64-pc-windows", + "x86_64-unknown-linux-gnu", ] -# 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": macos_defines, - "@bazel_tools//src/conditions:freebsd": posix_defines, - "//conditions:default": linux_defines, -}) - -# HAVE_BUILTIN_THREAD_POINTER is true for on Linux (outside of ppc64) for -# all recent toolchains. Add it here by default on Linux as we can't perform a -# configure time check. -builtin_thread_pointer = select({ - "@bazel_tools//src/conditions:linux_ppc64le": [], - "@bazel_tools//src/conditions:linux": ["HAVE_BUILTIN_THREAD_POINTER"], - "//conditions:default": [], -}) - -# TODO: We should split out host vs. target here. -llvm_config_defines = os_defines + builtin_thread_pointer + 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"), -}) + [ - "LLVM_VERSION_MAJOR={}".format(LLVM_VERSION_MAJOR), - "LLVM_VERSION_MINOR={}".format(LLVM_VERSION_MINOR), - "LLVM_VERSION_PATCH={}".format(LLVM_VERSION_PATCH), - r'LLVM_VERSION_STRING=\"{}\"'.format(PACKAGE_VERSION), - # 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", -] +LLVM_CONFIG_H_SUBSTITUTIONS = ( + cmakedefine_unset("LLVM_ENABLE_DUMP") | + # TODO(aaronmondal): Make this independent of the host triple. + select({ + "//config:{}".format(triple): {"${LLVM_DEFAULT_TARGET_TRIPLE}": triple} + for triple in TRIPLES + }) | + cmakedefine01_on("LLVM_ENABLE_THREADS") | + cmakedefine01_on("LLVM_HAS_ATOMICS") | + select({ + "//config:{}".format(triple): cmakedefine_sset( + "LLVM_HOST_TRIPLE", + triple, + ) + for triple in TRIPLES + }) | + select({ + "@platforms//cpu:{}".format(cpu): { + "#cmakedefine LLVM_NATIVE_ARCH ${LLVM_NATIVE_ARCH}": "#define LLVM_NATIVE_ARCH {}".format(arch), + "#cmakedefine LLVM_NATIVE_ASMPARSER LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser": "#define LLVM_NATIVE_ASMPARSER LLVMInitialize{}AsmParser".format(arch), + "#cmakedefine LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter": "#define LLVM_NATIVE_ASMPRINTER LLVMInitialize{}AsmPrinter".format(arch), + "#cmakedefine LLVM_NATIVE_DISASSEMBLER LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler": "#define LLVM_NATIVE_DISASSEMBLER LLVMInitialize{}Disassembler".format(arch), + "#cmakedefine LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target": "#define LLVM_NATIVE_TARGET LLVMInitialize{}Target".format(arch), + "#cmakedefine LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo": "#define LLVM_NATIVE_TARGETINFO LLVMInitialize{}TargetInfo".format(arch), + "#cmakedefine LLVM_NATIVE_TARGETMC LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC": "#define LLVM_NATIVE_TARGETMC LLVMInitialize{}TargetMC".format(arch), + "#cmakedefine LLVM_NATIVE_TARGETMCA LLVMInitialize${LLVM_NATIVE_ARCH}TargetMCA": "#define LLVM_NATIVE_TARGETMCA LLVMInitialize{}TargetMCA".format(arch), + } + for (cpu, arch) in [ + ("x86_64", "X86"), + ("aarch64", "AArch64"), + ("ppc64le", "PowerPC"), + ("s390x", "SystemZ"), + ] + }) | + { + "#cmakedefine01 LLVM_HAS_{}_TARGET".format( + target, + ): "#define LLVM_HAS_{}_TARGET {}".format( + target, + 1 if target in llvm_targets else 0, + ) + for target in [ + "AARCH64", + "AMDGPU", + "ARC", + "ARM", + "AVR", + "BPF", + "CSKY", + "DIRECTX", + "HEXAGON", + "LANAI", + "LOONGARCH", + "M68K", + "MIPS", + "MSP430", + "NVPTX", + "POWERPC", + "RISCV", + "SPARC", + "SPIRV", + "SYSTEMZ", + "VE", + "WEBASSEMBLY", + "X86", + "XCORE", + "XTENSA", + ] + } | + cmakedefine("LLVM_ON_UNIX", enable = "//config:posix") | + cmakedefine01_off("LLVM_USE_INTEL_JITEVENTS") | + cmakedefine01_off("LLVM_USE_OPROFILE") | + cmakedefine01_off("LLVM_USE_PERF") | + { + "${LLVM_VERSION_MAJOR}": LLVM_VERSION_MAJOR, + "${LLVM_VERSION_MINOR}": LLVM_VERSION_MINOR, + "${LLVM_VERSION_PATCH}": LLVM_VERSION_PATCH, + "${PACKAGE_VERSION}": PACKAGE_VERSION, + } | + cmakedefine01_off("LLVM_FORCE_ENABLE_STATS") | + cmakedefine_vunset("LLVM_WITH_Z3") | + cmakedefine_vunset("LLVM_ENABLE_CURL") | + cmakedefine_vunset("LLVM_ENABLE_HTTPLIB") | + cmakedefine01( + "LLVM_ENABLE_ZLIB", + disable = "//config:LLVM_ENABLE_ZLIB_disabled", + ) | + cmakedefine01( + "LLVM_ENABLE_ZSTD", + disable = "//config:LLVM_ENABLE_ZSTD_disabled", + ) | + cmakedefine_unset("LLVM_HAVE_TFLITE") | + cmakedefine("HAVE_SYSEXITS_H", enable = "//config:posix") | + cmakedefine_unset("LLVM_BUILD_LLVM_DYLIB") | + cmakedefine_unset("LLVM_BUILD_SHARED_LIBS") | + cmakedefine_vunset("LLVM_FORCE_USE_OLD_TOOLCHAIN") | + cmakedefine01_on("LLVM_UNREACHABLE_OPTIMIZE") | + cmakedefine01_off("LLVM_ENABLE_DIA_SDK") | + selects.with_or({ + # Note: Technically enabled for dynamic builds on Windows, but that's + # currently disabled globally in Bazel. + ( + "@platforms//os:windows", + "//config:LLVM_ENABLE_PLUGINS_disabled", + ): cmakedefine_unset("LLVM_ENABLE_PLUGINS"), + # TODO(aaronmondal): The CMake build seems to have a slightly different + # intention for "OS390" but that doesn't seem to be a + # valid CMake option. Fix or clarify this in CMake. + ( + "//conditions:default", + "//config:LLVM_ENABLE_PLUGINS_enabled", + ): cmakedefine_set("LLVM_ENABLE_PLUGINS"), + }) | + select({ + "//config:LLVM_HAS_LOGF128_enabled": cmakedefine_set("LLVM_HAS_LOGF128"), + "//conditions:default": cmakedefine_unset("LLVM_HAS_LOGF128"), + }) | + cmakedefine_vunset("LLVM_BUILD_TELEMETRY") +) 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 deleted file mode 100644 index 93695f8e26d27..0000000000000 --- a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/config.h +++ /dev/null @@ -1,314 +0,0 @@ -/*===------- 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 if dlopen() is available on this platform. */ -#define HAVE_DLOPEN 1 - -/* 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 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 `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_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 `sigaltstack' function. */ -#define HAVE_SIGALTSTACK 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_MMAN_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. */ -/* 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 */ - -/* Define if zlib compression is available */ -/* LLVM_ENABLE_ZLIB defined in Bazel */ - -/* Define if overriding target triple is enabled */ -/* #undef LLVM_TARGET_TRIPLE_ENV */ - -/* Whether tools show host and target info when invoked with --version */ -#define LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO 1 - -/* Whether tools show optional build config flags when invoked with --version */ -#define LLVM_VERSION_PRINTER_SHOW_BUILD_CONFIG 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 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 */ - -#define HAVE_GETAUXVAL 1 - -/* 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 deleted file mode 100644 index 5240b8299c109..0000000000000 --- a/utils/bazel/llvm-project-overlay/llvm/include/llvm/Config/llvm-config.h +++ /dev/null @@ -1,127 +0,0 @@ -/*===------- 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 */ -/* #undef LLVM_VERSION_MAJOR */ - -/* Minor version of the LLVM API */ -/* #undef LLVM_VERSION_MINOR */ - -/* Patch version of the LLVM API */ -/* #undef LLVM_VERSION_PATCH */ - -/* LLVM version string */ -/* #undef LLVM_VERSION_STRING */ - -/* 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 we have cpp-httplib and want to use it */ -/* #undef LLVM_ENABLE_HTTPLIB */ - -/* 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/platform/BUILD.bazel b/utils/bazel/llvm-project-overlay/platform/BUILD.bazel new file mode 100644 index 0000000000000..947e811b851d3 --- /dev/null +++ b/utils/bazel/llvm-project-overlay/platform/BUILD.bazel @@ -0,0 +1,64 @@ +# 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 + +"""Targetable platforms for the Bazel build.""" + +# TODO(aaronmondal): Add triples for more useful platforms as per +# `llvm/include/llvm/TargetParser/Triple.h`. + +platform( + name = "aarch64-apple-darwin", + constraint_values = [ + "@platforms//cpu:aarch64", + "@platforms//os:macos", + ], +) + +platform( + name = "aarch64-unknown-linux-gnu", + constraint_values = [ + "@platforms//cpu:aarch64", + "@platforms//os:linux", + ], +) + +platform( + name = "powerpc64le-unknown-linux-gnu", + constraint_values = [ + "@platforms//cpu:ppc64le", + "@platforms//os:linux", + ], +) + +platform( + name = "systemz-unknown-linux_gnu", + constraint_values = [ + "@platforms//cpu:s390x", + "@platforms//os:linux", + ], +) + +platform( + name = "x86_64-pc-windows", + constraint_values = [ + "@platforms//cpu:x86_64", + "@platforms//os:windows", + ], +) + +platform( + name = "x86_64-apple-darwin", + constraint_values = [ + "@platforms//cpu:x86_64", + "@platforms//os:macos", + ], +) + +platform( + name = "x86_64-unknown-linux-gnu", + constraint_values = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], +) diff --git a/utils/bazel/llvm_configs/BUILD.bazel b/utils/bazel/llvm_configs/BUILD.bazel deleted file mode 100644 index 5a4f9970c0636..0000000000000 --- a/utils/bazel/llvm_configs/BUILD.bazel +++ /dev/null @@ -1,30 +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 - -# These diff tests ensure that the current Bazel configuration does not drift -# from the configuration in the .cmake files, since we don't alway use them -# directly (and even if we did we wouldn't necessarily pick up changes there). -# These are literal change-detector tests. We perform diff testing here since -# it isn't really part of building LLVM and we don't want to include the config -# copies in the workspace used by dependent projects. - -load("@bazel_skylib//rules:diff_test.bzl", "diff_test") - -diff_test( - name = "diff_config.h.cmake", - file1 = "@llvm-project//llvm:include/llvm/Config/config.h.cmake", - file2 = "config.h.cmake", -) - -diff_test( - name = "diff_llvm-config.h.cmake", - file1 = "@llvm-project//llvm:include/llvm/Config/llvm-config.h.cmake", - file2 = "llvm-config.h.cmake", -) - -diff_test( - name = "diff_abi-breaking.h.cmake", - file1 = "@llvm-project//llvm:include/llvm/Config/abi-breaking.h.cmake", - file2 = "abi-breaking.h.cmake", -) diff --git a/utils/bazel/llvm_configs/abi-breaking.h.cmake b/utils/bazel/llvm_configs/abi-breaking.h.cmake deleted file mode 100644 index 2d27e02b1d545..0000000000000 --- a/utils/bazel/llvm_configs/abi-breaking.h.cmake +++ /dev/null @@ -1,62 +0,0 @@ -/*===------- llvm/Config/abi-breaking.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 file controls the C++ ABI break introduced in LLVM public header. */ - -#ifndef LLVM_ABI_BREAKING_CHECKS_H -#define LLVM_ABI_BREAKING_CHECKS_H - -/* Define to enable checks that alter the LLVM C++ ABI */ -#cmakedefine01 LLVM_ENABLE_ABI_BREAKING_CHECKS - -/* Define to enable reverse iteration of unordered llvm containers */ -#cmakedefine01 LLVM_ENABLE_REVERSE_ITERATION - -/* Allow selectively disabling link-time mismatch checking so that header-only - ADT content from LLVM can be used without linking libSupport. */ -#if !defined(LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING) || !LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING - -// ABI_BREAKING_CHECKS protection: provides link-time failure when clients build -// mismatch with LLVM -#if defined(_MSC_VER) -// Use pragma with MSVC -#define LLVM_XSTR(s) LLVM_STR(s) -#define LLVM_STR(s) #s -#pragma detect_mismatch("LLVM_ENABLE_ABI_BREAKING_CHECKS", LLVM_XSTR(LLVM_ENABLE_ABI_BREAKING_CHECKS)) -#undef LLVM_XSTR -#undef LLVM_STR -#elif defined(_WIN32) || defined(__CYGWIN__) // Win32 w/o #pragma detect_mismatch -// FIXME: Implement checks without weak. -#elif defined(__cplusplus) -#if !(defined(_AIX) && defined(__GNUC__) && !defined(__clang__)) -#define LLVM_HIDDEN_VISIBILITY __attribute__ ((visibility("hidden"))) -#else -// GCC on AIX does not support visibility attributes. Symbols are not -// exported by default on AIX. -#define LLVM_HIDDEN_VISIBILITY -#endif -namespace llvm { -#if LLVM_ENABLE_ABI_BREAKING_CHECKS -extern int EnableABIBreakingChecks; -LLVM_HIDDEN_VISIBILITY -__attribute__((weak)) int *VerifyEnableABIBreakingChecks = - &EnableABIBreakingChecks; -#else -extern int DisableABIBreakingChecks; -LLVM_HIDDEN_VISIBILITY -__attribute__((weak)) int *VerifyDisableABIBreakingChecks = - &DisableABIBreakingChecks; -#endif -} -#undef LLVM_HIDDEN_VISIBILITY -#endif // _MSC_VER - -#endif // LLVM_DISABLE_ABI_BREAKING_CHECKS_ENFORCING - -#endif diff --git a/utils/bazel/llvm_configs/config.h.cmake b/utils/bazel/llvm_configs/config.h.cmake deleted file mode 100644 index 835201f2a45b0..0000000000000 --- a/utils/bazel/llvm_configs/config.h.cmake +++ /dev/null @@ -1,300 +0,0 @@ -#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 "${BUG_REPORT_URL}" - -/* Define to 1 to enable backtraces, and to 0 otherwise. */ -#cmakedefine01 ENABLE_BACKTRACES - -/* Define to 1 to enable crash overrides, and to 0 otherwise. */ -#cmakedefine01 ENABLE_CRASH_OVERRIDES - -/* Define to 1 to enable crash memory dumps, and to 0 otherwise. */ -#cmakedefine01 LLVM_ENABLE_CRASH_DUMPS - -/* Define to 1 to enable expensive checks for debug location coverage checking, - and to 0 otherwise. */ -#cmakedefine01 ENABLE_DEBUGLOC_COVERAGE_TRACKING - -/* Define to 1 to prefer forward slashes on Windows, and to 0 prefer - backslashes. */ -#cmakedefine01 LLVM_WINDOWS_PREFER_FORWARD_SLASH - -/* Define to 1 if you have the `backtrace' function. */ -#cmakedefine HAVE_BACKTRACE ${HAVE_BACKTRACE} - -#define BACKTRACE_HEADER <${BACKTRACE_HEADER}> - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_CRASHREPORTERCLIENT_H - -/* can use __crashreporter_info__ */ -#cmakedefine01 HAVE_CRASHREPORTER_INFO - -/* Define to 1 if you have the declaration of `arc4random', and to 0 if you - don't. */ -#cmakedefine01 HAVE_DECL_ARC4RANDOM - -/* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you - don't. */ -#cmakedefine01 HAVE_DECL_FE_ALL_EXCEPT - -/* Define to 1 if you have the declaration of `FE_INEXACT', and to 0 if you - don't. */ -#cmakedefine01 HAVE_DECL_FE_INEXACT - -/* Define to 1 if you have the declaration of `strerror_s', and to 0 if you - don't. */ -#cmakedefine01 HAVE_DECL_STRERROR_S - -/* Define if dlopen() is available on this platform. */ -#cmakedefine HAVE_DLOPEN ${HAVE_DLOPEN} - -/* Define to 1 if we can register EH frames on this platform. */ -#cmakedefine HAVE_REGISTER_FRAME ${HAVE_REGISTER_FRAME} - -/* Define to 1 if we can deregister EH frames on this platform. */ -#cmakedefine HAVE_DEREGISTER_FRAME ${HAVE_DEREGISTER_FRAME} - -/* Define if __unw_add_dynamic_fde() is available on this platform. */ -#cmakedefine HAVE_UNW_ADD_DYNAMIC_FDE ${HAVE_UNW_ADD_DYNAMIC_FDE} - -/* Define if libffi is available on this platform. */ -#cmakedefine HAVE_FFI_CALL ${HAVE_FFI_CALL} - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_FFI_FFI_H ${HAVE_FFI_FFI_H} - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_FFI_H ${HAVE_FFI_H} - -/* Define to 1 if you have the `futimens' function. */ -#cmakedefine HAVE_FUTIMENS ${HAVE_FUTIMENS} - -/* Define to 1 if you have the `futimes' function. */ -#cmakedefine HAVE_FUTIMES ${HAVE_FUTIMES} - -/* Define to 1 if you have the `getpagesize' function. */ -#cmakedefine HAVE_GETPAGESIZE ${HAVE_GETPAGESIZE} - -/* Define to 1 if you have the `getrusage' function. */ -#cmakedefine HAVE_GETRUSAGE ${HAVE_GETRUSAGE} - -/* Define to 1 if you have the `isatty' function. */ -#cmakedefine HAVE_ISATTY 1 - -/* Define to 1 if you have the `edit' library (-ledit). */ -#cmakedefine HAVE_LIBEDIT ${HAVE_LIBEDIT} - -/* Define to 1 if you have the `pfm' library (-lpfm). */ -#cmakedefine HAVE_LIBPFM ${HAVE_LIBPFM} - -/* Define to 1 if the `perf_branch_entry' struct has field cycles. */ -#cmakedefine LIBPFM_HAS_FIELD_CYCLES ${LIBPFM_HAS_FIELD_CYCLES} - -/* Define to 1 if you have the `psapi' library (-lpsapi). */ -#cmakedefine HAVE_LIBPSAPI ${HAVE_LIBPSAPI} - -/* Define to 1 if you have the `pthread' library (-lpthread). */ -#cmakedefine HAVE_LIBPTHREAD ${HAVE_LIBPTHREAD} - -/* Define to 1 if you have the `pthread_getname_np' function. */ -#cmakedefine HAVE_PTHREAD_GETNAME_NP ${HAVE_PTHREAD_GETNAME_NP} - -/* Define to 1 if you have the `pthread_setname_np' function. */ -#cmakedefine HAVE_PTHREAD_SETNAME_NP ${HAVE_PTHREAD_SETNAME_NP} - -/* Define to 1 if you have the `pthread_get_name_np' function. */ -#cmakedefine HAVE_PTHREAD_GET_NAME_NP ${HAVE_PTHREAD_GET_NAME_NP} - -/* Define to 1 if you have the `pthread_set_name_np' function. */ -#cmakedefine HAVE_PTHREAD_SET_NAME_NP ${HAVE_PTHREAD_SET_NAME_NP} - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_MACH_MACH_H ${HAVE_MACH_MACH_H} - -/* Define to 1 if you have the `mallctl' function. */ -#cmakedefine HAVE_MALLCTL ${HAVE_MALLCTL} - -/* Define to 1 if you have the `mallinfo' function. */ -#cmakedefine HAVE_MALLINFO ${HAVE_MALLINFO} - -/* Define to 1 if you have the `mallinfo2' function. */ -#cmakedefine HAVE_MALLINFO2 ${HAVE_MALLINFO2} - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_MALLOC_MALLOC_H ${HAVE_MALLOC_MALLOC_H} - -/* Define to 1 if you have the `malloc_zone_statistics' function. */ -#cmakedefine HAVE_MALLOC_ZONE_STATISTICS ${HAVE_MALLOC_ZONE_STATISTICS} - -/* Define to 1 if you have the `posix_spawn' function. */ -#cmakedefine HAVE_POSIX_SPAWN ${HAVE_POSIX_SPAWN} - -/* Define to 1 if you have the `pread' function. */ -#cmakedefine HAVE_PREAD ${HAVE_PREAD} - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_PTHREAD_H ${HAVE_PTHREAD_H} - -/* Have pthread_mutex_lock */ -#cmakedefine HAVE_PTHREAD_MUTEX_LOCK ${HAVE_PTHREAD_MUTEX_LOCK} - -/* Have pthread_rwlock_init */ -#cmakedefine HAVE_PTHREAD_RWLOCK_INIT ${HAVE_PTHREAD_RWLOCK_INIT} - -/* Define to 1 if you have the `sbrk' function. */ -#cmakedefine HAVE_SBRK ${HAVE_SBRK} - -/* Define to 1 if you have the `setenv' function. */ -#cmakedefine HAVE_SETENV ${HAVE_SETENV} - -/* Define to 1 if you have the `sigaltstack' function. */ -#cmakedefine HAVE_SIGALTSTACK ${HAVE_SIGALTSTACK} - -/* Define to 1 if you have the `strerror_r' function. */ -#cmakedefine HAVE_STRERROR_R ${HAVE_STRERROR_R} - -/* Define to 1 if you have the `sysconf' function. */ -#cmakedefine HAVE_SYSCONF ${HAVE_SYSCONF} - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_MMAN_H ${HAVE_SYS_MMAN_H} - -/* Define to 1 if stat struct has st_mtimespec member .*/ -#cmakedefine HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC ${HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC} - -/* Define to 1 if stat struct has st_mtim member. */ -#cmakedefine HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC ${HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC} - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_UNISTD_H ${HAVE_UNISTD_H} - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_VALGRIND_VALGRIND_H ${HAVE_VALGRIND_VALGRIND_H} - -/* Have host's _alloca */ -#cmakedefine HAVE__ALLOCA ${HAVE__ALLOCA} - -/* Define to 1 if you have the `_chsize_s' function. */ -#cmakedefine HAVE__CHSIZE_S ${HAVE__CHSIZE_S} - -/* Define to 1 if you have the `_Unwind_Backtrace' function. */ -#cmakedefine HAVE__UNWIND_BACKTRACE ${HAVE__UNWIND_BACKTRACE} - -/* Have host's __alloca */ -#cmakedefine HAVE___ALLOCA ${HAVE___ALLOCA} - -/* Have host's __ashldi3 */ -#cmakedefine HAVE___ASHLDI3 ${HAVE___ASHLDI3} - -/* Have host's __ashrdi3 */ -#cmakedefine HAVE___ASHRDI3 ${HAVE___ASHRDI3} - -/* Have host's __chkstk */ -#cmakedefine HAVE___CHKSTK ${HAVE___CHKSTK} - -/* Have host's __chkstk_ms */ -#cmakedefine HAVE___CHKSTK_MS ${HAVE___CHKSTK_MS} - -/* Have host's __cmpdi2 */ -#cmakedefine HAVE___CMPDI2 ${HAVE___CMPDI2} - -/* Have host's __divdi3 */ -#cmakedefine HAVE___DIVDI3 ${HAVE___DIVDI3} - -/* Have host's __fixdfdi */ -#cmakedefine HAVE___FIXDFDI ${HAVE___FIXDFDI} - -/* Have host's __fixsfdi */ -#cmakedefine HAVE___FIXSFDI ${HAVE___FIXSFDI} - -/* Have host's __floatdidf */ -#cmakedefine HAVE___FLOATDIDF ${HAVE___FLOATDIDF} - -/* Have host's __lshrdi3 */ -#cmakedefine HAVE___LSHRDI3 ${HAVE___LSHRDI3} - -/* Have host's __main */ -#cmakedefine HAVE___MAIN ${HAVE___MAIN} - -/* Have host's __moddi3 */ -#cmakedefine HAVE___MODDI3 ${HAVE___MODDI3} - -/* Have host's __udivdi3 */ -#cmakedefine HAVE___UDIVDI3 ${HAVE___UDIVDI3} - -/* Have host's __umoddi3 */ -#cmakedefine HAVE___UMODDI3 ${HAVE___UMODDI3} - -/* Have host's ___chkstk */ -#cmakedefine HAVE____CHKSTK ${HAVE____CHKSTK} - -/* Have host's ___chkstk_ms */ -#cmakedefine HAVE____CHKSTK_MS ${HAVE____CHKSTK_MS} - -/* Linker version detected at compile time. */ -#cmakedefine HOST_LINK_VERSION "${HOST_LINK_VERSION}" - -/* Define if overriding target triple is enabled */ -#cmakedefine LLVM_TARGET_TRIPLE_ENV "${LLVM_TARGET_TRIPLE_ENV}" - -/* Whether tools show host and target info when invoked with --version */ -#cmakedefine01 LLVM_VERSION_PRINTER_SHOW_HOST_TARGET_INFO - -/* Whether tools show optional build config flags when invoked with --version */ -#cmakedefine01 LLVM_VERSION_PRINTER_SHOW_BUILD_CONFIG - -/* Define if libxml2 is supported on this platform. */ -#cmakedefine LLVM_ENABLE_LIBXML2 ${LLVM_ENABLE_LIBXML2} - -/* Define to the extension used for shared libraries, say, ".so". */ -#cmakedefine LTDL_SHLIB_EXT "${LTDL_SHLIB_EXT}" - -/* Define to the extension used for plugin libraries, say, ".so". */ -#cmakedefine LLVM_PLUGIN_EXT "${LLVM_PLUGIN_EXT}" - -/* Define to the address where bug reports for this package should be sent. */ -#cmakedefine PACKAGE_BUGREPORT "${PACKAGE_BUGREPORT}" - -/* Define to the full name of this package. */ -#cmakedefine PACKAGE_NAME "${PACKAGE_NAME}" - -/* Define to the full name and version of this package. */ -#cmakedefine PACKAGE_STRING "${PACKAGE_STRING}" - -/* Define to the version of this package. */ -#cmakedefine PACKAGE_VERSION "${PACKAGE_VERSION}" - -/* Define to the vendor of this package. */ -#cmakedefine PACKAGE_VENDOR "${PACKAGE_VENDOR}" - -/* Define to a function implementing stricmp */ -#cmakedefine stricmp ${stricmp} - -/* Define to a function implementing strdup */ -#cmakedefine strdup ${strdup} - -/* Whether GlobalISel rule coverage is being collected */ -#cmakedefine01 LLVM_GISEL_COV_ENABLED - -/* Define to the default GlobalISel coverage file prefix */ -#cmakedefine LLVM_GISEL_COV_PREFIX "${LLVM_GISEL_COV_PREFIX}" - -/* Whether Timers signpost passes in Xcode Instruments */ -#cmakedefine01 LLVM_SUPPORT_XCODE_SIGNPOSTS - -#cmakedefine HAVE_PROC_PID_RUSAGE 1 - -#cmakedefine HAVE_BUILTIN_THREAD_POINTER ${HAVE_BUILTIN_THREAD_POINTER} - -#cmakedefine HAVE_GETAUXVAL ${HAVE_GETAUXVAL} - -#endif diff --git a/utils/bazel/llvm_configs/llvm-config.h.cmake b/utils/bazel/llvm_configs/llvm-config.h.cmake deleted file mode 100644 index 239f9dd3f38db..0000000000000 --- a/utils/bazel/llvm_configs/llvm-config.h.cmake +++ /dev/null @@ -1,207 +0,0 @@ -/*===------- 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 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 */ -#cmakedefine LLVM_ENABLE_DUMP - -/* Target triple LLVM will generate code for by default */ -/* Doesn't use `cmakedefine` because it is allowed to be empty. */ -#define LLVM_DEFAULT_TARGET_TRIPLE "${LLVM_DEFAULT_TARGET_TRIPLE}" - -/* Define if threads enabled */ -#cmakedefine01 LLVM_ENABLE_THREADS - -/* Has gcc/MSVC atomic intrinsics */ -#cmakedefine01 LLVM_HAS_ATOMICS - -/* Host triple LLVM will be executed on */ -#cmakedefine LLVM_HOST_TRIPLE "${LLVM_HOST_TRIPLE}" - -/* LLVM architecture name for the native architecture, if available */ -#cmakedefine LLVM_NATIVE_ARCH ${LLVM_NATIVE_ARCH} - -/* LLVM name for the native AsmParser init function, if available */ -#cmakedefine LLVM_NATIVE_ASMPARSER LLVMInitialize${LLVM_NATIVE_ARCH}AsmParser - -/* LLVM name for the native AsmPrinter init function, if available */ -#cmakedefine LLVM_NATIVE_ASMPRINTER LLVMInitialize${LLVM_NATIVE_ARCH}AsmPrinter - -/* LLVM name for the native Disassembler init function, if available */ -#cmakedefine LLVM_NATIVE_DISASSEMBLER LLVMInitialize${LLVM_NATIVE_ARCH}Disassembler - -/* LLVM name for the native Target init function, if available */ -#cmakedefine LLVM_NATIVE_TARGET LLVMInitialize${LLVM_NATIVE_ARCH}Target - -/* LLVM name for the native TargetInfo init function, if available */ -#cmakedefine LLVM_NATIVE_TARGETINFO LLVMInitialize${LLVM_NATIVE_ARCH}TargetInfo - -/* LLVM name for the native target MC init function, if available */ -#cmakedefine LLVM_NATIVE_TARGETMC LLVMInitialize${LLVM_NATIVE_ARCH}TargetMC - -/* LLVM name for the native target MCA init function, if available */ -#cmakedefine LLVM_NATIVE_TARGETMCA LLVMInitialize${LLVM_NATIVE_ARCH}TargetMCA - -/* Define if the AArch64 target is built in */ -#cmakedefine01 LLVM_HAS_AARCH64_TARGET - -/* Define if the AMDGPU target is built in */ -#cmakedefine01 LLVM_HAS_AMDGPU_TARGET - -/* Define if the ARC target is built in */ -#cmakedefine01 LLVM_HAS_ARC_TARGET - -/* Define if the ARM target is built in */ -#cmakedefine01 LLVM_HAS_ARM_TARGET - -/* Define if the AVR target is built in */ -#cmakedefine01 LLVM_HAS_AVR_TARGET - -/* Define if the BPF target is built in */ -#cmakedefine01 LLVM_HAS_BPF_TARGET - -/* Define if the CSKY target is built in */ -#cmakedefine01 LLVM_HAS_CSKY_TARGET - -/* Define if the DirectX target is built in */ -#cmakedefine01 LLVM_HAS_DIRECTX_TARGET - -/* Define if the Hexagon target is built in */ -#cmakedefine01 LLVM_HAS_HEXAGON_TARGET - -/* Define if the Lanai target is built in */ -#cmakedefine01 LLVM_HAS_LANAI_TARGET - -/* Define if the LoongArch target is built in */ -#cmakedefine01 LLVM_HAS_LOONGARCH_TARGET - -/* Define if the M68k target is built in */ -#cmakedefine01 LLVM_HAS_M68K_TARGET - -/* Define if the Mips target is built in */ -#cmakedefine01 LLVM_HAS_MIPS_TARGET - -/* Define if the MSP430 target is built in */ -#cmakedefine01 LLVM_HAS_MSP430_TARGET - -/* Define if the NVPTX target is built in */ -#cmakedefine01 LLVM_HAS_NVPTX_TARGET - -/* Define if the PowerPC target is built in */ -#cmakedefine01 LLVM_HAS_POWERPC_TARGET - -/* Define if the RISCV target is built in */ -#cmakedefine01 LLVM_HAS_RISCV_TARGET - -/* Define if the Sparc target is built in */ -#cmakedefine01 LLVM_HAS_SPARC_TARGET - -/* Define if the SPIRV target is built in */ -#cmakedefine01 LLVM_HAS_SPIRV_TARGET - -/* Define if the SystemZ target is built in */ -#cmakedefine01 LLVM_HAS_SYSTEMZ_TARGET - -/* Define if the VE target is built in */ -#cmakedefine01 LLVM_HAS_VE_TARGET - -/* Define if the WebAssembly target is built in */ -#cmakedefine01 LLVM_HAS_WEBASSEMBLY_TARGET - -/* Define if the X86 target is built in */ -#cmakedefine01 LLVM_HAS_X86_TARGET - -/* Define if the XCore target is built in */ -#cmakedefine01 LLVM_HAS_XCORE_TARGET - -/* Define if the Xtensa target is built in */ -#cmakedefine01 LLVM_HAS_XTENSA_TARGET - -/* Define if this is Unixish platform */ -#cmakedefine LLVM_ON_UNIX ${LLVM_ON_UNIX} - -/* Define if we have the Intel JIT API runtime support library */ -#cmakedefine01 LLVM_USE_INTEL_JITEVENTS - -/* Define if we have the oprofile JIT-support library */ -#cmakedefine01 LLVM_USE_OPROFILE - -/* Define if we have the perf JIT-support library */ -#cmakedefine01 LLVM_USE_PERF - -/* Major version of the LLVM API */ -#define LLVM_VERSION_MAJOR ${LLVM_VERSION_MAJOR} - -/* Minor version of the LLVM API */ -#define LLVM_VERSION_MINOR ${LLVM_VERSION_MINOR} - -/* Patch version of the LLVM API */ -#define LLVM_VERSION_PATCH ${LLVM_VERSION_PATCH} - -/* LLVM version string */ -#define LLVM_VERSION_STRING "${PACKAGE_VERSION}" - -/* Whether LLVM records statistics for use with GetStatistics(), - * PrintStatistics() or PrintStatisticsJSON() - */ -#cmakedefine01 LLVM_FORCE_ENABLE_STATS - -/* Define if we have z3 and want to build it */ -#cmakedefine LLVM_WITH_Z3 ${LLVM_WITH_Z3} - -/* Define if we have curl and want to use it */ -#cmakedefine LLVM_ENABLE_CURL ${LLVM_ENABLE_CURL} - -/* Define if we have cpp-httplib and want to use it */ -#cmakedefine LLVM_ENABLE_HTTPLIB ${LLVM_ENABLE_HTTPLIB} - -/* Define if zlib compression is available */ -#cmakedefine01 LLVM_ENABLE_ZLIB - -/* Define if zstd compression is available */ -#cmakedefine01 LLVM_ENABLE_ZSTD - -/* Define if LLVM is using tflite */ -#cmakedefine LLVM_HAVE_TFLITE - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYSEXITS_H ${HAVE_SYSEXITS_H} - -/* Define if building libLLVM shared library */ -#cmakedefine LLVM_BUILD_LLVM_DYLIB - -/* Define if building LLVM with BUILD_SHARED_LIBS */ -#cmakedefine LLVM_BUILD_SHARED_LIBS - -/* Define if building LLVM with LLVM_FORCE_USE_OLD_TOOLCHAIN_LIBS */ -#cmakedefine LLVM_FORCE_USE_OLD_TOOLCHAIN ${LLVM_FORCE_USE_OLD_TOOLCHAIN} - -/* Define if llvm_unreachable should be optimized with undefined behavior - * in non assert builds */ -#cmakedefine01 LLVM_UNREACHABLE_OPTIMIZE - -/* Define to 1 if you have the DIA SDK installed, and to 0 if you don't. */ -#cmakedefine01 LLVM_ENABLE_DIA_SDK - -/* Define if plugins enabled */ -#cmakedefine LLVM_ENABLE_PLUGINS - -/* Define if logf128 is available */ -#cmakedefine LLVM_HAS_LOGF128 - -/* Define if building LLVM with LLVM_BUILD_TELEMETRY */ -#cmakedefine LLVM_BUILD_TELEMETRY ${LLVM_BUILD_TELEMETRY} - -#endif diff --git a/utils/bazel/overlay_directories.py b/utils/bazel/overlay_directories.py index 526a78e978e5d..53933ce54bcfa 100755 --- a/utils/bazel/overlay_directories.py +++ b/utils/bazel/overlay_directories.py @@ -86,12 +86,15 @@ def main(args): os.path.join(args.overlay, relpath), os.path.join(args.target, relpath) ) - for src_entry in os.listdir(os.path.join(args.src, rel_root)): - if src_entry not in dirs: - relpath = os.path.join(rel_root, src_entry) - _symlink_abs( - os.path.join(args.src, relpath), os.path.join(args.target, relpath) - ) + src_path = os.path.join(args.src, rel_root) + if os.path.isdir(src_path): + for src_entry in os.listdir(src_path): + if src_entry not in dirs: + relpath = os.path.join(rel_root, src_entry) + _symlink_abs( + os.path.join(args.src, relpath), + os.path.join(args.target, relpath), + ) if __name__ == "__main__": diff --git a/utils/bazel/third_party_build/zlib-ng.BUILD b/utils/bazel/third_party_build/zlib-ng.BUILD index 055261acb0f69..bbf37127634e2 100644 --- a/utils/bazel/third_party_build/zlib-ng.BUILD +++ b/utils/bazel/third_party_build/zlib-ng.BUILD @@ -10,16 +10,6 @@ package( licenses = ["notice"], ) -bool_flag( - name = "llvm_enable_zlib", - build_setting_default = True, -) - -config_setting( - name = "llvm_zlib_enabled", - flag_values = {":llvm_enable_zlib": "true"}, -) - genrule( # The input template is identical to the CMake output. name = "zconf_gen", @@ -30,61 +20,55 @@ genrule( cc_library( name = "zlib", - srcs = select({ - ":llvm_zlib_enabled": [ - "adler32.c", - "adler32_p.h", - "chunkset.c", - "chunkset_tpl.h", - "compare258.c", - "compress.c", - "crc32.c", - "crc32_comb.c", - "crc32_comb_tbl.h", - "crc32_p.h", - "crc32_tbl.h", - "deflate.c", - "deflate.h", - "deflate_fast.c", - "deflate_medium.c", - "deflate_p.h", - "deflate_quick.c", - "deflate_slow.c", - "fallback_builtins.h", - "functable.c", - "functable.h", - "infback.c", - "inffast.c", - "inffast.h", - "inffixed_tbl.h", - "inflate.c", - "inflate.h", - "inflate_p.h", - "inftrees.c", - "inftrees.h", - "insert_string.c", - "insert_string_tpl.h", - "match_tpl.h", - "trees.c", - "trees.h", - "trees_emit.h", - "trees_tbl.h", - "uncompr.c", - "zbuild.h", - "zendian.h", - "zutil.c", - "zutil.h", - "zutil_p.h", - ], - "//conditions:default": [], - }), - hdrs = select({ - ":llvm_zlib_enabled": [ - "zlib.h", - ":zconf_gen", - ], - "//conditions:default": [], - }), + srcs = [ + "adler32.c", + "adler32_p.h", + "chunkset.c", + "chunkset_tpl.h", + "compare258.c", + "compress.c", + "crc32.c", + "crc32_comb.c", + "crc32_comb_tbl.h", + "crc32_p.h", + "crc32_tbl.h", + "deflate.c", + "deflate.h", + "deflate_fast.c", + "deflate_medium.c", + "deflate_p.h", + "deflate_quick.c", + "deflate_slow.c", + "fallback_builtins.h", + "functable.c", + "functable.h", + "infback.c", + "inffast.c", + "inffast.h", + "inffixed_tbl.h", + "inflate.c", + "inflate.h", + "inflate_p.h", + "inftrees.c", + "inftrees.h", + "insert_string.c", + "insert_string_tpl.h", + "match_tpl.h", + "trees.c", + "trees.h", + "trees_emit.h", + "trees_tbl.h", + "uncompr.c", + "zbuild.h", + "zendian.h", + "zutil.c", + "zutil.h", + "zutil_p.h", + ], + hdrs = [ + "zlib.h", + ":zconf_gen", + ], copts = [ "-std=c11", "-DZLIB_COMPAT", @@ -95,12 +79,6 @@ cc_library( # here to improve performance. Native instructions aren't enabled in # the default config for reproducibility. ], - defines = select({ - ":llvm_zlib_enabled": [ - "LLVM_ENABLE_ZLIB=1", - ], - "//conditions:default": [], - }), # Clang includes zlib with angled instead of quoted includes, so we need # strip_include_prefix here. strip_include_prefix = ".", diff --git a/utils/bazel/third_party_build/zstd.BUILD b/utils/bazel/third_party_build/zstd.BUILD index 7d022d4226de1..4f760272c26a5 100644 --- a/utils/bazel/third_party_build/zstd.BUILD +++ b/utils/bazel/third_party_build/zstd.BUILD @@ -9,46 +9,26 @@ package( licenses = ["notice"], ) -bool_flag( - name = "llvm_enable_zstd", - build_setting_default = True, -) - -config_setting( - name = "llvm_zstd_enabled", - flag_values = {":llvm_enable_zstd": "true"}, -) - cc_library( name = "zstd", - srcs = select({ - ":llvm_zstd_enabled": glob([ - "lib/common/*.c", - "lib/common/*.h", - "lib/compress/*.c", - "lib/compress/*.h", - "lib/decompress/*.c", - "lib/decompress/*.h", - "lib/decompress/*.S", - "lib/dictBuilder/*.c", - "lib/dictBuilder/*.h", - ]), - "//conditions:default": [], - }), - hdrs = select({ - ":llvm_zstd_enabled": [ - "lib/zdict.h", - "lib/zstd.h", - "lib/zstd_errors.h", - ], - "//conditions:default": [], - }), - defines = select({ - ":llvm_zstd_enabled": [ - "LLVM_ENABLE_ZSTD=1", - "ZSTD_MULTITHREAD", - ], - "//conditions:default": [], - }), + srcs = glob([ + "lib/common/*.c", + "lib/common/*.h", + "lib/compress/*.c", + "lib/compress/*.h", + "lib/decompress/*.c", + "lib/decompress/*.h", + "lib/decompress/*.S", + "lib/dictBuilder/*.c", + "lib/dictBuilder/*.h", + ]), + hdrs = [ + "lib/zdict.h", + "lib/zstd.h", + "lib/zstd_errors.h", + ], + defines = [ + "ZSTD_MULTITHREAD", + ], strip_include_prefix = "lib", )