View mode: basic / threaded / horizontal-split · Log in · Help
October 11, 2012
Re: #pragma comment (lib, ...)
On 2012-10-11 18:00, Iain Buclaw wrote:

> Not what the LDC compiler does, the actual /usr/bin/ldc executable
> itself.  Is it in one pieces, or in pieces?  eg:  GDC is in two
> pieces, gdc and cc1d.

Why is that? I know that Clang does the same, I've always wonder why.

-- 
/Jacob Carlborg
October 11, 2012
Re: #pragma comment (lib, ...)
On 2012-10-11 14:36, Walter Bright wrote:

> Are you saying that just to support pragma(lib), we should write a new
> linker?

No, not just because this feature alone. There are many other features 
that could be implemented with a smarter linker. There has been talk 
about this on the newsgroups several times. Better handling templates 
and overloaded functions, for example.

-- 
/Jacob Carlborg
October 11, 2012
Re: #pragma comment (lib, ...)
On Thu, Oct 11, 2012 at 08:54:19PM +0200, Jacob Carlborg wrote:
> On 2012-10-11 16:23, H. S. Teoh wrote:
> 
> >Yeah, one of the poor design decisions of the early Redhat packaging
> >system was to allow packages to depend on individual files, rather than
> >packages. The result was a disastrous mess: some packages export
> >different versions of the same file, and only a subset of them will
> >work, leading to hair-tearing dependencies. Packages would step over
> >each other's files, causing problems with each other and the rest of the
> >system that depended on the same files, ad nauseum.
> 
> That sounds even worse, a terrible, terrible idea.
[...]

Yeah, it was one of the things that convinced me to *not* use Redhat. I
saw a similar thing back in the Bad Old Days of Win98, Win2k, and their
ilk, where installing a driver would sometimes prompt you something to
the effect of "this driver needs to install a file that already exists;
overwrite the file, delete it, or skip it?" None of those options should
be anything the *user* has to decide, IMO. It essentially amounted to
"flip a coin and pray the OS won't crash, and if you're *really* lucky
the driver might actually work". Things like that convinced me *not* to
use Windows. (I don't know if Windows still does that, as I don't use it
anyore; but for everyone else's sake I would certainly hope it doesn't!)

Of course, IIRC Redhat has since fixed this broken design, but the
horrible memory of it stuck. Debian, OTOH, has a depends-on-package
policy, which results in a much saner system where a package can specify
a dependency on other packages (with an entire package as a unit),
optionally with a version constraint, and thus be ensured that it will
get the correct versions of all related files. That was one of the
things that convinced me to use Debian. :)


T

-- 
This is not a sentence.
October 11, 2012
Re: #pragma comment (lib, ...)
On 11 October 2012 18:49, David Nadlinger <see@klickverbot.at> wrote:
> On Thursday, 11 October 2012 at 16:01:09 UTC, Iain Buclaw wrote:
>>
>> On 11 October 2012 16:29, David Nadlinger <see@klickverbot.at> wrote:
>>>
>>> On Thursday, 11 October 2012 at 15:18:07 UTC, Iain Buclaw wrote:
>>>>
>>>>
>>>> Does LDC only build one executable?
>>>
>>> […]
>>
>>
>> Not what the LDC compiler does, the actual /usr/bin/ldc executable
>> itself.  Is it in one pieces, or in pieces?  eg:  GDC is in two
>> pieces, gdc and cc1d.
>
>
> Ah, now I see what you mean. Yes, LDC consists of only one executable.
>
> David

So the object that interprets pragma(lib) is able to communicate with
the object that handles what flags to pass to the linker. :-)

This is not possible with gdc, as the driver that handles the calling
of ld (gdc) does not / cannot communicate with the compiler component
(cc1d).


Regards,
-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';
October 11, 2012
Re: #pragma comment (lib, ...)
On Thursday, 11 October 2012 at 11:46:39 UTC, Manu wrote:
> Okay, so I'll stop being a dick for a minute, I'm actually 
> curious to know
> how you imagine it working with a tool like VisualStudio.
> It sounds like you're not just talking about a tool to fetch 
> libs and
> dependencies, but also perform the build? And the dependencies 
> are detailed
> in the build script?
> An inflexible build system like Visual Studio doesn't really 
> handle that
> very well.
>

