mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-02-18 04:43:28 +00:00
88 lines
2.5 KiB
Nix
88 lines
2.5 KiB
Nix
{
|
|
pkgs,
|
|
src ? ../.,
|
|
targets ? ["libwaku-android-arm64"],
|
|
verbosity ? 1,
|
|
stableSystems ? [
|
|
"x86_64-linux" "aarch64-linux"
|
|
],
|
|
abidir ? null,
|
|
zerokitRln,
|
|
}:
|
|
|
|
let
|
|
inherit (pkgs) stdenv lib writeScriptBin callPackage;
|
|
|
|
androidManifest = "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" package=\"com.example.mylibrary\" />";
|
|
|
|
tools = pkgs.callPackage ./tools.nix {};
|
|
version = tools.findKeyValue "^version = \"([a-f0-9.-]+)\"$" ../waku.nimble;
|
|
revision = lib.substring 0 8 (src.rev or src.dirtyRev or "00000000");
|
|
|
|
nimbleDeps = callPackage ./deps.nix {
|
|
inherit src version revision;
|
|
};
|
|
|
|
in stdenv.mkDerivation {
|
|
pname = "logos-delivery";
|
|
inherit src;
|
|
version = "${version}-${revision}";
|
|
|
|
env = {
|
|
#ANDROID_SDK_ROOT="${pkgs.androidPkgs.sdk}";
|
|
#ANDROID_NDK_HOME="${pkgs.androidPkgs.ndk}";
|
|
NIMFLAGS = "-d:disableMarchNative -d:git_revision_override=${revision}";
|
|
};
|
|
|
|
buildInputs = with pkgs; [
|
|
openssl gmp zip bash nim nimble cacert
|
|
git cmake cargo-make rustup
|
|
];
|
|
|
|
# Dependencies that should only exist in the build environment.
|
|
nativeBuildInputs = let
|
|
# Fix for Nim compiler calling 'git rev-parse' and 'lsb_release'.
|
|
fakeGit = writeScriptBin "git" "echo ${version}";
|
|
in with pkgs; [
|
|
cmake which zerokitRln fakeGit nimbleDeps cargo nimble nim cacert
|
|
] ++ lib.optionals stdenv.isDarwin [
|
|
pkgs.darwin.cctools gcc # Necessary for libbacktrace
|
|
];
|
|
|
|
makeFlags = targets ++ [
|
|
"V=${toString verbosity}"
|
|
"LIBRLN_FILE=${zerokitRln}/lib/librln.${if abidir != null then "so" else "a"}"
|
|
];
|
|
|
|
configurePhase = ''
|
|
export NIMBLE_DIR=$NIX_BUILD_TOP/nimbledeps
|
|
cp -r ${nimbleDeps}/nimbledeps $NIMBLE_DIR
|
|
cp ${nimbleDeps}/nimble.paths ./
|
|
chmod 775 -R $NIMBLE_DIR
|
|
# Fix relative paths to absolute paths
|
|
sed -i "s|./nimbledeps|$NIMBLE_DIR|g" nimble.paths
|
|
'';
|
|
|
|
installPhase = if abidir != null then ''
|
|
mkdir -p $out/jni
|
|
cp -r ./build/android/${abidir}/* $out/jni/
|
|
echo '${androidManifest}' > $out/jni/AndroidManifest.xml
|
|
cd $out && zip -r libwaku.aar *
|
|
'' else ''
|
|
mkdir -p $out/bin $out/include
|
|
|
|
# Copy library files
|
|
cp build/* $out/bin/ 2>/dev/null || true
|
|
|
|
# Copy the header file
|
|
cp library/libwaku.h $out/include/
|
|
'';
|
|
|
|
meta = with pkgs.lib; {
|
|
description = "Logos-message-delivery derivation.";
|
|
homepage = "https://github.com/logos-messaging/logos-messaging-nim";
|
|
license = licenses.mit;
|
|
platforms = stableSystems;
|
|
};
|
|
}
|