More flexibility in compile flag
This commit is contained in:
parent
1a29b9f0f8
commit
1e26d3e6eb
3 changed files with 19 additions and 8 deletions
|
|
@ -167,7 +167,7 @@ The following keys apply to library source code and help with generating the .ni
|
||||||
|
|
||||||
Multiple entries for the all following keys are possible by appending any .string to the key. E.g. dynlib.win, compile.dir
|
Multiple entries for the all following keys are possible by appending any .string to the key. E.g. dynlib.win, compile.dir
|
||||||
|
|
||||||
```compile``` = file or dir of files of source code to {.compile.} into generated .nim
|
```compile``` = file or dir of files of source code to {.compile.} into generated .nim. If directory, picks *.c if C mode and *.cxx, *.cpp, *.cc, *.c++ and *.C for cpp mode. Dir can also include wildcards. e.g. compile = """dir/A*.cxx"""
|
||||||
|
|
||||||
```pragma``` = pragmas to define in generated .nim file. E.g. pragma = "passL: \"-lssl\"" => {.passL: "-lssl".}
|
```pragma``` = pragmas to define in generated .nim file. E.g. pragma = "passL: \"-lssl\"" => {.passL: "-lssl".}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ proc c2nim*(fl, outfile: string, c2nimConfig: c2nimConfigObj) =
|
||||||
outlib = ""
|
outlib = ""
|
||||||
outpragma = ""
|
outpragma = ""
|
||||||
|
|
||||||
passC = "import ospaths, strutils\n"
|
passC = "import strutils\n"
|
||||||
|
|
||||||
passC &= """const sourcePath = currentSourcePath().split({'\\', '/'})[0..^2].join("/")""" & "\n"
|
passC &= """const sourcePath = currentSourcePath().split({'\\', '/'})[0..^2].join("/")""" & "\n"
|
||||||
|
|
||||||
|
|
@ -102,9 +102,9 @@ proc c2nim*(fl, outfile: string, c2nimConfig: c2nimConfigObj) =
|
||||||
for cpl in c2nimConfig.compile:
|
for cpl in c2nimConfig.compile:
|
||||||
let fcpl = search(cpl)
|
let fcpl = search(cpl)
|
||||||
if getFileInfo(fcpl).kind == pcFile:
|
if getFileInfo(fcpl).kind == pcFile:
|
||||||
prepend(outfile, compile(file=fcpl))
|
prepend(outfile, compile(c2nimConfig.flags, file=fcpl))
|
||||||
else:
|
else:
|
||||||
prepend(outfile, compile(dir=fcpl))
|
prepend(outfile, compile(c2nimConfig.flags, dir=fcpl))
|
||||||
|
|
||||||
# Add any pragmas
|
# Add any pragmas
|
||||||
if outpragma != "":
|
if outpragma != "":
|
||||||
|
|
|
||||||
|
|
@ -17,15 +17,26 @@ proc addEnv*(str: string): string =
|
||||||
|
|
||||||
return newStr
|
return newStr
|
||||||
|
|
||||||
proc compile*(dir="", file=""): string =
|
proc compile*(flags: string, dir="", file=""): string =
|
||||||
|
var data = ""
|
||||||
|
|
||||||
proc fcompile(file: string): string =
|
proc fcompile(file: string): string =
|
||||||
return "{.compile: \"$#\".}" % file.replace("\\", "/")
|
return "{.compile: \"$#\".}" % file.replace("\\", "/")
|
||||||
|
|
||||||
var data = ""
|
proc dcompile(dir: string) =
|
||||||
if dir != "" and dirExists(dir):
|
for f in walkFiles(dir):
|
||||||
for f in walkFiles(dir / "*.c"):
|
|
||||||
data &= fcompile(f) & "\n"
|
data &= fcompile(f) & "\n"
|
||||||
|
|
||||||
|
if dir != "":
|
||||||
|
if dir.contains("*") or dir.contains("?"):
|
||||||
|
dcompile(dir)
|
||||||
|
elif dirExists(dir):
|
||||||
|
if flags.contains("cpp"):
|
||||||
|
for i in @["*.C", "*.cpp", "*.c++", "*.cc", "*.cxx"]:
|
||||||
|
dcompile(dir / i)
|
||||||
|
else:
|
||||||
|
dcompile(dir / "*.c")
|
||||||
|
|
||||||
if file != "" and fileExists(file):
|
if file != "" and fileExists(file):
|
||||||
data &= fcompile(file) & "\n"
|
data &= fcompile(file) & "\n"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue