Skip to content

[bazel] Port #149198 #150352

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 24, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 31 additions & 2 deletions utils/bazel/llvm_configs/abi-breaking.h.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,41 @@
#ifndef LLVM_ABI_BREAKING_CHECKS_H
#define LLVM_ABI_BREAKING_CHECKS_H

// llvm-config.h is required for LLVM_ENABLE_LLVM_EXPORT_ANNOTATIONS
#include "llvm/Config/llvm-config.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

#if !defined(__has_attribute)
#define __has_attribute(attribute) 0
#endif

// Properly annotate EnableABIBreakingChecks or DisableABIBreakingChecks for
// export from shared library.
// TODO(https://github.com/llvm/llvm-project/issues/145406): eliminate need for
// two preprocessor definitions to gate LLVM_ABI macro definitions.
#if defined(LLVM_BUILD_STATIC) || !defined(LLVM_ENABLE_LLVM_EXPORT_ANNOTATIONS)
#define ABI_BREAKING_EXPORT_ABI
#else
#if defined(_WIN32)
#if defined(LLVM_EXPORTS)
#define ABI_BREAKING_EXPORT_ABI __declspec(dllexport)
#else
#define ABI_BREAKING_EXPORT_ABI __declspec(dllimport)
#endif
#else
#if __has_attribute(visibility)
#define ABI_BREAKING_EXPORT_ABI __attribute__((__visibility__("default")))
#else
#define ABI_BREAKING_EXPORT_ABI
#endif
#endif
#endif

/* 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
Expand All @@ -43,12 +72,12 @@
#endif
namespace llvm {
#if LLVM_ENABLE_ABI_BREAKING_CHECKS
extern int EnableABIBreakingChecks;
ABI_BREAKING_EXPORT_ABI extern int EnableABIBreakingChecks;
LLVM_HIDDEN_VISIBILITY
__attribute__((weak)) int *VerifyEnableABIBreakingChecks =
&EnableABIBreakingChecks;
#else
extern int DisableABIBreakingChecks;
ABI_BREAKING_EXPORT_ABI extern int DisableABIBreakingChecks;
LLVM_HIDDEN_VISIBILITY
__attribute__((weak)) int *VerifyDisableABIBreakingChecks =
&DisableABIBreakingChecks;
Expand Down
Loading