2018-08-20 20:43:41 +02:00
|
|
|
{ stdenv, fetchurl, autoconf, automake, libtool }:
|
2018-05-11 17:00:48 +02:00
|
|
|
|
|
|
|
stdenv.mkDerivation rec {
|
|
|
|
name = "libb2-${version}";
|
|
|
|
version = "0.98";
|
2015-08-23 19:00:31 +02:00
|
|
|
|
libbb2: Use "--enable-fat=yes" to avoid build nondeterminism
Otherwise it would pick various -march flags based on the CPU of the
compiling system, using beautiful code like this:
````
63 AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
64 [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
65 int op = $1, eax, ebx, ecx, edx;
66 FILE *f;
67 __asm__("cpuid"
68 : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
69 : "a" (op));
70 f = fopen("conftest_cpuid", "w"); if (!f) return 1;
71 fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
72 fclose(f);
73 return 0;
74 ])],
...
121 AC_CACHE_CHECK([whether avx is supported], [ax_cv_have_avx_ext],
122 [
123 ax_cv_have_avx_ext=no
124 if test "$((0x$ecx>>28&0x01))" = 1; then
125 ax_cv_have_avx_ext=yes
126 fi
127 ])
````
2016-08-30 21:34:40 +02:00
|
|
|
src = fetchurl {
|
|
|
|
url = "https://blake2.net/${name}.tar.gz";
|
2018-05-11 17:00:48 +02:00
|
|
|
sha256 = "1852gh8wwnsghdb9zhxdhw0173plpqzk684npxbl4bzk1hhzisal";
|
libbb2: Use "--enable-fat=yes" to avoid build nondeterminism
Otherwise it would pick various -march flags based on the CPU of the
compiling system, using beautiful code like this:
````
63 AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
64 [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
65 int op = $1, eax, ebx, ecx, edx;
66 FILE *f;
67 __asm__("cpuid"
68 : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
69 : "a" (op));
70 f = fopen("conftest_cpuid", "w"); if (!f) return 1;
71 fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
72 fclose(f);
73 return 0;
74 ])],
...
121 AC_CACHE_CHECK([whether avx is supported], [ax_cv_have_avx_ext],
122 [
123 ax_cv_have_avx_ext=no
124 if test "$((0x$ecx>>28&0x01))" = 1; then
125 ax_cv_have_avx_ext=yes
126 fi
127 ])
````
2016-08-30 21:34:40 +02:00
|
|
|
};
|
|
|
|
|
2018-05-11 17:00:48 +02:00
|
|
|
preConfigure = ''
|
|
|
|
patchShebangs autogen.sh
|
|
|
|
./autogen.sh
|
|
|
|
'';
|
|
|
|
|
2018-08-20 20:43:41 +02:00
|
|
|
configureFlags = stdenv.lib.optional stdenv.hostPlatform.isx86 "--enable-fat=yes";
|
libbb2: Use "--enable-fat=yes" to avoid build nondeterminism
Otherwise it would pick various -march flags based on the CPU of the
compiling system, using beautiful code like this:
````
63 AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1,
64 [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdio.h>], [
65 int op = $1, eax, ebx, ecx, edx;
66 FILE *f;
67 __asm__("cpuid"
68 : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
69 : "a" (op));
70 f = fopen("conftest_cpuid", "w"); if (!f) return 1;
71 fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx);
72 fclose(f);
73 return 0;
74 ])],
...
121 AC_CACHE_CHECK([whether avx is supported], [ax_cv_have_avx_ext],
122 [
123 ax_cv_have_avx_ext=no
124 if test "$((0x$ecx>>28&0x01))" = 1; then
125 ax_cv_have_avx_ext=yes
126 fi
127 ])
````
2016-08-30 21:34:40 +02:00
|
|
|
|
2018-05-11 17:00:48 +02:00
|
|
|
nativeBuildInputs = [ autoconf automake libtool ];
|
|
|
|
|
|
|
|
doCheck = true;
|
|
|
|
|
|
|
|
meta = with stdenv.lib; {
|
2015-08-23 19:00:31 +02:00
|
|
|
description = "The BLAKE2 family of cryptographic hash functions";
|
|
|
|
platforms = platforms.all;
|
|
|
|
maintainers = with maintainers; [ dfoxfranke ];
|
|
|
|
license = licenses.cc0;
|
|
|
|
};
|
|
|
|
}
|