Add linkLibs and isDefined

This commit is contained in:
Ganesh Viswanathan 2019-10-08 15:19:36 -05:00
commit f2a0d4b0c9

View file

@ -1,4 +1,4 @@
import macros, osproc, strformat, strutils, tables
import macros, osproc, sets, strformat, strutils, tables
import os except findExe, sleep
@ -322,6 +322,28 @@ proc flagBuild*(base: string, flags: openArray[string]): string =
for i in flags:
result &= " " & base % i
proc linkLibs*(names: openArray[string], staticLink = true): string =
## Create linker flags for specified libraries
##
## Prepends `lib` to the name so you only need `ssl` for `libssl`.
var
stat = if staticLink: "--static" else: ""
resSet: OrderedSet[string]
resSet.init()
for name in names:
let
cmd = &"pkg-config --libs --silence-errors {stat} lib{name}"
libs = gorge(cmd)
for lib in libs.split(" "):
resSet.incl lib
if staticLink:
resSet.incl "--static"
for res in resSet:
result &= " " & res
proc configure*(path, check: string, flags = "") =
## Run the GNU `configure` command to generate all Makefiles or other
## build scripts in the specified path
@ -737,6 +759,18 @@ macro clearDefines*(): untyped =
## Clear all defines set using `setDefines()`.
gDefines.clear()
macro isDefined*(def: untyped): untyped =
## Check if `-d:xxx` is set globally or via `setDefines()`
let
sdef = gDefines.hasKey(def.strVal())
result = newNimNode(nnkStmtList)
result.add(quote do:
when defined(`def`) or `sdef` != 0:
true
else:
false
)
macro getHeader*(header: static[string], giturl: static[string] = "", dlurl: static[string] = "", outdir: static[string] = "",
conFlags: static[string] = "", cmakeFlags: static[string] = "", makeFlags: static[string] = "",
altNames: static[string] = ""): untyped =