mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-05 01:20:51 +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
|
@ -439,8 +439,7 @@ void buildTypeInfo(TypeInfoDeclaration *decl) {
|
|||
// immutable on the D side, and e.g. synchronized() can be used on the
|
||||
// implicit monitor.
|
||||
const bool isConstant = false;
|
||||
// TODO: no dllimport when compiling druntime itself
|
||||
const bool useDLLImport = isBuiltin && global.params.dllimport;
|
||||
bool useDLLImport = isBuiltin && global.params.dllimport != DLLImport::none;
|
||||
gvar = declareGlobal(decl->loc, gIR->module, type, irMangle, isConstant,
|
||||
false, useDLLImport);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue