diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/blst')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/blst/default.nix | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/blst/default.nix b/nixpkgs/pkgs/development/libraries/blst/default.nix new file mode 100644 index 000000000000..71b2814100ef --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/blst/default.nix @@ -0,0 +1,77 @@ +{ stdenv, lib, fetchFromGitHub, autoreconfHook }: + +stdenv.mkDerivation ( finalAttrs: { + pname = "blst"; + version = "0.3.10"; + + src = fetchFromGitHub { + owner = "supranational"; + repo = "blst"; + rev = "v${finalAttrs.version}"; + hash = "sha256-xero1aTe2v4IhWIJaEDUsVDOfE77dOV5zKeHWntHogY="; + }; + + buildPhase = '' + runHook preBuild + + ./build.sh ${lib.optionalString stdenv.targetPlatform.isWindows "flavour=mingw64"} + ./build.sh -shared ${lib.optionalString stdenv.targetPlatform.isWindows "flavour=mingw64"} + + runHook postBuild + ''; + installPhase = '' + runHook preInstall + + mkdir -p $out/{lib,include} + for lib in libblst.{a,so,dylib}; do + if [ -f $lib ]; then + cp $lib $out/lib/ + fi + done + cp bindings/{blst.h,blst_aux.h} $out/include + + for lib in blst.dll; do + if [ -f $lib ]; then + mkdir -p $out/bin + cp $lib $out/bin/ + fi + done + + mkdir -p $out/lib/pkgconfig + cat <<EOF > $out/lib/pkgconfig/libblst.pc + prefix=$out + exec_prefix=''\\''${prefix} + libdir=''\\''${exec_prefix}/lib + includedir=''\\''${prefix}/include + + Name: libblst + Description: ${finalAttrs.meta.description} + URL: ${finalAttrs.meta.homepage} + Version: ${finalAttrs.version} + + Cflags: -I''\\''${includedir} + Libs: -L''\\''${libdir} -lblst + Libs.private: + EOF + + runHook postInstall + ''; + + # ensure we have the right install id set. Otherwise the library + # wouldn't be found during install. The alternative would be to work + # lib.optional stdenv.isDarwin "LDFLAGS=-Wl,-install_name,$(out)/lib/libblst.dylib"; + # into the setup.sh + postFixup = lib.optionalString stdenv.isDarwin '' + install_name_tool -id $out/lib/libblst.dylib $out/lib/libblst.dylib + ''; + + doCheck = true; + + meta = with lib; { + description = "Multilingual BLS12-381 signature library"; + homepage = "https://github.com/supranational/blst"; + license = licenses.isc; + maintainers = with maintainers; [ iquerejeta yvan-sraka ]; + platforms = platforms.all; + }; +}) |