summaryrefslogtreecommitdiffstats
path: root/third_party/rust/cssparser/build.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/cssparser/build.rs')
-rw-r--r--third_party/rust/cssparser/build.rs46
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();
+}