-
-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathconfig.nims
112 lines (85 loc) · 2.62 KB
/
config.nims
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
import os, strutils
proc defaultConfig() =
--cincludes:extras
--path:src
--hints:on
--verbosity:1
hint "ProcessingStmt":off
hint "XCannotRaiseY":off
hint "ConvFromXtoItselfNotNeeded":off
warning "GcUnsafe":off
warning "CastSizes":off
warning "ProveInit":off
warning "ProveField":off
warning "Uninit":off
warning "BareExcept":off
--threads:off
--skipUserCfg:on
--colors:off
--define:danger
--panics:off
--mm:orc
--define:useMalloc
--checks:off
--cincludes:extras
--opt:speed
--nimcache:".cache"
if hostOS != "windows":
--passL:"-pthread"
--path:src
proc configGMPOnWindows() {.used.} =
if "windows" == hostOS:
let gccPath = staticExec("pkg-config --libs-only-L gmp")
.strip()
.replace("-L","")
.replace("/lib","/bin")
.normalizedPath()
switch "gcc.path", gccPath
proc configMimalloc() =
let
mimallocPath = projectDir() / "extras" / "mimalloc"
mimallocStatic = "mimallocStatic=\"" & (mimallocPath / "src" / "static.c") & '"'
mimallocIncludePath = "mimallocIncludePath=\"" & (mimallocPath / "include") & '"'
switch "define", mimallocStatic
switch "define", mimallocIncludePath
if get("cc") in @["gcc", "clang", "icc", "icl"]:
--passC:"-ftls-model=initial-exec -fno-builtin-malloc"
"stdlib".patchFile("malloc"):
"src"/"extras"/"mimalloc"
proc configWinPCRE() =
--dynlibOverride:pcre64
proc configMacosPCRE() =
--dynlibOverride:pcre
proc configWebkit() =
const webkitVersions = ["4.1", "4.0"]
proc getWebkitVersion(): string =
for version in webkitVersions:
let ret = gorgeEx("pkg-config --exists webkit2gtk-" & version)
if ret.exitCode == 0:
return version
return ""
switch "define", "webkitVersion=" & getWebkitVersion()
proc configWinSSL() =
--define:"noOpenSSLHacks"
--define:"sslVersion:("
--dynlibOverride:"ssl-"
--dynlibOverride:"crypto-"
proc configUnixSSL() =
--dynlibOverride:ssl
--dynlibOverride:crypto
proc main() =
defaultConfig()
# see: https://github.com/arturo-lang/arturo/pull/1643
# configGMPOnWindows()
configMimalloc()
if defined(linux):
configWebkit()
if defined(windows):
configWinPCRE()
if defined(macosx):
configMacosPCRE()
if defined(windows) and defined(ssl):
configWinSSL()
if not defined(windows) and defined(ssl):
configUnixSSL()
main()