lol
1{ lib
2, fetchFromGitHub
3, cmake
4, llvmPackages_11
5, unstableGitUpdater
6}:
7
8let
9 c2ffiBranch = "llvm-11.0.0";
10 llvmPackages = llvmPackages_11;
11in
12
13llvmPackages.stdenv.mkDerivation {
14 pname = "c2ffi-${c2ffiBranch}";
15 version = "unstable-2021-06-15";
16
17 src = fetchFromGitHub {
18 owner = "rpav";
19 repo = "c2ffi";
20 rev = "f50243926a0afb589de1078a073ac08910599582";
21 sha256 = "UstGicFzFY0/Jge5HGYTPwYSnh9OUBY5346ObZYfR54=";
22 };
23
24 passthru.updateScript = unstableGitUpdater {
25 url = "https://github.com/rpav/c2ffi.git";
26 branch = c2ffiBranch;
27 };
28
29 nativeBuildInputs = [
30 cmake
31 ];
32
33 buildInputs = [
34 llvmPackages.llvm
35 llvmPackages.clang
36 llvmPackages.libclang
37 ];
38
39 # This isn't much, but...
40 doInstallCheck = true;
41 installCheckPhase = ''
42 $out/bin/c2ffi --help 2>&1 >/dev/null
43 '';
44
45 # LLVM may be compiled with -fno-rtti, so let's just turn it off.
46 # A mismatch between lib{clang,LLVM}* and us can lead to the link time error:
47 # undefined reference to `typeinfo for clang::ASTConsumer'
48 CXXFLAGS="-fno-rtti";
49
50 meta = with lib; {
51 homepage = "https://github.com/rpav/c2ffi";
52 description = "An LLVM based tool for extracting definitions from C, C++, and Objective C header files for use with foreign function call interfaces";
53 license = licenses.lgpl21Only;
54 maintainers = with maintainers; [ attila-lendvai ];
55 };
56}