Rollup merge of #151704 - hoodmane:emscripten-set-output-kind, r=petrochenkov
Implement `set_output_kind` for Emscripten linker This makes cdylibs compile to working Emscripten dynamic libraries without passing extra RUSTFLAGS. This was previously approved as rust-lang/rust#98358 but there were CI failures that I never got around to fixing. cc @workingjubilee
This commit is contained in:
commit
b84cf6f790
2 changed files with 16 additions and 1 deletions
|
|
@ -1208,10 +1208,23 @@ impl<'a> Linker for EmLinker<'a> {
|
|||
|
||||
fn set_output_kind(
|
||||
&mut self,
|
||||
_output_kind: LinkOutputKind,
|
||||
output_kind: LinkOutputKind,
|
||||
_crate_type: CrateType,
|
||||
_out_filename: &Path,
|
||||
) {
|
||||
match output_kind {
|
||||
LinkOutputKind::DynamicNoPicExe | LinkOutputKind::DynamicPicExe => {
|
||||
self.cmd.arg("-sMAIN_MODULE=2");
|
||||
}
|
||||
LinkOutputKind::DynamicDylib | LinkOutputKind::StaticDylib => {
|
||||
self.cmd.arg("-sSIDE_MODULE=2");
|
||||
}
|
||||
// -fno-pie is the default on Emscripten.
|
||||
LinkOutputKind::StaticNoPicExe | LinkOutputKind::StaticPicExe => {}
|
||||
LinkOutputKind::WasiReactorExe => {
|
||||
unreachable!();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn link_dylib_by_name(&mut self, name: &str, _verbatim: bool, _as_needed: bool) {
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ pub(crate) fn target() -> Target {
|
|||
pre_link_args,
|
||||
post_link_args,
|
||||
relocation_model: RelocModel::Pic,
|
||||
crt_static_respected: true,
|
||||
crt_static_default: true,
|
||||
panic_strategy: PanicStrategy::Unwind,
|
||||
no_default_libraries: false,
|
||||
families: cvs!["unix", "wasm"],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue