1{ stdenv
2, fetchFromGitHub
3
4, cmake
5, ninja
6, perl # Project uses Perl for scripting and testing
7
8, enableThreading ? true # Threading can be disabled to increase security https://tls.mbed.org/kb/development/thread-safety-and-multi-threading
9}:
10
11stdenv.mkDerivation rec {
12 name = "mbedtls-${version}";
13 version = "2.12.0";
14
15 src = fetchFromGitHub {
16 owner = "ARMmbed";
17 repo = "mbedtls";
18 rev = name;
19 sha256 = "09snlzlbn8yq95dnfbj2g5bh6y4q82xkaph7qp9ddnlqiaqcji2h";
20 };
21
22 nativeBuildInputs = [ cmake ninja perl ];
23
24 postConfigure = stdenv.lib.optionals enableThreading ''
25 perl scripts/config.pl set MBEDTLS_THREADING_C # Threading abstraction layer
26 perl scripts/config.pl set MBEDTLS_THREADING_PTHREAD # POSIX thread wrapper layer for the threading layer.
27 '';
28
29 cmakeFlags = [ "-DUSE_SHARED_MBEDTLS_LIBRARY=on" ];
30
31 meta = with stdenv.lib; {
32 homepage = https://tls.mbed.org/;
33 description = "Portable cryptographic and TLS library, formerly known as PolarSSL";
34 license = licenses.asl20;
35 platforms = platforms.all;
36 maintainers = with maintainers; [ wkennington fpletz ];
37 };
38}