##// END OF EJS Templates
automation: support building Windows wheels for Python 3.7 and 3.8...
automation: support building Windows wheels for Python 3.7 and 3.8 The time has come to support Python 3 on Windows. Let's teach our automation code to produce Windows wheels for Python 3.7 and 3.8. We could theoretically support 3.5 and 3.6. But I don't think it is worth it. People on Windows generally use the Mercurial installers, not wheels. And I'd prefer we limit variability and not have to worry about supporting earlier Python versions if it can be helped. As part of this, we change the invocation of pip to `python.exe -m pip`, as this is what is being recommended in Python docs these days. And it seemed to be required to avoid a weird build error. Why, I'm not sure. But it looks like pip was having trouble finding a Visual Studio files when invoked as `pip.exe` but not when using `python.exe -m pip`. Who knows. Differential Revision: https://phab.mercurial-scm.org/D8478

File last commit:

r45207:97c10b15 default
r45261:48096e26 default
Show More
build.rs
61 lines | 1.5 KiB | application/rls-services+xml | RustLexer
// build.rs
//
// Copyright 2020 Raphaël Gomès <rgomes@octobus.net>
//
// This software may be used and distributed according to the terms of the
// GNU General Public License version 2 or any later version.
#[cfg(feature = "with-re2")]
use cc;
/// Uses either the system Re2 install as a dynamic library or the provided
/// build as a static library
#[cfg(feature = "with-re2")]
fn compile_re2() {
use cc;
use std::path::Path;
use std::process::exit;
let msg = r"HG_RE2_PATH must be one of `system|<path to build source clone of Re2>`";
let re2 = match std::env::var_os("HG_RE2_PATH") {
None => {
eprintln!("{}", msg);
exit(1)
}
Some(v) => {
if v == "system" {
None
} else {
Some(v)
}
}
};
let mut options = cc::Build::new();
options
.cpp(true)
.flag("-std=c++11")
.file("src/re2/rust_re2.cpp");
if let Some(ref source) = re2 {
options.include(Path::new(source));
};
options.compile("librustre.a");
if let Some(ref source) = &re2 {
// Link the local source statically
println!(
"cargo:rustc-link-search=native={}",
Path::new(source).join(Path::new("obj")).display()
);
println!("cargo:rustc-link-lib=static=re2");
} else {
println!("cargo:rustc-link-lib=re2");
}
}
fn main() {
#[cfg(feature = "with-re2")]
compile_re2();
}