Mitigate issues related to compiler options when cross-compiling (#21330)
* Document C compiler options config when cross-compiling * Allow empty string to override default
This commit is contained in:
parent
38f876dd48
commit
7dc80a7fef
2 changed files with 8 additions and 4 deletions
|
|
@ -328,7 +328,9 @@ proc getConfigVar(conf: ConfigRef; c: TSystemCC, suffix: string): string =
|
||||||
platform.OS[conf.target.targetOS].name & '.' &
|
platform.OS[conf.target.targetOS].name & '.' &
|
||||||
CC[c].name & fullSuffix
|
CC[c].name & fullSuffix
|
||||||
result = getConfigVar(conf, fullCCname)
|
result = getConfigVar(conf, fullCCname)
|
||||||
if result.len == 0:
|
if existsConfigVar(conf, fullCCname):
|
||||||
|
result = getConfigVar(conf, fullCCname)
|
||||||
|
else:
|
||||||
# not overridden for this cross compilation setting?
|
# not overridden for this cross compilation setting?
|
||||||
result = getConfigVar(conf, CC[c].name & fullSuffix)
|
result = getConfigVar(conf, CC[c].name & fullSuffix)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -316,14 +316,16 @@ Another way is to make Nim invoke a cross compiler toolchain:
|
||||||
nim c --cpu:arm --os:linux myproject.nim
|
nim c --cpu:arm --os:linux myproject.nim
|
||||||
```
|
```
|
||||||
|
|
||||||
For cross compilation, the compiler invokes a C compiler named
|
For cross compilation, the compiler invokes a C compiler named like
|
||||||
like `$cpu.$os.$cc` (for example arm.linux.gcc) and the configuration
|
`$cpu.$os.$cc` (for example `arm.linux.gcc`) with options defined in
|
||||||
system is used to provide meaningful defaults. For example for `ARM` your
|
`$cpu.$os.$cc.options.always`. The configuration system is used to provide
|
||||||
|
meaningful defaults. For example, for Linux on a 32-bit ARM CPU, your
|
||||||
configuration file should contain something like:
|
configuration file should contain something like:
|
||||||
|
|
||||||
arm.linux.gcc.path = "/usr/bin"
|
arm.linux.gcc.path = "/usr/bin"
|
||||||
arm.linux.gcc.exe = "arm-linux-gcc"
|
arm.linux.gcc.exe = "arm-linux-gcc"
|
||||||
arm.linux.gcc.linkerexe = "arm-linux-gcc"
|
arm.linux.gcc.linkerexe = "arm-linux-gcc"
|
||||||
|
arm.linux.gcc.options.always = "-w -fmax-errors=3"
|
||||||
|
|
||||||
Cross-compilation for Windows
|
Cross-compilation for Windows
|
||||||
=============================
|
=============================
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue