Fix missing no_std support in cretonne-module.

And, tidy up the extern crate declarations in the std replacement modules.
This commit is contained in:
Dan Gohman
2018-06-07 11:26:09 -07:00
parent 750483b9ac
commit b2b20a95a1
6 changed files with 43 additions and 21 deletions

View File

@@ -3,6 +3,8 @@
use cretonne_codegen::binemit::{Addend, CodeOffset};
use cretonne_codegen::entity::PrimaryMap;
use cretonne_codegen::ir;
use std::boxed::Box;
use std::vec::Vec;
/// This specifies how data is to be initialized.
#[derive(PartialEq, Eq, Debug)]

View File

@@ -1,7 +1,8 @@
//! Top-level lib.rs for `cretonne_module`.
#![deny(missing_docs, trivial_numeric_casts, unused_extern_crates)]
#![warn(unused_import_braces, unstable_features)]
#![warn(unused_import_braces)]
#![cfg_attr(feature = "std", warn(unstable_features))]
#![cfg_attr(feature = "clippy", plugin(clippy(conf_file = "../../clippy.toml")))]
#![cfg_attr(feature = "cargo-clippy", allow(new_without_default, new_without_default_derive))]
#![cfg_attr(
@@ -11,6 +12,13 @@
print_stdout, unicode_not_nfc, use_self
)
)]
// Turns on no_std and alloc features if std is not available.
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(not(feature = "std"), feature(alloc))]
#[cfg(not(feature = "std"))]
#[cfg_attr(test, macro_use)]
extern crate alloc;
#[macro_use]
extern crate cretonne_codegen;
@@ -26,3 +34,17 @@ mod module;
pub use backend::Backend;
pub use data_context::{DataContext, DataDescription, Init, Writability};
pub use module::{DataId, FuncId, FuncOrDataId, Linkage, Module, ModuleError, ModuleNamespace};
/// This replaces `std` in builds with `core`.
#[cfg(not(feature = "std"))]
mod std {
pub use alloc::{borrow, boxed, string, vec};
pub use core::*;
pub mod collections {
#[allow(unused_extern_crates)]
extern crate hashmap_core;
pub use self::hashmap_core::map as hash_map;
pub use self::hashmap_core::{HashMap, HashSet};
}
}

View File

@@ -9,7 +9,9 @@ use cretonne_codegen::entity::{EntityRef, PrimaryMap};
use cretonne_codegen::result::CtonError;
use cretonne_codegen::{binemit, ir, Context};
use data_context::DataContext;
use std::borrow::ToOwned;
use std::collections::HashMap;
use std::string::String;
use Backend;
/// A function identifier for use in the `Module` interface.