Skip to content
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

[bazel] Add llvm_zlib to system include path #121374

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

anguslees
Copy link
Contributor

LLVM codebase expects to find zlib using (angle brackets) <zlib.h>.
This means llvm_zlib needs to be exposed on the system include path
(-isystem not -iquote). Tell bazel to do that.

LLVM codebase expects to find zlib using (angle brackets) `<zlib.h>`.
This means llvm_zlib needs to be exposed on the system include path
(`-isystem` not `-iquote`).  Tell bazel to do that.
@llvmbot llvmbot added the bazel "Peripheral" support tier build system: utils/bazel label Dec 31, 2024
@anguslees
Copy link
Contributor Author

Reviewers: I don't have merge permissions - so please mash the merge button yourself when you feel appropriate.

@rupprecht rupprecht requested a review from aaronmondal January 2, 2025 17:05
includes = select({
":llvm_zlib_enabled": ["."],
"//conditions:default": [],
}),
# Clang includes zlib with angled instead of quoted includes, so we need
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment suggests angled bracket includes should already be working, so I'm not sure why an additional change is needed. Looks like @aaronmondal set this up a long time ago; do you know what's going on here?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm IIIRC entire target should only be instantiated if "llvm_zlib_enabled" is set. Maybe some downstream target is missing an explicit dep on zlib? The strip_include_prefix should already be doing the include path shifting for the angled include. But this code is old and Bazel changed a bunch of internals around rule_cc so that might also be related here.

For reference, this was originally upstreamed from here: https://github.com/eomii/bazel-eomii-registry/blob/main/modules/llvm-project-overlay/17-init-bcr.3/patches/llvm_use_zlib-ng.patch

I have a newer version here which I originally wrote against llvm which works without custom includes or the strip prefix here: https://github.com/bazelbuild/bazel-central-registry/pull/1539/files. BCR CI is too slow moving to fix this for windows, but I can probably bump it in llvm and fix the windows support here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bazel "Peripheral" support tier build system: utils/bazel
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants