summaryrefslogtreecommitdiffstats
path: root/tests/run-make/x86_64-fortanix-unknown-sgx-lvi/enclave/build.rs
blob: 3a7aa1be868c9e919e5acad0337addce73ca4011 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
fn main() {
    cc::Build::new()
        .file("foo.c")
        .compile("foo_c");

    cc::Build::new()
        .file("foo_asm.s")
        .compile("foo_asm");

    cc::Build::new()
        .cpp(true)
        .cpp_set_stdlib(None)
        .file("foo_cxx.cpp")
        .compile("foo_cxx");

    // When the cmake crate detects the clang compiler, it passes the
    //  "--target" argument to the linker which subsequently fails. The
    //  `CMAKE_C_COMPILER_FORCED` option makes sure that `cmake` does not
    //  tries to test the compiler. From version 3.6 the option
    //  `CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY` can be used
    //  https://cmake.org/cmake/help/v3.5/module/CMakeForceCompiler.html
    let dst = cmake::Config::new("libcmake_foo")
                .build_target("cmake_foo")
                .define("CMAKE_C_COMPILER_FORCED", "1")
                .define("CMAKE_CXX_COMPILER_FORCED", "1")
                .define("CMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY", "1")
                .build();
    println!("cargo:rustc-link-search=native={}/build/", dst.display());
    println!("cargo:rustc-link-lib=static=cmake_foo");
}