1{ stdenv, fetchurl, perl }:
2
3stdenv.mkDerivation rec {
4 name = "mbedtls-2.6.0";
5
6 src = fetchurl {
7 url = "https://tls.mbed.org/download/${name}-gpl.tgz";
8 sha256 = "042q1l4708zjn5v72sa9qdvgx173kmy4hbcd23wj5vqd6vbmk6d9";
9 };
10
11 nativeBuildInputs = [ perl ];
12
13 patchPhase = stdenv.lib.optionalString stdenv.isDarwin ''
14 substituteInPlace library/Makefile --replace "-soname" "-install_name"
15 substituteInPlace tests/scripts/run-test-suites.pl --replace "LD_LIBRARY_PATH" "DYLD_LIBRARY_PATH"
16 # Necessary for install_name_tool below
17 echo "LOCAL_LDFLAGS += -headerpad_max_install_names" >> programs/Makefile
18 '';
19
20 postPatch = ''
21 patchShebangs .
22 '';
23
24 makeFlags = [
25 "SHARED=1"
26 ];
27
28 installFlags = [
29 "DESTDIR=\${out}"
30 ];
31
32 postInstall = stdenv.lib.optionalString stdenv.isDarwin ''
33 install_name_tool -change libmbedcrypto.so.0 $out/lib/libmbedcrypto.so.0 $out/lib/libmbedtls.so.10
34 install_name_tool -change libmbedcrypto.so.0 $out/lib/libmbedcrypto.so.0 $out/lib/libmbedx509.so.0
35 install_name_tool -change libmbedx509.so.0 $out/lib/libmbedx509.so.0 $out/lib/libmbedtls.so.10
36
37 for exe in $out/bin/*; do
38 install_name_tool -change libmbedtls.so.10 $out/lib/libmbedtls.so.10 $exe
39 install_name_tool -change libmbedx509.so.0 $out/lib/libmbedx509.so.0 $exe
40 install_name_tool -change libmbedcrypto.so.0 $out/lib/libmbedcrypto.so.0 $exe
41 done
42 '';
43
44 doCheck = true;
45
46 meta = with stdenv.lib; {
47 homepage = https://tls.mbed.org/;
48 description = "Portable cryptographic and SSL/TLS library, aka polarssl";
49 license = licenses.gpl3;
50 platforms = platforms.all;
51 maintainers = with maintainers; [ wkennington fpletz ];
52 };
53}