1# SwiftPM dependencies are normally not installed using CMake, and only provide
2# CMake modules to link them together in a build tree. We have separate
3# derivations, so need a real install step. Here we provide our own minimal
4# CMake modules to install along with the build products.
5{
6 lib,
7 stdenv,
8 swift,
9}:
10let
11
12 inherit (stdenv.hostPlatform) extensions;
13
14 # This file exports shell snippets for use in postInstall.
15 mkInstallScript = module: template: ''
16 mkdir -p $out/lib/cmake/${module}
17 (
18 export staticLibExt="${extensions.staticLibrary}"
19 export sharedLibExt="${extensions.sharedLibrary}"
20 export swiftOs="${swift.swiftOs}"
21 substituteAll \
22 ${builtins.toFile "${module}Config.cmake" template} \
23 $out/lib/cmake/${module}/${module}Config.cmake
24 )
25 '';
26
27in
28lib.mapAttrs mkInstallScript {
29 SwiftSystem = ''
30 add_library(SwiftSystem::SystemPackage STATIC IMPORTED)
31 set_property(TARGET SwiftSystem::SystemPackage PROPERTY IMPORTED_LOCATION "@out@/lib/swift_static/@swiftOs@/libSystemPackage@staticLibExt@")
32 '';
33
34 SwiftCollections = ''
35 add_library(SwiftCollections::Collections STATIC IMPORTED)
36 set_property(TARGET SwiftCollections::Collections PROPERTY IMPORTED_LOCATION "@out@/lib/swift_static/@swiftOs@/libCollections@staticLibExt@")
37
38 add_library(SwiftCollections::DequeModule STATIC IMPORTED)
39 set_property(TARGET SwiftCollections::DequeModule PROPERTY IMPORTED_LOCATION "@out@/lib/swift_static/@swiftOs@/libDequeModule@staticLibExt@")
40
41 add_library(SwiftCollections::OrderedCollections STATIC IMPORTED)
42 set_property(TARGET SwiftCollections::OrderedCollections PROPERTY IMPORTED_LOCATION "@out@/lib/swift_static/@swiftOs@/libOrderedCollections@staticLibExt@")
43 '';
44
45 TSC = ''
46 add_library(TSCLibc SHARED IMPORTED)
47 set_property(TARGET TSCLibc PROPERTY IMPORTED_LOCATION "@out@/lib/libTSCLibc@sharedLibExt@")
48
49 add_library(TSCBasic SHARED IMPORTED)
50 set_property(TARGET TSCBasic PROPERTY IMPORTED_LOCATION "@out@/lib/libTSCBasic@sharedLibExt@")
51
52 add_library(TSCUtility SHARED IMPORTED)
53 set_property(TARGET TSCUtility PROPERTY IMPORTED_LOCATION "@out@/lib/libTSCUtility@sharedLibExt@")
54 '';
55
56 ArgumentParser = ''
57 add_library(ArgumentParser SHARED IMPORTED)
58 set_property(TARGET ArgumentParser PROPERTY IMPORTED_LOCATION "@out@/lib/swift/@swiftOs@/libArgumentParser@sharedLibExt@")
59
60 add_library(ArgumentParserToolInfo SHARED IMPORTED)
61 set_property(TARGET ArgumentParserToolInfo PROPERTY IMPORTED_LOCATION "@out@/lib/swift/@swiftOs@/libArgumentParserToolInfo@sharedLibExt@")
62 '';
63
64 Yams = ''
65 add_library(Yams SHARED IMPORTED)
66 set_property(TARGET Yams PROPERTY IMPORTED_LOCATION "@out@/lib/swift/@swiftOs@/libYams@sharedLibExt@")
67 '';
68
69 LLBuild = ''
70 add_library(libllbuild SHARED IMPORTED)
71 set_property(TARGET libllbuild PROPERTY IMPORTED_LOCATION "@out@/lib/libllbuild@sharedLibExt@")
72
73 add_library(llbuildSwift SHARED IMPORTED)
74 set_property(TARGET llbuildSwift PROPERTY IMPORTED_LOCATION "@out@/lib/swift/pm/llbuild/libllbuildSwift@sharedLibExt@")
75 '';
76
77 SwiftDriver = ''
78 add_library(SwiftDriver SHARED IMPORTED)
79 set_property(TARGET SwiftDriver PROPERTY IMPORTED_LOCATION "@out@/lib/libSwiftDriver@sharedLibExt@")
80
81 add_library(SwiftDriverExecution SHARED IMPORTED)
82 set_property(TARGET SwiftDriverExecution PROPERTY IMPORTED_LOCATION "@out@/lib/libSwiftDriverExecution@sharedLibExt@")
83
84 add_library(SwiftOptions SHARED IMPORTED)
85 set_property(TARGET SwiftOptions PROPERTY IMPORTED_LOCATION "@out@/lib/libSwiftOptions@sharedLibExt@")
86 '';
87
88 SwiftCrypto = ''
89 add_library(Crypto SHARED IMPORTED)
90 set_property(TARGET Crypto PROPERTY IMPORTED_LOCATION "@out@/lib/swift/@swiftOs@/libCrypto@sharedLibExt@")
91 '';
92}