diff --git a/setuptools_rust/build.py b/setuptools_rust/build.py index 859c3ad0..3c26b162 100644 --- a/setuptools_rust/build.py +++ b/setuptools_rust/build.py @@ -517,10 +517,10 @@ def _cargo_args( if target_triple is not None: args.extend(["--target", target_triple]) - if release: - profile = ext.get_cargo_profile() - if not profile: - args.append("--release") + ext_profile = ext.get_cargo_profile() + env_profile = os.getenv("SETUPTOOLS_RUST_CARGO_PROFILE") + if release and not ext_profile and not env_profile: + args.append("--release") if quiet: args.append("-q") @@ -541,6 +541,18 @@ def _cargo_args( if ext.args is not None: args.extend(ext.args) + if env_profile: + if ext_profile: + args = [p for p in args if not p.startswith("--profile=")] + while True: + try: + index = args.index("--profile") + del args[index:index + 2] + except ValueError: + break + + args.extend(["--profile", env_profile]) + if ext.cargo_manifest_args is not None: args.extend(ext.cargo_manifest_args)