mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-02 16:11:08 +03:00
Windows: Make implicit dllimport more selective
* Newly require `-link-defaultlib-shared` for implicit dllimport. E.g., this enables to compile druntime DLL with `-fvisibility=public` for pure exports and no (local) imports (such as builtin TypeInfos). * `-link-defaultlib-shared` alone now only implicitly imports symbols from druntime/Phobos. This simplifies building complex DLLs linked against a bunch of static libs (dub only supports static lib dependencies!); the static libs don't need to be compiled with `-fvisibility=public` anymore (if the DLL itself isn't either), `-link-defaultlib-shared` is sufficient. This is mainly useful for existing DLLs with explicit exports, to make them link against *shared* druntime/Phobos and so end up with a single druntime/Phobos for the whole process.
This commit is contained in:
parent
2f0ece3274
commit
9865e459d1
15 changed files with 73 additions and 23 deletions
|
@ -190,8 +190,9 @@ LLFunction *build_module_reference_and_ctor(const char *moduleMangle,
|
|||
LLConstant *mref = gIR->module.getNamedGlobal(mrefIRMangle);
|
||||
LLType *modulerefPtrTy = getPtrToType(modulerefTy);
|
||||
if (!mref) {
|
||||
mref = declareGlobal(Loc(), gIR->module, modulerefPtrTy, mrefIRMangle,
|
||||
false, false, global.params.dllimport);
|
||||
mref =
|
||||
declareGlobal(Loc(), gIR->module, modulerefPtrTy, mrefIRMangle, false,
|
||||
false, global.params.dllimport != DLLImport::none);
|
||||
}
|
||||
mref = DtoBitCast(mref, getPtrToType(modulerefPtrTy));
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue