diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/cmocka')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/cmocka/default.nix | 56 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/cmocka/uintptr_t.patch | 16 |
2 files changed, 72 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/cmocka/default.nix b/nixpkgs/pkgs/development/libraries/cmocka/default.nix new file mode 100644 index 000000000000..6c88d1baebfa --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/cmocka/default.nix @@ -0,0 +1,56 @@ +{ fetchurl, fetchpatch, lib, stdenv, cmake }: + +stdenv.mkDerivation rec { + pname = "cmocka"; + majorVersion = "1.1"; + version = "${majorVersion}.7"; + + src = fetchurl { + url = "https://cmocka.org/files/${majorVersion}/cmocka-${version}.tar.xz"; + sha256 = "sha256-gQVw6wuNZIBDMfgrKf9Hx5DOnNaxY+mNR6SAcEfsrYI="; + }; + + patches = [ + ./uintptr_t.patch + ]; + + nativeBuildInputs = [ cmake ]; + + cmakeFlags = lib.optional doCheck "-DUNIT_TESTING=ON" + ++ lib.optional stdenv.hostPlatform.isStatic "-DBUILD_SHARED_LIBS=OFF"; + + doCheck = true; + + meta = with lib; { + description = "Lightweight library to simplify and generalize unit tests for C"; + longDescription = '' + There are a variety of C unit testing frameworks available however + many of them are fairly complex and require the latest compiler + technology. Some development requires the use of old compilers which + makes it difficult to use some unit testing frameworks. In addition + many unit testing frameworks assume the code being tested is an + application or module that is targeted to the same platform that will + ultimately execute the test. Because of this assumption many + frameworks require the inclusion of standard C library headers in the + code module being tested which may collide with the custom or + incomplete implementation of the C library utilized by the code under + test. + + Cmocka only requires a test application is linked with the standard C + library which minimizes conflicts with standard C library headers. + Also, CMocka tries to avoid the use of some of the newer features of + C compilers. + + This results in CMocka being a relatively small library that can be + used to test a variety of exotic code. If a developer wishes to + simply test an application with the latest compiler then other unit + testing frameworks may be preferable. + + This is the successor of Google's Cmockery. + ''; + homepage = "https://cmocka.org/"; + license = licenses.asl20; + platforms = platforms.all; + maintainers = with maintainers; [ kragniz rasendubi ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/cmocka/uintptr_t.patch b/nixpkgs/pkgs/development/libraries/cmocka/uintptr_t.patch new file mode 100644 index 000000000000..ac69560d1c99 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/cmocka/uintptr_t.patch @@ -0,0 +1,16 @@ +Resolve messy situation with uintptr_t and stdint.h + +Platforms common in nixpkgs will have stdint.h - thereby we avoid problems +that seem complicated to avoid. References: +https://gitlab.com/cmocka/cmocka/-/issues/38#note_1286565655 +https://git.alpinelinux.org/aports/plain/main/cmocka/musl_uintptr.patch?id=6a15dd0d0ba9cc354a621fb359ca5e315ff2eabd + +It isn't easy, as 1.1.6 codebase is missing stdint.h includes on many places, +and HAVE_UINTPTR_T from cmake also wouldn't get on all places it needs to. +--- a/include/cmocka.h ++++ b/include/cmocka.h +@@ -18,2 +18,4 @@ + #define CMOCKA_H_ ++#include <stdint.h> ++#define HAVE_UINTPTR_T 1 + |