Skip to content
Snippets Groups Projects
Commit 8b663ee3 authored by Anhad Singh's avatar Anhad Singh :crab:
Browse files

fix(cookbook): shared dependencies


These shall only be added iff `PREFER_STATIC` is not set.

Signed-off-by: default avatarAnhad Singh <andypython@protonmail.com>
parent 88ee0be3
No related branches found
No related tags found
No related merge requests found
......@@ -8,3 +8,5 @@ DYNAMIC_INIT
cookbook_cargo
"""
[package]
shared-deps = ["libgcc"]
......@@ -17,3 +17,5 @@ cp -rp "$COOKBOOK_SOURCE/." ./
cookbook_configure
"""
[package]
shared-deps = ["libgcc"]
......@@ -17,3 +17,5 @@ DYNAMIC_INIT
cookbook_configure
"""
[package]
shared-deps = ["libgcc"]
......@@ -38,3 +38,6 @@ else
fi
cookbook_configure
"""
[package]
shared-deps = ["libgcc"]
......@@ -16,3 +16,5 @@ DYNAMIC_INIT
cookbook_configure
"""
[package]
shared-deps = ["libgcc", "libgmp"]
......@@ -19,3 +19,9 @@ DYNAMIC_INIT
cookbook_configure
"""
[package]
shared-deps = [
"libgcc",
"libgmp",
"libmpfr",
]
......@@ -16,3 +16,6 @@ COOKBOOK_CONFIGURE_FLAGS+=(
)
cookbook_configure
"""
[package]
shared-deps = ["libgcc"]
......@@ -11,3 +11,5 @@ script = """
"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}"
"""
[package]
shared-deps = ["libgcc"]
......@@ -37,11 +37,10 @@ cookbook_configure
"""
[package]
dependencies = [
shared-deps = [
"libgcc",
"expat",
"libgmp",
"libmpfr",
"zlib",
]
......@@ -11,6 +11,12 @@ use std::{
use termion::{color, style};
use walkdir::{DirEntry, WalkDir};
fn should_build_shared() -> bool {
use std::sync::OnceLock;
static YES: OnceLock<bool> = OnceLock::new();
*YES.get_or_init(|| env::var("COOKBOOK_PREFER_STATIC").expect("COOKBOOK_PREFER_STATIC").is_empty())
}
fn remove_all(path: &Path) -> Result<(), String> {
if path.is_dir() {
fs::remove_dir_all(path)
......@@ -639,6 +645,38 @@ function cookbook_configure {
"${COOKBOOK_MAKE}" -j "${COOKBOOK_MAKE_JOBS}"
"${COOKBOOK_MAKE}" install DESTDIR="${COOKBOOK_STAGE}"
}
function cookbook_cmake {
cat > CMakeToolchain-x86_64.cmake <<EOF
set(CMAKE_SYSTEM_NAME UnixPaths)
set(CMAKE_FIND_ROOT_PATH ${COOKBOOK_SYSROOT})
set(CMAKE_C_COMPILER ${TARGET}-gcc)
set(CMAKE_CXX_COMPILER ${TARGET}-g++)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
set(CMAKE_PLATFORM_USES_PATH_WHEN_NO_SONAME 1)
EOF
cmake "${COOKBOOK_SOURCE}" \
-DCMAKE_TOOLCHAIN_FILE=./CMakeToolchain-x86_64.cmake
-DCMAKE_INSTALL_PREFIX="." \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_INSTALL_SBINDIR=bin \
-DCMAKE_INSTALL_INCLUDEDIR="include" \
-DCMAKE_INSTALL_OLDINCLUDEDIR="/include" \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=True \
-DENABLE_STATIC=False \
-GNinja \
-Wno-dev \
"${COOKBOOK_CMAKE_FLAGS[@]}"
ninja -j"${COOKBOOK_MAKE_JOBS}"
DESTDIR="${COOKBOOK_STAGE}" ninja install -j"${COOKBOOK_MAKE_JOBS}"
}
"#;
let post_script = r#"# Common post script
......@@ -787,12 +825,17 @@ fn package(
target: String,
depends: Vec<String>,
}
let depends = if should_build_shared() {
package.dependencies.iter().chain(package.shared_deps.iter()).cloned().collect()
} else {
package.dependencies.clone()
};
let stage_toml = toml::to_string(&StageToml {
name: name.into(),
version: "TODO".into(),
target: env::var("TARGET")
.map_err(|err| format!("failed to read TARGET: {:?}", err))?,
depends: package.dependencies.clone(),
depends
})
.map_err(|err| format!("failed to serialize stage.toml: {:?}", err))?;
fs::write(target_dir.join("stage.toml"), stage_toml)
......
......@@ -78,6 +78,8 @@ pub struct BuildRecipe {
pub struct PackageRecipe {
#[serde(default)]
pub dependencies: Vec<String>,
#[serde(rename = "shared-deps", default)]
pub shared_deps: Vec<String>,
}
/// Everything required to build a Redox package
......@@ -129,6 +131,7 @@ mod tests {
},
package: PackageRecipe {
dependencies: Vec::new(),
shared_deps: Vec::new(),
},
}
);
......@@ -171,6 +174,7 @@ mod tests {
},
package: PackageRecipe {
dependencies: Vec::new(),
shared_deps: Vec::new(),
},
}
);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment