diff options
author | Tomohiro <gpuppur@gmail.com> | 2022-09-02 02:57:17 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-09-01 13:57:17 -0400 |
commit | 2a34d143ac408df0e3716fbbf53dcca490ef9d49 (patch) | |
tree | d5f79bccb1916431c963990f68e9a8c83d723f9c | |
parent | a95b6391fd353074daf2dbfed4d73e8d57f314ca (diff) | |
download | Nim-2a34d143ac408df0e3716fbbf53dcca490ef9d49.tar.gz |
Fix #16937; --clib option pass library name to backend C compiler correctly (#19754)
* Fix 16937: Make --clib option works * Make tests/compiler/tcmdlineclib.nim works from any current dir * Try to fix link error on macosx * Add a comment to tests/compiler/tcmdlineclib.nims Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
-rw-r--r-- | compiler/commands.nim | 2 | ||||
-rw-r--r-- | tests/compiler/samplelib.nim | 2 | ||||
-rw-r--r-- | tests/compiler/tcmdlineclib.nim | 3 | ||||
-rw-r--r-- | tests/compiler/tcmdlineclib.nims | 10 |
4 files changed, 16 insertions, 1 deletions
diff --git a/compiler/commands.nim b/compiler/commands.nim index a71dae9d9..6e8568ffe 100644 --- a/compiler/commands.nim +++ b/compiler/commands.nim @@ -803,7 +803,7 @@ proc processSwitch*(switch, arg: string, pass: TCmdLinePass, info: TLineInfo; of "clib": expectArg(conf, switch, arg, pass, info) if pass in {passCmd2, passPP}: - conf.cLinkedLibs.add processPath(conf, arg, info).string + conf.cLinkedLibs.add arg of "header": if conf != nil: conf.headerFile = arg incl(conf.globalOptions, optGenIndex) diff --git a/tests/compiler/samplelib.nim b/tests/compiler/samplelib.nim new file mode 100644 index 000000000..c70971722 --- /dev/null +++ b/tests/compiler/samplelib.nim @@ -0,0 +1,2 @@ +# Sample library used by tcmdlineclib.nim +proc test(): int {.cdecl, exportc, dynlib.} = 123 diff --git a/tests/compiler/tcmdlineclib.nim b/tests/compiler/tcmdlineclib.nim new file mode 100644 index 000000000..c06d6f103 --- /dev/null +++ b/tests/compiler/tcmdlineclib.nim @@ -0,0 +1,3 @@ +proc test(): int {.importc, cdecl.} + +doAssert test() == 123 diff --git a/tests/compiler/tcmdlineclib.nims b/tests/compiler/tcmdlineclib.nims new file mode 100644 index 000000000..f7899d92e --- /dev/null +++ b/tests/compiler/tcmdlineclib.nims @@ -0,0 +1,10 @@ +import os + +selfExec "c --app:lib " & (projectDir() / "samplelib.nim") +switch("clibdir", projectDir()) +--clib:samplelib + +# Make test executable can load sample shared library. +# `-rpath` option doesn't work and ignored on Windows. +# But the dll file in same directory as executable file is loaded. +switch("passL", "-Wl,-rpath," & projectDir()) |