Fix web-sys build on some Windows builds

The official pathname separator on Windows is `\` instead of `/`, but
we've been unconditionally using `/`. This typically works on Windows
because Cargo's default `OUT_DIR` listing is a normal `C:\...` path
which works with either `/` or `\`. If, however, a user sets
`CARGO_TARGET_DIR` to a UNC-style path like `\\?\C:\...` then `/` is
*not* the same as `\`, but rather `/` is interpreted as part of the file
name (to allow file names with `/` in the name).

Let's bypass all this and just use a build script output env var.

Closes #943
This commit is contained in:
Alex Crichton 2018-10-08 10:15:51 -07:00
parent e3e5c0f57d
commit 18deb5e848
2 changed files with 2 additions and 1 deletions

View File

@ -108,6 +108,7 @@ fn try_main() -> Result<(), failure::Error> {
let out_dir = env::var("OUT_DIR").context("reading OUT_DIR environment variable")?;
let out_file_path = path::Path::new(&out_dir).join("bindings.rs");
fs::write(&out_file_path, bindings).context("writing bindings to output file")?;
println!("cargo:rustc-env=BINDINGS={}", out_file_path.display());
// run rustfmt on the generated file - really handy for debugging
println!("cargo:rerun-if-env-changed=WEBIDL_RUSTFMT_BINDINGS");

View File

@ -27,4 +27,4 @@ pub fn window() -> Option<Window> {
js_sys::global().dyn_into::<Window>().ok()
}
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
include!(env!("BINDINGS"));