Skip to content

Commit e3b4e42

Browse files
committed
options: Implement --version manually and print clang version on --version --verbose
Fixes #2138
1 parent bcbd72d commit e3b4e42

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/options.rs

+14-5
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,11 @@ where
2323
);
2424

2525
let matches = App::new("bindgen")
26-
.version(option_env!("CARGO_PKG_VERSION").unwrap_or("unknown"))
2726
.about("Generates Rust bindings from C/C++ headers.")
2827
.usage("bindgen [FLAGS] [OPTIONS] <header> -- <clang-args>...")
2928
.args(&[
3029
Arg::with_name("header")
31-
.help("C or C++ header file")
32-
.required(true),
30+
.help("C or C++ header file"),
3331
Arg::with_name("depfile")
3432
.long("depfile")
3533
.takes_value(true)
@@ -534,9 +532,22 @@ where
534532
Arg::with_name("explicit-padding")
535533
.long("explicit-padding")
536534
.help("Always output explicit padding fields."),
535+
Arg::with_name("V")
536+
.long("version")
537+
.help("Prints the version, and exits"),
537538
]) // .args()
538539
.get_matches_from(args);
539540

541+
let verbose = matches.is_present("verbose");
542+
543+
if matches.is_present("V") {
544+
println!("bindgen {}", option_env!("CARGO_PKG_VERSION").unwrap_or("unknown"));
545+
if verbose {
546+
println!("Clang version: {}", crate::clang_version().full);
547+
}
548+
std::process::exit(0);
549+
}
550+
540551
let mut builder = builder();
541552

542553
if let Some(header) = matches.value_of("header") {
@@ -994,7 +1005,5 @@ where
9941005
builder = builder.explicit_padding(true);
9951006
}
9961007

997-
let verbose = matches.is_present("verbose");
998-
9991008
Ok((builder, output, verbose))
10001009
}

0 commit comments

Comments
 (0)