2020-02-13 12:19:12 +00:00
|
|
|
if defined(release):
|
|
|
|
switch("nimcache", "nimcache/release/$projectName")
|
|
|
|
else:
|
|
|
|
switch("nimcache", "nimcache/debug/$projectName")
|
2019-07-03 07:35:05 +00:00
|
|
|
|
2020-02-13 12:19:12 +00:00
|
|
|
if defined(windows):
|
2019-08-24 20:07:04 +00:00
|
|
|
# disable timestamps in Windows PE headers - https://wiki.debian.org/ReproducibleBuilds/TimestampsInPEBinaries
|
2020-02-13 12:19:12 +00:00
|
|
|
switch("passL", "-Wl,--no-insert-timestamp")
|
2019-04-11 21:30:26 +00:00
|
|
|
# increase stack size
|
2020-02-13 12:19:12 +00:00
|
|
|
switch("passL", "-Wl,--stack,8388608")
|
2019-04-24 23:49:41 +00:00
|
|
|
# https://github.com/nim-lang/Nim/issues/4057
|
|
|
|
--tlsEmulation:off
|
2020-02-13 12:19:12 +00:00
|
|
|
if defined(i386):
|
2019-11-12 14:34:12 +00:00
|
|
|
# set the IMAGE_FILE_LARGE_ADDRESS_AWARE flag so we can use PAE, if enabled, and access more than 2 GiB of RAM
|
2020-02-13 12:19:12 +00:00
|
|
|
switch("passL", "-Wl,--large-address-aware")
|
2019-10-25 17:03:55 +00:00
|
|
|
|
2019-10-07 08:29:39 +00:00
|
|
|
# The dynamic Chronicles output currently prevents us from using colors on Windows
|
|
|
|
# because these require direct manipulations of the stdout File object.
|
2020-02-13 12:19:12 +00:00
|
|
|
switch("define", "chronicles_colors=off")
|
2019-02-05 17:48:34 +00:00
|
|
|
|
2020-02-05 17:20:05 +00:00
|
|
|
# This helps especially for 32-bit x86, which sans SSE2 and newer instructions
|
|
|
|
# requires quite roundabout code generation for cryptography, and other 64-bit
|
|
|
|
# and larger arithmetic use cases, along with register starvation issues. When
|
|
|
|
# engineering a more portable binary release, this should be tweaked but still
|
|
|
|
# use at least -msse2 or -msse3.
|
2020-02-13 12:19:12 +00:00
|
|
|
if defined(disableMarchNative):
|
|
|
|
switch("passC", "-msse3")
|
|
|
|
else:
|
|
|
|
switch("passC", "-march=native")
|
|
|
|
if defined(windows):
|
2020-02-11 23:36:54 +00:00
|
|
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65782
|
2020-02-12 13:23:49 +00:00
|
|
|
# ("-fno-asynchronous-unwind-tables" breaks Nim's exception raising, sometimes)
|
2020-02-13 12:19:12 +00:00
|
|
|
switch("passC", "-mno-avx512vl")
|
2020-02-05 17:20:05 +00:00
|
|
|
|
2019-08-24 20:07:04 +00:00
|
|
|
--threads:on
|
|
|
|
--opt:speed
|
|
|
|
--excessiveStackTrace:on
|
2019-10-17 13:21:45 +00:00
|
|
|
# enable metric collection
|
2020-02-13 12:19:12 +00:00
|
|
|
--define:metrics
|
2020-02-26 00:14:20 +00:00
|
|
|
--define:chronicles_line_numbers
|
2020-03-28 22:04:43 +00:00
|
|
|
# for heap-usage-by-instance-type metrics and object base-type strings
|
|
|
|
--define:nimTypeNames
|
2019-11-12 23:22:21 +00:00
|
|
|
|
2020-05-25 18:55:07 +00:00
|
|
|
# switch("define", "snappy_implementation=libp2p")
|
|
|
|
|
2020-06-11 16:41:43 +00:00
|
|
|
const currentDir = currentSourcePath()[0 .. ^(len("config.nims") + 1)]
|
|
|
|
switch("define", "nim_compiler_path=" & currentDir & "env.sh nim")
|
|
|
|
|
2020-03-24 11:13:07 +00:00
|
|
|
switch("import", "testutils/moduletests")
|
|
|
|
|
2020-06-04 13:36:44 +00:00
|
|
|
const useLibStackTrace = not defined(macosx) and
|
2020-07-13 16:02:32 +00:00
|
|
|
not defined(windows) and
|
2020-06-04 13:36:44 +00:00
|
|
|
not defined(disable_libbacktrace)
|
|
|
|
|
|
|
|
when useLibStackTrace:
|
|
|
|
--define:nimStackTraceOverride
|
|
|
|
switch("import", "libbacktrace")
|
|
|
|
else:
|
|
|
|
--stacktrace:on
|
|
|
|
--linetrace:on
|
|
|
|
|
2019-11-12 23:22:21 +00:00
|
|
|
# the default open files limit is too low on macOS (512), breaking the
|
|
|
|
# "--debugger:native" build. It can be increased with `ulimit -n 1024`.
|
2020-02-13 12:19:12 +00:00
|
|
|
if not defined(macosx):
|
2019-11-12 17:05:05 +00:00
|
|
|
# add debugging symbols and original files and line numbers
|
|
|
|
--debugger:native
|
2020-02-13 12:19:12 +00:00
|
|
|
|
|
|
|
--define:nimOldCaseObjects # https://github.com/status-im/nim-confutils/issues/9
|
|
|
|
|
|
|
|
# `switch("warning[CaseTransition]", "off")` fails with "Error: invalid command line option: '--warning[CaseTransition]'"
|
|
|
|
switch("warning", "CaseTransition:off")
|
2019-08-24 20:07:04 +00:00
|
|
|
|
2020-06-03 12:49:32 +00:00
|
|
|
# The compiler doth protest too much, methinks, about all these cases where it can't
|
|
|
|
# do its (N)RVO pass: https://github.com/nim-lang/RFCs/issues/230
|
|
|
|
switch("warning", "ObservableStores:off")
|
|
|
|
|
|
|
|
# Too many false positives for "Warning: method has lock level <unknown>, but another method has 0 [LockLevel]"
|
|
|
|
switch("warning", "LockLevel:off")
|
|
|
|
|
2020-08-08 19:24:14 +00:00
|
|
|
# Useful for Chronos metrics.
|
|
|
|
--define:chronosFutureTracking
|
|
|
|
|