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

Encoded CFLAGS for supporting spaces #847

Open
MarijnS95 opened this issue Aug 3, 2023 · 4 comments
Open

Encoded CFLAGS for supporting spaces #847

MarijnS95 opened this issue Aug 3, 2023 · 4 comments

Comments

@MarijnS95
Copy link

According to https://github.com/rust-lang/cc-rs/#external-configuration-via-environment-variables spaces nor escapes for spaces are not supported in e.g. C(XX)FLAGS. In xbuild we use CFLAGS to set a --sysroot path, and this can occasionally contain spaces on Windows machines (because the toolchain is unpacked to a user folder, and users like to have Firstname Surname as username and profile directory).

A likable solution is new CARGO_ENCODED_RUSTFLAGS-like variables, where spaces within individual args are supported by requiring the user to replace space delimiters in between separate arguments with the \x1f ASCII Unit Separator: https://doc.rust-lang.org/cargo/reference/environment-variables.html, to allow more mechanical piecing-together of these variables without messing around with nested quotes or backslash-escapes.

Referencing rust-mobile/xbuild#124, where this is one of the deciding factors to build our Android compiler support differently.

@joshtriplett
Copy link
Member

While that might be possible to address in cc-rs, it still seems likely to break in other build systems, such as invocations of make, which don't have a solution to this problem.

@MarijnS95
Copy link
Author

@joshtriplett does cc forward to other build systems or only expand these flags into argv before invoking the compiler (which should be possible and support spaces by splitting on the separator char)? Or is this to maintain feature parity with other build systems outside of cc-rs that also process CFLAGS?

@joshtriplett
Copy link
Member

I'm talking about the latter: cc-rs doesn't seem like the right place to unilaterally propagate a new standard for passing CFLAGS that no other build system will understand.

@thomcc
Copy link
Member

thomcc commented Aug 10, 2023

There admittedly are plenty of people just using cc so it's not entirely out of the question. I have mixed feelings about it though, for sure.

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

No branches or pull requests

3 participants