Skip to content

Commit

Permalink
externalToLink: use quoteShell to avoid issues with spaces in paths f…
Browse files Browse the repository at this point in the history
…or {.link.} pragmas (nim-lang#17875)
  • Loading branch information
timotheecour authored and PMunch committed Mar 28, 2022
1 parent 4c33b26 commit 68bd570
Showing 1 changed file with 9 additions and 13 deletions.
22 changes: 9 additions & 13 deletions compiler/extccomp.nim
Original file line number Diff line number Diff line change
Expand Up @@ -943,6 +943,7 @@ proc jsonBuildInstructionsFile*(conf: ConfigRef): AbsoluteFile =
result = getNimcacheDir(conf) / conf.outFile.changeFileExt("json")

proc writeJsonBuildInstructions*(conf: ConfigRef) =
# xxx use std/json instead, will result in simpler, more maintainable code.
template lit(x: string) = f.write x
template str(x: string) =
buf.setLen 0
Expand All @@ -964,23 +965,18 @@ proc writeJsonBuildInstructions*(conf: ConfigRef) =
proc linkfiles(conf: ConfigRef; f: File; buf, objfiles: var string; clist: CfileList;
llist: seq[string]) =
var pastStart = false
for it in llist:
let objfile = if noAbsolutePaths(conf): it.extractFilename
else: it
let objstr = addFileExt(objfile, CC[conf.cCompiler].objExt)
template impl(path) =
let path2 = quoteShell(path)
objfiles.add(' ')
objfiles.add(objstr)
objfiles.add(path2)
if pastStart: lit ",\L"
str objstr
str path2
pastStart = true

for it in llist:
let objfile = if noAbsolutePaths(conf): it.extractFilename else: it
impl(addFileExt(objfile, CC[conf.cCompiler].objExt))
for it in clist:
let objstr = quoteShell(it.obj)
objfiles.add(' ')
objfiles.add(objstr)
if pastStart: lit ",\L"
str objstr
pastStart = true
impl(it.obj)
lit "\L"

proc depfiles(conf: ConfigRef; f: File; buf: var string) =
Expand Down

0 comments on commit 68bd570

Please sign in to comment.