From ec4e7aa5ba637ddfc5a60fa3ebe96ad7c2f70fc6 Mon Sep 17 00:00:00 2001 From: Ganesh Viswanathan Date: Sat, 4 May 2019 13:35:44 -0500 Subject: Fix for mingw cross-compilation --- nimterop/cimport.nim | 28 ++++++++++++++++------------ nimterop/git.nim | 10 +++++----- 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/nimterop/cimport.nim b/nimterop/cimport.nim index 1f82b6f..58d0629 100644 --- a/nimterop/cimport.nim +++ b/nimterop/cimport.nim @@ -42,7 +42,7 @@ proc walkDirImpl(indir, inext: string, file=true): seq[string] = dir = joinPathIfRel(getProjectPath(), indir) ext = if inext.len != 0: - when not defined(Windows): + if hostOS != "windows": "-name " & inext else: "\\" & inext @@ -51,7 +51,7 @@ proc walkDirImpl(indir, inext: string, file=true): seq[string] = let cmd = - when defined(Windows): + if hostOS == "windows": if file: "cmd /c dir /s/b/a-d " & dir.replace("/", "\\") & ext else: @@ -70,13 +70,17 @@ proc walkDirImpl(indir, inext: string, file=true): seq[string] = proc getFileDate(fullpath: string): string = var ret = 0 - cmd = - when defined(Windows): - &"cmd /c for %a in ({fullpath.quoteShell}) do echo %~ta" - elif defined(Linux): - &"stat -c %y {fullpath.quoteShell}" - elif defined(OSX): - &"stat -f %m {fullpath.quoteShell}" + cmd = "" + + case hostOS + of "windows": + cmd = &"cmd /c for %a in ({fullpath.quoteShell}) do echo %~ta" + of "linux": + cmd = &"stat -c %y {fullpath.quoteShell}" + of "macosx": + cmd = &"stat -f %m {fullpath.quoteShell}" + else: + doAssert false (result, ret) = gorgeEx(cmd) @@ -115,7 +119,7 @@ proc getNimCheckError(output: string): tuple[tmpFile, errors: string] = proc getToast(fullpath: string, recurse: bool = false): string = var ret = 0 - cmd = when defined(Windows): "cmd /c " else: "" + cmd = if hostOS == "windows": "cmd /c " else: "" let toastExe = toastExePath() doAssert fileExists(toastExe), "toast not compiled: " & toastExe.quoteShell & @@ -146,7 +150,7 @@ proc getToast(fullpath: string, recurse: bool = false): string = proc getGccPaths(mode = "c"): string = var ret = 0 - nul = when defined(Windows): "nul" else: "/dev/null" + nul = if hostOS == "windows": "nul" else: "/dev/null" mmode = if mode == "cpp": "c++" else: mode (result, ret) = gorgeEx("gcc -Wp,-v -x" & mmode & " " & nul) @@ -452,7 +456,7 @@ macro cCompile*(path: static string, mode = "c", exclude = ""): untyped = if mode.strVal().contains("cpp"): for i in @["*.cpp", "*.c++", "*.cc", "*.cxx"]: stmt &= dcompile(fpath, exclude.strVal(), i) - when not defined(Windows): + if hostOS != "windows": stmt &= dcompile(fpath, exclude.strVal(), "*.C") else: stmt &= dcompile(fpath, exclude.strVal(), "*.c") diff --git a/nimterop/git.nim b/nimterop/git.nim index b0380c2..7ad2b23 100644 --- a/nimterop/git.nim +++ b/nimterop/git.nim @@ -6,7 +6,7 @@ proc execAction*(cmd: string, nostderr=false): string = var ccmd = "" ret = 0 - when defined(Windows): + when hostOS == "windows": ccmd = "cmd /c " & cmd elif defined(posix): ccmd = cmd @@ -23,7 +23,7 @@ proc execAction*(cmd: string, nostderr=false): string = proc mkDir*(dir: string) = if not dirExists(dir): let - flag = when not defined(Windows): "-p" else: "" + flag = if hostOS != "windows": "-p" else: "" discard execAction(&"mkdir {flag} {dir.quoteShell}") proc cpFile*(source, dest: string, move=false) = @@ -31,7 +31,7 @@ proc cpFile*(source, dest: string, move=false) = source = source.replace("/", $DirSep) dest = dest.replace("/", $DirSep) cmd = - when defined(Windows): + if hostOS == "windows": if move: "move /y" else: @@ -49,7 +49,7 @@ proc mvFile*(source, dest: string) = proc extractZip*(zipfile, outdir: string) = var cmd = "unzip -o $#" - if defined(Windows): + if hostOS == "windows": cmd = "powershell -nologo -noprofile -command \"& { Add-Type -A " & "'System.IO.Compression.FileSystem'; " & "[IO.Compression.ZipFile]::ExtractToDirectory('$#', '.'); }\"" @@ -65,7 +65,7 @@ proc downloadUrl*(url, outdir: string) = if not (ext == ".zip" and fileExists(outdir/file)): echo "Downloading " & file mkDir(outdir) - var cmd = if defined(Windows): + var cmd = if hostOS == "windows": "powershell [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; wget $# -OutFile $#" else: "curl $# -o $#" -- cgit v1.2.3