Skip to content

Commit

Permalink
Add a configure to disable libstd version injection
Browse files Browse the repository at this point in the history
We'll use this when building snapshots so we can upgrade freely, but all
compilers will inject a version by default.
  • Loading branch information
alexcrichton committed Jan 15, 2014
1 parent 7bebdbd commit 7a37294
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 5 deletions.
1 change: 1 addition & 0 deletions Makefile.in
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,7 @@ export CFG_PREFIX
export CFG_LIBDIR
export CFG_RUSTLIBDIR
export CFG_LIBDIR_RELATIVE
export CFG_DISABLE_INJECT_STD_VERSION

######################################################################
# Subprograms
Expand Down
2 changes: 2 additions & 0 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,7 @@ opt clang 0 "prefer clang to gcc for building the runtime"
opt ccache 0 "invoke gcc/clang via ccache to reuse object files between builds"
opt local-rust 0 "use an installed rustc rather than downloading a snapshot"
opt pax-flags 0 "apply PaX flags to rustc binaries (required for GRSecurity/PaX-patched kernels)"
opt inject-std-version 1 "inject the current compiler version of libstd into programs"
valopt prefix "/usr/local" "set installation prefix"
valopt local-rust-root "/usr/local" "set prefix for local rust binary"
valopt llvm-root "" "set LLVM root"
Expand Down Expand Up @@ -1042,6 +1043,7 @@ putvar CFG_DISABLE_MANAGE_SUBMODULES
putvar CFG_ANDROID_CROSS_PATH
putvar CFG_MINGW32_CROSS_PATH
putvar CFG_MANDIR
putvar CFG_DISABLE_INJECT_STD_VERSION

# Avoid spurious warnings from clang by feeding it original source on
# ccache-miss rather than preprocessed input.
Expand Down
3 changes: 2 additions & 1 deletion src/libextra/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ Rust extras are part of the standard Rust distribution.
*/

#[crate_id = "extra#0.10-pre"];
// NOTE: upgrade to 0.10-pre after the next snapshot
#[crate_id = "extra#0.9"];
#[comment = "Rust extras"];
#[license = "MIT/ASL2"];
#[crate_type = "rlib"];
Expand Down
19 changes: 16 additions & 3 deletions src/librustc/front/std_inject.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ use syntax::fold;
use syntax::opt_vec;
use syntax::util::small_vector::SmallVector;

// NOTE: upgrade to 0.10-pre after the next snapshot
pub static VERSION: &'static str = "0.9";

pub fn maybe_inject_libstd_ref(sess: Session, crate: ast::Crate)
-> ast::Crate {
if use_std(&crate) {
Expand Down Expand Up @@ -53,11 +56,21 @@ struct StandardLibraryInjector {
sess: Session,
}

pub fn with_version(crate: &str) -> Option<(@str, ast::StrStyle)> {
match option_env!("CFG_DISABLE_INJECT_STD_VERSION") {
Some("1") => None,
_ => {
Some((format!("{}\\#{}", crate, VERSION).to_managed(),
ast::CookedStr))
}
}
}

impl fold::Folder for StandardLibraryInjector {
fn fold_crate(&mut self, crate: ast::Crate) -> ast::Crate {
let mut vis = ~[ast::ViewItem {
node: ast::ViewItemExternMod(self.sess.ident_of("std"),
None,
with_version("std"),
ast::DUMMY_NODE_ID),
attrs: ~[],
vis: ast::Private,
Expand All @@ -67,15 +80,15 @@ impl fold::Folder for StandardLibraryInjector {
if use_uv(&crate) && !self.sess.building_library.get() {
vis.push(ast::ViewItem {
node: ast::ViewItemExternMod(self.sess.ident_of("green"),
None,
with_version("green"),
ast::DUMMY_NODE_ID),
attrs: ~[],
vis: ast::Private,
span: DUMMY_SP
});
vis.push(ast::ViewItem {
node: ast::ViewItemExternMod(self.sess.ident_of("rustuv"),
None,
with_version("rustuv"),
ast::DUMMY_NODE_ID),
attrs: ~[],
vis: ast::Private,
Expand Down
3 changes: 2 additions & 1 deletion src/librustc/front/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

use driver::session;
use front::config;
use front::std_inject::with_version;

use std::cell::RefCell;
use std::vec;
Expand Down Expand Up @@ -292,7 +293,7 @@ fn mk_std(cx: &TestCtxt) -> ast::ViewItem {
ast::DUMMY_NODE_ID))])
} else {
ast::ViewItemExternMod(id_extra,
None,
with_version("extra"),
ast::DUMMY_NODE_ID)
};
ast::ViewItem {
Expand Down

0 comments on commit 7a37294

Please sign in to comment.