mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-30 23:31:12 +00:00
Create dummy lib as libapp.so
This commit is contained in:
parent
b1e02315d0
commit
e4b3402369
3 changed files with 11 additions and 7 deletions
1
examples/.gitignore
vendored
1
examples/.gitignore
vendored
|
@ -7,3 +7,4 @@ roc_app.bc
|
||||||
dynhost
|
dynhost
|
||||||
preprocessedhost
|
preprocessedhost
|
||||||
metadata
|
metadata
|
||||||
|
libapp.so
|
|
@ -25,7 +25,7 @@ use std::path::Path;
|
||||||
use std::process::Command;
|
use std::process::Command;
|
||||||
use std::time::{Duration, SystemTime};
|
use std::time::{Duration, SystemTime};
|
||||||
use target_lexicon::Triple;
|
use target_lexicon::Triple;
|
||||||
use tempfile::{Builder, NamedTempFile};
|
use tempfile::Builder;
|
||||||
|
|
||||||
mod metadata;
|
mod metadata;
|
||||||
|
|
||||||
|
@ -142,8 +142,8 @@ pub fn build_and_preprocess_host(
|
||||||
host_input_path: &Path,
|
host_input_path: &Path,
|
||||||
exposed_to_host: Vec<String>,
|
exposed_to_host: Vec<String>,
|
||||||
) -> io::Result<()> {
|
) -> io::Result<()> {
|
||||||
let dummy_lib = generate_dynamic_lib(target, exposed_to_host)?;
|
let dummy_lib = host_input_path.with_file_name("libapp.so");
|
||||||
let dummy_lib = dummy_lib.path();
|
generate_dynamic_lib(target, exposed_to_host, &dummy_lib)?;
|
||||||
rebuild_host(opt_level, target, host_input_path, Some(&dummy_lib));
|
rebuild_host(opt_level, target, host_input_path, Some(&dummy_lib));
|
||||||
let dynhost = host_input_path.with_file_name("dynhost");
|
let dynhost = host_input_path.with_file_name("dynhost");
|
||||||
let metadata = host_input_path.with_file_name("metadata");
|
let metadata = host_input_path.with_file_name("metadata");
|
||||||
|
@ -187,10 +187,10 @@ pub fn link_preprocessed_host(
|
||||||
fn generate_dynamic_lib(
|
fn generate_dynamic_lib(
|
||||||
_target: &Triple,
|
_target: &Triple,
|
||||||
exposed_to_host: Vec<String>,
|
exposed_to_host: Vec<String>,
|
||||||
) -> io::Result<NamedTempFile> {
|
dummy_lib_path: &Path,
|
||||||
|
) -> io::Result<()> {
|
||||||
let dummy_obj_file = Builder::new().prefix("roc_lib").suffix(".o").tempfile()?;
|
let dummy_obj_file = Builder::new().prefix("roc_lib").suffix(".o").tempfile()?;
|
||||||
let dummy_obj_file = dummy_obj_file.path();
|
let dummy_obj_file = dummy_obj_file.path();
|
||||||
let dummy_lib_file = Builder::new().prefix("roc_lib").suffix(".so").tempfile()?;
|
|
||||||
|
|
||||||
// TODO deal with other architectures here.
|
// TODO deal with other architectures here.
|
||||||
let mut out_object =
|
let mut out_object =
|
||||||
|
@ -227,9 +227,11 @@ fn generate_dynamic_lib(
|
||||||
let output = Command::new("ld")
|
let output = Command::new("ld")
|
||||||
.args(&[
|
.args(&[
|
||||||
"-shared",
|
"-shared",
|
||||||
|
"-soname",
|
||||||
|
dummy_lib_path.file_name().unwrap().to_str().unwrap(),
|
||||||
dummy_obj_file.to_str().unwrap(),
|
dummy_obj_file.to_str().unwrap(),
|
||||||
"-o",
|
"-o",
|
||||||
dummy_lib_file.path().to_str().unwrap(),
|
dummy_lib_path.to_str().unwrap(),
|
||||||
])
|
])
|
||||||
.output()
|
.output()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
@ -246,7 +248,7 @@ fn generate_dynamic_lib(
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(dummy_lib_file)
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn preprocess(matches: &ArgMatches) -> io::Result<i32> {
|
pub fn preprocess(matches: &ArgMatches) -> io::Result<i32> {
|
||||||
|
|
1
linker/tests/fib/.gitignore
vendored
1
linker/tests/fib/.gitignore
vendored
|
@ -8,3 +8,4 @@ zig-out
|
||||||
dynhost
|
dynhost
|
||||||
preprocessedhost
|
preprocessedhost
|
||||||
metadata
|
metadata
|
||||||
|
libapp.so
|
Loading…
Add table
Add a link
Reference in a new issue