Created
August 21, 2017 10:49
-
-
Save mashingan/6cd3af4528ad5c11ed4f27f3aac72cc4 to your computer and use it in GitHub Desktop.
Nim config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Configuration file for the Nim Compiler. | |
# (c) 2017 Andreas Rumpf | |
# Feel free to edit the default values as you need. | |
# You may set environment variables with | |
# @putenv "key" "val" | |
# Environment variables can be accessed like so: | |
# gcc.path %= "$CC_PATH" | |
cc = gcc | |
# additional options always passed to the compiler: | |
--parallel_build: "0" # 0 to auto-detect number of processors | |
hint[LineTooLong]=off | |
#hint[XDeclaredButNotUsed]=off | |
# example of how to setup a cross-compiler: | |
arm.linux.gcc.exe = "arm-linux-gcc" | |
arm.linux.gcc.linkerexe = "arm-linux-gcc" | |
mips.linux.gcc.exe = "mips-openwrt-linux-gcc" | |
mips.linux.gcc.linkerexe = "mips-openwrt-linux-gcc" | |
path="$lib/deprecated/core" | |
path="$lib/deprecated/pure" | |
path="$lib/pure/collections" | |
path="$lib/pure/concurrency" | |
path="$lib/impure" | |
path="$lib/wrappers" | |
path="$lib/wrappers/linenoise" | |
path="$lib/windows" | |
path="$lib/posix" | |
path="$lib/js" | |
path="$lib/pure/unidecode" | |
path="$lib/arch" | |
path="$lib/core" | |
path="$lib/pure" | |
@if nimbabel: | |
nimblepath="$home/.nimble/pkgs/" | |
@if not windows: | |
nimblepath="/opt/nimble/pkgs/" | |
@else: | |
# TODO: | |
@end | |
@end | |
@if release or quick: | |
obj_checks:off | |
field_checks:off | |
range_checks:off | |
bound_checks:off | |
overflow_checks:off | |
assertions:off | |
stacktrace:off | |
linetrace:off | |
debugger:off | |
line_dir:off | |
dead_code_elim:on | |
@end | |
@if release: | |
opt:speed | |
@end | |
@if unix: | |
@if not bsd or haiku: | |
# -fopenmp | |
gcc.options.linker = "-ldl" | |
gcc.cpp.options.linker = "-ldl" | |
clang.options.linker = "-ldl" | |
clang.cpp.options.linker = "-ldl" | |
tcc.options.linker = "-ldl" | |
@end | |
@if bsd or haiku: | |
# BSD got posix_spawn only recently, so we deactivate it for osproc: | |
define:useFork | |
# at least NetBSD has problems with thread local storage: | |
tlsEmulation:on | |
@end | |
@if haiku: | |
# -fopenmp | |
gcc.options.linker = "-lroot -lnetwork" | |
gcc.cpp.options.linker = "-lroot -lnetwork" | |
clang.options.linker = "-lroot -lnetwork" | |
clang.cpp.options.linker = "-lroot -lnetwork" | |
tcc.options.linker = "-lroot -lnetwork" | |
@end | |
@end | |
# Configuration for the Intel C/C++ compiler: | |
@if windows: | |
icl.options.speed = "/Ox /arch:SSE2" | |
icl.options.always = "/nologo" | |
@end | |
# Configuration for the GNU C/C++ compiler: | |
@if windows: | |
#gcc.path = r"$nim\dist\mingw\bin" | |
@if gcc: | |
tlsEmulation:on | |
@end | |
@end | |
@if macosx or freebsd: | |
cc = clang | |
tlsEmulation:on | |
gcc.options.always = "-w" | |
gcc.cpp.options.always = "-w -fpermissive" | |
@else: | |
gcc.options.always = "-w" | |
gcc.cpp.options.always = "-w -fpermissive" | |
@end | |
# Configuration for Objective-C compiler: | |
# | |
# Options for GNUStep. GNUStep configuration varies wildly, so you'll probably | |
# have to add additional compiler and linker flags on a per-project basis. | |
gcc.objc.options.linker = "-lobjc -lgnustep-base" | |
llvm_gcc.objc.options.linker = "-lobjc -lgnustep-base" | |
clang.objc.options.linker = "-lobjc -lgnustep-base" | |
# Options for Mac OS X. Mac OS X uses its own Objective-C stack that is | |
# totally different from GNUStep. | |
@if macosx: | |
gcc.objc.options.linker = "-framework Foundation" | |
llvm_gcc.objc.options.linker = "-framework Foundation" | |
clang.objc.options.linker = "-framework Foundation" | |
@end | |
# Options for FreeBSD, OpenBSD, NetBSD linker to add locations for searching | |
# shared libraries. | |
@if freebsd or openbsd or netbsd: | |
gcc.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib" | |
gcc.cpp.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib" | |
llvm_gcc.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib" | |
llvm_gcc.cpp.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib" | |
clang.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib" | |
clang.cpp.options.linker = "-Wl,-rpath=.:/usr/local/lib:/usr/pkg/lib:/usr/X11R6/lib" | |
@end | |
# Configuration for the VxWorks | |
# This has been tested with VxWorks 6.9 only | |
@if vxworks: | |
# For now we only support compiling RTPs applications (i.e. no DKMs) | |
gcc.options.always = "-mrtp -fno-strict-aliasing -D_C99 -D_HAS_C9X -std=c99 -fasm -Wall -Wno-write-strings" | |
# The linker config must add the VxWorks common library for the selected | |
# processor which is usually found in: | |
# "$WIND_BASE/target/lib/usr/lib/PROCESSOR_FAMILY/PROCESSOR_TYPE/common", | |
# where PROCESSOR_FAMILY and PROCESSOR_TYPE are those supported by the VxWorks | |
# compiler (e.g. ppc/PPC32 or mips/MIPSI64, etc) | |
# For now we only support the PowerPC CPU | |
gcc.options.linker %= "-L $WIND_BASE/target/lib/usr/lib/ppc/PPC32/common -mrtp -fno-strict-aliasing -D_C99 -D_HAS_C9X -std=c99 -fasm -Wall -Wno-write-strings" | |
@end | |
gcc.options.speed = "-O3 -fno-strict-aliasing" | |
gcc.options.size = "-Os" | |
@if windows: | |
gcc.options.debug = "-g3 -O0 -gdwarf-3" | |
@else: | |
gcc.options.debug = "-g3 -O0" | |
@end | |
gcc.cpp.options.speed = "-O3 -fno-strict-aliasing" | |
gcc.cpp.options.size = "-Os" | |
gcc.cpp.options.debug = "-g3 -O0" | |
#passl = "-pg" | |
# Configuration for the LLVM GCC compiler: | |
llvm_gcc.options.debug = "-g" | |
llvm_gcc.options.always = "-w" | |
llvm_gcc.options.speed = "-O2" | |
llvm_gcc.options.size = "-Os" | |
# Configuration for the LLVM CLang compiler: | |
clang.options.debug = "-g" | |
clang.options.always = "-w" | |
clang.options.speed = "-O3" | |
clang.options.size = "-Os" | |
# Configuration for the Visual C/C++ compiler: | |
vcc.exe = "cl.exe" | |
vcc.linkerexe = "cl.exe" | |
# set the options for specific platforms: | |
@if i386: | |
vcc.options.always = "--platform:x86 /nologo" | |
vcc.options.linker = "--platform:x86 /nologo /DEBUG /Zi /F33554432" # set the stack size to 32 MiB | |
@elif amd64: | |
vcc.options.always = "--platform:amd64 /nologo" | |
vcc.options.linker = "--platform:amd64 /nologo /DEBUG /Zi /F33554432" # set the stack size to 32 MiB | |
@elif arm: | |
vcc.options.always = "--platform:arm /nologo" | |
vcc.options.linker = "--platform:arm /nologo /DEBUG /Zi /F33554432" # set the stack size to 32 MiB | |
@else: | |
vcc.options.always = "/nologo" | |
vcc.options.linker = "/nologo /DEBUG /Zi /F33554432" # set the stack size to 32 MiB | |
@end | |
vcc.options.debug = "/Zi /FS /Od" | |
vcc.options.speed = "/O2" | |
vcc.options.size = "/O1" | |
# Configuration for the Tiny C Compiler: | |
tcc.options.always = "-w" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment