Skip to content

Commit

Permalink
run_make_support: cleanup dll/exe filename calculations
Browse files Browse the repository at this point in the history
  • Loading branch information
jieyouxu committed Jul 19, 2024
1 parent 3d68afc commit 5fa0d15
Showing 1 changed file with 6 additions and 30 deletions.
36 changes: 6 additions & 30 deletions src/tools/run-make-support/src/artifact_names.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
//! A collection of helpers to construct artifact names, such as names of dynamic or static
//! librarys which are target-dependent.
use crate::targets::{is_darwin, is_msvc, is_windows};
// FIXME(jieyouxu): convert these to return `PathBuf`s instead of strings!

use crate::targets::is_msvc;

/// Construct the static library name based on the target.
#[must_use]
Expand Down Expand Up @@ -31,41 +33,15 @@ pub fn static_lib_name(name: &str) -> String {
/// Construct the dynamic library name based on the target.
#[must_use]
pub fn dynamic_lib_name(name: &str) -> String {
// See tools.mk (irrelevant lines omitted):
//
// ```makefile
// ifeq ($(UNAME),Darwin)
// DYLIB = $(TMPDIR)/lib$(1).dylib
// else
// ifdef IS_WINDOWS
// DYLIB = $(TMPDIR)/$(1).dll
// else
// DYLIB = $(TMPDIR)/lib$(1).so
// endif
// endif
// ```
assert!(!name.contains(char::is_whitespace), "dynamic library name cannot contain whitespace");

let extension = dynamic_lib_extension();
if is_darwin() {
format!("lib{name}.{extension}")
} else if is_windows() {
format!("{name}.{extension}")
} else {
format!("lib{name}.{extension}")
}
format!("{}{name}.{}", std::env::consts::DLL_PREFIX, std::env::consts::DLL_EXTENSION)
}

/// Construct the dynamic library extension based on the target.
#[must_use]
pub fn dynamic_lib_extension() -> &'static str {
if is_darwin() {
"dylib"
} else if is_windows() {
"dll"
} else {
"so"
}
std::env::consts::DLL_EXTENSION
}

/// Construct the name of a rust library (rlib).
Expand All @@ -77,5 +53,5 @@ pub fn rust_lib_name(name: &str) -> String {
/// Construct the binary (executable) name based on the target.
#[must_use]
pub fn bin_name(name: &str) -> String {
if is_windows() { format!("{name}.exe") } else { name.to_string() }
format!("{name}{}", std::env::consts::EXE_SUFFIX)
}

0 comments on commit 5fa0d15

Please sign in to comment.