diff options
Diffstat (limited to 'third_party/rust/cssparser/build.rs')
-rw-r--r-- | third_party/rust/cssparser/build.rs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/third_party/rust/cssparser/build.rs b/third_party/rust/cssparser/build.rs new file mode 100644 index 0000000000..07a72ffe1c --- /dev/null +++ b/third_party/rust/cssparser/build.rs @@ -0,0 +1,46 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#[cfg(feature = "dummy_match_byte")] +mod codegen { + pub fn main() {} +} + +#[cfg(not(feature = "dummy_match_byte"))] +#[path = "build/match_byte.rs"] +mod match_byte; + +#[cfg(not(feature = "dummy_match_byte"))] +mod codegen { + use std::env; + use std::path::Path; + use std::thread::Builder; + + pub fn main() { + let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); + + let input = Path::new(&manifest_dir).join("src/tokenizer.rs"); + let output = Path::new(&env::var("OUT_DIR").unwrap()).join("tokenizer.rs"); + println!("cargo:rerun-if-changed={}", input.display()); + + // We have stack overflows on Servo's CI. + let handle = Builder::new() + .stack_size(128 * 1024 * 1024) + .spawn(move || { + crate::match_byte::expand(&input, &output); + }) + .unwrap(); + + handle.join().unwrap(); + } +} + +fn main() { + if std::mem::size_of::<Option<bool>>() == 1 { + // https://github.com/rust-lang/rust/pull/45225 + println!("cargo:rustc-cfg=rustc_has_pr45225") + } + + codegen::main(); +} |