In an ideal world, your VS plugin would support Packages in the 
Add References dialog. Just like you could, in theory, add a 
project as a reference, you would add a package. Then, upon 
build, the plugin would call the package manager and get the 
libraries / imports required for it, appending the options to the 
compilre for your own build. This is something that wouldn't be 
particularly difficult to make a plugin for given an existing 
package manager. Mono-Develop would perform in the same way I'd 
imagine.
October 12, 2012
Re: #pragma comment (lib, ...)
On Thursday, 11 October 2012 at 23:03:45 UTC, Kapps wrote:
> On Thursday, 11 October 2012 at 11:46:39 UTC, Manu wrote:
>> Okay, so I'll stop being a dick for a minute, I'm actually 
>> curious to know
>> how you imagine it working with a tool like VisualStudio.
>> It sounds like you're not just talking about a tool to fetch 
>> libs and
>> dependencies, but also perform the build? And the dependencies 
>> are detailed
>> in the build script?
>> An inflexible build system like Visual Studio doesn't really 
>> handle that
>> very well.
>>
>
> In an ideal world, your VS plugin would support Packages in the 
> Add References dialog. Just like you could, in theory, add a 
> project as a reference, you would add a package. Then, upon 
> build, the plugin would call the package manager and get the 
> libraries / imports required for it, appending the options to 
> the compilre for your own build. This is something that 
> wouldn't be particularly difficult to make a plugin for given 
> an existing package manager. Mono-Develop would perform in the 
> same way I'd imagine.

This already exists, it is called NuGet.

Besides, Visual Studio projects are actually MSBuild scripts, for 
me that is quite flexible.

--
Paulo
October 12, 2012
Re: #pragma comment (lib, ...)
On 2012-10-12 01:03, Kapps wrote:

> In an ideal world, your VS plugin would support Packages in the Add
> References dialog. Just like you could, in theory, add a project as a
> reference, you would add a package. Then, upon build, the plugin would
> call the package manager and get the libraries / imports required for
> it, appending the options to the compilre for your own build. This is
> something that wouldn't be particularly difficult to make a plugin for
> given an existing package manager. Mono-Develop would perform in the
> same way I'd imagine.

Exactly, that's how I'm thinking.

-- 
/Jacob Carlborg
October 12, 2012
Re: #pragma comment (lib, ...)
On 2012-10-12 07:46, Paulo Pinto wrote:

> This already exists, it is called NuGet.

Again, it's not cross-platform. How well does it work with D, at all?

-- 
/Jacob Carlborg
October 12, 2012
Re: #pragma comment (lib, ...)
On 2012-10-11 21:45, H. S. Teoh wrote:

> Yeah, it was one of the things that convinced me to *not* use Redhat. I
> saw a similar thing back in the Bad Old Days of Win98, Win2k, and their
> ilk, where installing a driver would sometimes prompt you something to
> the effect of "this driver needs to install a file that already exists;
> overwrite the file, delete it, or skip it?" None of those options should
> be anything the *user* has to decide, IMO. It essentially amounted to
> "flip a coin and pray the OS won't crash, and if you're *really* lucky
> the driver might actually work". Things like that convinced me *not* to
> use Windows. (I don't know if Windows still does that, as I don't use it
> anyore; but for everyone else's sake I would certainly hope it doesn't!)

Haha.

> Of course, IIRC Redhat has since fixed this broken design, but the
> horrible memory of it stuck. Debian, OTOH, has a depends-on-package
> policy, which results in a much saner system where a package can specify
> a dependency on other packages (with an entire package as a unit),
> optionally with a version constraint, and thus be ensured that it will
> get the correct versions of all related files. That was one of the
> things that convinced me to use Debian. :)

That's how it should work. The smallest unit should be a package.

-- 
/Jacob Carlborg
October 12, 2012
Re: #pragma comment (lib, ...)
On 12 October 2012 09:51, Jacob Carlborg <doob@me.com> wrote:

> On 2012-10-12 07:46, Paulo Pinto wrote:
>
>  This already exists, it is called NuGet.
>>
>
> Again, it's not cross-platform. How well does it work with D, at all?


That's strictly for Microsoft .NET packages isn't it?
3 4 5 6 7 8 9
Top | Discussion index | About this forum | D home