Skip to content

Commit

Permalink
Fixes nim-lang#12536 (nim-lang#12568) [backport]
Browse files Browse the repository at this point in the history
(cherry picked from commit 4e0f120)
  • Loading branch information
demotomohiro authored and narimiran committed Nov 5, 2019
1 parent 274f94c commit 93b868b
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 14 deletions.
26 changes: 12 additions & 14 deletions compiler/commands.nim
Expand Up @@ -614,22 +614,20 @@ proc processSwitch*(switch, arg: string, pass: TCmdLinePass, info: TLineInfo;
processOnOffSwitchG(conf, {optGenMapping}, arg, pass, info)
of "os":
expectArg(conf, switch, arg, pass, info)
if pass in {passCmd1, passPP}:
let theOS = platform.nameToOS(arg)
if theOS == osNone:
let osList = platform.listOSnames().join(", ")
localError(conf, info, "unknown OS: '$1'. Available options are: $2" % [arg, $osList])
elif theOS != conf.target.hostOS:
setTarget(conf.target, theOS, conf.target.targetCPU)
let theOS = platform.nameToOS(arg)
if theOS == osNone:
let osList = platform.listOSnames().join(", ")
localError(conf, info, "unknown OS: '$1'. Available options are: $2" % [arg, $osList])
else:
setTarget(conf.target, theOS, conf.target.targetCPU)
of "cpu":
expectArg(conf, switch, arg, pass, info)
if pass in {passCmd1, passPP}:
let cpu = platform.nameToCPU(arg)
if cpu == cpuNone:
let cpuList = platform.listCPUnames().join(", ")
localError(conf, info, "unknown CPU: '$1'. Available options are: $2" % [ arg, cpuList])
elif cpu != conf.target.hostCPU:
setTarget(conf.target, conf.target.targetOS, cpu)
let cpu = platform.nameToCPU(arg)
if cpu == cpuNone:
let cpuList = platform.listCPUnames().join(", ")
localError(conf, info, "unknown CPU: '$1'. Available options are: $2" % [ arg, cpuList])
else:
setTarget(conf.target, conf.target.targetOS, cpu)
of "run", "r":
processOnOffSwitchG(conf, {optRun}, arg, pass, info)
of "errormax":
Expand Down
10 changes: 10 additions & 0 deletions tests/compiler/tcmdlinecpuamd64.nim
@@ -0,0 +1,10 @@
discard """
cmd: "nim $target $options --cpu:amd64 $file"
disabled: "32bit"
"""

import strutils

static:
#cpu is set to "i386" in tcpuamd64.nim.cfg, but --cpu:amd64 in command line should override it.
doAssert cmpIgnoreCase(hostCPU, "amd64") == 0
1 change: 1 addition & 0 deletions tests/compiler/tcmdlinecpuamd64.nim.cfg
@@ -0,0 +1 @@
cpu:i386
14 changes: 14 additions & 0 deletions tests/compiler/tcmdlineoswin.nim
@@ -0,0 +1,14 @@
discard """
cmd: "nim $target $options --os:windows $file"
disabled: "linux"
disabled: "bsd"
disabled: "macosx"
disabled: "unix"
disabled: "posix"
"""

import strutils

static:
#os is set to "linux" in toswin.nim.cfg, but --os:windows in command line should override it.
doAssert cmpIgnoreCase(hostOS, "windows") == 0
1 change: 1 addition & 0 deletions tests/compiler/tcmdlineoswin.nim.cfg
@@ -0,0 +1 @@
os:linux

0 comments on commit 93b868b

Please sign in to comment.