1{
2 lib,
3 stdenv,
4 swift,
5 swiftpm,
6 swiftPackages,
7}:
8
9swiftPackages.stdenv.mkDerivation (finalAttrs: {
10 name = "swift-cxx-interop-test";
11
12 src = ./src;
13
14 nativeBuildInputs = [
15 swift
16 swiftpm
17 ];
18
19 installPhase = ''
20 runHook preInstall
21
22 binPath="$(swiftpmBinPath)"
23 mkdir -p -- "$out/bin"
24 cp -- "$binPath/${finalAttrs.meta.mainProgram}" "$out/bin"
25
26 runHook postInstall
27 '';
28
29 installCheckPhase = ''
30 runHook preInstallCheck
31
32 "$out/bin/${finalAttrs.meta.mainProgram}" | grep 'Hello, world!'
33
34 runHook postInstallCheck
35 '';
36
37 doInstallCheck = true;
38
39 env = {
40 # Gross hack copied from `protoc-gen-swift` :(
41 LD_LIBRARY_PATH = lib.optionalString stdenv.hostPlatform.isLinux (
42 lib.makeLibraryPath [
43 swiftPackages.Dispatch
44 ]
45 );
46 };
47
48 meta = {
49 inherit (swift.meta)
50 team
51 platforms
52 badPlatforms
53 ;
54 license = lib.licenses.mit;
55 mainProgram = "CxxInteropTest";
56 };
57})