Skip to content

Commit a949b5c

Browse files
committed
libbindgen: Make logging optional
Note that the log crate isn't completely banished, as other is required by other dependencies.
1 parent 3b1ec9a commit a949b5c

File tree

4 files changed

+47
-6
lines changed

4 files changed

+47
-6
lines changed

libbindgen/Cargo.toml

+10-2
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,6 @@ cfg-if = "0.1.0"
2828
clang-sys = "0.8.0"
2929
lazy_static = "0.1.*"
3030
libc = "0.2"
31-
log = "0.3"
32-
env_logger = "0.3"
3331
rustc-serialize = "0.3.19"
3432
syntex_syntax = "0.44"
3533
regex = "0.1"
@@ -43,12 +41,22 @@ version = "0.28"
4341
optional = true
4442
version = "*"
4543

44+
[dependencies.env_logger]
45+
optional = true
46+
version = "0.3"
47+
48+
[dependencies.log]
49+
optional = true
50+
version = "0.3"
51+
4652
[dependencies.quasi]
4753
features = ["with-syntex"]
4854
version = "0.20"
4955

5056
[features]
57+
default = ["logging"]
5158
llvm_stable = []
59+
logging = ["env_logger", "log"]
5260
static = []
5361
# This feature only exists for CI -- don't use it!
5462
_docs = []

libbindgen/src/lib.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,15 @@ extern crate clang_sys;
2929
extern crate libc;
3030
extern crate regex;
3131
#[macro_use]
32+
extern crate lazy_static;
33+
34+
#[cfg(feature = "logging")]
35+
#[macro_use]
3236
extern crate log;
37+
38+
#[cfg(not(feature = "logging"))]
3339
#[macro_use]
34-
extern crate lazy_static;
40+
mod log_stubs;
3541

3642
// A macro to declare an internal module for which we *must* provide
3743
// documentation for. If we are building with the "_docs" feature, then the

libbindgen/src/log_stubs.rs

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
macro_rules! log {
2+
(target: $target:expr, $lvl:expr, $($arg)+) => {
3+
let _ = $target;
4+
let _ = log!($lvl, $($arg)+);
5+
};
6+
($lvl:expr, $($arg:tt)+) => {
7+
let _ = $lvl;
8+
let _ = format_args!($($arg)+);
9+
};
10+
}
11+
macro_rules! error {
12+
(target: $target:expr, $($arg:tt)*) => { log!($target, $($arg)*); };
13+
($($arg:tt)*) => { log!("", $($arg)*); };
14+
}
15+
macro_rules! warn {
16+
(target: $target:expr, $($arg:tt)*) => { log!($target, $($arg)*); };
17+
($($arg:tt)*) => { log!("", $($arg)*); };
18+
}
19+
macro_rules! info {
20+
(target: $target:expr, $($arg:tt)*) => { log!($target, $($arg)*); };
21+
($($arg:tt)*) => { log!("", $($arg)*); };
22+
}
23+
macro_rules! debug {
24+
(target: $target:expr, $($arg:tt)*) => { log!($target, $($arg)*); };
25+
($($arg:tt)*) => { log!("", $($arg)*); };
26+
}
27+
macro_rules! trace {
28+
(target: $target:expr, $($arg:tt)*) => { log!($target, $($arg)*); };
29+
($($arg:tt)*) => { log!("", $($arg)*); };
30+
}

libbindgen/tests/tests.rs

-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
extern crate clap;
22
extern crate diff;
3-
#[macro_use]
4-
extern crate env_logger;
53
extern crate libbindgen;
6-
extern crate log;
74
extern crate shlex;
85

96
use std::fs;

0 commit comments

Comments
 (0)