Only seeing this thread now that it's recently discussed again, but I definitely think this should be fixed, as I pointed out that this seemed to be a problem with Rust macros that Swift should try to avoid years ago. Either option seems fine to me, as SwiftPM only started building so much code for the host alongside cross-compilation recently, so you could argue 2. is more intuitive because most people only expected these flags to apply to the target.
You'd probably want to use SDK bundles for that? One deficiency with SwiftPM is that it seems to support building for multiple architectures with one invocation when targeting macOS, but not for other target platforms.
Not sure what you're suggesting here, that we remove these CLI flags altogether or change them to support multiple targets also. The benefit of CLI flags is that they allow quickly trying or overriding flags without pulling in more "build config files" and other heavier config. Multiple targets seem such a specialized use case that I'm not sure it needs CLI support yet, while these flags are definitely useful for the much more common host and single cross-compilation target scenarios.