view rust/hg-core/build.rs @ 44956:ba7eda4fcf8e stable

zeroconf: fix non existant formatting in the vendored zeroconf module On Tue Mar 1st 2016 at 09:33:39 timeless decided to wrap long line in `hgext/zeroconf/Zeroconf.py`. Doing so, he fat fingered a "%w" instead of a "%s" in a string. %w does not exists, 4 year later, pyflakes (rightfully) complains about it. So I am fixing it. Differential Revision: https://phab.mercurial-scm.org/D8627
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Sat, 13 Jun 2020 11:06:22 +0200
parents 97c10b157665
children
line wrap: on
line source

// 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();
}