Bug 4642 – DMD should have a command-line option to ignore pragma(lib, ...)

Status
REOPENED
Severity
enhancement
Priority
P4
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2010-08-13T18:05:23Z
Last change time
2024-12-13T17:52:50Z
Assigned to
No Owner
Creator
Leandro Lucarella
Moved to GitHub: dmd#17513 →

Comments

Comment #0 by leandro.lucarella — 2010-08-13T18:05:23Z
I think is important to have an option to ignore pragma(lib, ..), because even when is not very common, users might want to link against an specific custom library name. For example in Debian sometimes there are packages for the same library but configured in different ways, like libcurl and libcurl-gnutls.
Comment #1 by bugzilla — 2010-08-13T18:48:04Z
http://www.digitalmars.com/ctg/ctgLinkSwitches.html#defaultlibrarysearch for dmd: -L/nodefaultlibrarysearch for non-Windows builds, it isn't an issue because the object file format does not have a field type for libraries.
Comment #2 by leandro.lucarella — 2010-08-13T20:14:41Z
(In reply to comment #1) > http://www.digitalmars.com/ctg/ctgLinkSwitches.html#defaultlibrarysearch > > for dmd: -L/nodefaultlibrarysearch > > for non-Windows builds, it isn't an issue because the object file format does > not have a field type for libraries. I don't use Windows, so I don't know the details about it, but I can't understand what you mean for non-Windows either. The point is, if a library have a: pragma (lib, "curl"); And I want to use libcurl-gnutls instead, I can't without modifying the source. Even more, if I don't even have the non-gnutls curl installed, I can't even compile. For example: p.d --- import l; void main() {} --- l.d --- pragma (lib, "curl"); --- $ dmd -v /tmp/p.d /tmp/l.d -of/tmp/p | grep curl library curl gcc /tmp/p.o -o /tmp/p -m32 -Xlinker -L../lib -lcurl -lphobos -lpthread -lm /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libcurl.so when searching for -lcurl /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libcurl.a when searching for -lcurl /usr/bin/ld: skipping incompatible //usr/lib/libcurl.so when searching for -lcurl /usr/bin/ld: skipping incompatible //usr/lib/libcurl.a when searching for -lcurl /usr/bin/ld: cannot find -lcurl collect2: ld returned 1 exit status DMD adds the -lcurl and AFAIK, I can't change that without modifying the source of l.d (which might not be under my control, it could be a system-wide header for which I have no write-access, of course I could copy and modify it but I hope we agree that is less than ideal). Is there any way to avoid that problem right now?
Comment #3 by robert.schadek — 2024-12-13T17:52:50Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/17513 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB