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

set CC and CXX and their flags in meson #1098

Merged
merged 19 commits into from
Dec 11, 2023
Merged

Conversation

xytan0056
Copy link
Contributor

@xytan0056 xytan0056 commented Sep 25, 2023

  • The PR sets CC and CXX in meson to the ones configured in bazel, instead of system's.
  • It also tries to merge and set CFLAGS, CXXFLAGS, LDFLAGS with implicit flags from bazel
  • refactoring split_arguments helper function to be more readable and able to process arguments with quotes

Fixes #1073

Comment on lines 48 to 47
linkopts = select({
"@openssl//:msvc_compiler": [
"ws2_32.lib",
],
"@platforms//os:linux": ["-lstdc++"],
# "@platforms//os:macos": ["-mlinker-version=305"],
"//conditions:default": [],
}),
Copy link
Collaborator

Choose a reason for hiding this comment

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

I suspect the reason you're having to add these is because CXX is actually passing the c compiler because bazel by default passes -x c++ explicitly.

Copy link
Contributor Author

@xytan0056 xytan0056 Sep 29, 2023

Choose a reason for hiding this comment

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

yes,
if we don't set CXX/CC, we get undefined symbol: fcntl64 with zig cc in our repo. However, setting them to bazel configured compiler, /usr/bin/gcc for both in CI here, we will need to pass in c++ library

"@openssl//:msvc_compiler": [
"ws2_32.lib",
],
"@platforms//os:linux": ["-lstdc++"],
Copy link
Collaborator

Choose a reason for hiding this comment

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

what if you're using libc++ via clang? this arg will break a libc++ build with clang.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

by setting CXX and CC both compilers become /usr/bin/gcc, which is then used to compile cpp files in CI.
during linking with cpp file, it hits

undefined reference to `operator new

because of missing C++ support runtime library

Copy link
Contributor Author

Choose a reason for hiding this comment

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

added additional logic to not use lstdc++

@xytan0056 xytan0056 changed the title set CFLAGS and CXXFLAGS in meson set CC and CXX and their flags in meson Oct 13, 2023
@xytan0056 xytan0056 marked this pull request as ready for review October 13, 2023 16:47
Copy link
Contributor

@linzhp linzhp left a comment

Choose a reason for hiding this comment

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

@jsharpe Can you take another look?

@jsharpe jsharpe requested a review from jheaff1 October 14, 2023 15:15
@@ -201,3 +233,11 @@ def meson_with_requirements(name, requirements, **kwargs):
toolchain = full_label("built_meson_toolchain_for_{}".format(name)),
**kwargs
)

# TODO: converge with cmake_script.bzl
Copy link
Collaborator

Choose a reason for hiding this comment

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

Is this TODO to be resolved as part of this PR?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

just did another experiment, we can just use the same with

def _absolutize(workspace_name, text, force = False):
if text.strip(" ").startswith("C:") or text.strip(" ").startswith("c:"):
return text
return absolutize_path_in_str(workspace_name, "$EXT_BUILD_ROOT/", text, force)

updated

@jsharpe jsharpe requested a review from jheaff1 November 10, 2023 10:28
xytan0056 and others added 17 commits November 13, 2023 01:20
Update meson.bzl

Update BUILD.mesa.bazel

Update BUILD.mesa.bazel

Update BUILD.mesa.bazel

Update BUILD.bazel

Update BUILD.bazel

Update meson.bzl

Update meson.bzl

Update meson.bzl

Update meson.bzl

Update helpers.bzl

Update helpers.bzl

Update helpers.bzl

Update helpers.bzl

Update helpers.bzl

Update helpers.bzl

Update helpers.bzl

Update meson.bzl

Update helpers.bzl

Update helpers.bzl

lint

comment

Update meson.bzl

Update meson.bzl

Update meson.bzl

Update meson.bzl

debug

Update meson.bzl

Update meson.bzl

Update CROSSTOOL

Update CROSSTOOL
Update helpers.bzl

Update helpers.bzl

Update meson.bzl

debug
Update BUILD.mesa.bazel

Update BUILD.mesa.bazel

Update meson.bzl

Update BUILD.mesa.bazel

Update BUILD.mesa.bazel

Update BUILD.mesa.bazel

Update BUILD.mesa.bazel

m
this should work
@xytan0056
Copy link
Contributor Author

@jsharpe another look?

@jsharpe jsharpe requested a review from jheaff1 December 6, 2023 00:04
@xytan0056
Copy link
Contributor Author

@jsharpe

@jsharpe jsharpe merged commit 51152aa into bazelbuild:main Dec 11, 2023
2 checks passed
@xytan0056 xytan0056 deleted the patch-1 branch December 12, 2023 17:48
fmeum pushed a commit to bazel-contrib/toolchains_llvm that referenced this pull request Jul 4, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| rules_foreign_cc | bazel_dep | minor | `0.10.1` -> `0.11.1` |
| [rules_foreign_cc](https://togithub.com/bazelbuild/rules_foreign_cc) |
http_archive | patch | `0.11.0` -> `0.11.1` |

---

### Release Notes

<details>
<summary>bazelbuild/rules_foreign_cc (rules_foreign_cc)</summary>

###
[`v0.11.1`](https://togithub.com/bazelbuild/rules_foreign_cc/releases/tag/0.11.1)

[Compare
Source](https://togithub.com/bazelbuild/rules_foreign_cc/compare/0.11.0...0.11.1)

#### Using Bzlmod with Bazel 6

1.  Enable with `common --enable_bzlmod` in `.bazelrc`.
2.  Add to your `MODULE.bazel` file:

```starlark
bazel_dep(name = "rules_foreign_cc", version = "0.11.1")
```

#### Using WORKSPACE

Paste this snippet into your  file:

```starlark
load("@&#8203;bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
    name = "rules_foreign_cc",
    sha256 = "4b33d62cf109bcccf286b30ed7121129cc34cf4f4ed9d8a11f38d9108f40ba74",
    strip_prefix = "rules_foreign_cc-0.11.1",
    url = "https://github.com/bazelbuild/rules_foreign_cc/releases/download/0.11.1/rules_foreign_cc-0.11.1.tar.gz",
)

