@@ -11,6 +11,7 @@ use std::rc::Rc;
1111use oo_bindgen:: backend:: * ;
1212use oo_bindgen:: model:: Library ;
1313
14+ use crate :: cli:: Args ;
1415use clap:: Parser ;
1516
1617const SUPPORTED_PLATFORMS : & [ & Platform ] = & [
@@ -30,18 +31,16 @@ fn is_officially_supported(p: &Platform) -> bool {
3031}
3132
3233pub fn run ( settings : BindingBuilderSettings ) {
33- let args = crate :: cli:: Args :: parse ( ) ;
34+ let args: Args = crate :: cli:: Args :: parse ( ) ;
3435
3536 let mut run_tests = !args. no_tests ;
3637
3738 // if no languages are selected, we build all of them
3839 let run_all = !args. build_c && !args. build_dotnet && !args. build_java ;
3940
40- let package = args. package . is_some ( ) ;
41-
4241 let mut platforms = PlatformLocations :: new ( ) ;
43- if let Some ( package_src ) = args. package {
44- for entry in fs:: read_dir ( package_src ) . unwrap ( ) {
42+ if let Some ( dir ) = & args. package_dir {
43+ for entry in fs:: read_dir ( dir ) . unwrap ( ) {
4544 let entry = entry. unwrap ( ) ;
4645 let path = entry. path ( ) ;
4746 if path. is_dir ( ) {
@@ -51,14 +50,40 @@ pub fn run(settings: BindingBuilderSettings) {
5150 }
5251 }
5352 } else {
54- let current_platform =
55- Platform :: guess_current ( ) . expect ( "could not determine current platform" ) ;
56- platforms. add ( current_platform. clone ( ) , ffi_path ( ) ) ;
53+ let artifact_dir = match args. artifact_dir {
54+ Some ( x) => {
55+ tracing:: info!( "Artifact dir is {}" , x. display( ) ) ;
56+ x
57+ }
58+ None => {
59+ let x: PathBuf = "./target/release" . into ( ) ;
60+ tracing:: info!( "No artifact dir specified, assuming: {}" , x. display( ) ) ;
61+ x
62+ }
63+ } ;
64+
65+ let platform = match args. target_triple {
66+ None => {
67+ let platform =
68+ Platform :: guess_current ( ) . expect ( "Could not determine current platform" ) ;
69+ tracing:: info!(
70+ "No target platform specified assuming target is the host platform: {}" ,
71+ platform
72+ ) ;
73+ platform
74+ }
75+ Some ( tt) => match Platform :: find ( & tt) {
76+ None => panic ! ( "Unable to determine Platform from target triple: {}" , tt) ,
77+ Some ( x) => x,
78+ } ,
79+ } ;
80+
81+ platforms. add ( platform. clone ( ) , artifact_dir) ;
5782
58- if !is_officially_supported ( current_platform ) {
83+ if !is_officially_supported ( platform ) {
5984 println ! (
6085 "WARNING: building for an unsupported platform: {}" ,
61- current_platform . target_triple
86+ platform . target_triple
6287 ) ;
6388 if run_tests {
6489 println ! ( "Skipping tests an unsupported platform" ) ;
@@ -67,15 +92,21 @@ pub fn run(settings: BindingBuilderSettings) {
6792 }
6893 }
6994
95+ let is_packaging = args. package_dir . is_some ( ) ;
96+
7097 assert ! ( !platforms. is_empty( ) , "No platforms found!" ) ;
7198
99+ for p in platforms. iter ( ) {
100+ tracing:: info!( "Platform {} in {}" , p. platform, p. location. display( ) ) ;
101+ }
102+
72103 if args. build_c || run_all {
73104 let mut builder = crate :: builders:: c:: CBindingBuilder :: new (
74105 settings. clone ( ) ,
75106 platforms. clone ( ) ,
76107 & args. extra_files ,
77108 ) ;
78- builder. run ( run_tests, package , args. generate_doxygen ) ;
109+ builder. run ( run_tests, is_packaging , args. generate_doxygen ) ;
79110 }
80111 if args. build_dotnet || run_all {
81112 let mut builder = crate :: builders:: dotnet:: DotnetBindingBuilder :: new (
@@ -84,19 +115,15 @@ pub fn run(settings: BindingBuilderSettings) {
84115 platforms. clone ( ) ,
85116 & args. extra_files ,
86117 ) ;
87- builder. run ( run_tests, package , args. generate_doxygen ) ;
118+ builder. run ( run_tests, is_packaging , args. generate_doxygen ) ;
88119 }
89120 if args. build_java || run_all {
90121 let mut builder =
91122 crate :: builders:: java:: JavaBindingBuilder :: new ( settings, platforms, & args. extra_files ) ;
92- builder. run ( run_tests, package , args. generate_doxygen ) ;
123+ builder. run ( run_tests, is_packaging , args. generate_doxygen ) ;
93124 }
94125}
95126
96- fn ffi_path ( ) -> PathBuf {
97- [ env ! ( "TARGET_DIR" ) , "deps" ] . iter ( ) . collect ( )
98- }
99-
100127#[ derive( Clone ) ]
101128pub struct BindingBuilderSettings {
102129 /// FFI target name (as specified in with `cargo build -p <...>`)
0 commit comments