mirror of
https://github.com/XRPLF/rippled.git
synced 2026-07-23 07:00:21 +00:00
79 lines
1.8 KiB
Nix
79 lines
1.8 KiB
Nix
{ pkgs, ... }:
|
|
let
|
|
inherit (import ./packages.nix { inherit pkgs; })
|
|
commonPackages
|
|
gccVersion
|
|
llvmVersion
|
|
llvmPackages
|
|
mkVersionedToolLinks
|
|
;
|
|
|
|
# Plain nixpkgs stdenvs — no custom glibc, unlike ci-env.nix.
|
|
gccStdenv = pkgs."gcc${toString gccVersion}Stdenv";
|
|
clangStdenv = llvmPackages.stdenv;
|
|
|
|
# compilerName is the command used to print the version, or null for none.
|
|
makeShell =
|
|
{
|
|
stdenv,
|
|
compilerName,
|
|
version ? null,
|
|
versionedTools ? [ ],
|
|
}:
|
|
let
|
|
compilerVersion =
|
|
if compilerName == null then
|
|
''echo "No compiler specified - using system compiler"''
|
|
else
|
|
''
|
|
echo "Compiler: "
|
|
${compilerName} --version
|
|
'';
|
|
versionedLinks = pkgs.lib.optional (version != null) (mkVersionedToolLinks {
|
|
name = compilerName;
|
|
package = stdenv.cc;
|
|
inherit version;
|
|
tools = versionedTools;
|
|
});
|
|
in
|
|
(pkgs.mkShell.override { inherit stdenv; }) {
|
|
packages = commonPackages ++ versionedLinks;
|
|
shellHook = ''
|
|
echo "Welcome to xrpld development shell";
|
|
${compilerVersion}
|
|
'';
|
|
};
|
|
in
|
|
rec {
|
|
# macOS: Nix Clang. Linux: Nix GCC.
|
|
default = if pkgs.stdenv.isDarwin then clang else gcc;
|
|
|
|
gcc = makeShell {
|
|
stdenv = gccStdenv;
|
|
compilerName = "gcc";
|
|
version = gccVersion;
|
|
versionedTools = [
|
|
"gcc"
|
|
"g++"
|
|
"cpp"
|
|
];
|
|
};
|
|
|
|
clang = makeShell {
|
|
stdenv = clangStdenv;
|
|
compilerName = "clang";
|
|
version = llvmVersion;
|
|
versionedTools = [
|
|
"clang"
|
|
"clang++"
|
|
];
|
|
};
|
|
|
|
# Nix provides no compiler; use the one from your system (e.g. Apple Clang).
|
|
no-compiler = makeShell {
|
|
stdenv = pkgs.stdenvNoCC;
|
|
compilerName = null;
|
|
};
|
|
apple-clang = no-compiler;
|
|
}
|