/
dub.sdl
116 lines (100 loc) · 3.66 KB
/
dub.sdl
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
name "tls"
description "TLS stream implementations"
dependency "vibe-d:stream" version="*"
lflags "-L/usr/local/opt/openssl@1.1/lib" "-L/usr/local/opt/openssl/lib" platform="osx"
targetType "library"
sourcePaths "."
importPaths "."
copyFiles "../lib/win-i386/libssl-1_1.dll" "../lib/win-i386/libcrypto-1_1.dll" platform="windows-x86"
copyFiles "../lib/win-amd64/libssl-1_1-x64.dll" "../lib/win-amd64/libcrypto-1_1-x64.dll" platform="windows-x86_64"
configuration "openssl-mscoff" {
platforms "windows-x86_mscoff" "windows-x86_64" "windows-x86-ldc"
dependency "openssl" version=">=1.0.0+1.0.0e"
sourceFiles "../lib/win-i386-mscoff/libssl.lib" "../lib/win-i386-mscoff/libcrypto.lib" platform="windows-x86"
sourceFiles "../lib/win-amd64/libssl.lib" "../lib/win-amd64/libcrypto.lib" platform="windows-x86_64"
}
configuration "openssl" {
dependency "openssl" version="~>1.0"
// Windows
sourceFiles "../lib/win-i386/libssl.lib" "../lib/win-i386/libcrypto.lib" platform="windows-x86-dmd"
// Posix
preGenerateCommands `echo '
/+ dub.sdl:
name "script"
+/
import std.algorithm;
import std.conv;
import std.file;
import std.functional;
import std.path;
import std.process;
import std.range;
import std.stdio;
import std.string;
import std.uni;
void main()
{
auto dir = environment.get("DUB_PACKAGE_DIR");
if (dir.buildPath("tls").exists) {
dir = dir.buildPath("tls");
}
string opensslVersion;
try {
const res = execute(["pkg-config", "openssl", "--modversion"]);
if (res.status == 0)
opensslVersion = res.output.strip();
} catch (Exception e) {}
if (!opensslVersion.length) try
{
const res = execute(["openssl", "version"]).output;
if (res.canFind("OpenSSL ")) {
opensslVersion = res.splitter(" ").dropOne.front.filter!(not!(std.uni.isAlpha)).text;
} else if (res.canFind("LibreSSL ")) {
writeln("\tWarning: Your default openssl binary points to LibreSSL, which is not supported.");
version (OSX) {
writeln("\tOn Mac OSX, this is the default behavior.");
writeln("\tIf you installed openssl via a package manager, you need to tell DUB how to find it.");
writeln("\tAssuming brew, run [brew link openssl] and follow the instructions for pkg-config.\n");
}
}
} catch (Exception e) {}
if (!opensslVersion.length)
{
writeln("\tWarning: Could not find OpenSSL version via pkg-config nor by calling the openssl binary.");
writeln("\tAssuming version 1.1.0.");
writeln("\tYou might need to export PKG_CONFIG_PATH or install the openssl package if you have a library-only package.");
opensslVersion = "1.1.0";
}
auto data = text("module openssl_version;\nenum OPENSSL_VERSION=\"", opensslVersion, "\";\n");
auto output = dir.buildPath("openssl_version.d");
if (!output.exists || output.readText.strip != data.strip)
data.toFile(output);
}
' | ${DUB} - || true` platform="posix"
}
configuration "openssl-1.1" {
platforms "posix" "windows"
dependency "openssl" version="~>1.0"
versions "VibeUseOpenSSL11"
sourceFiles "../lib/win-i386-mscoff/libssl.lib" "../lib/win-i386-mscoff/libcrypto.lib" platform="windows-x86"
sourceFiles "../lib/win-amd64/libssl.lib" "../lib/win-amd64/libcrypto.lib" platform="windows-x86_64"
}
configuration "openssl-1.1-optlink" {
platforms "windows-x86-dmd"
sourceFiles "../lib/win-i386/libssl.lib" "../lib/win-i386/libcrypto.lib" platform="windows-x86-dmd"
}
configuration "openssl-1.0" {
platforms "posix"
dependency "openssl" version="~>1.0"
versions "VibeUseOpenSSL10"
}
configuration "openssl-0.9" {
platforms "posix"
dependency "openssl" version="~>1.0"
versions "VibeUseOldOpenSSL"
}
configuration "botan" {
dependency "botan" version="~>1.12.0"
}
configuration "notls" {
}