fix: Enable lib as nim module

This commit is contained in:
Alex Jbanca 2026-01-30 15:02:42 +02:00
parent 19c48ef602
commit 5763c25043
No known key found for this signature in database
GPG Key ID: 6004079575C21C5D

View File

@ -141,7 +141,8 @@ proc onRetrievalHint(ctx: ptr SdsContext): RetrievalHintProvider =
# Every Nim library must have this function called - the name is derived from
# the `--nimMainPrefix` command line option
proc libsdsNimMain() {.importc.}
when isMainModule:
proc libsdsNimMain() {.importc.}
# To control when the library has been initialized
var initialized: Atomic[bool]
@ -158,7 +159,8 @@ proc initializeLibrary() {.exported.} =
if not initialized.exchange(true):
## Every Nim library needs to call `<yourprefix>NimMain` once exactly, to initialize the Nim runtime.
## Being `<yourprefix>` the value given in the optional compilation flag --nimMainPrefix:yourprefix
libsdsNimMain()
when isMainModule:
libsdsNimMain()
ctxPoolLock.initLock() # ensure the lock is initialized once (fix Windows crash)
when declared(setupForeignThreadGc):
setupForeignThreadGc()