# This is a shim Cargo.toml which serves as a proxy for building the standard # library. The reason for this is a little subtle, as one might reasonably # expect that we just `cargo build` the standard library itself. # # One of the output artifacts for the standard library is a dynamic library, and # on platforms like OSX the name of the output artifact is actually encoded into # the library itself (similar to a soname on Linux). When the library is linked # against, this encoded name is what's literally looked for at runtime when the # dynamic loader is probing for libraries. # # Cargo, however, by default will not mangle the output filename of the # top-level target. If we were to run `cargo build` on libstd itself, we would # generate a file `libstd.so`. When installing, however, this file is called # something like `libstd-abcdef0123.so`. On OSX at least this causes a failure # at runtime because the encoded "soname" is `libstd.so`, not what the file is # actually called. # # By using this shim library to build the standard library by proxy we sidestep # this problem. The standard library is built with mangled hex already in its # name so there's nothing extra we need to do. [package] name = "std_shim" version = "0.1.0" authors = ["The Rust Project Developers"] [lib] name = "std_shim" path = "lib.rs" [profile.release] opt-level = 2 [profile.bench] opt-level = 2 # These options are controlled from our rustc wrapper script, so turn them off # here and have them controlled elsewhere. [profile.dev] debug = false debug-assertions = false [dependencies] std = { path = "../../libstd" } # Reexport features from std [features] jemalloc = ["std/jemalloc"] debug-jemalloc = ["std/debug-jemalloc"]