cityhash-sys 1.0.6

Rust binding of Google CityHash algorithm.
Documentation
fn main() {
    println!("cargo:rerun-if-changed=build.rs");
    println!("cargo:rerun-if-changed=src/**");

    let mut build = cc::Build::new();
    build
        .include("src/google")
        .cpp(true)
        .file("src/google/city.cc");

    // CRC32C Intrinsic can be used on x86_64 architecture that support the SSE 4.2 instruction set
    if cfg!(target_arch = "x86_64") && cfg!(target_feature = "sse4.2") {
        if build.get_compiler().is_like_msvc() {
            // MSVC cl.exe compiler do not support sse4.2 options,
            // We just have to define the __SSE4_2__ macro and let the compiler use the _mm_crc32_u64 intrinsic
            build.define("__SSE4_2__", None);
        } else if build.get_compiler().is_like_gnu() || build.get_compiler().is_like_clang() {
            // Clang and GCC support the SSE 4.2 instruction set flag
            build.flag("-msse4.2");
        }
    }

    build.compile("google_cityhash");
}