rust: Add cflag checks against -xc++ and -std.

If -x c++ is passed through a modules cflags, it will be overridden by a
-x c and -std flag added by the build system if the extension is not
.hpp/.hh and cpp_std is not set. This leads to confusing behavior.

Instead, add a helpful error message to guide developers towards the
correct way to specify when a header is  a C++ header and which std
version should be used.

Bug: 171011490
Test: m nothing
Change-Id: I7e7cba504798d47ce1c753ba8699d7475a95095b
This commit is contained in:
Ivan Lozano
2020-10-16 10:49:08 -04:00
parent faa866c5f0
commit 0a2a115457
2 changed files with 38 additions and 0 deletions

View File

@@ -134,3 +134,29 @@ func TestRustBindgenStdVersions(t *testing.T) {
t.Errorf("cpp_std value not passed in to rust_bindgen as a clang flag")
}
}
func TestBindgenDisallowedFlags(t *testing.T) {
// Make sure passing '-x c++' to cflags generates an error
testRustError(t, "cflags: -x c\\+\\+ should not be specified in cflags.*", `
rust_bindgen {
name: "libbad_flag",
wrapper_src: "src/any.h",
crate_name: "bindgen",
stem: "libbindgen",
source_stem: "bindings",
cflags: ["-x c++"]
}
`)
// Make sure passing '-std=' to cflags generates an error
testRustError(t, "cflags: -std should not be specified in cflags.*", `
rust_bindgen {
name: "libbad_flag",
wrapper_src: "src/any.h",
crate_name: "bindgen",
stem: "libbindgen",
source_stem: "bindings",
cflags: ["-std=foo"]
}
`)
}