@@ -39,6 +39,7 @@ class build_rust(RustCommand):
3939 "t" ,
4040 "directory for temporary files (cargo 'target' directory) " ,
4141 ),
42+ ("target" , None , "Build for the target triple" ),
4243 ]
4344 boolean_options = ["inplace" , "debug" , "release" , "qbuild" ]
4445
@@ -50,6 +51,7 @@ def initialize_options(self):
5051 self .qbuild = None
5152 self .build_temp = None
5253 self .plat_name = None
54+ self .target = os .getenv ("CARGO_BUILD_TARGET" )
5355
5456 def finalize_options (self ):
5557 super ().finalize_options ()
@@ -66,9 +68,9 @@ def get_target_triple(self):
6668 # If we are on a 64-bit machine, but running a 32-bit Python, then
6769 # we'll target a 32-bit Rust build.
6870 # Automatic target detection can be overridden via the CARGO_BUILD_TARGET
69- # environment variable.
70- if os . getenv ( "CARGO_BUILD_TARGET" ) :
71- return os . environ [ "CARGO_BUILD_TARGET" ]
71+ # environment variable or --target command line option
72+ if self . target :
73+ return self . target
7274 elif self .plat_name == "win32" :
7375 return "i686-pc-windows-msvc"
7476 elif self .plat_name == "win-amd64" :
@@ -166,7 +168,9 @@ def build_extension(self, ext: RustExtension, target_triple=None):
166168 if quiet :
167169 args .append ("-q" )
168170 elif self .verbose :
169- args .append ("--verbose" )
171+ # cargo only have -vv
172+ verbose_level = 'v' * min (self .verbose , 2 )
173+ args .append (f"-{ verbose_level } " )
170174
171175 else :
172176 args = (
@@ -180,7 +184,9 @@ def build_extension(self, ext: RustExtension, target_triple=None):
180184 if quiet :
181185 args .append ("-q" )
182186 elif self .verbose :
183- args .append ("--verbose" )
187+ # cargo only have -vv
188+ verbose_level = 'v' * min (self .verbose , 2 )
189+ args .append (f"-{ verbose_level } " )
184190
185191 args .extend (["--" , "--crate-type" , "cdylib" ])
186192 args .extend (ext .rustc_flags or [])
0 commit comments