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