mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-12-05 05:13:04 +00:00
97 lines
2.0 KiB
Nix
97 lines
2.0 KiB
Nix
{
|
|
fetchFromGitHub,
|
|
lib,
|
|
libiconv,
|
|
llvmPackages,
|
|
MacOSX-SDK,
|
|
makeBinaryWrapper,
|
|
nix-update-script,
|
|
Security,
|
|
which,
|
|
}:
|
|
|
|
let
|
|
inherit (llvmPackages) stdenv;
|
|
in
|
|
stdenv.mkDerivation {
|
|
pname = "odin";
|
|
version = "0-unstable-2024-08-05";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "odin-lang";
|
|
repo = "Odin";
|
|
rev = "a1c3c38f0453dcf94ba13d572fa392cb5331a878";
|
|
hash = "sha256-LYUy/llW3BFnRx6sdTF/8QdvK/v+5/ShKJR+ZXocC+4=";
|
|
};
|
|
|
|
postPatch =
|
|
lib.optionalString stdenv.isDarwin ''
|
|
substituteInPlace src/linker.cpp \
|
|
--replace-fail '/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk' ${MacOSX-SDK}
|
|
''
|
|
+ ''
|
|
substituteInPlace build_odin.sh \
|
|
--replace-fail '-framework System' '-lSystem'
|
|
patchShebangs build_odin.sh
|
|
'';
|
|
|
|
LLVM_CONFIG = "${llvmPackages.llvm.dev}/bin/llvm-config";
|
|
|
|
dontConfigure = true;
|
|
|
|
buildFlags = [ "release" ];
|
|
|
|
nativeBuildInputs = [
|
|
makeBinaryWrapper
|
|
which
|
|
];
|
|
|
|
buildInputs = lib.optionals stdenv.isDarwin [
|
|
libiconv
|
|
Security
|
|
];
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/bin
|
|
cp odin $out/bin/odin
|
|
|
|
mkdir -p $out/share
|
|
cp -r {base,core,vendor,shared} $out/share
|
|
|
|
wrapProgram $out/bin/odin \
|
|
--prefix PATH : ${
|
|
lib.makeBinPath (
|
|
with llvmPackages;
|
|
[
|
|
bintools
|
|
llvm
|
|
clang
|
|
lld
|
|
]
|
|
)
|
|
} \
|
|
--set-default ODIN_ROOT $out/share
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
passthru.updateScript = nix-update-script { };
|
|
|
|
meta = {
|
|
description = "Fast, concise, readable, pragmatic and open sourced programming language";
|
|
downloadPage = "https://github.com/odin-lang/Odin";
|
|
homepage = "https://odin-lang.org/";
|
|
license = lib.licenses.bsd3;
|
|
mainProgram = "odin";
|
|
maintainers = with lib.maintainers; [
|
|
astavie
|
|
luc65r
|
|
znaniye
|
|
];
|
|
platforms = lib.platforms.unix;
|
|
broken = stdenv.hostPlatform.isMusl;
|
|
};
|
|
}
|