load("@&#8203;rules_foreign_cc//foreign_cc:repositories.bzl", "rules_foreign_cc_dependencies")

### This sets up some common toolchains for building targets. For more details, please see
### https://bazelbuild.github.io/rules_foreign_cc/0.11.1/flatten.html#rules_foreign_cc_dependencies
rules_foreign_cc_dependencies()
```

**Full Changelog**:
bazelbuild/rules_foreign_cc@0.10.1...0.11.1

#### What's Changed

- Add missing sha256 for meson_src 1.1.1 by
[@&#8203;lalten](https://togithub.com/lalten) in
[bazelbuild/rules_foreign_cc#1111
- Set an empty tools_data attribute for boost by
[@&#8203;attilaolah](https://togithub.com/attilaolah) in
[bazelbuild/rules_foreign_cc#1112
- Advertise CcInfo provider by
[@&#8203;calebzulawski](https://togithub.com/calebzulawski) in
[bazelbuild/rules_foreign_cc#1118
- Allow file targets in native_tool_toolchain() by
[@&#8203;sitaktif](https://togithub.com/sitaktif) in
[bazelbuild/rules_foreign_cc#1117
- set CC and CXX and their flags in meson by
[@&#8203;xytan0056](https://togithub.com/xytan0056) in
[bazelbuild/rules_foreign_cc#1098
- Turn off bzlmod in CI for now by
[@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1142
- Fix `//openssl/...` by calling `openssl_setup()` by
[@&#8203;bcsgh](https://togithub.com/bcsgh) in
[bazelbuild/rules_foreign_cc#1137
- Sort tests under examples/third_party and add zlib to the list. by
[@&#8203;bcsgh](https://togithub.com/bcsgh) in
[bazelbuild/rules_foreign_cc#1136
- Use gazelle to generate bzl_library targets by
[@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1127
- Use platform specific configs in bazelrc to reduce scope of settings
by [@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1144
- Update to ubuntu 20.04 on RBE by
[@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1145
- Remove explicit mention of bazel 4.x support by
[@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1146
- Add mirrors to external repositories by
[@&#8203;mishazharov](https://togithub.com/mishazharov) in
[bazelbuild/rules_foreign_cc#1153
- Build msvc cmake with prebuilt cmake by
[@&#8203;matt-sm](https://togithub.com/matt-sm) in
[bazelbuild/rules_foreign_cc#1148
- Simplify the toolchain registration for bzlmod by
[@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1105
- Update CMake versions by
[@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1159
- Fix tool path for nmake by
[@&#8203;jsun-splunk](https://togithub.com/jsun-splunk) in
[bazelbuild/rules_foreign_cc#1165
- chore(deps): Bump rules_apple. Fixes
[#&#8203;1156](https://togithub.com/bazelbuild/rules_foreign_cc/issues/1156)
by [@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1166
- Add make 4.4.1 by [@&#8203;novas0x2a](https://togithub.com/novas0x2a)
in
[bazelbuild/rules_foreign_cc#1167
- Increase resiliency of `runnable_binary` by
[@&#8203;mishazharov](https://togithub.com/mishazharov) in
[bazelbuild/rules_foreign_cc#1134
- Fix windows examples CI by upgrading TLS trust store by
[@&#8203;mishazharov](https://togithub.com/mishazharov) in
[bazelbuild/rules_foreign_cc#1171
- Fixes the CI failure at Bazel@HEAD by
[@&#8203;sgowroji](https://togithub.com/sgowroji) in
[bazelbuild/rules_foreign_cc#1173
- Add j2objc fragment to rules by
[@&#8203;sgowroji](https://togithub.com/sgowroji) in
[bazelbuild/rules_foreign_cc#1175
- Cater for different drive letters when normalizing path by
[@&#8203;matt-sm](https://togithub.com/matt-sm) in
[bazelbuild/rules_foreign_cc#1169
- Fix
[#&#8203;1161](https://togithub.com/bazelbuild/rules_foreign_cc/issues/1161):
set the `CMAKE` environment variables for prebuilt toolchains. by
[@&#8203;thb-sb](https://togithub.com/thb-sb) in
[bazelbuild/rules_foreign_cc#1163
- Add aarch64 to prebuild library constraints for macos by
[@&#8203;dmeijboom](https://togithub.com/dmeijboom) in
[bazelbuild/rules_foreign_cc#1176
- Use a sed delimiter that is unlikely to appear in the input by
[@&#8203;mkauf](https://togithub.com/mkauf) in
[bazelbuild/rules_foreign_cc#1184
- Update rules_apple by
[@&#8203;sgowroji](https://togithub.com/sgowroji) in
[bazelbuild/rules_foreign_cc#1190
- Fix - Copy Dir ignores hidden files on macOS by
[@&#8203;LaurenceTews](https://togithub.com/LaurenceTews) in
[bazelbuild/rules_foreign_cc#1188
- fix(docs): Port docs generation to bzlmod to fix user facing doc
generation by [@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1193
- Revert "fix(docs): Port docs generation to bzlmod to fix user facing
doc generation" by [@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1194
- chore(deps): Add ninja 1.12.0 and latest versions of cmake by
[@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1192
- adjust relative msvc paths by
[@&#8203;matt-sm](https://togithub.com/matt-sm) in
[bazelbuild/rules_foreign_cc#1180
- Make pkgconfig Hermetic by
[@&#8203;dstufft](https://togithub.com/dstufft) in
[bazelbuild/rules_foreign_cc#1069
- Exclude filenames with spaces from cmake toolchains by
[@&#8203;illicitonion](https://togithub.com/illicitonion) in
[bazelbuild/rules_foreign_cc#1199
- fix: change cygpath to mixed mode by
[@&#8203;jsun-splunk](https://togithub.com/jsun-splunk) in
[bazelbuild/rules_foreign_cc#1204
- fix: path expansion on windows by
[@&#8203;jsun-splunk](https://togithub.com/jsun-splunk) in
[bazelbuild/rules_foreign_cc#1207
- Revert inadvertent direct commit to main by
[@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1213
- Update framework.bzl to account for externalIncludes by
[@&#8203;layus](https://togithub.com/layus) in
[bazelbuild/rules_foreign_cc#1215
- chore(deps): cmake/ninja: add new versions by
[@&#8203;novas0x2a](https://togithub.com/novas0x2a) in
[bazelbuild/rules_foreign_cc#1212
- Revert "cmake: use variable expansion on generator args" by
[@&#8203;jsharpe](https://togithub.com/jsharpe) in
[bazelbuild/rules_foreign_cc#1219
- Add in custom glib patch by
[@&#8203;andrewkatson](https://togithub.com/andrewkatson) in
[bazelbuild/rules_foreign_cc#1211

#### New Contributors

- [@&#8203;lalten](https://togithub.com/lalten) made their first
contribution in
[bazelbuild/rules_foreign_cc#1111
- [@&#8203;sitaktif](https://togithub.com/sitaktif) made their first
contribution in
[bazelbuild/rules_foreign_cc#1117
- [@&#8203;mishazharov](https://togithub.com/mishazharov) made their
first contribution in
[bazelbuild/rules_foreign_cc#1153
- [@&#8203;matt-sm](https://togithub.com/matt-sm) made their first
contribution in
[bazelbuild/rules_foreign_cc#1148
- [@&#8203;jsun-splunk](https://togithub.com/jsun-splunk) made their
first contribution in
[bazelbuild/rules_foreign_cc#1165
- [@&#8203;sgowroji](https://togithub.com/sgowroji) made their first
contribution in
[bazelbuild/rules_foreign_cc#1173
- [@&#8203;thb-sb](https://togithub.com/thb-sb) made their first
contribution in
[bazelbuild/rules_foreign_cc#1163
- [@&#8203;dmeijboom](https://togithub.com/dmeijboom) made their first
contribution in
[bazelbuild/rules_foreign_cc#1176
- [@&#8203;mkauf](https://togithub.com/mkauf) made their first
contribution in
[bazelbuild/rules_foreign_cc#1184
- [@&#8203;LaurenceTews](https://togithub.com/LaurenceTews) made their
first contribution in
[bazelbuild/rules_foreign_cc#1188
- [@&#8203;layus](https://togithub.com/layus) made their first
contribution in
[bazelbuild/rules_foreign_cc#1215
- [@&#8203;andrewkatson](https://togithub.com/andrewkatson) made their
first contribution in
[bazelbuild/rules_foreign_cc#1211

**Full Changelog**:
bazelbuild/rules_foreign_cc@0.10.1...0.11.1

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/bazel-contrib/toolchains_llvm).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjEuOSIsInVwZGF0ZWRJblZlciI6IjM3LjQyMS45IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Meson doesn't pick the correct compiler
4 participants