# 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 # Examples of how to setup a cross-compiler: # Cross-compiling for Raspberry Pi. # (This compiler is available in gcc-arm-linux-gnueabihf package on Ubuntu) arm.linux.gcc.exe = "arm-linux-gnueabihf-gcc" arm.linux.gcc.linkerexe = "arm-linux-gnueabihf-gcc" # For OpenWRT, you will also need to adjust PATH to point to your toolchain. 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 @if nimHasNilChecks: nilchecks:off @end @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 @if android: cc = clang @if termux: gcc.options.linker = "-landroid-glob" gcc.cpp.options.linker = "-landroid-glob" clang.options.linker = "-landroid-glob" clang.cpp.options.linker = "-landroid-glob" tcc.options.linker = "-landroid-glob" @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" @elif windows: gcc.options.always = "-w -mno-ms-bitfields" gcc.cpp.options.always = "-w -fpermissive -mno-ms-bitfields" @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 = "vccexe.exe" vcc.cpp.exe = "vccexe.exe" vcc.linkerexe = "vccexe.exe" vcc.cpp.linkerexe = "vccexe.exe" # set the options for specific platforms: vcc.options.always = "/nologo" @if release: # no debug symbols in release builds @else: vcc.options.always %= "${vcc.options.always} /Z7" # Get VCC to output full debug symbols in the obj file @end vcc.cpp.options.always %= "${vcc.options.always} /EHsc" vcc.options.linker = "/nologo /DEBUG /Zi /F33554432" # set the stack size to 32 MiB vcc.cpp.options.linker %= "${vcc.options.linker}" @if i386: vcc.options.always %= "--platform:x86 ${vcc.options.always}" vcc.cpp.options.always %= "--platform:x86 ${vcc.cpp.options.always}" vcc.options.linker %= "--platform:x86 ${vcc.options.linker}" vcc.cpp.options.linker %= "--platform:x86 ${vcc.cpp.options.linker}" @elif amd64: vcc.options.always %= "--platform:amd64 ${vcc.options.always}" vcc.cpp.options.always %= "--platform:amd64 ${vcc.cpp.options.always}" vcc.options.linker %= "--platform:amd64 ${vcc.options.linker}" vcc.cpp.options.linker %= "--platform:amd64 ${vcc.cpp.options.linker}" @elif arm: vcc.options.always %= "--platform:arm ${vcc.options.always}" vcc.cpp.options.always %= "--platform:arm ${vcc.cpp.options.always}" vcc.options.linker %= "--platform:arm ${vcc.options.linker}" vcc.cpp.options.linker %= "--platform:arm ${vcc.cpp.options.linker}" @end vcc.options.debug = "/Od" vcc.cpp.options.debug = "/Od" vcc.options.speed = "/O2" vcc.cpp.options.speed = "/O2" vcc.options.size = "/O1" vcc.cpp.options.size = "/O1" # Configuration for the Tiny C Compiler: tcc.options.always = "-w"